Differences between revisions 18 and 19
Revision 18 as of 2008-06-05 12:10:48
Size: 5524
Comment:
Revision 19 as of 2009-09-20 21:55:09
Size: 5587
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Use [:Jitrino_OPT/types: this] link for details on type system used in Jitrino.OPT compiler Use [[Jitrino_OPT/types| this]] link for details on type system used in Jitrino.OPT compiler
Line 6: Line 6:
 * [:Jitrino_OPT/translator: translator] - Translates Java bytecode to [:Jitrino_OPT/opcodes: High Level Intermediate Representation (HIR)]
 * [:Jitrino_OPT/hir2lir: hir2lir] - Translates HIR to Low Level Intermediate Representation (LIR)
 * [[Jitrino_OPT/translator| translator]] - Translates Java bytecode to [[Jitrino_OPT/opcodes| High Level Intermediate Representation (HIR)]]
 * [[Jitrino_OPT/hir2lir| hir2lir]] - Translates HIR to Low Level Intermediate Representation (LIR)
Line 10: Line 10:
 * [:Jitrino_OPT/optimizer: optimizer] - An alias for all HIR transformations
 * [:Jitrino_OPT/abce: abce] - Array bounds check elimination
 * [:Jitrino_OPT/dce: dce] - Dead code elimination
 * [:Jitrino_OPT/dessa: dessa] - SSA deconstruction
 * [:Jitrino_OPT/devirt: devirt_intf] - Guarded devirtualization of interface calls
 * [:Jitrino_OPT/devirt: devirt_virtual] - Guarded devirtualization of virtual calls
 * [:Jitrino_OPT/edge_annotate: edge_annotate] - IR annotation with edge profile
 * [:Jitrino_OPT/edge_instrument: edge_instrument] - IR instrumentation in order to collect edge profile
 * [:Jitrino_OPT/escape: escape] - Escape analysis bases optimizations
 * [:Jitrino_OPT/gcm: gcm] - Global code motion
 * [:Jitrino_OPT/gvn: gvn] - Global value numbering
 * [:Jitrino_OPT/hlo_api_magic: hlo_api_magic] - Replaces known Java API method calls with predefined algorithms written with HIR
 * [:Jitrino_OPT/hvn: hvn] - Hash value numbering (CSE)
 * [:Jitrino_OPT/inline: inline] - Inlines hot methods calls
 * [:Jitrino_OPT/inline_helpers: inline_helpers] - Replaces HIR instruction with a Java method call and inlines this call
 * [:Jitrino_OPT/lazyexc: lazyexc] - Eliminates redundant creation of exception objects
 * [:Jitrino_OPT/lower: lower] - Partial inlining for type checks
 * [:Jitrino_OPT/memopt: memopt] - Redundant memory loads and stores elimination
 * [:Jitrino_OPT/osr: osr] - Operator strength reduction
 * [:Jitrino_OPT/peel: peel
] - Loop peeling
 * [:Jitrino_OPT/purge: purge] - Purge empty nodes
 * [:Jitrino_OPT/simplify: simplify] - Type/copy propogation and constant folding
 * [:Jitrino_OPT/ssa: ssa] - SSA construction
 * [:Jitrino_OPT/statprof: statprof] - Annotates HIR with edge profile using static heuristics
 * [:Jitrino_OPT/throwopt: throwopt] - Replaces Throw instruction with the jump to the exception handler
 * [:Jitrino_OPT/uce: uce] - Unreachable code elimination
 * [:Jitrino_OPT/unguard: unguard] - Removal of untaken type guards
 * [:Jitrino_OPT/unroll: unroll] - Loop unrolling
 * [[Jitrino_OPT/optimizer| optimizer]] - An alias for all HIR transformations
 * [[Jitrino_OPT/abce| abce]] - Array bounds check elimination
 * [[Jitrino_OPT/dce| dce]] - Dead code elimination
 * [[Jitrino_OPT/dessa| dessa]] - SSA deconstruction
 * [[Jitrino_OPT/devirt| devirt_intf]] - Guarded devirtualization of interface calls
 * [[Jitrino_OPT/devirt| devirt_virtual]] - Guarded devirtualization of virtual calls
 * [[Jitrino_OPT/edge_annotate| edge_annotate]] - IR annotation with edge profile
 * [[Jitrino_OPT/edge_instrument| edge_instrument]] - IR instrumentation in order to collect edge profile
 * [[Jitrino_OPT/escape| escape]] - Escape analysis bases optimizations
 * [[Jitrino_OPT/gcm| gcm]] - Global code motion
 * [[Jitrino_OPT/gvn| gvn]] - Global value numbering
 * [[Jitrino_OPT/hlo_api_magic| hlo_api_magic]] - Replaces known Java API method calls with predefined algorithms written with HIR
 * [[Jitrino_OPT/hvn| hvn]] - Hash value numbering (CSE)
 * [[Jitrino_OPT/inline| inline]] - Inlines hot methods calls
 * [[Jitrino_OPT/inline_helpers| inline_helpers]] - Replaces HIR instruction with a Java method call and inlines this call
 * [[Jitrino_OPT/lazyexc| lazyexc]] - Eliminates redundant creation of exception objects
 * [[Jitrino_OPT/lower| lower]] - Partial inlining for type checks
 * [[Jitrino_OPT/memopt| memopt]] - Redundant memory loads and stores elimination
 * [[Jitrino_OPT/osr| osr]] - Operator strength reduction
 * [[Jitrino_OPT/peel| peel]
] - Loop peeling
 * [[Jitrino_OPT/purge| purge]] - Purge empty nodes
 * [[Jitrino_OPT/simplify| simplify]] - Type/copy propogation and constant folding
 * [[Jitrino_OPT/ssa| ssa]] - SSA construction
 * [[Jitrino_OPT/statprof| statprof]] - Annotates HIR with edge profile using static heuristics
 * [[Jitrino_OPT/throwopt| throwopt]] - Replaces Throw instruction with the jump to the exception handler
 * [[Jitrino_OPT/uce| uce]] - Unreachable code elimination
 * [[Jitrino_OPT/unguard| unguard]] - Removal of untaken type guards
 * [[Jitrino_OPT/unroll| unroll]] - Loop unrolling
