clone.setEnsurerBB(cloneBBMap.get(b), cloneBBMap.get(ensurerMap.get(b)));
clone.setEnsurerBB(cloneBBMap.get(b), cloneBBMap.get(ensurerMap.get(b)));
public void addGlobalEnsureBB(BasicBlock geb) { assert globalEnsureBB == null: "CFG for scope " + getScope() + " already has a global ensure block."; globalEnsureBB = geb; addEdge(geb, getExitBB(), EdgeType.EXIT); for (BasicBlock b: getBasicBlocks()) { if (b != geb && !bbIsProtected(b)) { addEdge(b, geb, EdgeType.EXCEPTION); setRescuerBB(b, geb); setEnsurerBB(b, geb); } } // We are not creating a global exception region and adding it to the list of // exc. regions because in graph form, we dont know what the "last BB" is. // That requires a linearized form of the CFG's bbs. So, the JIT can add // a special case for this global exception block since it has access to the // linearized form. }
public void addGlobalEnsureBB(BasicBlock geb) { assert globalEnsureBB == null: "CFG for scope " + getScope() + " already has a global ensure block."; globalEnsureBB = geb; addEdge(geb, getExitBB(), EdgeType.EXIT); for (BasicBlock b: getBasicBlocks()) { if (b != geb && !bbIsProtected(b)) { addEdge(b, geb, EdgeType.EXCEPTION); setRescuerBB(b, geb); setEnsurerBB(b, geb); } } // We are not creating a global exception region and adding it to the list of // exc. regions because in graph form, we dont know what the "last BB" is. // That requires a linearized form of the CFG's bbs. So, the JIT can add // a special case for this global exception block since it has access to the // linearized form. }
graph.addEdge(b, firstRescueBB, EdgeType.EXCEPTION); if (ensureBlockBB != null) { setEnsurerBB(b, ensureBlockBB); if (ensureBlockBB != firstRescueBB) {
graph.addEdge(b, firstRescueBB, EdgeType.EXCEPTION); if (ensureBlockBB != null) { setEnsurerBB(b, ensureBlockBB); if (ensureBlockBB != firstRescueBB) {
if (callBBensurer != null) cfg.setEnsurerBB(splitBB, callBBensurer); cfg.setEnsurerBB(xRenamed, ii.getRenamedBB(xEnsurer)); } else if (callBBensurer != null) { cfg.setEnsurerBB(xRenamed, callBBensurer);
if (callBBensurer != null) cfg.setEnsurerBB(splitBB, callBBensurer); cfg.setEnsurerBB(xRenamed, ii.getRenamedBB(xEnsurer)); } else if (callBBensurer != null) { cfg.setEnsurerBB(xRenamed, callBBensurer);
if ((aE == null) && (bE != null)) { setRescuerBB(a, bE); setEnsurerBB(a, bE);
if ((aE == null) && (bE != null)) { setRescuerBB(a, bE); setEnsurerBB(a, bE);
if (yieldBBensurer != null) cfg.setEnsurerBB(splitBB, yieldBBensurer); cfg.setEnsurerBB(cb, cbEnsurer); } else if (yieldBBensurer != null) { cfg.setEnsurerBB(cb, yieldBBensurer);
if (yieldBBensurer != null) cfg.setEnsurerBB(splitBB, yieldBBensurer); cfg.setEnsurerBB(cb, cbEnsurer); } else if (yieldBBensurer != null) { cfg.setEnsurerBB(cb, yieldBBensurer);