org.objectweb.asm.Opcodes# LDIV 源码实例Demo

下面列出了org.objectweb.asm.Opcodes# LDIV 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: es6draft   文件: InstructionAssembler.java

public final void div(Type type) {
    switch (type.getOpcode(Opcodes.IDIV)) {
    case Opcodes.IDIV:
        idiv();
        return;
    case Opcodes.LDIV:
        ldiv();
        return;
    case Opcodes.FDIV:
        fdiv();
        return;
    case Opcodes.DDIV:
        ddiv();
        return;
    default:
        throw new IllegalArgumentException();
    }
}
 

public static MathOperationBS createMathOperation(JvmTypeCategory operandsType, MathOperation.Operator operator) {
    int opcode;
    switch (operator) {
        case MULTIPLICATION:
            switch (operandsType) {
                case INT:
                    opcode = Opcodes.IMUL;
                    break;
                case LONG:
                    opcode = Opcodes.LMUL;
                    break;
                case FLOAT:
                    opcode = Opcodes.FMUL;
                    break;
                case DOUBLE:
                    opcode = Opcodes.DMUL;
                    break;
                default:
                    throw new UnsupportedOperationException(operator + " " +operandsType.name());
            }
            break;
        case SUM:
            switch (operandsType) {
                case INT:
                    opcode = Opcodes.IADD;
                    break;
                case LONG:
                    opcode = Opcodes.LADD;
                    break;
                case FLOAT:
                    opcode = Opcodes.FADD;
                    break;
                case DOUBLE:
                    opcode = Opcodes.DADD;
                    break;
                default:
                    throw new UnsupportedOperationException(operator + " " +operandsType.name());
            }
            break;
        case SUBTRACTION:
            switch (operandsType) {
                case INT:
                    opcode = Opcodes.ISUB;
                    break;
                case LONG:
                    opcode = Opcodes.LSUB;
                    break;
                case FLOAT:
                    opcode = Opcodes.FSUB;
                    break;
                case DOUBLE:
                    opcode = Opcodes.DSUB;
                    break;
                default:
                    throw new UnsupportedOperationException(operator + " " +operandsType.name());
            }
            break;
        case DIVISION:
            switch (operandsType) {
                case INT:
                    opcode = Opcodes.IDIV;
                    break;
                case LONG:
                    opcode = Opcodes.LDIV;
                    break;
                case FLOAT:
                    opcode = Opcodes.FDIV;
                    break;
                case DOUBLE:
                    opcode = Opcodes.DDIV;
                    break;
                default:
                    throw new UnsupportedOperationException(operator + " " +operandsType.name());
            }
            break;
        default:
            throw new UnsupportedOperationException(operator.name());
    }
    return new MathOperationBS(opcode);
}
 

public static boolean isBinaryOp(Instruction instr) {
    switch (instr.getOpcode()) {
        case Opcodes.ISHL:
        case Opcodes.ISHR:
        case Opcodes.LSHL:
        case Opcodes.LSHR:
        case Opcodes.IUSHR:
        case Opcodes.LUSHR:
        case Opcodes.DCMPG:
        case Opcodes.DCMPL:
        case Opcodes.FCMPG:
        case Opcodes.FCMPL:
        case Opcodes.LCMP:
        case Opcodes.IOR:
        case Opcodes.LOR:
        case Opcodes.IXOR:
        case Opcodes.LXOR:
        case Opcodes.IAND:
        case Opcodes.LAND:
        case Opcodes.FADD:
        case Opcodes.DADD:
        case Opcodes.IADD:
        case Opcodes.LADD:
        case Opcodes.FSUB:
        case Opcodes.DSUB:
        case Opcodes.ISUB:
        case Opcodes.LSUB:
        case Opcodes.FDIV:
        case Opcodes.DDIV:
        case Opcodes.LDIV:
        case Opcodes.IDIV:
        case Opcodes.IREM:
        case Opcodes.FREM:
        case Opcodes.DREM:
        case Opcodes.LREM:
        case Opcodes.FMUL:
        case Opcodes.DMUL:
        case Opcodes.IMUL:
        case Opcodes.LMUL:
            return true;
    }
    return false;
}
 

