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