Slide 34
Slide 34 text
ΑΓόΠφϦ
package invoke.dynamic;
public class InvokeDynamicSimple {
public static void main(String[] args) {
Runnable r = () -> System.out.println("Hello");
r.run();
}
}
public class invoke.dynamic.InvokeDynamicSimple
Constant Pool:
#2 = InvokeDynamic #0:#23 // #0:run:()Ljava/lang/Runnable;
#23 = NameAndType #35:#36 // run:()Ljava/lang/Runnable;
:
{
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=2, args_size=1
0: invokedynamic #2, 0 // InvokeDynamic #0:run:()Ljava/lang/Runnable;
*OWPLF%ZOBNJD4JNQMFKBWB
invokedynamic
Operation
Invoke a dynamically-computed call site
Format
invokedynamic
indexbyte1
indexbyte2
0
0
Forms
invokedynamic = 186 (0xba)
Description
First, the unsigned indexbyte1 and indexbyte2 are used to construct an
index into the run-time constant pool of the current class (§2.6),
The values of the third and fourth operand bytes must always be zero.
JOWPLFEZOBNJD YCB
*OWPLF%ZOBNJD4JNQMFDMBTT
*OWPLF%ZOBNJD4JNQMFKWN