Line 40: Line 40:
 * [:Jitrino_OPT/codegen: codegen] - An alias for all LIR transformations
 * [:Jitrino_OPT/api_magic: api_magic] - Replaces known Java API method calls with predefined algorithms written with LIR
 * [:Jitrino_OPT/bbp: bbp] - Back branch polling for loops
 * [:Jitrino_OPT/break: break] - Inserts 'int3' into the prologue of the generated method
 * [:Jitrino_OPT/btr: btr] - Branch optimizations
 * [:Jitrino_OPT/cafl: cafl] - Complex address form loader
 * [:Jitrino_OPT/cg_dce: cg_dce] - Removes dead code
 * [:Jitrino_OPT/cg_fastArrayFill: cg_fastArrayFill] - Finds and replaces particular internal helper with a loop providing fast array filling with a constant
 * [:Jitrino_OPT/constraints: constraints] - Performs resolution of operand constraints and assigns calculated constraints to operands
 * [:Jitrino_OPT/copy: copy] - translates CopyPseudoInsts to corresponding copying sequences
 * [:Jitrino_OPT/early_prop: early_prop] - A simple algorithm of constant and copy propagation
 * [:Jitrino_OPT/emitter: emitter] - Emits binary code from LIR
 * [:Jitrino_OPT/gcmap: gcmap] - Builds a map with information for all Object and Managed pointers operands locations on suspension points
 * [:Jitrino_OPT/gcpoints: gcpoints] - Inserts pseudo-use instructions for some Object operands to extend their live-ranges.
 * [:Jitrino_OPT/i586: i586] - Replaces SSE2 instructions with SSE or FPU ones if SSE2 is not supported by the current platform
 * [:Jitrino_OPT/i8l: i8l] - Splits 64-bit integer operands into two 32-bit ones
 * [:Jitrino_OPT/info: info] - Registers various method information in VM memory associated with the method
 * [:Jitrino_OPT/iprof: iprof] - Instruments a method with various profile collection counters
 * [:Jitrino_OPT/itrace: itrace] - Instruments method entry/exit and unwind points with calls to logger
 * [:Jitrino_OPT/layout: layout] - Prepares code layout
 * [:Jitrino_OPT/light_jni: light_jni] - Allows to call some predefined JNI methods directly avoiding JNI stub
 * [:Jitrino_OPT/native: native] - Transforms 3-address LIR form into 2-address form
 * [:Jitrino_OPT/peephole: peephole] - Performs various architecture specific per-inst optimizations
 * [:Jitrino_OPT/rce: rce] - Removes redundant comparisons. The analysis is based on EFLAGS affect
 * [:Jitrino_OPT/regalloc: regalloc] - Global register allocator
 * [:Jitrino_OPT/si_insts: si_insts] - Saves information about call instructions for stack unwinding
 * [:Jitrino_OPT/spillgen: spillgen] - Local (basic-block level) register allocation and spill generator
 * [:Jitrino_OPT/stack: stack] - Layouts stack and assigns locations for operands on stack
 * [[Jitrino_OPT/codegen| codegen]] - An alias for all LIR transformations
 * [[Jitrino_OPT/api_magic| api_magic]] - Replaces known Java API method calls with predefined algorithms written with LIR
 * [[Jitrino_OPT/bbp| bbp]] - Back branch polling for loops
 * [[Jitrino_OPT/break| break]] - Inserts 'int3' into the prologue of the generated method
 * [[Jitrino_OPT/btr| btr]] - Branch optimizations
 * [[Jitrino_OPT/cafl| cafl]] - Complex address form loader
 * [[Jitrino_OPT/cg_dce| cg_dce]] - Removes dead code
 * [[Jitrino_OPT/cg_fastArrayFill| cg_fastArrayFill]] - Finds and replaces particular internal helper with a loop providing fast array filling with a constant
 * [[Jitrino_OPT/constraints| constraints]] - Performs resolution of operand constraints and assigns calculated constraints to operands
 * [[Jitrino_OPT/copy| copy]] - translates CopyPseudoInsts to corresponding copying sequences
 * [[Jitrino_OPT/early_prop| early_prop]] - A simple algorithm of constant and copy propagation
 * [[Jitrino_OPT/emitter| emitter]] - Emits binary code from LIR
 * [[Jitrino_OPT/gcmap| gcmap]] - Builds a map with information for all Object and Managed pointers operands locations on suspension points
 * [[Jitrino_OPT/gcpoints| gcpoints]] - Inserts pseudo-use instructions for some Object operands to extend their live-ranges.
 * [[Jitrino_OPT/i586| i586]] - Replaces SSE2 instructions with SSE or FPU ones if SSE2 is not supported by the current platform
 * [[Jitrino_OPT/i8l| i8l]] - Splits 64-bit integer operands into two 32-bit ones
 * [[Jitrino_OPT/info| info]] - Registers various method information in VM memory associated with the method
 * [[Jitrino_OPT/iprof| iprof]] - Instruments a method with various profile collection counters
 * [[Jitrino_OPT/itrace| itrace]] - Instruments method entry/exit and unwind points with calls to logger
 * [[Jitrino_OPT/layout| layout]] - Prepares code layout
 * [[Jitrino_OPT/light_jni| light_jni]] - Allows to call some predefined JNI methods directly avoiding JNI stub
 * [[Jitrino_OPT/native| native]] - Transforms 3-address LIR form into 2-address form
 * [[Jitrino_OPT/peephole| peephole]] - Performs various architecture specific per-inst optimizations
 * [[Jitrino_OPT/rce| rce]] - Removes redundant comparisons. The analysis is based on EFLAGS affect
 * [[Jitrino_OPT/regalloc| regalloc]] - Global register allocator
 * [[Jitrino_OPT/si_insts| si_insts]] - Saves information about call instructions for stack unwinding
 * [[Jitrino_OPT/spillgen| spillgen]] - Local (basic-block level) register allocation and spill generator
 * [[Jitrino_OPT/stack| stack]] - Layouts stack and assigns locations for operands on stack
