Files
javademos/classfile-api/output/06-javap-instrumented.txt
T

122 lines
4.4 KiB
Plaintext

$ javap -c -p demo.Target (original, as javac produced it; fib and boom only)
public static int fib(int);
Code:
0: iload_0
1: iconst_2
2: if_icmpge 9
5: iload_0
6: goto 22
9: iload_0
10: iconst_1
11: isub
12: invokestatic #13 // Method fib:(I)I
15: iload_0
16: iconst_2
17: isub
18: invokestatic #13 // Method fib:(I)I
21: iadd
22: ireturn
public static void boom();
Code:
0: new #31 // class java/lang/IllegalStateException
3: dup
4: ldc #33 // String boom
6: invokespecial #35 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
9: athrow
$ javap -c -p demo.Target (naive transform: records on normal return only)
public static int fib(int);
Code:
0: invokestatic #74 // Method java/lang/System.nanoTime:()J
3: lstore_1
4: iload_0
5: iconst_2
6: if_icmpge 13
9: iload_0
10: goto 26
13: iload_0
14: iconst_1
15: isub
16: invokestatic #13 // Method fib:(I)I
19: iload_0
20: iconst_2
21: isub
22: invokestatic #13 // Method fib:(I)I
25: iadd
26: ldc #76 // String Target.fib
28: invokestatic #74 // Method java/lang/System.nanoTime:()J
31: lload_1
32: lsub
33: invokestatic #82 // Method demo/Timings.record:(Ljava/lang/String;J)V
36: ireturn
public static void boom();
Code:
0: invokestatic #74 // Method java/lang/System.nanoTime:()J
3: lstore_0
4: new #31 // class java/lang/IllegalStateException
7: dup
8: ldc #33 // String boom
10: invokespecial #35 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
13: athrow
$ javap -c -p demo.Target (full transform: plus a catch-all handler)
public static int fib(int);
Code:
0: invokestatic #74 // Method java/lang/System.nanoTime:()J
3: lstore_1
4: iload_0
5: iconst_2
6: if_icmpge 13
9: iload_0
10: goto 26
13: iload_0
14: iconst_1
15: isub
16: invokestatic #13 // Method fib:(I)I
19: iload_0
20: iconst_2
21: isub
22: invokestatic #13 // Method fib:(I)I
25: iadd
26: ldc #76 // String Target.fib
28: invokestatic #74 // Method java/lang/System.nanoTime:()J
31: lload_1
32: lsub
33: invokestatic #82 // Method demo/Timings.record:(Ljava/lang/String;J)V
36: ireturn
37: astore_3
38: ldc #76 // String Target.fib
40: invokestatic #74 // Method java/lang/System.nanoTime:()J
43: lload_1
44: lsub
45: invokestatic #82 // Method demo/Timings.record:(Ljava/lang/String;J)V
48: aload_3
49: athrow
Exception table:
from to target type
4 37 37 any
public static void boom();
Code:
0: invokestatic #74 // Method java/lang/System.nanoTime:()J
3: lstore_0
4: new #31 // class java/lang/IllegalStateException
7: dup
8: ldc #33 // String boom
10: invokespecial #35 // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
13: athrow
14: astore_2
15: ldc #90 // String Target.boom
17: invokestatic #74 // Method java/lang/System.nanoTime:()J
20: lload_0
21: lsub
22: invokestatic #82 // Method demo/Timings.record:(Ljava/lang/String;J)V
25: aload_2
26: athrow
Exception table:
from to target type
4 14 14 any