On Mon, 17 Jun 2024 13:55:41 GMT, Chen Liang <li...@openjdk.org> wrote:
>> Currently, javap crashes for class files that have set non-zero values for >> undefined access flag bits, as >> `java.lang.reflect.AccessFlag.maskToAccessFlag` and >> `java.lang.classfile.AccessFlags.flags` fail. In contrast, the JVMS, though >> asking for these bits to be set to 0, requires VM to proceed and ignore >> these bits. javap should emulate the VM behavior and proceed rendering, >> ignoring these undefined bits. >> >> In addition, a few bytecode generation utilities in the JDK set unused bits, >> such as in >> `java.lang.invoke.MethodHandleImpl.BindCaller#generateInvokerTemplate` and >> `java.lang.invoke.GenerateJLIClassesHelper#generateCodeBytesForLFs`. Those >> can be updated in a later cleanup. > > Chen Liang has updated the pull request incrementally with two additional > commits since the last revision: > > - Improve tests to check unmatched bit position and failure for > non-inner-classes > - Report error for flag problems src/jdk.jdeps/share/classes/com/sun/tools/javap/BasicWriter.java line 84: > 82: } catch (IllegalArgumentException ex) { > 83: mask &= LOCATION_MASKS.get(location); > 84: report(ex); Unfortunately the original exception message is missing any info that it is related to access flags and it is not very clear what "Error: Unmatched bit position 0x2 for location CLASS" means. I would add at least a message prefix, for example "Error: Access Flags: Unmatched bit position 0x2 for location CLASS". ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/19708#discussion_r1643041633