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:

  • No labels