private int countJumps(final Set<ControlFlowNode> nodes, final Label target, final Expression ignore) { int jumpCount = 0; for (final ControlFlowNode node : nodes) { final BasicBlock basicBlock = (BasicBlock) node.getUserData(); for (final Expression e : basicBlock.getSelfAndChildrenRecursive(Expression.class)) { if (e != ignore && e.getBranchTargets().contains(target)) { ++jumpCount; } } } return jumpCount; }
private int countJumps(final Set<ControlFlowNode> nodes, final Label target, final Expression ignore) { int jumpCount = 0; for (final ControlFlowNode node : nodes) { final BasicBlock basicBlock = (BasicBlock) node.getUserData(); for (final Expression e : basicBlock.getSelfAndChildrenRecursive(Expression.class)) { if (e != ignore && e.getBranchTargets().contains(target)) { ++jumpCount; } } } return jumpCount; }
private int countJumps(final Set<ControlFlowNode> nodes, final Label target, final Expression ignore) { int jumpCount = 0; for (final ControlFlowNode node : nodes) { final BasicBlock basicBlock = (BasicBlock) node.getUserData(); for (final Expression e : basicBlock.getSelfAndChildrenRecursive(Expression.class)) { if (e != ignore && e.getBranchTargets().contains(target)) { ++jumpCount; } } } return jumpCount; }
private LoopExitInfo findLoopExitInfo(final Set<ControlFlowNode> contents) { final LoopExitInfo exitInfo = new LoopExitInfo(); boolean noCommonExit = false; for (final ControlFlowNode node : contents) { final BasicBlock basicBlock = (BasicBlock) node.getUserData(); for (final Expression e : basicBlock.getSelfAndChildrenRecursive(Expression.class)) { for (final Label target : e.getBranchTargets()) { final ControlFlowNode targetNode = labelsToNodes.get(target); if (targetNode == null || contents.contains(targetNode)) { continue; } if (targetNode.getIncoming().size() == 1) { exitInfo.additionalNodes.add(targetNode); } else if (exitInfo.exitLabel == null) { exitInfo.exitLabel = target; } else if (exitInfo.exitLabel != target) { noCommonExit = true; } } } } if (noCommonExit) { exitInfo.exitLabel = null; } return exitInfo; }
private LoopExitInfo findLoopExitInfo(final Set<ControlFlowNode> contents) { final LoopExitInfo exitInfo = new LoopExitInfo(); boolean noCommonExit = false; for (final ControlFlowNode node : contents) { final BasicBlock basicBlock = (BasicBlock) node.getUserData(); for (final Expression e : basicBlock.getSelfAndChildrenRecursive(Expression.class)) { for (final Label target : e.getBranchTargets()) { final ControlFlowNode targetNode = labelsToNodes.get(target); if (targetNode == null || contents.contains(targetNode)) { continue; } if (targetNode.getIncoming().size() == 1) { exitInfo.additionalNodes.add(targetNode); } else if (exitInfo.exitLabel == null) { exitInfo.exitLabel = target; } else if (exitInfo.exitLabel != target) { noCommonExit = true; } } } } if (noCommonExit) { exitInfo.exitLabel = null; } return exitInfo; }
private LoopExitInfo findLoopExitInfo(final Set<ControlFlowNode> contents) { final LoopExitInfo exitInfo = new LoopExitInfo(); boolean noCommonExit = false; for (final ControlFlowNode node : contents) { final BasicBlock basicBlock = (BasicBlock) node.getUserData(); for (final Expression e : basicBlock.getSelfAndChildrenRecursive(Expression.class)) { for (final Label target : e.getBranchTargets()) { final ControlFlowNode targetNode = labelsToNodes.get(target); if (targetNode == null || contents.contains(targetNode)) { continue; } if (targetNode.getIncoming().size() == 1) { exitInfo.additionalNodes.add(targetNode); } else if (exitInfo.exitLabel == null) { exitInfo.exitLabel = target; } else if (exitInfo.exitLabel != target) { noCommonExit = true; } } } } if (noCommonExit) { exitInfo.exitLabel = null; } return exitInfo; }
final BasicBlock basicBlock = (BasicBlock) node.getUserData(); final StrongBox<Expression> condition = new StrongBox<>(); final StrongBox<Label> trueLabel = new StrongBox<>(); final BasicBlock lastBlock = (BasicBlock) lastInLoop.getUserData(); final BasicBlock b = (BasicBlock) predecessor.getUserData(); final BasicBlock postLoopBlock = (BasicBlock) postLoopTarget.getUserData(); final Node postLoopBlockHead = firstOrDefault(postLoopBlock.getBody()); loopContents.contains(predecessor)) { final BasicBlock b = (BasicBlock) predecessor.getUserData(); result.add((Node) node.getUserData());
final BasicBlock basicBlock = (BasicBlock) node.getUserData(); final StrongBox<Expression> condition = new StrongBox<>(); final StrongBox<Label> trueLabel = new StrongBox<>(); final BasicBlock lastBlock = (BasicBlock) lastInLoop.getUserData(); final BasicBlock b = (BasicBlock) predecessor.getUserData(); final BasicBlock postLoopBlock = (BasicBlock) postLoopTarget.getUserData(); final Node postLoopBlockHead = firstOrDefault(postLoopBlock.getBody()); loopContents.contains(predecessor)) { final BasicBlock b = (BasicBlock) predecessor.getUserData(); result.add((Node) node.getUserData());
final BasicBlock basicBlock = (BasicBlock) node.getUserData(); final StrongBox<Expression> condition = new StrongBox<>(); final StrongBox<Label> trueLabel = new StrongBox<>(); final BasicBlock lastBlock = (BasicBlock) lastInLoop.getUserData(); final BasicBlock b = (BasicBlock) predecessor.getUserData(); final BasicBlock postLoopBlock = (BasicBlock) postLoopTarget.getUserData(); final Node postLoopBlockHead = firstOrDefault(postLoopBlock.getBody()); loopContents.contains(predecessor)) { final BasicBlock b = (BasicBlock) predecessor.getUserData(); result.add((Node) node.getUserData());
final BasicBlock block = (BasicBlock) node.getUserData(); final List<Node> blockBody = block.getBody(); result.add((Node) node.getUserData()); scope.remove(node); result.add((Node) node.getUserData());
final BasicBlock block = (BasicBlock) node.getUserData(); final List<Node> blockBody = block.getBody(); result.add((Node) node.getUserData()); scope.remove(node); result.add((Node) node.getUserData());
final BasicBlock block = (BasicBlock) node.getUserData(); final List<Node> blockBody = block.getBody(); result.add((Node) node.getUserData()); scope.remove(node); result.add((Node) node.getUserData());