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:
2026-10-29 04:14:57 +00:00
co-authored by Claude Sonnet 5.5
parent eca73ad544
commit 41101bea40
37 changed files with 1763 additions and 0 deletions
+72
View File
@@ -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