List of usage examples for org.objectweb.asm Opcodes IFGE
int IFGE
To view the source code for org.objectweb.asm Opcodes IFGE.
Click Source Link
From source file:org.evosuite.instrumentation.error.ArrayInstrumentation.java
License:Open Source License
@Override public void visitTypeInsn(int opcode, String type) { if (opcode == Opcodes.ANEWARRAY) { mv.visitInsn(Opcodes.DUP);// ww w. ja v a 2 s . c o m insertBranch(Opcodes.IFGE, "java/lang/NegativeArraySizeException"); } }
From source file:org.evosuite.instrumentation.error.ArrayListInstrumentation.java
License:Open Source License
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { if (owner.equals(LISTNAME)) { if (indexListMethods.contains(name)) { Type[] args = Type.getArgumentTypes(desc); if (args.length == 0) return; if (!args[0].equals(Type.INT_TYPE)) return; Map<Integer, Integer> tempVariables = getMethodCallee(desc); tagBranchStart();//from ww w .j av a 2 s. c o m mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LISTNAME, "size", "()I", false); // index >= size mv.loadLocal(tempVariables.get(0)); insertBranch(Opcodes.IF_ICMPGT, "java/lang/IndexOutOfBoundsException"); // index < 0 mv.loadLocal(tempVariables.get(0)); insertBranch(Opcodes.IFGE, "java/lang/IndexOutOfBoundsException"); tagBranchEnd(); restoreMethodParameters(tempVariables, desc); } } }
From source file:org.evosuite.instrumentation.error.LinkedListInstrumentation.java
License:Open Source License
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { if (owner.equals(LISTNAME)) { if (emptyListMethods.contains(name)) { // empty Map<Integer, Integer> tempVariables = getMethodCallee(desc); //tagBranchStart(); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LISTNAME, "isEmpty", "()Z", false); insertBranch(Opcodes.IFLE, "java/util/NoSuchElementException"); //tagBranchEnd(); restoreMethodParameters(tempVariables, desc); } else if (indexListMethods.contains(name)) { Type[] args = Type.getArgumentTypes(desc); if (args.length == 0) return; if (!args[0].equals(Type.INT_TYPE)) return; Map<Integer, Integer> tempVariables = getMethodCallee(desc); tagBranchStart();/* ww w . j a va2s . co m*/ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LISTNAME, "size", "()I", false); // index >= size mv.loadLocal(tempVariables.get(0)); insertBranch(Opcodes.IF_ICMPGT, "java/lang/IndexOutOfBoundsException"); // index < 0 mv.loadLocal(tempVariables.get(0)); insertBranch(Opcodes.IFGE, "java/lang/IndexOutOfBoundsException"); tagBranchEnd(); restoreMethodParameters(tempVariables, desc); } } }
From source file:org.evosuite.instrumentation.error.ListInstrumentation.java
License:Open Source License
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { if (owner.equals(LISTNAME)) { if (indexListMethods.contains(name)) { Type[] args = Type.getArgumentTypes(desc); if (args.length == 0) return; if (!args[0].equals(Type.INT_TYPE)) return; Map<Integer, Integer> tempVariables = getMethodCallee(desc); tagBranchStart();/*from w w w . jav a2 s . c o m*/ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LISTNAME, "size", "()I", false); // index >= size mv.loadLocal(tempVariables.get(0)); insertBranch(Opcodes.IF_ICMPGT, "java/lang/IndexOutOfBoundsException"); // index < 0 mv.loadLocal(tempVariables.get(0)); insertBranch(Opcodes.IFGE, "java/lang/IndexOutOfBoundsException"); tagBranchEnd(); restoreMethodParameters(tempVariables, desc); } } }
From source file:org.evosuite.instrumentation.error.OverflowInstrumentation.java
License:Open Source License
@Override public void visitInsn(int opcode) { // Overflow checks switch (opcode) { case Opcodes.IADD: case Opcodes.ISUB: case Opcodes.IMUL: mv.visitInsn(Opcodes.DUP2);/* w w w. j a v a2 s . co m*/ mv.visitLdcInsn(opcode); mv.visitMethodInsn(Opcodes.INVOKESTATIC, CHECKER, "underflowDistance", "(III)I", false); insertBranchWithoutException(Opcodes.IFGT); case Opcodes.IDIV: mv.visitInsn(Opcodes.DUP2); mv.visitLdcInsn(opcode); mv.visitMethodInsn(Opcodes.INVOKESTATIC, CHECKER, "overflowDistance", "(III)I", false); insertBranchWithoutException(Opcodes.IFGT); break; case Opcodes.FADD: case Opcodes.FSUB: case Opcodes.FMUL: mv.visitInsn(Opcodes.DUP2); mv.visitLdcInsn(opcode); mv.visitMethodInsn(Opcodes.INVOKESTATIC, CHECKER, "underflowDistance", "(FFI)I", false); insertBranchWithoutException(Opcodes.IFGE); case Opcodes.FDIV: mv.visitInsn(Opcodes.DUP2); mv.visitLdcInsn(opcode); mv.visitMethodInsn(Opcodes.INVOKESTATIC, CHECKER, "overflowDistance", "(FFI)I", false); insertBranchWithoutException(Opcodes.IFGE); break; case Opcodes.DADD: case Opcodes.DSUB: case Opcodes.DMUL: int loc = mv.newLocal(Type.DOUBLE_TYPE); mv.storeLocal(loc); mv.visitInsn(Opcodes.DUP2); mv.loadLocal(loc); mv.visitInsn(Opcodes.DUP2_X2); mv.visitLdcInsn(opcode); mv.visitMethodInsn(Opcodes.INVOKESTATIC, CHECKER, "underflowDistance", "(DDI)I", false); insertBranchWithoutException(Opcodes.IFGE); case Opcodes.DDIV: loc = mv.newLocal(Type.DOUBLE_TYPE); mv.storeLocal(loc); mv.visitInsn(Opcodes.DUP2); mv.loadLocal(loc); mv.visitInsn(Opcodes.DUP2_X2); mv.visitLdcInsn(opcode); mv.visitMethodInsn(Opcodes.INVOKESTATIC, CHECKER, "overflowDistance", "(DDI)I", false); insertBranchWithoutException(Opcodes.IFGE); break; case Opcodes.LADD: case Opcodes.LSUB: case Opcodes.LMUL: int loc2 = mv.newLocal(Type.LONG_TYPE); mv.storeLocal(loc2); mv.visitInsn(Opcodes.DUP2); mv.loadLocal(loc2); mv.visitInsn(Opcodes.DUP2_X2); mv.visitLdcInsn(opcode); mv.visitMethodInsn(Opcodes.INVOKESTATIC, CHECKER, "underflowDistance", "(JJI)I", false); insertBranchWithoutException(Opcodes.IFGE); case Opcodes.LDIV: loc2 = mv.newLocal(Type.LONG_TYPE); mv.storeLocal(loc2); mv.visitInsn(Opcodes.DUP2); mv.loadLocal(loc2); mv.visitInsn(Opcodes.DUP2_X2); mv.visitLdcInsn(opcode); mv.visitMethodInsn(Opcodes.INVOKESTATIC, CHECKER, "overflowDistance", "(JJI)I", false); insertBranchWithoutException(Opcodes.IFGE); break; } }
From source file:org.evosuite.instrumentation.error.VectorInstrumentation.java
License:Open Source License
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { if (owner.equals(VECTORNAME)) { if (emptyListMethods.contains(name)) { // empty Map<Integer, Integer> tempVariables = getMethodCallee(desc); //tagBranchStart(); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, VECTORNAME, "isEmpty", "()Z", false); insertBranch(Opcodes.IFLE, "java/util/NoSuchElementException"); // tagBranchEnd(); restoreMethodParameters(tempVariables, desc); } else if (indexListMethods.contains(name)) { Type[] args = Type.getArgumentTypes(desc); if (args.length == 0) return; if (!args[0].equals(Type.INT_TYPE)) return; Map<Integer, Integer> tempVariables = getMethodCallee(desc); tagBranchStart();/*from w w w.j a v a2 s.c om*/ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, VECTORNAME, "size", "()I", false); // index >= size mv.loadLocal(tempVariables.get(0)); insertBranch(Opcodes.IF_ICMPGT, "java/lang/IndexOutOfBoundsException"); // index < 0 mv.loadLocal(tempVariables.get(0)); insertBranch(Opcodes.IFGE, "java/lang/IndexOutOfBoundsException"); tagBranchEnd(); restoreMethodParameters(tempVariables, desc); } } }
From source file:org.evosuite.instrumentation.mutation.ReplaceComparisonOperator.java
License:Open Source License
private String getOp(int opcode) { switch (opcode) { case Opcodes.IFEQ: case Opcodes.IF_ACMPEQ: case Opcodes.IF_ICMPEQ: return "=="; case Opcodes.IFNE: case Opcodes.IF_ACMPNE: case Opcodes.IF_ICMPNE: return "!="; case Opcodes.IFLT: case Opcodes.IF_ICMPLT: return "<"; case Opcodes.IFLE: case Opcodes.IF_ICMPLE: return "<="; case Opcodes.IFGT: case Opcodes.IF_ICMPGT: return ">"; case Opcodes.IFGE: case Opcodes.IF_ICMPGE: return ">="; case Opcodes.IFNULL: return "= null"; case Opcodes.IFNONNULL: return "!= null"; }// ww w . ja v a2 s. co m throw new RuntimeException("Unknown opcode: " + opcode); }
From source file:org.evosuite.instrumentation.mutation.ReplaceComparisonOperator.java
License:Open Source License
/** * <p>getInfectionDistance</p> * * @param opcodeOrig a int./*from ww w . j ava 2 s . c om*/ * @param opcodeNew a int. * @return a {@link org.objectweb.asm.tree.InsnList} object. */ public InsnList getInfectionDistance(int opcodeOrig, int opcodeNew) { InsnList distance = new InsnList(); switch (opcodeOrig) { case Opcodes.IF_ICMPEQ: case Opcodes.IF_ICMPNE: case Opcodes.IF_ICMPLE: case Opcodes.IF_ICMPLT: case Opcodes.IF_ICMPGE: case Opcodes.IF_ICMPGT: distance.add(new InsnNode(Opcodes.DUP2)); distance.add(new LdcInsnNode(opcodeOrig)); distance.add(new LdcInsnNode(opcodeNew)); distance.add(new MethodInsnNode(Opcodes.INVOKESTATIC, PackageInfo.getNameWithSlash(ReplaceComparisonOperator.class), "getInfectionDistance", "(IIII)D", false)); break; case Opcodes.IFEQ: case Opcodes.IFNE: case Opcodes.IFLE: case Opcodes.IFLT: case Opcodes.IFGE: case Opcodes.IFGT: distance.add(new InsnNode(Opcodes.DUP)); distance.add(new LdcInsnNode(opcodeOrig)); distance.add(new LdcInsnNode(opcodeNew)); distance.add(new MethodInsnNode(Opcodes.INVOKESTATIC, PackageInfo.getNameWithSlash(ReplaceComparisonOperator.class), "getInfectionDistance", "(III)D", false)); break; default: distance.add(new LdcInsnNode(0.0)); } return distance; }
From source file:org.evosuite.instrumentation.mutation.ReplaceComparisonOperator.java
License:Open Source License
/** * <p>getInfectionDistance</p> * * @param intVal a int.//from www .j a v a 2s.co m * @param opcodeOrig a int. * @param opcodeNew a int. * @return a double. */ public static double getInfectionDistance(int intVal, int opcodeOrig, int opcodeNew) { long val = intVal; switch (opcodeOrig) { case Opcodes.IFLT: switch (opcodeNew) { case Opcodes.IFLE: // Only differs for val == 0 return Math.abs(val); case Opcodes.IFEQ: // Only differs for val <= 0 return val > 0 ? val : 0.0; case Opcodes.IFGT: // Only same for val == 0 return val == 0 ? 1.0 : 0.0; case Opcodes.IFGE: // Always differs return 0.0; case Opcodes.IFNE: // Only differs for val > 0 return val <= 0 ? Math.abs(val) + 1.0 : 0.0; case TRUE: return val < 0 ? 1.0 : 0.0; case FALSE: return val < 0 ? 0.0 : 1.0; } case Opcodes.IFLE: switch (opcodeNew) { case Opcodes.IFLT: // Only differs for val == 0 return Math.abs(val); case Opcodes.IFEQ: return val >= 0 ? val + 1.0 : 0.0; case Opcodes.IFGE: // Only equals for val == 0 return val == 0 ? 1.0 : 0.0; case Opcodes.IFGT: // Always differs return 0.0; case Opcodes.IFNE: // Only differs if val >= 0 return val < 0 ? Math.abs(val) : 0.0; case TRUE: return val <= 0 ? 1.0 : 0.0; case FALSE: return val <= 0 ? 0.0 : 1.0; } case Opcodes.IFGT: switch (opcodeNew) { case Opcodes.IFGE: // Only differs for val == 0 return Math.abs(val); case Opcodes.IFEQ: // Only differs for val >= 0 return val < 0 ? Math.abs(val) : 0.0; case Opcodes.IFLT: // Only same for val == 0 return val == 0 ? 1.0 : 0.0; case Opcodes.IFLE: // Always differs return 0.0; case Opcodes.IFNE: // Only differs for val < 0 return val >= 0 ? val + 1.0 : 0.0; case TRUE: return val > 0 ? 1.0 : 0.0; case FALSE: return val > 0 ? 0.0 : 1.0; } case Opcodes.IFGE: switch (opcodeNew) { case Opcodes.IFGT: // Only differs for val == 0 return Math.abs(val); case Opcodes.IFEQ: return val <= 0 ? Math.abs(val) + 1.0 : 0.0; case Opcodes.IFLE: // Only equals for val == 0 return val == 0 ? 1.0 : 0.0; case Opcodes.IFLT: // Always differs return 0.0; case Opcodes.IFNE: // Only differs if val > 0 return val > 0 ? val : 0.0; case TRUE: return val >= 0 ? 1.0 : 0.0; case FALSE: return val >= 0 ? 0.0 : 1.0; } case Opcodes.IFEQ: switch (opcodeNew) { case Opcodes.IFLT: // Only differs if val <= 0 return val > 0 ? val : 0.0; case Opcodes.IFGT: // Only differs if val >= 0 return val < 0 ? Math.abs(val) : 0.0; case Opcodes.IFNE: // Always differs return 0.0; case Opcodes.IFLE: return val >= 0 ? val + 1.0 : 0.0; case Opcodes.IFGE: return val <= 0 ? Math.abs(val) + 1.0 : 0.0; case TRUE: return val == 0 ? 1.0 : 0.0; case FALSE: return val == 0 ? 0.0 : 1.0; } case Opcodes.IFNE: switch (opcodeNew) { case Opcodes.IFEQ: return 0.0; case Opcodes.IFLT: // Only differs for val > 0 return val <= 0 ? Math.abs(val) + 1.0 : 0.0; case Opcodes.IFLE: // Only differs for val > 0 return val < 0 ? Math.abs(val) : 0.0; case Opcodes.IFGT: return val >= 0 ? val + 1.0 : 0.0; case Opcodes.IFGE: return val > 0 ? val : 0.0; case TRUE: return val != 0 ? 1.0 : 0.0; case FALSE: return val != 0 ? 0.0 : 1.0; } } throw new RuntimeException("Unknown operator replacement: " + opcodeOrig + " -> " + opcodeNew); }
From source file:org.evosuite.instrumentation.mutation.ReplaceComparisonOperator.java
License:Open Source License
private int getBooleanIntReplacement(int opcode) { logger.debug("Getting Boolean int replacement"); switch (opcode) { case Opcodes.IFEQ: return Opcodes.IFNE; case Opcodes.IFNE: return Opcodes.IFEQ; case Opcodes.IFGT: return Opcodes.IFEQ; case Opcodes.IFLE: return Opcodes.IFGT; // The rest should not occur except if our interpreter did something wrong case Opcodes.IFGE: return Opcodes.IFLT; case Opcodes.IFLT: return Opcodes.IFGE; }//from w w w.j a va 2s.c o m throw new RuntimeException("Illegal opcode received: " + opcode); }