From pietro.braione at unimib.it Wed Jul 2 17:21:04 2025 From: pietro.braione at unimib.it (Pietro Braione) Date: Wed, 2 Jul 2025 19:21:04 +0200 Subject: Another discrepancy between JVMS and Hotspot Message-ID: <467AD456-FAE9-446C-B392-75CD72AE6443@unimib.it> Hello to everyone. The JVMS v24 (but also all the JVMS since v8) at section 4.7.6 says that: "If the constant pool of a class or interface C contains at least one CONSTANT_Class_info entry (?4.4.1) which represents a class or interface that is not a member of a package, then there must be exactly one InnerClasses attribute in the attributes table of the ClassFile structure for C.? In attachment to this method you can find a class, generated from a standard LambdaForm, for which this is not true. The class LambdaForm$BMH.class has a CONSTANT_Class_info entry for a nested class (java/lang/invoke/BoundMethodHandle$Species_L) but no InnerClasses attribute. However Hotspot accepts this class. The LambdaForm from which this class was generated is: LambdaForm: BMH.reinvoke=Lambda(a0:L/SpeciesData,a1:L)=>{ t2:L=Species_L.argL0(a0:L); t3:L=MethodHandle.invokeBasic(t2:L,a1:L);t3:L} Best, Pietro Braione University of Milano-Bicocca