Line 72: Line 72:
 * [:Jitrino_OPT/opt_init: opt_init] - Initializes global optimizer flags
 * [:Jitrino_OPT/lock_method: lock_method] - Locks method data in VM
 * [:Jitrino_OPT/unlock_method: unlock_method] - Unlocks method data in VM
 * [[Jitrino_OPT/opt_init| opt_init]] - Initializes global optimizer flags
 * [[Jitrino_OPT/lock_method| lock_method]] - Locks method data in VM
 * [[Jitrino_OPT/unlock_method| unlock_method]] - Unlocks method data in VM

List of IR transformations used in Jitrino.OPT compiler:

Use this link for details on type system used in Jitrino.OPT compiler

IR construction:

High-Level (HIR) optimizaitons

  • optimizer - An alias for all HIR transformations

  • abce - Array bounds check elimination

  • dce - Dead code elimination

  • dessa - SSA deconstruction

  • devirt_intf - Guarded devirtualization of interface calls

  • devirt_virtual - Guarded devirtualization of virtual calls

  • edge_annotate - IR annotation with edge profile

  • edge_instrument - IR instrumentation in order to collect edge profile

  • escape - Escape analysis bases optimizations

  • gcm - Global code motion

  • gvn - Global value numbering

  • hlo_api_magic - Replaces known Java API method calls with predefined algorithms written with HIR

  • hvn - Hash value numbering (CSE)

  • inline - Inlines hot methods calls

  • inline_helpers - Replaces HIR instruction with a Java method call and inlines this call

  • lazyexc - Eliminates redundant creation of exception objects

  • lower - Partial inlining for type checks

  • memopt - Redundant memory loads and stores elimination

  • osr - Operator strength reduction

  • peel - Loop peeling

  • purge - Purge empty nodes

  • simplify - Type/copy propogation and constant folding

  • ssa - SSA construction

  • statprof - Annotates HIR with edge profile using static heuristics

  • throwopt - Replaces Throw instruction with the jump to the exception handler

  • uce - Unreachable code elimination

  • unguard - Removal of untaken type guards

  • unroll - Loop unrolling

