On Mon, 1 Aug 2022 13:26:29 GMT, Harold Seigel <[email protected]> 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