2014-12-15 1 views
1

Я использую ASM Framework для манипуляций с байт-кодом Java. Некоторые из Опкода-мнемоники существующей дважды в ASM, они начинаются с «H_»:Java ASM Opcodes: «H_» prefixed mnemonics (например, Opcodes.H_GETFIELD vs. Opcodes.GETFIELD)

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 

Что разница между этими двумя опкодами?

ответ

3

В H_ константы в классе Opcodes никаких фактических опкоды, они используются для построения MethodHandle (с использованием ПКР Handle класса), которые могут быть использованы в InvokeDynamic инструкции.