protected FlowGraphNode getFlowGraphNode(BasicBlock b) { return basicBlockToFlowGraph.get(b.getID()); }
protected FlowGraphNode getFlowGraphNode(BasicBlock b) { return basicBlockToFlowGraph.get(b.getID()); }
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 processDestBB(List<U> workList, BitSet bbSet, BasicBlock d) { int id = d.getID(); if (!bbSet.get(id)) { bbSet.set(id); workList.add(problem.getFlowGraphNode(d)); } }
private void processDestBB(List<U> workList, BitSet bbSet, BasicBlock d) { int id = d.getID(); if (!bbSet.get(id)) { bbSet.set(id); workList.add(problem.getFlowGraphNode(d)); } }
private void processDestBB(List<FlowGraphNode> workList, BitSet bbSet, BasicBlock d) { int id = d.getID(); if (bbSet.get(id) == false) { bbSet.set(id); workList.add(problem.getFlowGraphNode(d)); } }
private void processDestBB(List<FlowGraphNode> workList, BitSet bbSet, BasicBlock d) { int id = d.getID(); if (bbSet.get(id) == false) { bbSet.set(id); workList.add(problem.getFlowGraphNode(d)); } }
@Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append("----").append(getName()).append("----\n"); buf.append("---- Data Flow Vars: ----\n"); buf.append(getDataFlowVarsForOutput()); buf.append("-------------------------\n"); for (FlowGraphNode n: flowGraphNodes) { buf.append("DF State for BB ").append(n.basicBlock.getID()).append(":\n").append(n.toString()); } return buf.toString(); }
@Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append("----").append(getName()).append("----\n"); buf.append("---- Data Flow Vars: ----\n"); buf.append(getDataFlowVarsForOutput()); buf.append("-------------------------\n"); for (FlowGraphNode n: flowGraphNodes) { buf.append("DF State for BB ").append(n.basicBlock.getID()).append(":\n").append(n.toString()); } return buf.toString(); }
@Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append("----").append(getName()).append("----\n"); buf.append("---- Data Flow Vars: ----\n"); buf.append(getDataFlowVarsForOutput()); buf.append("-------------------------\n"); for (FlowGraphNode n: flowGraphNodes) { buf.append("DF State for BB ").append(n.basicBlock.getID()).append(":\n").append(n.toString()); } return buf.toString(); }
@Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append("----").append(getName()).append("----\n"); buf.append("---- Data Flow Vars: ----\n"); buf.append(getDataFlowVarsForOutput()); buf.append("-------------------------\n"); for (FlowGraphNode n: flowGraphNodes) { buf.append("DF State for BB ").append(n.basicBlock.getID()).append(":\n").append(n.toString()); } return buf.toString(); }
public String toStringInstrs() { StringBuilder buf = new StringBuilder(); for (BasicBlock b : getSortedBasicBlocks()) { buf.append(b.toStringInstrs()); } buf.append("\n\n------ Rescue block map ------\n"); List<BasicBlock> e = new ArrayList<>(rescuerMap.keySet()); Collections.sort(e); for (BasicBlock bb : e) { buf.append("BB ").append(bb.getID()).append(" --> BB ").append(rescuerMap.get(bb).getID()).append("\n"); } /* Collection<IRClosure> closures = scope.getClosures(); if (!closures.isEmpty()) { buf.append("\n\n------ Closures encountered in this scope ------\n"); for (IRClosure c : closures) { buf.append(c.toStringBody()); } buf.append("------------------------------------------------\n"); } */ return buf.toString(); }
public String toStringInstrs() { StringBuilder buf = new StringBuilder(); for (BasicBlock b : getSortedBasicBlocks()) { buf.append(b.toStringInstrs()); } buf.append("\n\n------ Rescue block map ------\n"); List<BasicBlock> e = new ArrayList<>(rescuerMap.keySet()); Collections.sort(e); for (BasicBlock bb : e) { buf.append("BB ").append(bb.getID()).append(" --> BB ").append(rescuerMap.get(bb).getID()).append("\n"); } /* Collection<IRClosure> closures = scope.getClosures(); if (!closures.isEmpty()) { buf.append("\n\n------ Closures encountered in this scope ------\n"); for (IRClosure c : closures) { buf.append(c.toStringBody()); } buf.append("------------------------------------------------\n"); } */ return buf.toString(); }
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); } } }
public void computeDataFlowInfo(List<U> workList, BitSet bbSet) { if (problem.getFlowDirection() == DataFlowProblem.DF_Direction.BIDIRECTIONAL) { throw new RuntimeException("Bidirectional data flow computation not implemented yet!"); } // System.out.println("----- processing bb " + basicBlock.getID() + " -----"); bbSet.clear(basicBlock.getID()); // Compute meet over all "sources" and compute "destination" basic blocks that should then be processed. // sources & targets depends on direction of the data flow problem applyPreMeetHandler(); if (problem.getFlowDirection() == DataFlowProblem.DF_Direction.FORWARD) { computeDataFlowInfoForward(workList, bbSet); } else { computeDataFlowInfoBackward(workList, bbSet); } }
public void computeDataFlowInfo(List<U> workList, BitSet bbSet) { if (problem.getFlowDirection() == DataFlowProblem.DF_Direction.BIDIRECTIONAL) { throw new RuntimeException("Bidirectional data flow computation not implemented yet!"); } // System.out.println("----- processing bb " + basicBlock.getID() + " -----"); bbSet.clear(basicBlock.getID()); // Compute meet over all "sources" and compute "destination" basic blocks that should then be processed. // sources & targets depends on direction of the data flow problem applyPreMeetHandler(); if (problem.getFlowDirection() == DataFlowProblem.DF_Direction.FORWARD) { computeDataFlowInfoForward(workList, bbSet); } else { computeDataFlowInfoBackward(workList, bbSet); } }