org.jikesrvm.compilers.opt.bc2ir
Class InliningBlockLE

java.lang.Object
  extended by org.jikesrvm.compilers.opt.bc2ir.BasicBlockLE
      extended by org.jikesrvm.compilers.opt.bc2ir.InliningBlockLE

final class InliningBlockLE
extends BasicBlockLE

Extend BasicBlockLE to support inlining during IR generation.


Field Summary
(package private)  BasicBlockLE epilogueBBLE
           
(package private)  GenerationContext gc
           
 
Fields inherited from class org.jikesrvm.compilers.opt.bc2ir.BasicBlockLE
block, fallThrough, handlers, high, left, localState, low, max, parent, right, stackState
 
Constructor Summary
InliningBlockLE(GenerationContext c, BasicBlockLE bble)
           
 
Method Summary
(package private)  void deleteAllOutEdges()
          delete the outgoing CFG edges from all basic blocks in the callee (gc.cfg).
 String toString()
          Returns a string representation of this BBLE.
 
Methods inherited from class org.jikesrvm.compilers.opt.bc2ir.BasicBlockLE
addHandler, clearGenerated, clearInCodeOrder, clearLocalKnown, clearSelfRegen, clearStackKnown, copyIntoLocalState, copyLocalState, genState, isBlack, isGenerated, isInCodeOrder, isLocalKnown, isReadyToGenerate, isRed, isSelfRegen, isStackKnown, setBlack, setGenerated, setInCodeOrder, setLocalKnown, setRed, setSelfRegen, setStackKnown
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

gc

final GenerationContext gc

epilogueBBLE

final BasicBlockLE epilogueBBLE
Constructor Detail

InliningBlockLE

InliningBlockLE(GenerationContext c,
                BasicBlockLE bble)
Method Detail

toString

public String toString()
Description copied from class: BasicBlockLE
Returns a string representation of this BBLE.

Overrides:
toString in class BasicBlockLE

deleteAllOutEdges

void deleteAllOutEdges()
delete the outgoing CFG edges from all basic blocks in the callee (gc.cfg). This is used when the BBLE preceeding the inlined method block needs to be regenerated, thus forcing us to discard the callee IR (which may contains control flow links to the caller IR because of exception handlers).

TODO: One might be able to do this more efficiently by keeping track of the exposed edges in the generation context and commiting them once the top level generation completes. Probably not worth it, since we expect this method to be called very infrequently.