public void precomputation(DismantleBytecode dbc) { if (registerTestedFoundToBeNonnegative >= 0) { for (int i = 0; i < stack.size(); i++) { Item item = stack.get(i); if (item != null && item.registerNumber == registerTestedFoundToBeNonnegative) { stack.set(i, item.cloneAndSetSpecialKind(Item.NON_NEGATIVE)); } } for (int i = 0; i < lvValues.size(); i++) { Item item = lvValues.get(i); if (item != null && item.registerNumber == registerTestedFoundToBeNonnegative) { lvValues.set(i, item.cloneAndSetSpecialKind(Item.NON_NEGATIVE)); } } } registerTestedFoundToBeNonnegative = -1; mergeJumps(dbc); }
public void precomputation(DismantleBytecode dbc) { if (registerTestedFoundToBeNonnegative >= 0) { for (int i = 0; i < stack.size(); i++) { Item item = stack.get(i); if (item != null && item.registerNumber == registerTestedFoundToBeNonnegative) { stack.set(i, item.cloneAndSetSpecialKind(Item.NON_NEGATIVE)); } } for (int i = 0; i < lvValues.size(); i++) { Item item = lvValues.get(i); if (item != null && item.registerNumber == registerTestedFoundToBeNonnegative) { lvValues.set(i, item.cloneAndSetSpecialKind(Item.NON_NEGATIVE)); } } } registerTestedFoundToBeNonnegative = -1; mergeJumps(dbc); }
stack.mergeJumps(this);
/** * handle {@code <init>} blocks by looking for putfield calls referencing synchronized collections * * @param seen * the opcode of the currently parsed instruction */ private void sawInitOpcode(int seen) { boolean isSyncCollection = false; try { stack.mergeJumps(this); isSyncCollection = isSyncCollectionCreation(seen); if (seen == PUTFIELD) { processCollectionStore(); } } finally { stack.sawOpcode(this, seen); if (isSyncCollection && (stack.getStackDepth() > 0)) { OpcodeStack.Item item = stack.getStackItem(0); item.setUserValue(Boolean.TRUE); } } }
/** * handle {@code <init>} blocks by looking for putfield calls referencing synchronized collections * * @param seen * the opcode of the currently parsed instruction */ private void sawInitOpcode(int seen) { boolean isSyncCollection = false; try { stack.mergeJumps(this); isSyncCollection = isSyncCollectionCreation(seen); if (seen == Const.PUTFIELD) { processCollectionStore(); } } finally { stack.sawOpcode(this, seen); if (isSyncCollection && (stack.getStackDepth() > 0)) { OpcodeStack.Item item = stack.getStackItem(0); item.setUserValue(Boolean.TRUE); } } }
boolean isSyncCollection = false; try { stack.mergeJumps(this); isSyncCollection = isSyncCollectionCreation(seen);
boolean isSyncCollection = false; try { stack.mergeJumps(this); isSyncCollection = isSyncCollectionCreation(seen);