org.objectweb.asm.Opcodes# F2L ( ) 源码实例Demo

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

源代码1 项目: zelixkiller   文件: StackHelper.java

public InsnValue convertValue(AbstractInsnNode insn, InsnValue value) {
	Object obj = value.getValue();
	switch (insn.getOpcode()) {
	case Opcodes.I2L:
	case Opcodes.D2L:
	case Opcodes.F2L:
		if (obj == null) {
			return InsnValue.LONG_VALUE;
		}
		return InsnValue.longValue(((Number) obj).longValue());
	case Opcodes.I2F:
	case Opcodes.L2F:
	case Opcodes.D2F:
		if (obj == null) {
			return InsnValue.FLOAT_VALUE;
		}
		return InsnValue.floatValue(((Number) obj).floatValue());
	case Opcodes.L2I:
	case Opcodes.F2I:
	case Opcodes.D2I:
		if (obj == null) {
			return InsnValue.INT_VALUE;
		}
		return InsnValue.intValue(((Number) obj).intValue());
	case Opcodes.I2D:
	case Opcodes.L2D:
	case Opcodes.F2D:
		if (obj == null) {
			return InsnValue.DOUBLE_VALUE;
		}
		return InsnValue.doubleValue(((Number) obj).doubleValue());
	case Opcodes.I2B:
		if (obj == null) {
			return InsnValue.BYTE_VALUE;
		}
		return InsnValue.byteValue(((Number) obj).byteValue());
	case Opcodes.I2C:
		if (obj == null) {
			return InsnValue.CHAR_VALUE;
		}
		return InsnValue.charValue(((Number) obj).intValue());
	case Opcodes.I2S:
		if (obj == null) {
			return InsnValue.SHORT_VALUE;
		}
		return InsnValue.shortValue(((Number) obj).shortValue());
	}

	return null;
}
 

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;
}
 
 方法所在类
 同类方法