|
|||||||||||
PREV NEXT | FRAMES NO FRAMES |
Uses of BasicBlock in org.jikesrvm.adaptive.recompilation.instrumentation |
---|
Methods in org.jikesrvm.adaptive.recompilation.instrumentation that return BasicBlock | |
---|---|
private static BasicBlock |
InstrumentationSamplingFramework.myCopyWithoutLinks(BasicBlock bb,
IR ir)
The same as BasicBlock.copyWithoutLinks except that it renames all temp variables that are never used outside the basic block. |
Methods in org.jikesrvm.adaptive.recompilation.instrumentation with parameters of type BasicBlock | |
---|---|
private void |
InstrumentationSamplingFramework.appendLoad(BasicBlock bb,
IR ir)
Append a load of the global counter to the given basic block. |
private static void |
InstrumentationSamplingFramework.clearScratchObjects(BasicBlock bb,
IR ir)
Go through all statements in the basic block and clear the scratch objects. |
private void |
InstrumentationSamplingFramework.conditionalizeInstrumentationOperation(IR ir,
Instruction i,
BasicBlock bb)
Take an instrumentation operation (an instruction) and guard it with a counter-based check. |
private void |
InstrumentationSamplingFramework.createCheck(BasicBlock checkBB,
BasicBlock noInstBB,
BasicBlock instBB,
boolean fallthroughToInstBB,
IR ir)
Append a check to a basic block, and make it jump to the right places. |
private static Instruction |
InstrumentationSamplingFramework.getFirstInstWithOperator(Operator operator,
BasicBlock bb)
Go through all instructions and find the first with the given operator. |
static Instruction |
InstrumentationSamplingFramework.getFirstInstWithYieldPoint(BasicBlock bb)
Go through all instructions and find one that is a yield point |
private static BasicBlock |
InstrumentationSamplingFramework.myCopyWithoutLinks(BasicBlock bb,
IR ir)
The same as BasicBlock.copyWithoutLinks except that it renames all temp variables that are never used outside the basic block. |
private void |
InstrumentationSamplingFramework.prependCounterReset(BasicBlock bb,
IR ir)
Prepend the code to reset the global counter to the given basic block. |
private void |
InstrumentationSamplingFramework.prependDecrement(BasicBlock bb,
IR ir)
Append a decrement of the global counter to the given basic block. |
private void |
InstrumentationSamplingFramework.prependStore(BasicBlock bb,
IR ir)
Append a store of the global counter to the given basic block. |
private static void |
InstrumentationSamplingFramework.updateTemps(BasicBlock bb,
IR ir)
Given an basic block, rename all of the temporary registers that are local to the block. |
Method parameters in org.jikesrvm.adaptive.recompilation.instrumentation with type arguments of type BasicBlock | |
---|---|
private static void |
InstrumentationSamplingFramework.adjustPointersInDuplicatedCode(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap)
Go through all blocks in duplicated code and adjust the edges as follows: All edges (in duplicated code) that go into a block with a yieldpoint must jump to back to the original code. |
private static void |
InstrumentationSamplingFramework.adjustPointersInDuplicatedCode(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap)
Go through all blocks in duplicated code and adjust the edges as follows: All edges (in duplicated code) that go into a block with a yieldpoint must jump to back to the original code. |
private void |
InstrumentationSamplingFramework.duplicateCode(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap,
HashSet<BasicBlock> exceptionHandlerBlocks)
Make a duplicate of all basic blocks down at the bottom of the code order. |
private void |
InstrumentationSamplingFramework.duplicateCode(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap,
HashSet<BasicBlock> exceptionHandlerBlocks)
Make a duplicate of all basic blocks down at the bottom of the code order. |
private void |
InstrumentationSamplingFramework.duplicateCode(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap,
HashSet<BasicBlock> exceptionHandlerBlocks)
Make a duplicate of all basic blocks down at the bottom of the code order. |
private void |
InstrumentationSamplingFramework.insertCBSChecks(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap,
HashSet<BasicBlock> exceptionHandlerBlocks)
In the checking code, insert CBS checks at each yieldpoint, to transfer code into the duplicated (instrumented) code. |
private void |
InstrumentationSamplingFramework.insertCBSChecks(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap,
HashSet<BasicBlock> exceptionHandlerBlocks)
In the checking code, insert CBS checks at each yieldpoint, to transfer code into the duplicated (instrumented) code. |
private void |
InstrumentationSamplingFramework.insertCBSChecks(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap,
HashSet<BasicBlock> exceptionHandlerBlocks)
In the checking code, insert CBS checks at each yieldpoint, to transfer code into the duplicated (instrumented) code. |
private static void |
InstrumentationSamplingFramework.removeInstrumentationFromOrig(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap)
Remove instrumentation from the original version of all duplicated basic blocks. |
private static void |
InstrumentationSamplingFramework.removeInstrumentationFromOrig(IR ir,
HashMap<BasicBlock,BasicBlock> origToDupMap)
Remove instrumentation from the original version of all duplicated basic blocks. |
Uses of BasicBlock in org.jikesrvm.compilers.opt |
---|
Methods in org.jikesrvm.compilers.opt with parameters of type BasicBlock | |
---|---|
private boolean |
AdjustBranchProbabilities.findInfrequentInstruction(BasicBlock bb)
|
private void |
LocalCSE.optimizeBasicBlockHIR(IR ir,
BasicBlock bb)
Perform Local CSE for a basic block in HIR. |
private void |
LocalCSE.optimizeBasicBlockLIR(IR ir,
BasicBlock bb)
Perform Local CSE for a basic block in LIR. |
Uses of BasicBlock in org.jikesrvm.compilers.opt.bc2ir |
---|
Fields in org.jikesrvm.compilers.opt.bc2ir declared as BasicBlock | |
---|---|
(package private) BasicBlock |
BasicBlockLE.block
Basic block that this BBLE refers to. |
BasicBlock |
GenerationContext.epilogue
The basic block into which BC2IR's caller will generate an epilogue. |
BasicBlock |
GenerationContext.exit
The exit node of the outermost CFG (used by BC2IR for not-definitely caught athrows and by OSR_Yieldpoints) |
BasicBlock |
GenerationContext.prologue
The basic block into which BC2IR's caller will generate a "prologue." |
(package private) BasicBlock |
GenerationContext.unlockAndRethrow
A catch, unlock, and rethrow exception handler used for synchronized methods. |
Methods in org.jikesrvm.compilers.opt.bc2ir with parameters of type BasicBlock | |
---|---|
private void |
GenerationContext.appendInstruction(BasicBlock b,
Instruction s,
int bcIndex)
|
private void |
BBSet.injectMove(BasicBlock block,
RegisterOperand res,
Operand val)
|
(package private) void |
BBSet.rectifyStacks(BasicBlock block,
OperandStack stack,
BasicBlockLE p)
Rectify the given stack state with the state contained in the given BBLE, adding the necessary move instructions to the end of the given basic block to make register numbers agree and rectify mis-matched constants. |
Uses of BasicBlock in org.jikesrvm.compilers.opt.controlflow |
---|
Fields in org.jikesrvm.compilers.opt.controlflow declared as BasicBlock | |
---|---|
private BasicBlock |
LTDominatorInfo.ancestor
|
(package private) BasicBlock |
DominatorCell.block
The basic block corresponding to this lattice cell. |
private BasicBlock |
DominatorTreeNode.block
the basic block this node represents |
private BasicBlock |
Diamond.bottom
The bottom of the diamond |
(package private) BasicBlock |
StaticSplitting.CandInfo.candBB
|
private BasicBlock |
LTDominatorInfo.child
|
private BasicBlock |
LTDominatorInfo.dominator
the immediate dominator |
BasicBlock |
AnnotatedLSTNode.exit
The in loop block that either loops or leaves the loop |
(package private) BasicBlock |
ReorderingPhase.ChainInfo.head
|
BasicBlock |
LSTNode.header
Basic block which is the loop head |
(package private) BasicBlock |
DominatorInfo.idom
The basic block's immediate dominator. |
private BasicBlock |
LTDominatorInfo.label
|
private BasicBlock |
Diamond.notTaken
The "not-taken" branch of the diamond (might be null) |
private BasicBlock |
LTDominatorInfo.parent
|
BasicBlock |
AnnotatedLSTNode.predecessor
The out of loop block before the header |
(package private) BasicBlock |
StaticSplitting.CandInfo.prevBB
|
(package private) BasicBlock |
ReorderingPhase.Edge.source
|
(package private) BasicBlock |
LSTNode.Edge.source
|
(package private) BasicBlock |
StaticSplitting.CandInfo.succBB
|
BasicBlock |
AnnotatedLSTNode.successor
The out of loop block following the exit block |
private BasicBlock |
Diamond.taken
The "taken" branch of the diamond (might be null) |
(package private) BasicBlock |
ReorderingPhase.Edge.target
|
(package private) BasicBlock |
LSTNode.Edge.target
|
private BasicBlock |
Diamond.top
The top of the diamond |
private BasicBlock[] |
EstimateBlockFrequencies.topOrder
Topological ordering (ignoring backedges) of CFG |
private BasicBlock[] |
LTDominators.vertex
a mapping from DFS number to their basic blocks |
Fields in org.jikesrvm.compilers.opt.controlflow with type parameters of type BasicBlock | |
---|---|
private Enumeration<BasicBlock> |
LTDominatorInfo.bbEnum
|
private ArrayList<BasicBlock> |
AnnotatedLSTNode.BBEnum.blocks
ArrayList holding basic blocks |
private HashSet<BasicBlock> |
LTDominatorInfo.bucket
|
private HashMap<BasicBlock,LSTNode> |
LSTGraph.loopMap
Map of bb to LSTNode of innermost loop containing bb |
Methods in org.jikesrvm.compilers.opt.controlflow that return BasicBlock | |
---|---|
(package private) static BasicBlock |
LoopUnrolling.copyAndLinkBlock(IR ir,
BasicBlock seqLast,
BasicBlock block)
|
BasicBlock |
DominatorTree.deepestCommonAncestor(BasicBlock a,
BasicBlock b)
Return the deepest common dominance ancestor of blocks a and b |
private BasicBlock |
LTDominators.EVAL(BasicBlock block)
This method inspects the passed block and returns the following: block, if block is a root of a tree in the forest any vertex, u ! |
private BasicBlock |
StaticSplitting.findColdPrev(BasicBlock bb)
Return the cold predecessor to the argument block. |
private BasicBlock |
StaticSplitting.findColdSucc(BasicBlock bb,
Instruction test)
Return the off-trace successor of b (on and off relative to the argument test) |
BasicBlock |
LTDominatorInfo.getAncestor()
Returns the ancestor for this block |
private BasicBlock |
LTDominators.getAncestor(BasicBlock block)
Returns the ancestor for the passed block |
BasicBlock |
DominatorTreeNode.getBlock()
Get the basic block for this dominator tree node |
(package private) BasicBlock |
Diamond.getBottom()
The bottom of the diamond |
BasicBlock |
LTDominatorInfo.getChild()
returns the child |
private BasicBlock |
LTDominators.getChild(BasicBlock block)
Get the child node for this block |
private BasicBlock |
LTDominators.getDom(BasicBlock block)
Returns the current dominator for the passed block |
BasicBlock |
LTDominatorInfo.getDominator()
Returns the immediate dominator for this node |
private BasicBlock |
DominatorTree.getFirstNode()
Get the first node, either entry or exit depending on which way we are viewing the graph |
private BasicBlock |
LTDominators.getFirstNode()
Get the first node, either entry or exit depending on which way we are viewing the graph |
BasicBlock |
LSTNode.getHeader()
|
static BasicBlock |
LTDominatorInfo.getIdom(BasicBlock bb)
return the immediate dominator of a basic block. |
BasicBlock |
LTDominatorInfo.getLabel()
returns the label |
private BasicBlock |
LTDominators.getLabel(BasicBlock block)
returns the label for the passed block or null if the block is null |
(package private) BasicBlock |
Diamond.getNotTaken()
The "not-taken" branch of the diamond (might be null) |
BasicBlock |
LTDominatorInfo.getParent()
Returns the parent of this block |
BasicBlock |
DominatorTree.getParent(BasicBlock bb)
Return the parent of the vertex corresponding to a basic block |
private BasicBlock |
LTDominators.getParent(BasicBlock block)
Returns the parent for the passed block |
(package private) BasicBlock |
Diamond.getTaken()
The "taken" branch of the diamond (might be null) |
(package private) BasicBlock |
Diamond.getTop()
The top of the diamond |
static BasicBlock |
DominatorInfo.idom(BasicBlock bb)
Return the immediate dominator of a basic block. |
private static BasicBlock[] |
CFGTransformations.inLoopPredecessors(LSTNode n)
the predecessors of the loop header that are part of the loop. |
private static BasicBlock[] |
CFGTransformations.inLoopSuccessors(LSTNode n)
the successors of the loop header that are part of the loop. |
private static BasicBlock[] |
CFGTransformations.loopPredecessors(LSTNode n)
the predecessors of the loop header that are not part of the loop |
(package private) static BasicBlock[] |
LoopUnrolling.makeSomeCopies(int unrollFactor,
IR ir,
BitVector nloop,
int blocks,
BasicBlock header,
BasicBlock exitBlock,
BasicBlock seqStart)
|
BasicBlock |
AnnotatedLSTNode.BBEnum.nextElement()
Get the next element from the vector and move the current block along |
Methods in org.jikesrvm.compilers.opt.controlflow that return types with arguments of type BasicBlock | |
---|---|
(package private) Enumeration<BasicBlock> |
DominatorTreeNode.domFrontierEnumerator(IR ir)
Enumerate the basic blocks in the dominance frontier for this node. |
Enumeration<BasicBlock> |
AnnotatedLSTNode.getBasicBlocks()
Return an enumeration of basic blocks corresponding to a depth first traversal of the blocks in the loops graphs |
Iterator<BasicBlock> |
LTDominatorInfo.getBucketIterator()
Returns an iterator over this block's bucket |
Enumeration<BasicBlock> |
LTDominatorInfo.getEnum()
Helper method to return the Info field associated with a block |
private Enumeration<BasicBlock> |
LTDominators.getNextNodes(BasicBlock block)
Returns an enumeration of the "next" nodes (either out or in) for the passed block depending on which way we are viewing the graph |
private Enumeration<BasicBlock> |
LTDominators.getPrevNodes(BasicBlock block)
Returns an enumeration of the "prev" nodes (either in or out) for the passed block depending on which way we are viewing the graph |
Methods in org.jikesrvm.compilers.opt.controlflow with parameters of type BasicBlock | |
---|---|
void |
AnnotatedLSTNode.BBEnum.add(BasicBlock block)
Insert a block to the end of the list |
void |
LSTNode.addLoopExit(BasicBlock source,
BasicBlock target,
float prob)
|
private void |
DominatorTree.addNode(BasicBlock b)
Creates dominator tree nodes for the passed block and adds them to the map. |
void |
DominatorCell.addSingleBlock(BasicBlock bb)
Include a single basic block in this set. |
void |
LTDominatorInfo.addToBucket(BasicBlock block)
Adds the passed block from the bucket for this node |
(package private) static Diamond |
Diamond.buildDiamond(BasicBlock bb)
See if bb is the root of a diamond. |
private void |
AnnotatedLSTNode.checkInEdgesAreInLoop(BasicBlock block)
Check the edges into a block are from within the loop |
private void |
AnnotatedLSTNode.checkOutEdgesAreInLoop(BasicBlock block)
Check the edges out of a block are within the loop |
private void |
LTDominators.compress(BasicBlock block)
This recursive method performs the path compression |
boolean |
AnnotatedLSTNode.contains(BasicBlock block)
Does this basic block appear in the loop? |
private boolean |
StaticSplitting.containsOSRPoint(BasicBlock bb)
|
(package private) static BasicBlock |
LoopUnrolling.copyAndLinkBlock(IR ir,
BasicBlock seqLast,
BasicBlock block)
|
private Instruction[] |
BranchOptimizations.copyAndMapInstructions(BasicBlock bb,
HashMap<Instruction,Instruction> map)
For each real non-branch instruction s in bb, Copy s to s', and store s' in the returned array Insert the function s->s' in the map |
BasicBlock |
DominatorTree.deepestCommonAncestor(BasicBlock a,
BasicBlock b)
Return the deepest common dominance ancestor of blocks a and b |
(package private) static void |
LoopUnrolling.deleteBranches(BasicBlock b)
|
int |
DominatorTree.depth(BasicBlock b)
Return the distance from the root of the dominator tree to a given basic block |
protected void |
LTDominators.DFS(BasicBlock block)
The non-recursive depth-first numbering code called from Step 1. |
boolean |
DominatorTree.dominates(BasicBlock master,
BasicBlock slave)
Does basic block number "master" dominate basic block number "slave"? |
BitVector |
LTDominatorInfo.dominators(BasicBlock block,
IR ir)
This method returns the set of blocks that dominates the passed block, i.e., it answers the question "Who dominates me?" |
(package private) void |
AnnotatedLSTNode.dumpBlock(BasicBlock block)
Dump a human readable description of a basic block within the loop |
private void |
ReorderingPhase.dumpChain(BasicBlock head)
|
private static float |
CFGTransformations.edgeFrequency(BasicBlock a,
BasicBlock b)
|
private BasicBlock |
LTDominators.EVAL(BasicBlock block)
This method inspects the passed block and returns the following: block, if block is a root of a tree in the forest any vertex, u ! |
private int |
BranchOptimizations.evaluateCost(BasicBlock bb)
Evaluate the cost of a basic block, in number of real instructions. |
private static boolean |
CFGTransformations.exitsLoop(BasicBlock b,
BitVector loop)
|
private void |
LSTGraph.findBackEdges(BasicBlock bb,
int numBlocks)
This routine performs a non-recursive depth-first search starting at the block passed looking for back edges. |
private BasicBlock |
StaticSplitting.findColdPrev(BasicBlock bb)
Return the cold predecessor to the argument block. |
private BasicBlock |
StaticSplitting.findColdSucc(BasicBlock bb,
Instruction test)
Return the off-trace successor of b (on and off relative to the argument test) |
private static Diamond |
Diamond.fourElementDiamond(BasicBlock top,
BasicBlock left,
BasicBlock right,
BasicBlock bottom)
Given that four blocks form a diamond, return the correct structure. |
private boolean |
BranchOptimizations.generateBooleanCompare(IR ir,
BasicBlock bb,
Instruction cb,
BasicBlock tb)
Attempt to generate a boolean compare opcode from a conditional branch. |
private boolean |
BranchOptimizations.generateCondMove(IR ir,
BasicBlock bb,
Instruction cb)
Attempt to generate a straight-line sequence using conditional move instructions, to replace a diamond control flow structure. |
Operand |
AnnotatedLSTNode.generateLoopInvariantOperand(BasicBlock block,
Operand op)
Loop invariants may not be accessible before a loop, so generate the instructions so they are |
private BasicBlock |
LTDominators.getAncestor(BasicBlock block)
Returns the ancestor for the passed block |
private AnnotatedLSTNode.BBEnum |
AnnotatedLSTNode.getBasicBlocks(BasicBlock block,
AnnotatedLSTNode.BBEnum bbs,
BitVector blocksLeftToVisit)
Return an enumeration of basic blocks corresponding to a depth first traversal of the blocks in the loops graphs |
private Instruction |
StaticSplitting.getCandidateTest(BasicBlock bb)
Return the candidate test in b, or null if
b does not have one. |
(package private) DF_LatticeCell[] |
DominatorSystem.getCellsForPredecessors(BasicBlock bb)
Return a list of lattice cells corresponding to the predecessors of a basic block. |
private BasicBlock |
LTDominators.getChild(BasicBlock block)
Get the child node for this block |
Enumeration<TreeNode> |
DominatorTree.getChildren(BasicBlock bb)
Enumerate the children of the vertex corresponding to a basic block |
private BasicBlock |
LTDominators.getDom(BasicBlock block)
Returns the current dominator for the passed block |
BitVector |
DominatorTree.getDominanceFrontier(BasicBlock bb)
Return the (already calculated) dominance frontier for a basic block |
static BasicBlock |
LTDominatorInfo.getIdom(BasicBlock bb)
return the immediate dominator of a basic block. |
static LTDominatorInfo |
LTDominatorInfo.getInfo(BasicBlock block)
Helper method to return the Info field associated with a block |
(package private) Object |
DominatorSystem.getKey(BasicBlock bb)
Get the DF_LatticeCell key corresponding to a basic block |
private BasicBlock |
LTDominators.getLabel(BasicBlock block)
returns the label for the passed block or null if the block is null |
LSTNode |
LSTGraph.getLoop(BasicBlock b)
|
int |
LSTGraph.getLoopNestDepth(BasicBlock bb)
|
private Enumeration<BasicBlock> |
LTDominators.getNextNodes(BasicBlock block)
Returns an enumeration of the "next" nodes (either out or in) for the passed block depending on which way we are viewing the graph |
BasicBlock |
DominatorTree.getParent(BasicBlock bb)
Return the parent of the vertex corresponding to a basic block |
private BasicBlock |
LTDominators.getParent(BasicBlock block)
Returns the parent for the passed block |
private Enumeration<BasicBlock> |
LTDominators.getPrevNodes(BasicBlock block)
Returns an enumeration of the "prev" nodes (either in or out) for the passed block depending on which way we are viewing the graph |
private int |
LTDominators.getSemi(BasicBlock block)
Returns the current semidominator for the passed block |
private int |
LTDominators.getSize(BasicBlock block)
returns the size associated with the block |
private boolean |
BranchOptimizations.hasCMTaboo(BasicBlock bb)
Do any of the instructions in a basic block preclude eliminating the basic block with conditional moves? |
private static boolean |
BranchOptimizations.hasFloatingPointDef(BasicBlock bb,
boolean invert)
Do any of the instructions in a basic block define a floating-point register? |
private boolean |
BranchOptimizations.hasLongDef(BasicBlock bb)
Do any of the instructions in a basic block define a long register? |
static BasicBlock |
DominatorInfo.idom(BasicBlock bb)
Return the immediate dominator of a basic block. |
boolean |
LSTGraph.inInnermostLoop(BasicBlock bb)
Is a given basic block in an innermost loop? |
(package private) static boolean |
CFGTransformations.inLoop(BasicBlock b,
BitVector nloop)
|
boolean |
DominatorInfo.isDominatedBy(BasicBlock bb)
Is the basic block represented by this structure dominated by another basic block? |
static boolean |
LTDominatorInfo.isDominatedBy(BasicBlock block,
BasicBlock master)
This method determines if the 1st parameter (block) is dominated by the 2nd parameter (master), i.e., must control pass through "master" before reaching "block" |
(package private) static boolean |
DominatorInfo.isDominatedBy(BasicBlock slave,
BasicBlock master)
Is one basic block (the slave) dominated by another (the master)? |
boolean |
AnnotatedLSTNode.isInLoop(BasicBlock block)
Is the a particular block in this loop? |
boolean |
LSTGraph.isLoopExit(BasicBlock source,
BasicBlock target)
Is the edge from source to target an exit from the loop containing source? |
private static boolean |
AnnotatedLSTNode.isLoopInvariant(Operand op,
BitVector loop,
BasicBlock header)
Test whether operand value will be invariant in a loop by tracing back earlier definitions. |
private void |
LTDominators.LINK(BasicBlock block1,
BasicBlock block2)
Adds edge (block1, block2) to the forest maintained as an auxiliary data structure. |
(package private) static BasicBlock[] |
LoopUnrolling.makeSomeCopies(int unrollFactor,
IR ir,
BitVector nloop,
int blocks,
BasicBlock header,
BasicBlock exitBlock,
BasicBlock seqStart)
|
protected boolean |
MIRBranchOptimizations.optimizeBranchInstruction(IR ir,
Instruction s,
BasicBlock bb)
This method actually does the work of attempting to peephole optimize a branch instruction. |
protected boolean |
BranchOptimizations.optimizeBranchInstruction(IR ir,
Instruction s,
BasicBlock bb)
This method actually does the work of attempting to peephole optimize a branch instruction. |
protected abstract boolean |
BranchOptimizationDriver.optimizeBranchInstruction(IR ir,
Instruction s,
BasicBlock bb)
This method actually does the work of attempting to peephole optimize a branch instruction. |
private void |
YieldPoints.prependYield(BasicBlock bb,
Operator yp,
int bcIndex,
InlineSequence position)
Add a YIELD instruction to the appropriate place for the basic block passed. |
private void |
LTDominators.printNextNodes(BasicBlock block)
Print the "next" nodes (either out or in) for the passed block depending on which way we are viewing the graph |
private boolean |
MIRBranchOptimizations.processCondBranch(IR ir,
Instruction cb,
BasicBlock bb)
Perform optimizations for a conditional branch. |
private boolean |
BranchOptimizations.processConditionalBranch(IR ir,
Instruction cb,
BasicBlock bb)
Perform optimizations for a conditional branch. |
private void |
EstimateBlockFrequencies.processEdge(LSTNode n,
BasicBlock source,
BasicBlock target,
float prob,
float weight)
|
private boolean |
MIRBranchOptimizations.processGoto(IR ir,
Instruction g,
BasicBlock bb)
Perform optimizations for an unconditonal branch. |
private boolean |
BranchOptimizations.processGoto(IR ir,
Instruction g,
BasicBlock bb)
Perform optimizations for a Goto. |
(package private) static boolean |
BranchSimplifier.processIfCmp(IR ir,
BasicBlock bb,
Instruction s)
Process IfCmp branch instruction |
(package private) static boolean |
BranchSimplifier.processIfCmp2(IR ir,
BasicBlock bb,
Instruction s)
Process IfCmp2 branch instruction |
(package private) static boolean |
BranchSimplifier.processInlineGuard(IR ir,
BasicBlock bb,
Instruction s)
Process InlineGuard branch instruction |
private boolean |
BranchOptimizations.processInlineGuard(IR ir,
Instruction cb,
BasicBlock bb)
Perform optimizations for an inline guard. |
(package private) static boolean |
BranchSimplifier.processLookupSwitch(IR ir,
BasicBlock bb,
Instruction s)
Process LookupSwitch branch instruction |
private void |
AnnotatedLSTNode.processLoopBlock(BasicBlock block)
Process a regular block within the loop |
(package private) static boolean |
BranchSimplifier.processTableSwitch(IR ir,
BasicBlock bb,
Instruction s)
Process TableSwitch branch instruction |
private boolean |
MIRBranchOptimizations.processTwoTargetConditionalBranch(IR ir,
Instruction cb,
BasicBlock bb)
Perform optimizations for a two way conditional branch. |
private boolean |
BranchOptimizations.processTwoTargetConditionalBranch(IR ir,
Instruction cb,
BasicBlock bb)
Perform optimizations for a two way conditional branch. |
private void |
StaticSplitting.pushCandidate(BasicBlock cand,
BasicBlock prev,
BasicBlock succ,
Instruction test)
|
private static void |
BranchSimplifier.removeBranchesAfterGotos(BasicBlock bb)
To maintain IR integrity, remove any branches that are after the first GOTO in the basic block. |
void |
LTDominatorInfo.removeFromBucket(BasicBlock block)
Removes the passed block from the bucket for this node |
void |
LTDominatorInfo.setAncestor(BasicBlock value)
Sets the ancestor for the value passed |
void |
LTDominatorInfo.setChild(BasicBlock value)
sets the child field |
void |
LTDominatorInfo.setDominator(BasicBlock value)
Sets the immediate dominator for this node |
void |
LTDominatorInfo.setLabel(BasicBlock value)
sets the label |
void |
LTDominatorInfo.setParent(BasicBlock value)
Sets the parent of this block |
static boolean |
BranchSimplifier.simplify(BasicBlock bb,
IR ir)
Given a basic block, attempt to simplify any conditional branch instructions with constant operands. |
private static Diamond |
Diamond.threeElementDiamond(BasicBlock top,
BasicBlock side,
BasicBlock bottom)
Given that three blocks form a diamond, return the correct structure. |
private boolean |
StaticSplitting.tooBig(BasicBlock bb,
int maxCost)
Simplistic cost estimate; since we are doing the splitting based on static hints, we are only willing to copy a very small amount of code. |
(package private) Instruction |
TailRecursionElimination.transform(Instruction call,
Instruction prologue,
BasicBlock target,
IR ir)
Transform the tail recursive call into a loop. |
Method parameters in org.jikesrvm.compilers.opt.controlflow with type arguments of type BasicBlock | |
---|---|
void |
LTDominatorInfo.setEnum(Enumeration<BasicBlock> bbEnum)
set the basic block enum field |
Constructors in org.jikesrvm.compilers.opt.controlflow with parameters of type BasicBlock | |
---|---|
Diamond(BasicBlock top,
BasicBlock taken,
BasicBlock notTaken,
BasicBlock bottom)
|
|
DominatorCell(BasicBlock bb,
IR ir)
Make a bit set for a basic block |
|
DominatorTreeNode(BasicBlock block)
Construct a dominator tree node for a given basic block. |
|
LSTNode.Edge(BasicBlock s,
BasicBlock t,
float p)
|
|
LSTNode(BasicBlock bb)
|
|
LTDominatorInfo(BasicBlock block)
|
|
ReorderingPhase.ChainInfo(BasicBlock h)
|
|
ReorderingPhase.Edge(BasicBlock s,
BasicBlock t,
float w)
|
|
StaticSplitting.CandInfo(BasicBlock c,
BasicBlock p,
BasicBlock s,
Instruction t,
StaticSplitting.CandInfo n)
|
Uses of BasicBlock in org.jikesrvm.compilers.opt.depgraph |
---|
Fields in org.jikesrvm.compilers.opt.depgraph declared as BasicBlock | |
---|---|
private BasicBlock |
DepGraph.currentBlock
The basic block we are processing |
Constructors in org.jikesrvm.compilers.opt.depgraph with parameters of type BasicBlock | |
---|---|
DepGraph(IR ir,
Instruction start,
Instruction end,
BasicBlock currentBlock)
Constructor (computes the dependence graph!). |
Uses of BasicBlock in org.jikesrvm.compilers.opt.hir2lir |
---|
Methods in org.jikesrvm.compilers.opt.hir2lir that return BasicBlock | |
---|---|
private static BasicBlock |
ConvertToLowLevelIR._lookupswitchHelper(Instruction switchInstr,
RegisterOperand reg,
BasicBlock defaultBB,
IR ir,
BasicBlock curBlock,
int low,
int high,
int min,
int max)
Helper function to generate the binary search tree for a lookupswitch bytecode |
private static BasicBlock |
DynamicTypeCheckExpansion.advanceBlock(int bcIndex,
BasicBlock curBlock,
IR ir)
|
private static BasicBlock |
DynamicTypeCheckExpansion.fallThroughBB(Instruction s,
IR ir)
|
Methods in org.jikesrvm.compilers.opt.hir2lir with parameters of type BasicBlock | |
---|---|
private static BasicBlock |
ConvertToLowLevelIR._lookupswitchHelper(Instruction switchInstr,
RegisterOperand reg,
BasicBlock defaultBB,
IR ir,
BasicBlock curBlock,
int low,
int high,
int min,
int max)
Helper function to generate the binary search tree for a lookupswitch bytecode |
private static BasicBlock |
DynamicTypeCheckExpansion.advanceBlock(int bcIndex,
BasicBlock curBlock,
IR ir)
|
private static Instruction |
DynamicTypeCheckExpansion.generateBranchingTypeCheck(Instruction s,
IR ir,
Operand RHSobj,
TypeReference LHStype,
Operand RHStib,
BasicBlock trueBlock,
BasicBlock falseBlock,
RegisterOperand oldGuard,
BranchProfileOperand falseProb)
Generate a branching dynamic type check. |
Uses of BasicBlock in org.jikesrvm.compilers.opt.instrsched |
---|
Fields in org.jikesrvm.compilers.opt.instrsched declared as BasicBlock | |
---|---|
private BasicBlock |
DefaultPriority.bb
|
private BasicBlock |
Scheduler.bb
Current basic block. |
Constructors in org.jikesrvm.compilers.opt.instrsched with parameters of type BasicBlock | |
---|---|
DefaultPriority(BasicBlock bb)
Creates new priority object for a given basic block |
Uses of BasicBlock in org.jikesrvm.compilers.opt.ir |
---|
Subclasses of BasicBlock in org.jikesrvm.compilers.opt.ir | |
---|---|
class |
ExceptionHandlerBasicBlock
A basic block that marks the start of an exception handler. |
Fields in org.jikesrvm.compilers.opt.ir declared as BasicBlock | |
---|---|
private BasicBlock |
ControlFlowGraph._exitNode
The distinguished exit node of the FCFG |
BasicBlock |
MIRInfo.backedgeYieldpointBlock
A basic block holding the call to Thread.threadSwitch for a backedge. |
private BasicBlock[] |
IR.basicBlockMap
Backing store for IR.getBasicBlock(int) . |
private BasicBlock[] |
BasicBlock.ComputedBBEnum.blocks
|
protected BasicBlock |
BasicBlock.BBEnum.current
|
BasicBlock |
MIRInfo.epilogueYieldpointBlock
A basic block holding the call to Thread.threadSwitch for an epilogue. |
BasicBlock |
MIRInfo.osrYieldpointBlock
A basic block holding the call to yieldpointFromOsrOpt for an OSR invalidation. |
BasicBlock |
MIRInfo.prologueYieldpointBlock
A basic block holding the call to Thread.threadSwitch for a prologue. |
private BasicBlock[] |
WeightedBranchTargets.targets
|
Fields in org.jikesrvm.compilers.opt.ir with type parameters of type BasicBlock | |
---|---|
private Stack<BasicBlock> |
IR.BitSetBBEnum.stack
|
Methods in org.jikesrvm.compilers.opt.ir that return BasicBlock | |
---|---|
protected abstract BasicBlock |
BasicBlock.BBEnum.advance()
|
protected BasicBlock |
BasicBlock.NormalOutEdgeEnum.advance()
|
protected BasicBlock |
BasicBlock.ExceptionOutEdgeEnum.advance()
|
BasicBlock |
BasicBlock.copyWithoutLinks(IR ir)
Copies a basic block. |
BasicBlock |
BasicBlock.createSubBlock(int bc,
IR ir)
|
BasicBlock |
BasicBlock.createSubBlock(int bc,
IR ir,
float wf)
Creates a new basic block that inherits its exception handling, etc from 'this'. |
BasicBlock |
WeightedBranchTargets.curBlock()
|
BasicBlock |
ControlFlowGraph.entry()
Return the entry node of the FCFG. |
BasicBlock |
ControlFlowGraph.exit()
Return the "exit" node of the FCFG. |
BasicBlock |
IR.firstBasicBlockInCodeOrder()
Return the first basic block with respect to the current code linearization order. |
BasicBlock |
ControlFlowGraph.firstInCodeOrder()
Return the first basic block with respect to the current code linearization order. |
BasicBlock |
Instruction.getBasicBlock()
Get the basic block that contains this instruction. |
BasicBlock |
IR.getBasicBlock(int number)
Get the basic block with a given number. |
BasicBlock |
Instruction.getBranchTarget()
Returns the basic block jumped to by this BRANCH instruction. |
BasicBlock |
BasicBlock.getFallThroughBlock()
If there is a fallthrough FCFG successor of this node return it. |
BasicBlock |
BasicBlock.getNotTakenNextBlock()
|
BasicBlock |
IR.lastBasicBlockInCodeOrder()
Return the last basic block with respect to the current code linearization order. |
BasicBlock |
ControlFlowGraph.lastInCodeOrder()
Return the last basic block with respect to the current code linearization order. |
static BasicBlock |
IRTools.makeBlockOnEdge(BasicBlock in,
BasicBlock out,
IR ir)
Make an empty basic block on an edge in the control flow graph, and fix up the control flow graph and IR instructions accordingly. |
(package private) static BasicBlock |
BasicBlock.makeExit()
Make an EXIT node. |
BasicBlock |
BasicBlock.nextBasicBlockInCodeOrder()
Return the next basic block in with respect to the current code linearization order. |
BasicBlock |
BasicBlock.BBEnum.nextElement()
|
BasicBlock |
BasicBlock.ComputedBBEnum.nextElement()
|
BasicBlock |
BasicBlock.InEdgeEnum.nextElement()
|
BasicBlock |
BasicBlock.OutEdgeEnum.nextElement()
|
BasicBlock |
IR.BitSetBBEnum.nextElement()
|
BasicBlock |
BasicBlock.prevBasicBlockInCodeOrder()
Return the previous basic block in with respect to the current code linearization order. |
BasicBlock |
BasicBlock.replicateThisOut(IR ir,
BasicBlock b)
For basic block b which has to be a "normal" successor of this, make a copy of b, and set up the CFG so that this block has normal out edges to the copy. |
BasicBlock |
BasicBlock.replicateThisOut(IR ir,
BasicBlock b,
BasicBlock pred)
For basic block b which has to be a "normal" successor of this, make a copy of b, and set up the CFG so that this block has normal out edges to the copy. |
BasicBlock |
BasicBlock.segregateInstruction(Instruction target,
IR ir)
Ensure that the target instruction is the only real instruction in its basic block and that it has exactly one successor and one predecessor basic blocks that are linked to it by fall through edges. |
BasicBlock |
BasicBlock.splitNodeAt(Instruction last_instr_BB1,
IR ir)
Splits a node at an instruction point. |
BasicBlock |
BasicBlock.splitNodeWithLinksAt(Instruction last_instr_BB1,
IR ir)
Splits a node at an instruction point. |
Methods in org.jikesrvm.compilers.opt.ir that return types with arguments of type BasicBlock | |
---|---|
Enumeration<BasicBlock> |
ControlFlowGraph.basicBlocks()
|
Enumeration<BasicBlock> |
ExceptionHandlerBasicBlockBag.enumerator()
An enumeration of all the exception handler basic blocks (transitively) in the EHBBB. |
static Enumeration<BasicBlock> |
IREnumeration.forwardBE(IR ir)
A forward enumeration of all the basic blocks in the IR. |
Enumeration<BasicBlock> |
IR.forwardBlockEnumerator()
Forward (with respect to the current code linearization order) iteration overal all the basic blocks in the IR. |
Enumeration<BasicBlock> |
BasicBlock.getApplicableExceptionalOut(Instruction instr)
An enumeration of the subset of exceptional out edges that are applicable to the given instruction (assumed to be in instruction in 'this') |
Enumeration<BasicBlock> |
IR.getBasicBlocks()
Enumerate the basic blocks in the IR in an arbitrary order. |
Enumeration<BasicBlock> |
IR.getBasicBlocks(BitVector bits)
Get an enumeration of all the basic blocks whose numbers appear in the given BitSet. |
Enumeration<BasicBlock> |
Instruction.getBranchTargets()
Return an enumeration of the basic blocks that are targets of this branch instruction. |
Enumeration<BasicBlock> |
BasicBlock.getExceptionalOut()
An enumeration of the 'exceptional' (reached via exceptional control flow) out nodes of the block. |
Enumeration<BasicBlock> |
BasicBlock.getExceptionHandlers()
An enumeration of the in scope exception handlers for this basic block. |
Enumeration<BasicBlock> |
BasicBlock.getIn()
An enumeration of the FCFG in nodes. |
Enumeration<BasicBlock> |
BasicBlock.getInNodes()
An enumeration of the FCFG in nodes. |
Enumeration<BasicBlock> |
BasicBlock.getNormalOut()
An enumeration of the 'normal' (not reached via exceptional control flow) out nodes of the block. |
Enumeration<BasicBlock> |
BasicBlock.getReachableExceptionHandlers()
Returns an Enumeration of the in scope exception handlers that are actually reachable from this basic block in the order that they are applicable (which is semantically meaningful). |
static Enumeration<BasicBlock> |
IREnumeration.reverseBE(IR ir)
A reverse enumeration of all the basic blocks in the IR. |
Enumeration<BasicBlock> |
IR.reverseBlockEnumerator()
Reverse (with respect to the current code linearization order) iteration overal all the basic blocks in the IR. |
Methods in org.jikesrvm.compilers.opt.ir with parameters of type BasicBlock | |
---|---|
private void |
WeightedBranchTargets.addEdge(BasicBlock target,
float weight)
|
(package private) void |
BasicBlock.ComputedBBEnum.addElement(BasicBlock b)
|
void |
ControlFlowGraph.addLastInCodeOrder(BasicBlock bb)
Add a block not currently in the code ordering to the end of the code ordering. |
(package private) void |
BasicBlock.ComputedBBEnum.addPossiblyDuplicateElement(BasicBlock b)
|
void |
ControlFlowGraph.breakCodeOrder(BasicBlock bb1,
BasicBlock bb2)
Create a break in the code order between bb1 and bb2 (bb1 and bb2 must be currently adjacent in the code order). |
void |
ControlFlowGraph.insertAfterInCodeOrder(BasicBlock old,
BasicBlock toAdd)
Insert a block 'toAdd' not currently in the code ordering after a block 'old' that is currently in the code ordering. |
void |
ControlFlowGraph.insertBeforeInCodeOrder(BasicBlock old,
BasicBlock toAdd)
Insert a block 'toAdd' not currently in the code ordering before a block 'old' that is currently in the code ordering. |
static void |
IRTools.insertInstructionsAfter(Instruction after,
BasicBlock temp)
Inserts the instructions in the given basic block after the given instruction. |
boolean |
BasicBlock.isExceptionalOut(BasicBlock bb)
Is there an 'exceptional' out edge to the given basic block? |
boolean |
BasicBlock.isExceptionHandlerEquivalent(BasicBlock other)
Compare the in scope exception handlers of two blocks. |
boolean |
BasicBlock.isIn(BasicBlock bb)
Is there an in edge from the given basic block? |
boolean |
BasicBlock.isNormalOut(BasicBlock bb)
Is there a 'normal' out edge to the given basic block? |
boolean |
BasicBlock.isOut(BasicBlock bb)
Is there an out edge to the given basic block? |
void |
ControlFlowGraph.linkInCodeOrder(BasicBlock bb1,
BasicBlock bb2)
Make BB2 follow BB1 in the code ordering. |
void |
ControlFlowGraph.linkToExit(BasicBlock bb)
Add an FCFG edge from the given basic block to the exit node. |
static BasicBlock |
IRTools.makeBlockOnEdge(BasicBlock in,
BasicBlock out,
IR ir)
Make an empty basic block on an edge in the control flow graph, and fix up the control flow graph and IR instructions accordingly. |
void |
BasicBlock.moveBehind(BasicBlock pred,
IR ir)
Move me behind `pred'. |
void |
BasicBlock.redirectOuts(BasicBlock b,
BasicBlock bCopy,
IR ir)
Change all branches from this to b to branches that go to bCopy instead. |
void |
ExceptionHandlerBasicBlockBag.remove(BasicBlock bb)
take an element out f the bag. |
void |
ControlFlowGraph.removeFromCFG(BasicBlock bb)
Remove a basic block from the FCFG, leaving the code ordering unchanged. |
void |
ControlFlowGraph.removeFromCFGAndCodeOrder(BasicBlock bb)
Remove a basic block from both the CFG and code ordering |
void |
ControlFlowGraph.removeFromCodeOrder(BasicBlock bb)
Remove a basic block from the code ordering, leaving the FCFG unchanged. |
BasicBlock |
BasicBlock.replicateThisOut(IR ir,
BasicBlock b)
For basic block b which has to be a "normal" successor of this, make a copy of b, and set up the CFG so that this block has normal out edges to the copy. |
BasicBlock |
BasicBlock.replicateThisOut(IR ir,
BasicBlock b,
BasicBlock pred)
For basic block b which has to be a "normal" successor of this, make a copy of b, and set up the CFG so that this block has normal out edges to the copy. |
private void |
IR.verifyAllBlocksAreReachable(String where,
BasicBlock curBB,
BitVector visitedNormalBBs,
BitVector visitedExceptionalBBs,
boolean fromExceptionEdge)
Verify that every block in the CFG is reachable as failing to do so will cause EnterSSA.insertPhiFunctions to possibly access elements in DominanceFrontier.getIteratedDominanceFrontier and then DominanceFrontier.getDominanceFrontier that aren't defined. |
private void |
IR.verifyUseFollowsDef(String where,
HashSet<Object> definedVariables,
BasicBlock curBB,
BitVector visitedBBs,
ArrayList<BasicBlock> path,
int maxPathLength,
boolean traceExceptionEdges)
Check whether uses follow definitions and in SSA form that variables aren't multiply defined |
Method parameters in org.jikesrvm.compilers.opt.ir with type arguments of type BasicBlock | |
---|---|
private void |
IR.verifyUseFollowsDef(String where,
HashSet<Object> definedVariables,
BasicBlock curBB,
BitVector visitedBBs,
ArrayList<BasicBlock> path,
int maxPathLength,
boolean traceExceptionEdges)
Check whether uses follow definitions and in SSA form that variables aren't multiply defined |
Constructors in org.jikesrvm.compilers.opt.ir with parameters of type BasicBlock | |
---|---|
IREnumeration.AllInstructionsEnum(IR ir,
BasicBlock block)
Construct an enumeration for all instructions, both implicit and explicit in the IR, for a given basic block |
|
WeightedBranchTargets(BasicBlock bb)
|
Uses of BasicBlock in org.jikesrvm.compilers.opt.ir.operand |
---|
Fields in org.jikesrvm.compilers.opt.ir.operand declared as BasicBlock | |
---|---|
BasicBlock |
BasicBlockOperand.block
The basic block |
Constructors in org.jikesrvm.compilers.opt.ir.operand with parameters of type BasicBlock | |
---|---|
BasicBlockOperand(BasicBlock b)
Construct a new basic block operand with the given block. |
Uses of BasicBlock in org.jikesrvm.compilers.opt.lir2mir |
---|
Methods in org.jikesrvm.compilers.opt.lir2mir that return BasicBlock | |
---|---|
(package private) BasicBlock |
SplitBasicBlock.splitEachBlock(BasicBlock bb,
IR ir)
Splits basic block |
Methods in org.jikesrvm.compilers.opt.lir2mir with parameters of type BasicBlock | |
---|---|
(package private) void |
BURS.finalizeBlock(BasicBlock bb)
Must be called after invoke for all non-empty blocks. |
void |
MinimalBURS.invoke(BasicBlock bb)
Build BURS trees for dependence graph bb , label the trees, and
then generate MIR instructions based on the labeling. |
(package private) void |
BURS.prepareForBlock(BasicBlock bb)
Prepare to convert a block. |
(package private) BasicBlock |
SplitBasicBlock.splitEachBlock(BasicBlock bb,
IR ir)
Splits basic block |
Uses of BasicBlock in org.jikesrvm.compilers.opt.liveness |
---|
Methods in org.jikesrvm.compilers.opt.liveness with parameters of type BasicBlock | |
---|---|
private void |
LiveAnalysis.computeBlockGenAndKill(BasicBlock bblock,
IR ir)
Compute summary (local) live variable analysis for a basic block, which is basically Gen and Kill information. |
private static boolean |
LiveInterval.containsUnresolvedElement(BasicBlock block,
Register reg)
Check to see if an unresolved LiveIntervalElement node for the register passed exists for the basic block passed. |
static void |
LiveInterval.createEndLiveRange(LiveSet set,
BasicBlock block,
Instruction inst)
This method iterates over each element in the the passed live set. |
static void |
LiveInterval.createEndLiveRange(Register reg,
BasicBlock block,
Instruction inst)
This method checks if an existing unresolved live interval node, i.e., one that has an end instruction, but no beginning instruction, is present for the register and basic block passed. |
LiveAnalysis.BBLiveElement |
LiveAnalysis.getLiveInfo(BasicBlock bb)
REturns the live information for a particular block |
HashSet<Register> |
LiveAnalysis.getLiveRegistersOnEdge(BasicBlock bb1,
BasicBlock bb2)
Return the set of registers that are live on the control-flow edge basic block bb1 to basic block bb2 |
(package private) HashSet<Register> |
LiveAnalysis.getLiveRegistersOnEntry(BasicBlock bb)
Return the set of registers that are live across a basic block, and who are live before the basic block entry. |
(package private) HashSet<Register> |
LiveAnalysis.getLiveRegistersOnExit(BasicBlock bb)
Return the set of registers that are live across a basic block, and who are live after the basic block exit. |
private void |
LiveAnalysis.getUsesFromPhis(BasicBlock bblock)
The rvals of phi nodes are logically uses in the phi's predecessor blocks, so here we collect phi rvals from the current block's successors into the gen set for this block, being careful to collect only the appropriate rval |
static void |
LiveInterval.moveUpwardExposedRegsToFront(BasicBlock block)
This method finds any LiveInterval node that does not have a start instruction (it is null) and moves this node to the front of the list. |
static void |
LiveInterval.printLiveIntervalList(BasicBlock block)
Print the live intervals for a block. |
private boolean |
LiveAnalysis.processBlock(BasicBlock block,
boolean reuseCurrentSet,
IR ir)
Compute the in set for this block given the out, gen, and kill set |
static void |
LiveInterval.setStartLiveRange(Register reg,
Instruction inst,
BasicBlock block)
This method finds the LiveInterval node for the register and basic block passed. |
Uses of BasicBlock in org.jikesrvm.compilers.opt.regalloc |
---|
Fields in org.jikesrvm.compilers.opt.regalloc declared as BasicBlock | |
---|---|
private BasicBlock |
LiveIntervalElement.bb
The basic block holding this live interval element |
private BasicBlock |
LinearScan.IntervalAnalysis.listOfBlocks
a list of basic blocks in topological order |
private BasicBlock |
LinearScan.IntervalAnalysis.reverseTopFirst
a reverse topological list of basic blocks |
Methods in org.jikesrvm.compilers.opt.regalloc that return BasicBlock | |
---|---|
BasicBlock |
LiveIntervalElement.getBasicBlock()
|
Methods in org.jikesrvm.compilers.opt.regalloc with parameters of type BasicBlock | |
---|---|
void |
GenericRegisterRestrictions.addArchRestrictions(BasicBlock bb,
ArrayList<LiveIntervalElement> symbolics)
Add architecture-specific register restrictions for a basic block. |
(package private) LinearScan.BasicInterval |
LinearScan.CompoundInterval.addRange(LiveIntervalElement live,
BasicBlock bb)
Add a new live range to this compound interval. |
(package private) static int |
LinearScan.getDfnBegin(LiveIntervalElement live,
BasicBlock bb)
Return the Depth-first-number of the beginning of the live interval. |
(package private) static int |
LinearScan.getDfnEnd(LiveIntervalElement live,
BasicBlock bb)
Return the Depth-first-number of the end of the live interval. |
private void |
GenericRegisterRestrictions.processBlock(BasicBlock bb)
Record all the register restrictions dictated by live ranges on a particular basic block. |
private LinearScan.CompoundInterval |
LinearScan.IntervalAnalysis.processLiveInterval(LiveIntervalElement live,
BasicBlock bb)
for each live interval associated with this block we either add a new interval, or extend a previous interval if it is contiguous |
void |
LiveIntervalElement.setBasicBlock(BasicBlock bb)
|
private boolean |
LinearScan.CompoundInterval.shouldConcatenate(LiveIntervalElement live,
BasicBlock bb)
Should we simply merge the live interval live into a
previous BasicInterval? |
Uses of BasicBlock in org.jikesrvm.compilers.opt.regalloc.ia32 |
---|
Methods in org.jikesrvm.compilers.opt.regalloc.ia32 with parameters of type BasicBlock | |
---|---|
void |
RegisterRestrictions.addArchRestrictions(BasicBlock bb,
ArrayList<LiveIntervalElement> symbolics)
|
Uses of BasicBlock in org.jikesrvm.compilers.opt.ssa |
---|
Fields in org.jikesrvm.compilers.opt.ssa declared as BasicBlock | |
---|---|
private BasicBlock[] |
LICM.block
|
(package private) BasicBlock |
LiveRangeSplitting.LiveRangeSplittingPhase.BasicBlockPair.dest
The sink of a control-flow edge |
private BasicBlock[] |
LICM.origBlock
|
(package private) BasicBlock |
LiveRangeSplitting.LiveRangeSplittingPhase.BasicBlockPair.src
The source of a control-flow edge |
Fields in org.jikesrvm.compilers.opt.ssa with type parameters of type BasicBlock | |
---|---|
private HashMap<BasicBlock,ArrayList<Instruction>> |
SSADictionary.heapPhi
A mapping from BasicBlock to ArrayList
of Instruction . |
Methods in org.jikesrvm.compilers.opt.ssa that return BasicBlock | |
---|---|
private BasicBlock |
LICM.commonDominator(BasicBlock a,
BasicBlock b)
|
private BasicBlock |
LoopVersioning.generateExplicitBoundCheck(Instruction boundCheckInstr,
Operand minIndexValue,
Operand maxIndexValue,
HashMap<Register,Register> optimalRegMap,
BasicBlock block,
BasicBlock unoptimizedLoopEntry)
Generate bound check branch blocks |
private BasicBlock |
LoopVersioning.generateNullCheckBranchBlocks(AnnotatedLSTNode loop,
ArrayList<Instruction> checksToEliminate,
HashMap<Register,Register> optimalRegMap,
BasicBlock block,
BasicBlock unoptimizedLoopEntry)
Generate null check branch blocks |
(package private) BasicBlock |
LICM.getBlock(Instruction inst)
Get the basic block of an instruction |
private BasicBlock |
RedundantBranchElimination.RBE.getNotTakenBlock(Instruction s)
Return the basic block that s's block will goto if s is not taken. |
(package private) BasicBlock |
LICM.getOrigBlock(Instruction inst)
Get the block, where the instruction was originally located |
(package private) BasicBlock |
LICM.scheduleHeapUsesLate(Instruction inst,
BasicBlock lateBlock)
Schedule me as early as possible, but behind the definitions of op[i] and behind earlyPos |
(package private) BasicBlock |
LICM.scheduleLate(Instruction inst)
Schedule as late as possible. |
private BasicBlock |
LICM.scheduleScalarUsesLate(Instruction inst,
BasicBlock lateBlock)
Schedule me as late as possible, but in front of my uses and before latePos |
(package private) BasicBlock |
LICM.upto(Instruction earlyPos,
BasicBlock lateBlock,
Instruction inst)
Visit the blocks between the late and the early position along their path in the dominator tree. |
(package private) BasicBlock |
LICM.useBlock(Instruction use,
Operand op)
|
Methods in org.jikesrvm.compilers.opt.ssa that return types with arguments of type BasicBlock | |
---|---|
private HashMap<BasicBlock,BasicBlock> |
LoopVersioning.createCloneLoop(AnnotatedLSTNode loop,
HashMap<Register,Register> regMap,
HashMap<Register,BasicBlock> regToBlockMap)
Create a clone of the loop replacing definitions in the cloned loop with those found in the register map |
private HashMap<BasicBlock,BasicBlock> |
LoopVersioning.createCloneLoop(AnnotatedLSTNode loop,
HashMap<Register,Register> regMap,
HashMap<Register,BasicBlock> regToBlockMap)
Create a clone of the loop replacing definitions in the cloned loop with those found in the register map |
private HashMap<BasicBlock,BasicBlock> |
LoopVersioning.createOptimizedLoop(AnnotatedLSTNode loop,
HashMap<Register,Register> regMap,
ArrayList<Instruction> instrToEliminate,
HashMap<Register,BasicBlock> regToBlockMap)
Create a clone of the loop replacing definitions in the cloned loop with those found in the register map and eliminate unnecessary bound checks |
private HashMap<BasicBlock,BasicBlock> |
LoopVersioning.createOptimizedLoop(AnnotatedLSTNode loop,
HashMap<Register,Register> regMap,
ArrayList<Instruction> instrToEliminate,
HashMap<Register,BasicBlock> regToBlockMap)
Create a clone of the loop replacing definitions in the cloned loop with those found in the register map and eliminate unnecessary bound checks |
Methods in org.jikesrvm.compilers.opt.ssa with parameters of type BasicBlock | |
---|---|
(package private) static void |
SSA.addAtEnd(IR ir,
BasicBlock bb,
Instruction c,
boolean exp)
Add a move instruction at the end of a basic block, renaming with a temporary register if needed to protect conditional branches at the end of the block. |
(package private) void |
SSADictionary.addExceptionStateToDefs(Instruction s,
BasicBlock b)
Register that an instruction defines the exception state. |
private void |
SSADictionary.aloadHelper(Instruction s,
BasicBlock b)
Record the effects of a aload instruction on the heap array SSA form. |
private void |
SSADictionary.arraylengthHelper(Instruction s,
BasicBlock b)
Record the effects of an arraylength instruction on the heap array SSA form. |
private void |
SSADictionary.astoreHelper(Instruction s,
BasicBlock b)
Record the effects of an astore instruction on the heap array SSA form. |
private void |
SSADictionary.bbendHelper(Instruction s,
BasicBlock b)
Record the effects of a bbend instruction on the heap array SSA form. |
private int |
LICM.checkLoop(Instruction inst,
HeapOperand<Object> hop,
int xidx,
BasicBlock block)
check that inside the loop, the heap variable is only used/defed by simple, non-volatile loads/stores returns one of: CL_LOADS_ONLY, CL_STORES_ONLY, CL_LOADS_AND_STORES, CL_COMPLEX |
private BasicBlock |
LICM.commonDominator(BasicBlock a,
BasicBlock b)
|
private boolean |
LoopVersioning.createBranchBlocks(AnnotatedLSTNode loop,
BasicBlock block,
ArrayList<Instruction> checksToEliminate,
BasicBlock unoptimizedLoopEntry,
BasicBlock optimizedLoopEntry,
HashMap<Register,Register> optimalRegMap)
Create the block containing explict branches to either the optimized or unoptimized loops |
(package private) void |
SSADictionary.createHeapPhiInstruction(BasicBlock bb,
HeapVariable<Object> H)
Create a heap control phi instruction, and store it at the beginning of a basic block. |
private static HashSet<Register> |
LiveRangeSplitting.LiveRangeSplittingPhase.findOrCreateSplitSet(HashMap<LiveRangeSplitting.LiveRangeSplittingPhase.BasicBlockPair,HashSet<Register>> map,
BasicBlock b1,
BasicBlock b2)
Given a mapping from BasicBlockPair -> HashSet, find or create the hash set corresponding to a given basic block pair |
private void |
LoopVersioning.fixUpPhiPredecessors(ArrayList<Instruction> phiInstructions,
BasicBlock unoptimizedLoopExit,
BasicBlock optimizedLoopExit)
When phi nodes were generated the basic blocks weren't known for the predecessors, fix this up now. |
(package private) float |
LICM.frequency(BasicBlock b)
How expensive is it to place an instruction in this block? |
private BasicBlock |
LoopVersioning.generateExplicitBoundCheck(Instruction boundCheckInstr,
Operand minIndexValue,
Operand maxIndexValue,
HashMap<Register,Register> optimalRegMap,
BasicBlock block,
BasicBlock unoptimizedLoopEntry)
Generate bound check branch blocks |
private BasicBlock |
LoopVersioning.generateNullCheckBranchBlocks(AnnotatedLSTNode loop,
ArrayList<Instruction> checksToEliminate,
HashMap<Register,Register> optimalRegMap,
BasicBlock block,
BasicBlock unoptimizedLoopEntry)
Generate null check branch blocks |
(package private) SSADictionary.AllInstructionEnumeration |
SSADictionary.getAllInstructions(BasicBlock bb)
Return an enumeration of all instructions for a basic block, including the control-PHI functions for heap variables stored implicitly here. |
private void |
SSADictionary.getFieldHelper(Instruction s,
BasicBlock b)
Record the effects of a getfield instruction on the heap array SSA form. |
Iterator<Instruction> |
SSADictionary.getHeapPhiInstructions(BasicBlock bb)
Return an enumeration of the control-phi functions for Heap variables at the beginning of a basic block. |
private void |
SSADictionary.getStaticHelper(Instruction s,
BasicBlock b)
Record the effects of a getstatic instruction on the heap array SSA form. |
private void |
GlobalCSE.globalCSE(BasicBlock b)
Recursively descend over all blocks dominated by b. |
private void |
LeaveSSA.insertCopies(BasicBlock bb,
DominatorTree dom,
LiveAnalysis live)
Insert copy instructions into a basic block to safely translate out of SSA form. |
private void |
EnterSSA.insertPhi(BasicBlock bb,
Register r)
Insert a phi function for a symbolic register at the head of a basic block. |
private boolean |
LICM.inVariantLocation(Instruction inst,
BasicBlock block)
|
private void |
SSADictionary.labelHelper(Instruction s,
BasicBlock b)
Record the effects of a label instruction on the heap array SSA form. |
private static Instruction |
SSADictionary.makePhiInstruction(HeapVariable<Object> H,
BasicBlock bb)
Create a phi-function instruction for a heap variable |
private Instruction |
EnterSSA.makePhiInstruction(Register r,
BasicBlock bb)
Create a phi-function instruction |
(package private) void |
LICM.move(Instruction inst,
BasicBlock to)
move `inst' behind `pred' |
private void |
SSADictionary.newArrayHelper(Instruction s,
BasicBlock b)
Update the heap array SSA form for an array allocation instruction |
private void |
SSADictionary.newHelper(Instruction s,
BasicBlock b)
Update the heap array SSA form for an allocation instruction |
private RegisterOperand |
LoopVersioning.nullCheckPerformedInLoopPredecessors(BasicBlock header,
Instruction instr)
Can we eliminate a null check as it has lready been performed? |
private void |
LeaveSSA.performRename(BasicBlock bb,
DominatorTree dom,
LeaveSSA.VariableStacks s)
substitute variables renamed in control parents |
private void |
SSADictionary.phiHelper(Instruction s,
BasicBlock b)
Record the effects of a phi instruction on the heap array SSA form. |
(package private) boolean |
LICM.postDominates(BasicBlock a,
BasicBlock b)
does a post dominate b? |
(package private) static void |
SSA.purgeBlockFromPHIs(BasicBlock source,
BasicBlock target)
Fix up any PHI instructions in the given target block to reflect that the given source block is no longer a predecessor of target. |
private void |
SSADictionary.putFieldHelper(Instruction s,
BasicBlock b)
Record the effects of a putfield instruction on the heap array SSA form. |
private void |
SSADictionary.putStaticHelper(Instruction s,
BasicBlock b)
Record the effects of a putstatic instruction on the heap array SSA form. |
void |
HeapVariable.registerDef(BasicBlock b)
Note that this heap variable is defined in a given basic block. |
private void |
SSADictionary.registerDef(Instruction s,
BasicBlock b,
FieldReference fr)
Register that instruction s writes a heap variable for
a given field. |
private void |
SSADictionary.registerDef(Instruction s,
BasicBlock b,
String a)
Register that the instruction s writes a heap variable for
a given field. |
private void |
SSADictionary.registerDef(Instruction s,
BasicBlock b,
TypeReference t)
Register that an instruction writes a heap variable for a given type. |
(package private) void |
SSADictionary.registerExit(Instruction s,
BasicBlock b)
Register that an instruction s can potentially leave the procedure. |
(package private) void |
SSADictionary.registerInstruction(Instruction s,
BasicBlock b)
Record the heap variables that instruction s defines and uses. |
(package private) void |
SSADictionary.registerUnknown(Instruction s,
BasicBlock b)
Register that an instruction s has unknown side effects. |
private void |
RedundantBranchElimination.RBE.removeCondBranch(BasicBlock source,
Instruction cb,
IR ir,
Instruction di)
Remove cb from source, updating PHI nodes to maintain SSA form. |
(package private) static void |
SSA.replaceBlockInPhis(BasicBlock target,
BasicBlock B1,
BasicBlock B2)
Update PHI instructions in the target block so that any PHIs that come from basic block B1, now come from basic block B2. |
(package private) HeapOperand<Object>[] |
SSADictionary.replaceDefs(Instruction s,
BasicBlock b)
Replace all heap variables that an instruction defs with new heap variables. |
private void |
LeaveSSA.scheduleCopies(BasicBlock bb,
LiveAnalysis live)
Record pending copy operations needed to insert at the end of a basic block. |
(package private) BasicBlock |
LICM.scheduleHeapUsesLate(Instruction inst,
BasicBlock lateBlock)
Schedule me as early as possible, but behind the definitions of op[i] and behind earlyPos |
private BasicBlock |
LICM.scheduleScalarUsesLate(Instruction inst,
BasicBlock lateBlock)
Schedule me as late as possible, but in front of my uses and before latePos |
private void |
EnterSSA.search(BasicBlock X,
Stack<RegisterOperand>[] S)
This routine is the guts of the SSA construction phase for scalars. |
private void |
EnterSSA.search2(BasicBlock X,
HashMap<Object,Stack<HeapOperand<Object>>> stacks)
This routine is the guts of the SSA construction phase for heap array SSA. |
(package private) void |
LICM.setBlock(Instruction inst,
BasicBlock b)
Set the basic block for an instruction |
(package private) void |
LICM.setOrigBlock(Instruction inst,
BasicBlock b)
Set the block, where the instruction is originally located. |
private boolean |
LICM.simplify(Instruction inst,
BasicBlock block)
|
private void |
RedundantBranchElimination.RBE.takeCondBranch(BasicBlock source,
Instruction cb,
IR ir)
Transform cb into a GOTO, updating PHI nodes to maintain SSA form. |
(package private) BasicBlock |
LICM.upto(Instruction earlyPos,
BasicBlock lateBlock,
Instruction inst)
Visit the blocks between the late and the early position along their path in the dominator tree. |
private boolean |
LeaveSSA.usedBelowCopy(BasicBlock bb,
Register r)
|
private boolean |
LICM.useDominates(Operand op,
BasicBlock block)
|
Method parameters in org.jikesrvm.compilers.opt.ssa with type arguments of type BasicBlock | |
---|---|
private HashMap<BasicBlock,BasicBlock> |
LoopVersioning.createCloneLoop(AnnotatedLSTNode loop,
HashMap<Register,Register> regMap,
HashMap<Register,BasicBlock> regToBlockMap)
Create a clone of the loop replacing definitions in the cloned loop with those found in the register map |
private HashMap<BasicBlock,BasicBlock> |
LoopVersioning.createOptimizedLoop(AnnotatedLSTNode loop,
HashMap<Register,Register> regMap,
ArrayList<Instruction> instrToEliminate,
HashMap<Register,BasicBlock> regToBlockMap)
Create a clone of the loop replacing definitions in the cloned loop with those found in the register map and eliminate unnecessary bound checks |
private void |
LoopVersioning.removeUnoptimizedLoop(AnnotatedLSTNode loop,
HashMap<BasicBlock,BasicBlock> unoptimizedLoopMap)
Remove unreachable unoptimized loop |
private void |
LoopVersioning.removeUnoptimizedLoop(AnnotatedLSTNode loop,
HashMap<BasicBlock,BasicBlock> unoptimizedLoopMap)
Remove unreachable unoptimized loop |
Constructors in org.jikesrvm.compilers.opt.ssa with parameters of type BasicBlock | |
---|---|
LiveRangeSplitting.LiveRangeSplittingPhase.BasicBlockPair(BasicBlock src,
BasicBlock dest)
|
|
SSADictionary.AllInstructionEnumeration(BasicBlock bb,
SSADictionary dict)
Construct an enumeration for all instructions, both implicit and explicit in the IR, for a given basic block |
|
|||||||||||
PREV NEXT | FRAMES NO FRAMES |