Low-level (LIR) optimizations

  • codegen - An alias for all LIR transformations

  • api_magic - Replaces known Java API method calls with predefined algorithms written with LIR

  • bbp - Back branch polling for loops

  • break - Inserts 'int3' into the prologue of the generated method

  • btr - Branch optimizations

  • cafl - Complex address form loader

  • cg_dce - Removes dead code

  • cg_fastArrayFill - Finds and replaces particular internal helper with a loop providing fast array filling with a constant

  • constraints - Performs resolution of operand constraints and assigns calculated constraints to operands

  • copy - translates CopyPseudoInsts to corresponding copying sequences

  • early_prop - A simple algorithm of constant and copy propagation

  • emitter - Emits binary code from LIR

  • gcmap - Builds a map with information for all Object and Managed pointers operands locations on suspension points

  • gcpoints - Inserts pseudo-use instructions for some Object operands to extend their live-ranges.

  • i586 - Replaces SSE2 instructions with SSE or FPU ones if SSE2 is not supported by the current platform

  • i8l - Splits 64-bit integer operands into two 32-bit ones

  • info - Registers various method information in VM memory associated with the method

  • iprof - Instruments a method with various profile collection counters

  • itrace - Instruments method entry/exit and unwind points with calls to logger

  • layout - Prepares code layout

  • light_jni - Allows to call some predefined JNI methods directly avoiding JNI stub

  • native - Transforms 3-address LIR form into 2-address form

  • peephole - Performs various architecture specific per-inst optimizations

  • rce - Removes redundant comparisons. The analysis is based on EFLAGS affect

  • regalloc - Global register allocator

  • si_insts - Saves information about call instructions for stack unwinding

  • spillgen - Local (basic-block level) register allocation and spill generator

  • stack - Layouts stack and assigns locations for operands on stack

Auxilary runtime and confuguration services:

Jitrino_OPT (last edited 2009-09-20 21:55:09 by localhost)