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

Reply via email to