/** * Builds a BitSet of block indices from a basic block list and a list * of labels taken from Rop form. * * @param blocks Rop blocks * @param labelList list of rop block labels * @return BitSet of block indices */ static BitSet bitSetFromLabelList(BasicBlockList blocks, IntList labelList) { BitSet result = new BitSet(blocks.size()); for (int i = 0, sz = labelList.size(); i < sz; i++) { result.set(blocks.indexOfLabel(labelList.get(i))); } return result; }
/** * Visits each instruction of each block in the list, in order. * * @param visitor {@code non-null;} visitor to use */ public void forEachInsn(Insn.Visitor visitor) { int sz = size(); for (int i = 0; i < sz; i++) { BasicBlock one = get(i); InsnList insns = one.getInsns(); insns.forEach(visitor); } }
/** * Visits each instruction of each block in the list, in order. * * @param visitor {@code non-null;} visitor to use */ public void forEachInsn(Insn.Visitor visitor) { int sz = size(); for (int i = 0; i < sz; i++) { BasicBlock one = get(i); InsnList insns = one.getInsns(); insns.forEach(visitor); } }
/** * Visits each instruction of each block in the list, in order. * * @param visitor {@code non-null;} visitor to use */ public void forEachInsn(Insn.Visitor visitor) { int sz = size(); for (int i = 0; i < sz; i++) { BasicBlock one = get(i); InsnList insns = one.getInsns(); insns.forEach(visitor); } }
/** * Visits each instruction of each block in the list, in order. * * @param visitor {@code non-null;} visitor to use */ public void forEachInsn(Insn.Visitor visitor) { int sz = size(); for (int i = 0; i < sz; i++) { BasicBlock one = get(i); InsnList insns = one.getInsns(); insns.forEach(visitor); } }
/** * Visits each instruction of each block in the list, in order. * * @param visitor {@code non-null;} visitor to use */ public void forEachInsn(Insn.Visitor visitor) { int sz = size(); for (int i = 0; i < sz; i++) { BasicBlock one = get(i); InsnList insns = one.getInsns(); insns.forEach(visitor); } }
/** * Visits each instruction of each block in the list, in order. * * @param visitor {@code non-null;} visitor to use */ public void forEachInsn(Insn.Visitor visitor) { int sz = size(); for (int i = 0; i < sz; i++) { BasicBlock one = get(i); InsnList insns = one.getInsns(); insns.forEach(visitor); } }
/** * Visits each instruction of each block in the list, in order. * * @param visitor {@code non-null;} visitor to use */ public void forEachInsn(Insn.Visitor visitor) { int sz = size(); for (int i = 0; i < sz; i++) { BasicBlock one = get(i); InsnList insns = one.getInsns(); insns.forEach(visitor); } }
/** * Visits each instruction of each block in the list, in order. * * @param visitor {@code non-null;} visitor to use */ public void forEachInsn(Insn.Visitor visitor) { int sz = size(); for (int i = 0; i < sz; i++) { BasicBlock one = get(i); InsnList insns = one.getInsns(); insns.forEach(visitor); } }
/** {@inheritDoc} */ public HashSet<Type> getCatchTypes() { HashSet<Type> result = new HashSet<Type>(20); BasicBlockList blocks = method.getBlocks(); int size = blocks.size(); for (int i = 0; i < size; i++) { BasicBlock block = blocks.get(i); TypeList catches = block.getLastInsn().getCatches(); int catchSize = catches.size(); for (int j = 0; j < catchSize; j++) { result.add(catches.getType(j)); } } return result; }
private void convertRopToSsaBlocks(RopMethod rmeth) { BasicBlockList ropBlocks = rmeth.getBlocks(); int sz = ropBlocks.size(); blocks = new ArrayList<SsaBasicBlock>(sz + 2); for (int i = 0; i < sz; i++) { SsaBasicBlock sbb = SsaBasicBlock.newFromRop(rmeth, i, this); blocks.add(sbb); } // Add an no-op entry block. int origEntryBlockIndex = rmeth.getBlocks() .indexOfLabel(rmeth.getFirstLabel()); SsaBasicBlock entryBlock = blocks.get(origEntryBlockIndex).insertNewPredecessor(); entryBlockIndex = entryBlock.getIndex(); exitBlockIndex = -1; // This gets made later. }
private void convertRopToSsaBlocks(RopMethod rmeth) { BasicBlockList ropBlocks = rmeth.getBlocks(); int sz = ropBlocks.size(); blocks = new ArrayList<SsaBasicBlock>(sz + 2); for (int i = 0; i < sz; i++) { SsaBasicBlock sbb = SsaBasicBlock.newFromRop(rmeth, i, this); blocks.add(sbb); } // Add an no-op entry block. int origEntryBlockIndex = rmeth.getBlocks() .indexOfLabel(rmeth.getFirstLabel()); SsaBasicBlock entryBlock = blocks.get(origEntryBlockIndex).insertNewPredecessor(); entryBlockIndex = entryBlock.getIndex(); exitBlockIndex = -1; // This gets made later. }
/** {@inheritDoc} */ public boolean hasAnyCatches() { BasicBlockList blocks = method.getBlocks(); int size = blocks.size(); for (int i = 0; i < size; i++) { BasicBlock block = blocks.get(i); TypeList catches = block.getLastInsn().getCatches(); if (catches.size() != 0) { return true; } } return false; }
/** {@inheritDoc} */ public boolean hasAnyCatches() { BasicBlockList blocks = method.getBlocks(); int size = blocks.size(); for (int i = 0; i < size; i++) { BasicBlock block = blocks.get(i); TypeList catches = block.getLastInsn().getCatches(); if (catches.size() != 0) { return true; } } return false; }
/** {@inheritDoc} */ public boolean hasAnyCatches() { BasicBlockList blocks = method.getBlocks(); int size = blocks.size(); for (int i = 0; i < size; i++) { BasicBlock block = blocks.get(i); TypeList catches = block.getLastInsn().getCatches(); if (catches.size() != 0) { return true; } } return false; }
/** {@inheritDoc} */ public boolean hasAnyCatches() { BasicBlockList blocks = method.getBlocks(); int size = blocks.size(); for (int i = 0; i < size; i++) { BasicBlock block = blocks.get(i); TypeList catches = block.getLastInsn().getCatches(); if (catches.size() != 0) { return true; } } return false; }
/** {@inheritDoc} */ public boolean hasAnyCatches() { BasicBlockList blocks = method.getBlocks(); int size = blocks.size(); for (int i = 0; i < size; i++) { BasicBlock block = blocks.get(i); TypeList catches = block.getLastInsn().getCatches(); if (catches.size() != 0) { return true; } } return false; }
/** {@inheritDoc} */ public boolean hasAnyCatches() { BasicBlockList blocks = method.getBlocks(); int size = blocks.size(); for (int i = 0; i < size; i++) { BasicBlock block = blocks.get(i); TypeList catches = block.getLastInsn().getCatches(); if (catches.size() != 0) { return true; } } return false; }
/** {@inheritDoc} */ @Override public boolean hasAnyCatches() { BasicBlockList blocks = method.getBlocks(); int size = blocks.size(); for (int i = 0; i < size; i++) { BasicBlock block = blocks.get(i); TypeList catches = block.getLastInsn().getCatches(); if (catches.size() != 0) { return true; } } return false; }
/** {@inheritDoc} */ @Override public boolean hasAnyCatches() { BasicBlockList blocks = method.getBlocks(); int size = blocks.size(); for (int i = 0; i < size; i++) { BasicBlock block = blocks.get(i); TypeList catches = block.getLastInsn().getCatches(); if (catches.size() != 0) { return true; } } return false; }