我正在使用ASM Framework进行Java字节码操作。 ASM中存在两次的某些操作码助记符,它们的前缀为“ H_”:

Opcodes.H_GETFIELD         vs. Opcodes.GETFIELD
Opcodes.H_GETSTATIC        vs. Opcodes.GETSTATIC
Opcodes.H_INVOKEINTERFACE  vs. Opcodes.INVOKEINTERFACE
Opcodes.H_INVOKESPECIAL    vs. Opcodes.INVOKESPECIAL
Opcodes.H_INVOKESTATIC     vs. Opcodes.INVOKESTATIC
Opcodes.H_NEWINVOKESPECIAL vs. Opcodes.NEWINVOKESPECIAL
Opcodes.H_PUTFIELD         vs. Opcodes.PUTFIELD
Opcodes.H_PUTSTATIC        vs. Opcodes.PUTSTATIC


这两个操作码有什么区别?

最佳答案

H_类中的Opcodes常数不是实际的操作码,它们用于构建MethodHandle指令(使用ASMs Handle类),该指令可以在InvokeDynamic指令中使用。

08-05 17:55