java opcodes_Java Opcodes.MONITORENTER属性代码示例

private boolean canThrow(AbstractInsnNode insn) {

switch (insn.getOpcode()) {

case Opcodes.AALOAD:

case Opcodes.AASTORE:

case Opcodes.ANEWARRAY:

// ARETURN does not throw in its dex image.

case Opcodes.ARRAYLENGTH:

case Opcodes.ATHROW:

case Opcodes.BALOAD:

case Opcodes.BASTORE:

case Opcodes.CALOAD:

case Opcodes.CASTORE:

case Opcodes.CHECKCAST:

case Opcodes.DALOAD:

case Opcodes.DASTORE:

// DRETURN does not throw in its dex image.

case Opcodes.FALOAD:

case Opcodes.FASTORE:

// FRETURN does not throw in its dex image.

case Opcodes.GETFIELD:

case Opcodes.GETSTATIC:

case Opcodes.IALOAD:

case Opcodes.IASTORE:

case Opcodes.IDIV:

case Opcodes.INSTANCEOF:

case Opcodes.INVOKEDYNAMIC:

case Opcodes.INVOKEINTERFACE:

case Opcodes.INVOKESPECIAL:

case Opcodes.INVOKESTATIC:

case Opcodes.INVOKEVIRTUAL:

case Opcodes.IREM:

// IRETURN does not throw in its dex image.

case Opcodes.LALOAD:

case Opcodes.LASTORE:

case Opcodes.LDIV:

case Opcodes.LREM:

// LRETURN does not throw in its dex image.

case Opcodes.MONITORENTER:

case Opcodes.MONITOREXIT:

case Opcodes.MULTIANEWARRAY:

case Opcodes.NEW:

case Opcodes.NEWARRAY:

case Opcodes.PUTFIELD:

case Opcodes.PUTSTATIC:

// RETURN does not throw in its dex image.

case Opcodes.SALOAD:

case Opcodes.SASTORE:

return true;

case Opcodes.LDC: {

// const-class and const-string* may throw in dex.

LdcInsnNode ldc = (LdcInsnNode) insn;

return ldc.cst instanceof String || ldc.cst instanceof Type;

}

default:

return false;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值