public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) { if (sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, offset, instruction)) { markInstruction(offset); } }
public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) { if (sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, offset, instruction)) { markInstruction(offset); } }
public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) { if (sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, offset, instruction)) { markInstruction(offset); } }
public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) { // Check if it may be throwing exceptions. if (sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, offset, instruction)) { markSideEffects(clazz, method); } }
public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) { // Check if it may be throwing exceptions. if (sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, offset, instruction)) { markSideEffects(clazz, method); } }
public void visitAnyInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, Instruction instruction) { // Check if it may be throwing exceptions. if (sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, offset, instruction)) { markSideEffects(clazz, method); } }
/** * Returns whether the given code has any side effects. */ private boolean hasSideEffects(Clazz clazz, Method method, CodeAttribute codeAttribute) { byte[] code = codeAttribute.code; int length = codeAttribute.u4codeLength; // Go over all instructions. int offset = 0; do { // Get the current instruction. Instruction instruction = InstructionFactory.create(code, offset); // Check if it may be throwing exceptions. if (sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, offset, instruction)) { return true; } // Go to the next instruction. offset += instruction.length(offset); } while (offset < length); return false; }
public void visitConstantInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, ConstantInstruction constantInstruction) { switch (constantInstruction.opcode) { case InstructionConstants.OP_GETSTATIC: case InstructionConstants.OP_GETFIELD: replaceAnyPushInstruction(clazz, offset, constantInstruction); break; case InstructionConstants.OP_INVOKEVIRTUAL: case InstructionConstants.OP_INVOKESPECIAL: case InstructionConstants.OP_INVOKESTATIC: case InstructionConstants.OP_INVOKEINTERFACE: if (constantInstruction.stackPushCount(clazz) > 0 && !sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, offset, constantInstruction)) { replaceAnyPushInstruction(clazz, offset, constantInstruction); } break; case InstructionConstants.OP_CHECKCAST: replaceReferencePushInstruction(clazz, offset, constantInstruction); break; } }
if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, case InstructionConstants.OP_SALOAD: case InstructionConstants.OP_ARRAYLENGTH: if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, case InstructionConstants.OP_I2C: case InstructionConstants.OP_I2S: if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz,
if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, case InstructionConstants.OP_SALOAD: case InstructionConstants.OP_ARRAYLENGTH: if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, case InstructionConstants.OP_I2C: case InstructionConstants.OP_I2S: if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz,
if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, case InstructionConstants.OP_SALOAD: case InstructionConstants.OP_ARRAYLENGTH: if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, case InstructionConstants.OP_I2C: case InstructionConstants.OP_I2S: if (!sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute, if (!sideEffectInstructionChecker.hasSideEffects(clazz,
case InstructionConstants.OP_INVOKESTATIC: if (constantInstruction.stackPushCount(clazz) > 0 && !sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute,
case InstructionConstants.OP_INVOKESTATIC: if (constantInstruction.stackPushCount(clazz) > 0 && !sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute,
case InstructionConstants.OP_INVOKESTATIC: if (constantInstruction.stackPushCount(clazz) > 0 && !sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute,
else if (sideEffectInstructionChecker.hasSideEffects(clazz, method, codeAttribute,