protected void visitBasicBlocks(CFG cfg) { for (BasicBlock basicBlock: cfg.getBasicBlocks()) { BasicBlock(basicBlock); } }
protected void visitBasicBlocks(CFG cfg) { for (BasicBlock basicBlock: cfg.getBasicBlocks()) { BasicBlock(basicBlock); } }
private static void verifyAllBasicBlocksProcessed(CFG cfg, BitSet processed) throws RuntimeException { // Verify that all bbs have been laid out! for (BasicBlock b : cfg.getBasicBlocks()) { if (!processed.get(b.getID())) { throw new RuntimeException("Bad CFG linearization: BB " + b.getID() + " has been missed!"); } } } }
private static void verifyAllBasicBlocksProcessed(CFG cfg, BitSet processed) throws RuntimeException { // Verify that all bbs have been laid out! for (BasicBlock b : cfg.getBasicBlocks()) { if (!processed.get(b.getID())) { throw new RuntimeException("Bad CFG linearization: BB " + b.getID() + " has been missed!"); } } } }
private static void verifyAllBasicBlocksProcessed(CFG cfg, BitSet processed) throws RuntimeException { // Verify that all bbs have been laid out! for (BasicBlock b : cfg.getBasicBlocks()) { if (!processed.get(b.getID())) { throw new RuntimeException("Bad CFG linearization: BB " + b.getID() + " has been missed!"); } } } }
private static void verifyAllBasicBlocksProcessed(CFG cfg, BitSet processed) throws RuntimeException { // Verify that all bbs have been laid out! for (BasicBlock b : cfg.getBasicBlocks()) { if (!processed.get(b.getID())) { throw new RuntimeException("Bad CFG linearization: BB " + b.getID() + " has been missed!"); } } } }
private void buildFlowGraph() { flowGraphNodes = new LinkedList<>(); basicBlockToFlowGraph = new HashMap<>(); for (BasicBlock bb: scope.getCFG().getBasicBlocks()) { U fgNode = buildFlowGraphNode(bb); fgNode.init(); fgNode.buildDataFlowVars(); flowGraphNodes.add(fgNode); basicBlockToFlowGraph.put(bb, fgNode); } } }
private SimpleCloneInfo cloneHostInstrs() { SimpleCloneInfo ii = new SimpleCloneInfo(hostScope, false); for (BasicBlock b : cfg.getBasicBlocks()) { b.cloneInstrs(ii); } return ii; }
private SimpleCloneInfo cloneHostInstrs() { SimpleCloneInfo ii = new SimpleCloneInfo(hostScope, false); for (BasicBlock b : cfg.getBasicBlocks()) { b.cloneInstrs(ii); } return ii; }
private void buildFlowGraph() { flowGraphNodes = new LinkedList<>(); basicBlockToFlowGraph = new HashMap<>(); for (BasicBlock bb: scope.getCFG().getBasicBlocks()) { U fgNode = buildFlowGraphNode(bb); fgNode.init(); fgNode.buildDataFlowVars(); flowGraphNodes.add(fgNode); basicBlockToFlowGraph.put(bb, fgNode); } } }
private void buildFlowGraph() { flowGraphNodes = new LinkedList<FlowGraphNode>(); basicBlockToFlowGraph = new HashMap<Integer, FlowGraphNode>(); for (BasicBlock bb: scope.cfg().getBasicBlocks()) { FlowGraphNode fgNode = buildFlowGraphNode(bb); fgNode.init(); fgNode.buildDataFlowVars(); flowGraphNodes.add(fgNode); basicBlockToFlowGraph.put(bb.getID(), fgNode); } } }
private void buildFlowGraph() { flowGraphNodes = new LinkedList<FlowGraphNode>(); basicBlockToFlowGraph = new HashMap<Integer, FlowGraphNode>(); for (BasicBlock bb: scope.cfg().getBasicBlocks()) { FlowGraphNode fgNode = buildFlowGraphNode(bb); fgNode.init(); fgNode.buildDataFlowVars(); flowGraphNodes.add(fgNode); basicBlockToFlowGraph.put(bb.getID(), fgNode); } } }
@Override public void computeScopeFlagsFromInstructions() { for (BasicBlock b: cfg.getBasicBlocks()) { for (Instr i: b.getInstrs()) { i.computeScopeFlags(getScope()); } } }
@Override public void computeScopeFlagsFromInstructions() { for (BasicBlock b: cfg.getBasicBlocks()) { for (Instr i: b.getInstrs()) { i.computeScopeFlags(getScope()); } } }
@Override public Object execute(IRScope s, Object... data) { // This let us compute execute scope flags for a method based on what all nested closures do for (IRClosure c: s.getClosures()) { run(c, true); } for (BasicBlock b: ((CFG) data[0]).getBasicBlocks()) { runLocalOptsOnInstrList(s, b.getInstrs().listIterator(), false); } // Only after running local opts, compute various execution scope flags s.computeScopeFlags(); // Mark done locallyOptimized = true; return null; }
@Override public Object execute(IRScope s, Object... data) { // This let us compute execute scope flags for a method based on what all nested closures do for (IRClosure c: s.getClosures()) { run(c, true); } for (BasicBlock b: ((CFG) data[0]).getBasicBlocks()) { runLocalOptsOnInstrList(s, b.getInstrs().listIterator(), false); } // Only after running local opts, compute various execution scope flags s.computeScopeFlags(); // Mark done locallyOptimized = true; return null; }
public BasicBlock findCallsiteBB(CallBase call) { long callSiteId = call.getCallSiteId(); if (debug) LOG.info("LOOKING FOR CALLSITEID: " + callSiteId); for (BasicBlock bb: cfg.getBasicBlocks()) { for (Instr i: bb.getInstrs()) { // Some instrs reuse instrs (like LineNumberInstr) so we need to add call check. if (i instanceof CallBase && ((CallBase) i).getCallSiteId() == callSiteId) { if (debug) LOG.info("Found it!!!! -- " + call + ", i: " + i); return bb; } } } if (debug) LOG.info("Did not find it"); return null; }
public BasicBlock findCallsiteBB(CallBase call) { long callSiteId = call.getCallSiteId(); if (debug) LOG.info("LOOKING FOR CALLSITEID: " + callSiteId); for (BasicBlock bb: cfg.getBasicBlocks()) { for (Instr i: bb.getInstrs()) { // Some instrs reuse instrs (like LineNumberInstr) so we need to add call check. if (i instanceof CallBase && ((CallBase) i).getCallSiteId() == callSiteId) { if (debug) LOG.info("Found it!!!! -- " + call + ", i: " + i); return bb; } } } if (debug) LOG.info("Did not find it"); return null; }
public void addGlobalEnsureBB(BasicBlock geb) { assert globalEnsureBB == null: "CFG for scope " + getScope() + " already has a global ensure block."; addBasicBlock(geb); addEdge(geb, getExitBB(), EdgeType.EXIT); for (BasicBlock b: getBasicBlocks()) { if (b != geb && !bbIsProtected(b) && b != getEntryBB()) { addEdge(b, geb, EdgeType.EXCEPTION); setRescuerBB(b, geb); } } globalEnsureBB = geb; }
public void addGlobalEnsureBB(BasicBlock geb) { assert globalEnsureBB == null: "CFG for scope " + getScope() + " already has a global ensure block."; addBasicBlock(geb); addEdge(geb, getExitBB(), EdgeType.EXIT); for (BasicBlock b: getBasicBlocks()) { if (b != geb && !bbIsProtected(b) && b != getEntryBB()) { addEdge(b, geb, EdgeType.EXCEPTION); setRescuerBB(b, geb); } } globalEnsureBB = geb; }