Add classfile-api module: java.lang.classfile (JEP 484) parse, generate, transform with timing instrumentation, ASM 9.11.1 comparison, version limits, JDK 24/25/26 API diff
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b4VQVEJWetTT1dYzyJ
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
$ java -cp classes:asm-9.11.1.jar... demo.ParseDemo (25.0.5+8-LTS)
|
||||
== header ==
|
||||
bytes : 1488
|
||||
this : demo/Target
|
||||
super : java/lang/Object
|
||||
version : 69.0 (ClassFile.JAVA_25_VERSION = 69)
|
||||
flags : public,super
|
||||
constant pool : 69 slots
|
||||
|
||||
== fields ==
|
||||
final,private name Ljava/lang/String;
|
||||
private calls I
|
||||
|
||||
== methods ==
|
||||
public <init>(Ljava/lang/String;)V
|
||||
public,static fib(I)I
|
||||
public,static sumTo(I)J
|
||||
public greet(Ljava/lang/String;)Ljava/lang/String;
|
||||
public pause(J)V
|
||||
public,static boom()V
|
||||
public,static explode([I)I
|
||||
public calls()I
|
||||
|
||||
== class elements, in file order (the model is a stream of elements) ==
|
||||
AccessFlags
|
||||
ClassFileVersion
|
||||
Superclass
|
||||
Interfaces
|
||||
field name
|
||||
field calls
|
||||
method <init>
|
||||
method fib
|
||||
method sumTo
|
||||
method greet
|
||||
method pause
|
||||
method boom
|
||||
method explode
|
||||
method calls
|
||||
SourceFile=Target.java
|
||||
BoundInnerClassesAttribute
|
||||
|
||||
== fib(I)I, instruction by instruction ==
|
||||
ILOAD_0
|
||||
ICONST_2
|
||||
IF_ICMPGE
|
||||
ILOAD_0
|
||||
GOTO
|
||||
ILOAD_0
|
||||
ICONST_1
|
||||
ISUB
|
||||
INVOKESTATIC demo/Target.fib(I)I
|
||||
ILOAD_0
|
||||
ICONST_2
|
||||
ISUB
|
||||
INVOKESTATIC demo/Target.fib(I)I
|
||||
IADD
|
||||
IRETURN
|
||||
|
||||
== invoke targets in the whole class ==
|
||||
2 x demo/Target.fib
|
||||
1 x indy:makeConcatWithConstants
|
||||
1 x java/lang/IllegalStateException.<init>
|
||||
1 x java/lang/Object.<init>
|
||||
1 x java/lang/Thread.sleep
|
||||
|
||||
== a JDK class from the runtime image: java.lang.String ==
|
||||
bytes 50116, major 69, methods 171, fields 11, interfaces 5
|
||||
PASS Target.class is class-file version 69 (compiled with --release 25)
|
||||
PASS Target has 8 methods (constructor + 7)
|
||||
PASS fib calls itself twice
|
||||
PASS greet() uses invokedynamic string concatenation
|
||||
exit=0
|
||||
Reference in New Issue
Block a user