/** * Inserts Z nodes for every node that needs a new * successor. * * @param result {@code non-null;} method to process */ private static void edgeSplitSuccessors(SsaMethod result) { ArrayList<SsaBasicBlock> blocks = result.getBlocks(); /* * New blocks are added to the end of the block list during * this iteration. */ for (int i = blocks.size() - 1; i >= 0; i-- ) { SsaBasicBlock block = blocks.get(i); // Successors list is modified in loop below. BitSet successors = (BitSet)block.getSuccessors().clone(); for (int j = successors.nextSetBit(0); j >= 0; j = successors.nextSetBit(j+1)) { SsaBasicBlock succ = blocks.get(j); if (needsNewSuccessor(block, succ)) { block.insertNewSuccessor(succ); } } } }
/** * Inserts Z nodes for every node that needs a new * successor. * * @param result {@code non-null;} method to process */ private static void edgeSplitSuccessors(SsaMethod result) { ArrayList<SsaBasicBlock> blocks = result.getBlocks(); /* * New blocks are added to the end of the block list during * this iteration. */ for (int i = blocks.size() - 1; i >= 0; i-- ) { SsaBasicBlock block = blocks.get(i); // Successors list is modified in loop below. BitSet successors = (BitSet)block.getSuccessors().clone(); for (int j = successors.nextSetBit(0); j >= 0; j = successors.nextSetBit(j+1)) { SsaBasicBlock succ = blocks.get(j); if (needsNewSuccessor(block, succ)) { block.insertNewSuccessor(succ); } } } }
/** * Inserts Z nodes for every node that needs a new * successor. * * @param result {@code non-null;} method to process */ private static void edgeSplitSuccessors(SsaMethod result) { ArrayList<SsaBasicBlock> blocks = result.getBlocks(); /* * New blocks are added to the end of the block list during * this iteration. */ for (int i = blocks.size() - 1; i >= 0; i-- ) { SsaBasicBlock block = blocks.get(i); // Successors list is modified in loop below. BitSet successors = (BitSet)block.getSuccessors().clone(); for (int j = successors.nextSetBit(0); j >= 0; j = successors.nextSetBit(j+1)) { SsaBasicBlock succ = blocks.get(j); if (needsNewSuccessor(block, succ)) { block.insertNewSuccessor(succ); } } } }
/** * Inserts Z nodes for every node that needs a new * successor. * * @param result {@code non-null;} method to process */ private static void edgeSplitSuccessors(SsaMethod result) { ArrayList<SsaBasicBlock> blocks = result.getBlocks(); /* * New blocks are added to the end of the block list during * this iteration. */ for (int i = blocks.size() - 1; i >= 0; i-- ) { SsaBasicBlock block = blocks.get(i); // Successors list is modified in loop below. BitSet successors = (BitSet)block.getSuccessors().clone(); for (int j = successors.nextSetBit(0); j >= 0; j = successors.nextSetBit(j+1)) { SsaBasicBlock succ = blocks.get(j); if (needsNewSuccessor(block, succ)) { block.insertNewSuccessor(succ); } } } }
/** * Inserts Z nodes for every node that needs a new * successor. * * @param result {@code non-null;} method to process */ private static void edgeSplitSuccessors(SsaMethod result) { ArrayList<SsaBasicBlock> blocks = result.getBlocks(); /* * New blocks are added to the end of the block list during * this iteration. */ for (int i = blocks.size() - 1; i >= 0; i-- ) { SsaBasicBlock block = blocks.get(i); // Successors list is modified in loop below. BitSet successors = (BitSet)block.getSuccessors().clone(); for (int j = successors.nextSetBit(0); j >= 0; j = successors.nextSetBit(j+1)) { SsaBasicBlock succ = blocks.get(j); if (needsNewSuccessor(block, succ)) { block.insertNewSuccessor(succ); } } } }
/** * Inserts Z nodes for every node that needs a new * successor. * * @param result {@code non-null;} method to process */ private static void edgeSplitSuccessors(SsaMethod result) { ArrayList<SsaBasicBlock> blocks = result.getBlocks(); /* * New blocks are added to the end of the block list during * this iteration. */ for (int i = blocks.size() - 1; i >= 0; i-- ) { SsaBasicBlock block = blocks.get(i); // Successors list is modified in loop below. BitSet successors = (BitSet)block.getSuccessors().clone(); for (int j = successors.nextSetBit(0); j >= 0; j = successors.nextSetBit(j+1)) { SsaBasicBlock succ = blocks.get(j); if (needsNewSuccessor(block, succ)) { block.insertNewSuccessor(succ); } } } }
/** * Inserts Z nodes for every node that needs a new * successor. * * @param result {@code non-null;} method to process */ private static void edgeSplitSuccessors(SsaMethod result) { ArrayList<SsaBasicBlock> blocks = result.getBlocks(); /* * New blocks are added to the end of the block list during * this iteration. */ for (int i = blocks.size() - 1; i >= 0; i-- ) { SsaBasicBlock block = blocks.get(i); // Successors list is modified in loop below. BitSet successors = (BitSet)block.getSuccessors().clone(); for (int j = successors.nextSetBit(0); j >= 0; j = successors.nextSetBit(j+1)) { SsaBasicBlock succ = blocks.get(j); if (needsNewSuccessor(block, succ)) { block.insertNewSuccessor(succ); } } } }
/** * Inserts Z nodes for every node that needs a new * successor. * * @param result {@code non-null;} method to process */ private static void edgeSplitSuccessors(SsaMethod result) { ArrayList<SsaBasicBlock> blocks = result.getBlocks(); /* * New blocks are added to the end of the block list during * this iteration. */ for (int i = blocks.size() - 1; i >= 0; i-- ) { SsaBasicBlock block = blocks.get(i); // Successors list is modified in loop below. BitSet successors = (BitSet)block.getSuccessors().clone(); for (int j = successors.nextSetBit(0); j >= 0; j = successors.nextSetBit(j+1)) { SsaBasicBlock succ = blocks.get(j); if (needsNewSuccessor(block, succ)) { block.insertNewSuccessor(succ); } } } }
SsaBasicBlock predecessor = blocks.get(j); SsaBasicBlock zNode = predecessor.insertNewSuccessor(block);
SsaBasicBlock predecessor = blocks.get(j); SsaBasicBlock zNode = predecessor.insertNewSuccessor(block);
SsaBasicBlock predecessor = blocks.get(j); SsaBasicBlock zNode = predecessor.insertNewSuccessor(block);
SsaBasicBlock predecessor = blocks.get(j); SsaBasicBlock zNode = predecessor.insertNewSuccessor(block);
SsaBasicBlock predecessor = blocks.get(j); SsaBasicBlock zNode = predecessor.insertNewSuccessor(block);
SsaBasicBlock predecessor = blocks.get(j); SsaBasicBlock zNode = predecessor.insertNewSuccessor(block);
SsaBasicBlock predecessor = blocks.get(j); SsaBasicBlock zNode = predecessor.insertNewSuccessor(block);
= entryBlock.insertNewSuccessor(successorBlock); = constBlock.insertNewSuccessor(successorBlock); PlainInsn insn = new PlainInsn(
currBlock.insertNewSuccessor(currBlock.getPrimarySuccessor()); SsaInsn newInsn = newBlock.getInsns().get(0); RegisterSpec newReg = newBlock.insertNewSuccessor(newBlock.getPrimarySuccessor()); SsaInsn newInsn2 = newBlock2.getInsns().get(0); CstNat newNat = new CstNat(new CstString("<init>"), new CstString("(I)V")); newBlock2.insertNewSuccessor(newBlock2.getPrimarySuccessor()); SsaInsn newInsn3 = newBlock3.getInsns().get(0); insertThrowingInsnBefore(newInsn3, RegisterSpecList.make(newReg), null,
currBlock.insertNewSuccessor(currBlock.getPrimarySuccessor()); SsaInsn newInsn = newBlock.getInsns().get(0); RegisterSpec newReg = newBlock.insertNewSuccessor(newBlock.getPrimarySuccessor()); SsaInsn newInsn2 = newBlock2.getInsns().get(0); CstNat newNat = new CstNat(new CstString("<init>"), new CstString("(I)V")); newBlock2.insertNewSuccessor(newBlock2.getPrimarySuccessor()); SsaInsn newInsn3 = newBlock3.getInsns().get(0); insertThrowingInsnBefore(newInsn3, RegisterSpecList.make(newReg), null,
currBlock.insertNewSuccessor(currBlock.getPrimarySuccessor()); SsaInsn newInsn = newBlock.getInsns().get(0); RegisterSpec newReg = newBlock.insertNewSuccessor(newBlock.getPrimarySuccessor()); SsaInsn newInsn2 = newBlock2.getInsns().get(0); CstNat newNat = new CstNat(new CstString("<init>"), new CstString("(I)V")); newBlock2.insertNewSuccessor(newBlock2.getPrimarySuccessor()); SsaInsn newInsn3 = newBlock3.getInsns().get(0); insertThrowingInsnBefore(newInsn3, RegisterSpecList.make(newReg), null,
currBlock.insertNewSuccessor(currBlock.getPrimarySuccessor()); SsaInsn newInsn = newBlock.getInsns().get(0); RegisterSpec newReg = newBlock.insertNewSuccessor(newBlock.getPrimarySuccessor()); SsaInsn newInsn2 = newBlock2.getInsns().get(0); CstNat newNat = new CstNat(new CstString("<init>"), new CstString("(I)V")); newBlock2.insertNewSuccessor(newBlock2.getPrimarySuccessor()); SsaInsn newInsn3 = newBlock3.getInsns().get(0); insertThrowingInsnBefore(newInsn3, RegisterSpecList.make(newReg), null,