On Mon, 1 Aug 2022 13:26:29 GMT, Harold Seigel <hsei...@openjdk.org> wrote:
>> src/java.base/share/classes/java/lang/Class.java line 4698: >> >>> 4696: * >>> 4697: * If the class is an array type then the access flags of the >>> component type is >>> 4698: * returned. If the class is a primitive then ACC_ABSTRACT | >>> ACC_FINAL | ACC_PUBLIC. >> >> The `ACC_ABSTRACT` seems odd - is that way of indicating this "class" can't >> be instantiated? Is there some spec document that explains this choice? > > I don't know why API's such as JVM_GetClassModifiers() and > JVM_GetClassAccessFlags return ACC_ABSTRACT | ACC_FINAL | ACC_PUBLIC for > primitives. Nor could I find a spec that discussed access flags for > primitives. But, I didn't want to change what's been returned for primitives > in existing code. Interesting. `Class.getModifiers()` does not specify `ACC_ABSTRACT` so this seems to be something implementation specific (although no doubt a long standing situation.) >> test/hotspot/jtreg/runtime/ClassFile/ClassFileVersionTest.java line 55: >> >>> 53: >>> 54: testIt("Version64", 64); >>> 55: testIt("Version59", 59); >> >> Any particular reason to choose 59? Shouldn't there also be tests for >> non-zero minor versions? > > No particular reason for choosing 59 other than it's different and less than > 64. Test case Version64_65535 has a non-zero minor version. I think we should be testing for other real classfile versions that may be encountered, such as 45.3 ------------- PR: https://git.openjdk.org/jdk/pull/9688