|
Size: 5524
Comment:
|
← Revision 19 as of 2009-09-20 21:55:09 ⇥
Size: 5587
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:
translator - Translates Java bytecode to High Level Intermediate Representation (HIR)
hir2lir - Translates HIR to Low Level Intermediate Representation (LIR)
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:
opt_init - Initializes global optimizer flags
lock_method - Locks method data in VM
unlock_method - Unlocks method data in VM