public static boolean isArithmeticOp(Instruction instr) {
    
    switch (instr.getOpcode()) {
        case Opcodes.ISHL:
        case Opcodes.ISHR:
        case Opcodes.LSHL:
        case Opcodes.LSHR:
        case Opcodes.IUSHR:
        case Opcodes.LUSHR:
        
        case Opcodes.DCMPG:
        case Opcodes.DCMPL:
        case Opcodes.FCMPG:
        case Opcodes.FCMPL:
        case Opcodes.LCMP:
        case Opcodes.FNEG:
        case Opcodes.DNEG:
        case Opcodes.INEG:
        case Opcodes.D2F:
        case Opcodes.D2I:
        case Opcodes.D2L:
        case Opcodes.F2D:
        case Opcodes.F2I:
        case Opcodes.F2L:
        case Opcodes.L2D:
        case Opcodes.L2F:
        case Opcodes.L2I:
        case Opcodes.I2L:
        case Opcodes.I2B:
        case Opcodes.I2C:
        case Opcodes.I2D:
        case Opcodes.I2F:
        case Opcodes.I2S:
        case Opcodes.IOR:
        case Opcodes.LOR:
        case Opcodes.IXOR:
        case Opcodes.LXOR:
        case Opcodes.IAND:
        case Opcodes.LAND:
        case Opcodes.FADD:
        case Opcodes.DADD:
        case Opcodes.IADD:
        case Opcodes.LADD:
        case Opcodes.FSUB:
        case Opcodes.DSUB:
        case Opcodes.ISUB:
        case Opcodes.LSUB:
        case Opcodes.FDIV:
        case Opcodes.DDIV:
        case Opcodes.LDIV:
        case Opcodes.IDIV:
        case Opcodes.IREM:
        case Opcodes.FREM:
        case Opcodes.DREM:
        case Opcodes.LREM:
        case Opcodes.FMUL:
        case Opcodes.DMUL:
        case Opcodes.IMUL:
        case Opcodes.LMUL:
            return true;
    }
    return false;
}
 
源代码5 项目: pitest   文件: AOD1Mutator.java

@Override
public void visitInsn(int opcode) {
    switch (opcode) {
        case Opcodes.IADD:
        case Opcodes.ISUB:
        case Opcodes.IMUL:
        case Opcodes.IDIV:
        case Opcodes.IREM:
            if (this.shouldMutate("integer"))  {
                mv.visitInsn(Opcodes.POP);
            } else  {
                mv.visitInsn(opcode);
            }
            break;
        case Opcodes.FADD:
        case Opcodes.FSUB:
        case Opcodes.FMUL:
        case Opcodes.FDIV:
        case Opcodes.FREM:
            if (this.shouldMutate("float"))  {
                mv.visitInsn(Opcodes.POP);
            } else  {
                mv.visitInsn(opcode);
            }
            break;
        case Opcodes.LADD:
        case Opcodes.LSUB:
        case Opcodes.LMUL:
        case Opcodes.LDIV:
        case Opcodes.LREM:
            if (this.shouldMutate("long"))  {
                mv.visitInsn(Opcodes.POP2);
            } else  {
                mv.visitInsn(opcode);
            }
            break;
        case Opcodes.DADD:
        case Opcodes.DSUB:
        case Opcodes.DMUL:
        case Opcodes.DDIV:
        case Opcodes.DREM:
            if (this.shouldMutate("double"))  {
                mv.visitInsn(Opcodes.POP2);
            } else  {
                mv.visitInsn(opcode);
            }
            break;
        default:
            mv.visitInsn(opcode);
            break;
    }
}
 
 方法所在类
 同类方法