public void visitLookUpSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, LookUpSwitchInstruction lookUpSwitchInstruction) { IntegerValue indexValue = stack.ipop(); // Maybe branch to the default offset. branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + lookUpSwitchInstruction.defaultOffset, Value.MAYBE); for (int index = 0; index < lookUpSwitchInstruction.jumpOffsets.length; index++) { int conditional = indexValue.equal(valueFactory.createIntegerValue( lookUpSwitchInstruction.cases[index])); branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + lookUpSwitchInstruction.jumpOffsets[index], conditional); } } }
public void visitLookUpSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, LookUpSwitchInstruction lookUpSwitchInstruction) { IntegerValue indexValue = stack.ipop(); // Maybe branch to the default offset. branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + lookUpSwitchInstruction.defaultOffset, Value.MAYBE); for (int index = 0; index < lookUpSwitchInstruction.jumpOffsets.length; index++) { int conditional = indexValue.equal(valueFactory.createIntegerValue( lookUpSwitchInstruction.cases[index])); branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + lookUpSwitchInstruction.jumpOffsets[index], conditional); } } }
public void visitTableSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, TableSwitchInstruction tableSwitchInstruction) { IntegerValue indexValue = stack.ipop(); // Maybe branch to the default offset. branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + tableSwitchInstruction.defaultOffset, Value.MAYBE); for (int index = 0; index < tableSwitchInstruction.jumpOffsets.length; index++) { int conditional = indexValue.equal(valueFactory.createIntegerValue( tableSwitchInstruction.lowCase + index)); branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + tableSwitchInstruction.jumpOffsets[index], conditional); } }
public void visitTableSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, TableSwitchInstruction tableSwitchInstruction) { IntegerValue indexValue = stack.ipop(); // Maybe branch to the default offset. branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + tableSwitchInstruction.defaultOffset, Value.MAYBE); for (int index = 0; index < tableSwitchInstruction.jumpOffsets.length; index++) { int conditional = indexValue.equal(valueFactory.createIntegerValue( tableSwitchInstruction.lowCase + index)); branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + tableSwitchInstruction.jumpOffsets[index], conditional); } }
public void visitTableSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, TableSwitchInstruction tableSwitchInstruction) { IntegerValue indexValue = stack.ipop(); // Maybe branch to the default offset. branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + tableSwitchInstruction.defaultOffset, Value.MAYBE); for (int index = 0; index < tableSwitchInstruction.jumpOffsets.length; index++) { int conditional = indexValue.equal(valueFactory.createIntegerValue( tableSwitchInstruction.lowCase + index)); branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + tableSwitchInstruction.jumpOffsets[index], conditional); } }
public void visitTableSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, TableSwitchInstruction tableSwitchInstruction) { IntegerValue indexValue = stack.ipop(); // If there is no definite branch in any of the cases below, // branch to the default offset. branchUnit.branch(clazz, codeAttribute, offset, offset + tableSwitchInstruction.defaultOffset); for (int index = 0; index < tableSwitchInstruction.jumpOffsets.length; index++) { int conditional = indexValue.equal(valueFactory.createIntegerValue( tableSwitchInstruction.lowCase + index)); branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + tableSwitchInstruction.jumpOffsets[index], conditional); // If this branch is always taken, we can skip the rest. if (conditional == Value.ALWAYS) { break; } } }
public void visitLookUpSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, LookUpSwitchInstruction lookUpSwitchInstruction) { IntegerValue indexValue = stack.ipop(); // Maybe branch to the default offset. branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + lookUpSwitchInstruction.defaultOffset, Value.MAYBE); for (int index = 0; index < lookUpSwitchInstruction.jumpOffsets.length; index++) { int conditional = indexValue.equal(valueFactory.createIntegerValue( lookUpSwitchInstruction.cases[index])); branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + lookUpSwitchInstruction.jumpOffsets[index], conditional); } } }
public void visitLookUpSwitchInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, LookUpSwitchInstruction lookUpSwitchInstruction) { IntegerValue indexValue = stack.ipop(); // If there is no definite branch in any of the cases below, // branch to the default offset. branchUnit.branch(clazz, codeAttribute, offset, offset + lookUpSwitchInstruction.defaultOffset); for (int index = 0; index < lookUpSwitchInstruction.jumpOffsets.length; index++) { int conditional = indexValue.equal(valueFactory.createIntegerValue( lookUpSwitchInstruction.cases[index])); branchUnit.branchConditionally(clazz, codeAttribute, offset, offset + lookUpSwitchInstruction.jumpOffsets[index], conditional); // If this branch is always taken, we can skip the rest. if (conditional == Value.ALWAYS) { break; } } }
stack.ipop().equal(valueFactory.createIntegerValue(0))); break; stack.ipop().notEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().lessThan(valueFactory.createIntegerValue(0))); break; stack.ipop().greaterThanOrEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().greaterThan(valueFactory.createIntegerValue(0))); break; stack.ipop().lessThanOrEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().equal(stack.ipop())); break; stack.ipop().notEqual(stack.ipop())); break; stack.ipop().greaterThan(stack.ipop())); break; stack.ipop().lessThanOrEqual(stack.ipop())); break;
stack.ipop().equal(valueFactory.createIntegerValue(0))); break; stack.ipop().notEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().lessThan(valueFactory.createIntegerValue(0))); break; stack.ipop().greaterThanOrEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().greaterThan(valueFactory.createIntegerValue(0))); break; stack.ipop().lessThanOrEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().equal(stack.ipop())); break; stack.ipop().notEqual(stack.ipop())); break; stack.ipop().greaterThan(stack.ipop())); break; stack.ipop().lessThanOrEqual(stack.ipop())); break;
stack.ipop().equal(valueFactory.createIntegerValue(0))); break; stack.ipop().notEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().lessThan(valueFactory.createIntegerValue(0))); break; stack.ipop().greaterThanOrEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().greaterThan(valueFactory.createIntegerValue(0))); break; stack.ipop().lessThanOrEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().equal(stack.ipop())); break; stack.ipop().notEqual(stack.ipop())); break; stack.ipop().greaterThan(stack.ipop())); break; stack.ipop().lessThanOrEqual(stack.ipop())); break;
stack.ipop().equal(valueFactory.createIntegerValue(0))); break; stack.ipop().notEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().lessThan(valueFactory.createIntegerValue(0))); break; stack.ipop().greaterThanOrEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().greaterThan(valueFactory.createIntegerValue(0))); break; stack.ipop().lessThanOrEqual(valueFactory.createIntegerValue(0))); break; stack.ipop().equal(stack.ipop())); break; stack.ipop().notEqual(stack.ipop())); break; stack.ipop().greaterThan(stack.ipop())); break; stack.ipop().lessThanOrEqual(stack.ipop())); break;
case InstructionConstants.OP_ISTORE_2: case InstructionConstants.OP_ISTORE_3: variables.store(variableIndex, stack.ipop()); break;
case InstructionConstants.OP_ISTORE_2: case InstructionConstants.OP_ISTORE_3: variables.store(variableIndex, stack.ipop()); break;
case InstructionConstants.OP_ISTORE_2: case InstructionConstants.OP_ISTORE_3: variables.store(variableIndex, stack.ipop()); break;
case InstructionConstants.OP_ISTORE_2: case InstructionConstants.OP_ISTORE_3: variables.store(variableIndex, stack.ipop()); break;