Got: IllegalArgumentException: Could not resolve class
Øystein Myhre Andersen
o.myhre at gmail.com
Sun Apr 28 10:52:48 UTC 2024
I'm writing a compiler for Simula (the very first oo language).
Simula is block-oriented with nested blocks and each block is compiled into
a classFile.
At a certain level in the hierarchy I get an exception at the end of the
classfile building.
Exception in thread "main" java.lang.IllegalArgumentException:
Could not resolve class
adHoc000_adHoc000_PBLK39_Floor_activateIdleLift
at
java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.resolve(ClassHierarchyImpl.java:75)
at
java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.isInterface(ClassHierarchyImpl.java:85)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeReferenceFrom(StackMapGenerator.java:1363)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeFrom(StackMapGenerator.java:1331)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.merge(StackMapGenerator.java:1193)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.checkAssignableTo(StackMapGenerator.java:1135)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.checkJumpTarget(StackMapGenerator.java:280)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.processExceptionHandlerTargets(StackMapGenerator.java:678)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.processBlock(StackMapGenerator.java:667)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.processMethod(StackMapGenerator.java:440)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.generate(StackMapGenerator.java:317)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.<init>(StackMapGenerator.java:243)
at
java.base/jdk.internal.classfile.impl.StackMapGenerator.of(StackMapGenerator.java:156)
at
java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.generateStackMaps(DirectCodeBuilder.java:331)
at
java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.tryGenerateStackMaps(DirectCodeBuilder.java:340)
at
java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.writeBody(DirectCodeBuilder.java:382)
at
java.base/jdk.internal.classfile.impl.UnboundAttribute$AdHocAttribute.writeTo(UnboundAttribute.java:914)
at
java.base/jdk.internal.classfile.impl.AttributeHolder.writeTo(AttributeHolder.java:56)
at
java.base/jdk.internal.classfile.impl.DirectMethodBuilder.writeTo(DirectMethodBuilder.java:156)
at
java.base/jdk.internal.classfile.impl.BufWriterImpl.writeList(BufWriterImpl.java:207)
at
java.base/jdk.internal.classfile.impl.DirectClassBuilder.build(DirectClassBuilder.java:181)
at
java.base/jdk.internal.classfile.impl.ClassFileImpl.build(ClassFileImpl.java:114)
... ...
Is this a known problem?
What am I doing wrong?
I am attaching a file with an edited trace leading up to the exception.
- Øystein Myhre Andersen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/classfile-api-dev/attachments/20240428/9b5611b3/attachment.htm>
-------------- next part --------------
Begin buildClassFile: ClassDesc[adHoc000]
public class simulaTestPrograms.adHoc000 extends simula.runtime.RTS_Drawing
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #2 // simulaTestPrograms/adHoc000
super_class: #4 // simula/runtime/RTS_Drawing
interfaces: 0, fields: 12, methods: 4, attributes: 1
Constant pool:
... ...
Begin buildClassFile: ClassDesc[adHoc000_PBLK39]
public class simulaTestPrograms.adHoc000_PBLK39 extends simula.runtime.RTS_Simulation
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #2 // simulaTestPrograms/adHoc000_PBLK39
super_class: #4 // simula/runtime/RTS_Simulation
interfaces: 0, fields: 16, methods: 4, attributes: 1
Constant pool:
... ...
Begin buildClassFile: ClassDesc[adHoc000_adHoc000_PBLK39_Person]
public class simulaTestPrograms.adHoc000_adHoc000_PBLK39_Person extends simula.runtime.RTS_Process
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #2 // simulaTestPrograms/adHoc000_adHoc000_PBLK39_Person
super_class: #4 // simula/runtime/RTS_Process
interfaces: 0, fields: 7, methods: 3, attributes: 1
Constant pool:
... ...
Begin buildClassFile: ClassDesc[adHoc000_adHoc000_PBLK39_Person_getLiftGoingUp]
public final class simulaTestPrograms.adHoc000_adHoc000_PBLK39_Person_getLiftGoingUp extends simula.runtime.RTS_PROCEDURE
flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: #2 // simulaTestPrograms/adHoc000_adHoc000_PBLK39_Person_getLiftGoingUp
super_class: #4 // simula/runtime/RTS_PROCEDURE
interfaces: 0, fields: 2, methods: 3, attributes: 1
Constant pool:
... ...
ClassFile written to: adHoc000_adHoc000_PBLK39_Person_getLiftGoingUp.class nBytes=1229
ClassFile written to: adHoc000_adHoc000_PBLK39_Person.class nBytes=1113
Begin buildClassFile: ClassDesc[adHoc000_adHoc000_PBLK39_Elevator]
public class simulaTestPrograms.adHoc000_adHoc000_PBLK39_Elevator extends simula.runtime.RTS_Process
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #2 // simulaTestPrograms/adHoc000_adHoc000_PBLK39_Elevator
super_class: #4 // simula/runtime/RTS_Process
interfaces: 0, fields: 7, methods: 3, attributes: 1
Constant pool:
... ...
ClassFile written to: adHoc000_adHoc000_PBLK39_Elevator.class nBytes=1382
Begin buildClassFile: ClassDesc[adHoc000_adHoc000_PBLK39_Floor]
public class simulaTestPrograms.adHoc000_adHoc000_PBLK39_Floor extends simula.runtime.RTS_CLASS
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #2 // simulaTestPrograms/adHoc000_adHoc000_PBLK39_Floor
super_class: #4 // simula/runtime/RTS_CLASS
interfaces: 0, fields: 5, methods: 2, attributes: 1
Constant pool:
... ...
Begin buildClassFile: ClassDesc[adHoc000_adHoc000_PBLK39_Floor_activateIdleLift]
public final class simulaTestPrograms.adHoc000_adHoc000_PBLK39_Floor_activateIdleLift extends simula.runtime.RTS_PROCEDURE
flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: #2 // simulaTestPrograms/adHoc000_adHoc000_PBLK39_Floor_activateIdleLift
super_class: #4 // simula/runtime/RTS_PROCEDURE
interfaces: 0, fields: 2, methods: 2, attributes: 1
Constant pool:
... ...
Begin buildClassFile: ClassDesc[adHoc000$THUNK$1]
public class simulaTestPrograms.adHoc000$THUNK$1 extends simula.runtime.RTS_NAME<simula.runtime.RTS_Process>
flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: #2 // simulaTestPrograms/adHoc000$THUNK$1
super_class: #4 // simula/runtime/RTS_NAME
interfaces: 0, fields: 0, methods: 4, attributes: 2
Constant pool:
... ...
ClassFile written to: adHoc000$THUNK$1.class
NOTE: THUNK2-5 very like THUNK1
Begin buildClassFile: ClassDesc[adHoc000$THUNK$2]
ClassFile written to: adHoc000$THUNK$2.class
Begin buildClassFile: ClassDesc[adHoc000$THUNK$3]
ClassFile written to: adHoc000$THUNK$3.class
Begin buildClassFile: ClassDesc[adHoc000$THUNK$4]
ClassFile written to: adHoc000$THUNK$4.class
Begin buildClassFile: ClassDesc[adHoc000$THUNK$5]
ClassFile written to: adHoc000$THUNK$5.class
NOTE: When the classFile Builder is closing: adHoc000_adHoc000_PBLK39_Floor_activateIdleLift
I got an exception:
Exception in thread "main" java.lang.IllegalArgumentException:
Could not resolve class adHoc000_adHoc000_PBLK39_Floor_activateIdleLift
at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.resolve(ClassHierarchyImpl.java:75)
at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.isInterface(ClassHierarchyImpl.java:85)
at java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeReferenceFrom(StackMapGenerator.java:1363)
at java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeFrom(StackMapGenerator.java:1331)
at java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.merge(StackMapGenerator.java:1193)
at java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.checkAssignableTo(StackMapGenerator.java:1135)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.checkJumpTarget(StackMapGenerator.java:280)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.processExceptionHandlerTargets(StackMapGenerator.java:678)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.processBlock(StackMapGenerator.java:667)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.processMethod(StackMapGenerator.java:440)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.generate(StackMapGenerator.java:317)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.<init>(StackMapGenerator.java:243)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.of(StackMapGenerator.java:156)
at java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.generateStackMaps(DirectCodeBuilder.java:331)
at java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.tryGenerateStackMaps(DirectCodeBuilder.java:340)
at java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.writeBody(DirectCodeBuilder.java:382)
at java.base/jdk.internal.classfile.impl.UnboundAttribute$AdHocAttribute.writeTo(UnboundAttribute.java:914)
at java.base/jdk.internal.classfile.impl.AttributeHolder.writeTo(AttributeHolder.java:56)
at java.base/jdk.internal.classfile.impl.DirectMethodBuilder.writeTo(DirectMethodBuilder.java:156)
at java.base/jdk.internal.classfile.impl.BufWriterImpl.writeList(BufWriterImpl.java:207)
at java.base/jdk.internal.classfile.impl.DirectClassBuilder.build(DirectClassBuilder.java:181)
at java.base/jdk.internal.classfile.impl.ClassFileImpl.build(ClassFileImpl.java:114)
at java.base/java.lang.classfile.ClassFile.build(ClassFile.java:332)
at simula.compiler.syntaxClass.declaration.ProcedureDeclaration.buildClassFile(ProcedureDeclaration.java:585)
at simula.compiler.syntaxClass.declaration.BlockDeclaration.createJavaClassFile(BlockDeclaration.java:386)
at simula.compiler.syntaxClass.declaration.ProcedureDeclaration.buildField(ProcedureDeclaration.java:991)
at simula.compiler.syntaxClass.declaration.ClassDeclaration.lambda$0(ClassDeclaration.java:1251)
at java.base/jdk.internal.classfile.impl.ClassFileImpl.build(ClassFileImpl.java:113)
at java.base/java.lang.classfile.ClassFile.build(ClassFile.java:332)
at simula.compiler.syntaxClass.declaration.ClassDeclaration.buildClassFile(ClassDeclaration.java:1241)
at simula.compiler.syntaxClass.declaration.BlockDeclaration.createJavaClassFile(BlockDeclaration.java:386)
at simula.compiler.syntaxClass.declaration.ClassDeclaration.buildField(ClassDeclaration.java:1426)
at simula.compiler.syntaxClass.declaration.PrefixedBlockDeclaration.lambda$0(PrefixedBlockDeclaration.java:305)
at java.base/jdk.internal.classfile.impl.ClassFileImpl.build(ClassFileImpl.java:113)
at java.base/java.lang.classfile.ClassFile.build(ClassFile.java:332)
at simula.compiler.syntaxClass.declaration.PrefixedBlockDeclaration.buildClassFile(PrefixedBlockDeclaration.java:296)
at simula.compiler.syntaxClass.declaration.BlockDeclaration.createJavaClassFile(BlockDeclaration.java:386)
at simula.compiler.syntaxClass.declaration.PrefixedBlockDeclaration.buildByteCode(PrefixedBlockDeclaration.java:252)
at simula.compiler.syntaxClass.statement.BlockStatement.buildByteCode(BlockStatement.java:130)
at simula.compiler.syntaxClass.declaration.ClassDeclaration.buildStatementsAfterInner(ClassDeclaration.java:1523)
at simula.compiler.syntaxClass.declaration.ClassDeclaration.build_STM_BODY(ClassDeclaration.java:1478)
at simula.compiler.syntaxClass.declaration.BlockDeclaration.buildMethod_STM(BlockDeclaration.java:491)
at simula.compiler.syntaxClass.declaration.PrefixedBlockDeclaration.lambda$2(PrefixedBlockDeclaration.java:324)
at java.base/jdk.internal.classfile.impl.DirectCodeBuilder.build(DirectCodeBuilder.java:110)
at java.base/jdk.internal.classfile.impl.DirectMethodBuilder.withCode(DirectMethodBuilder.java:125)
at java.base/jdk.internal.classfile.impl.DirectMethodBuilder.withCode(DirectMethodBuilder.java:132)
at java.base/java.lang.classfile.ClassBuilder.lambda$withMethodBody$2(ClassBuilder.java:249)
at java.base/jdk.internal.classfile.impl.DirectMethodBuilder.run(DirectMethodBuilder.java:146)
at java.base/jdk.internal.classfile.impl.DirectClassBuilder.withMethod(DirectClassBuilder.java:108)
at java.base/java.lang.classfile.ClassBuilder.withMethodBody(ClassBuilder.java:249)
at java.base/java.lang.classfile.ClassBuilder.withMethodBody(ClassBuilder.java:284)
at simula.compiler.syntaxClass.declaration.PrefixedBlockDeclaration.lambda$0(PrefixedBlockDeclaration.java:323)
at java.base/jdk.internal.classfile.impl.ClassFileImpl.build(ClassFileImpl.java:113)
at java.base/java.lang.classfile.ClassFile.build(ClassFile.java:332)
at simula.compiler.syntaxClass.declaration.PrefixedBlockDeclaration.buildClassFile(PrefixedBlockDeclaration.java:296)
at simula.compiler.syntaxClass.declaration.BlockDeclaration.createJavaClassFile(BlockDeclaration.java:386)
at simula.compiler.syntaxClass.statement.ProgramModule.createJavaClassFile(ProgramModule.java:175)
at simula.compiler.SimulaCompiler.doCompile(SimulaCompiler.java:309)
at make.RunClassFileTest.main(RunClassFileTest.java:358)
More information about the classfile-api-dev
mailing list