RFR: JDK-8225056 VM support for sealed classes

Vicente Romero vicente.romero at oracle.com
Wed May 20 15:40:54 UTC 2020


Hi David,

> src/java.base/share/classes/java/lang/Class.java
>
> There needs to be a CSR request for these changes.

yes there is one already: https://bugs.openjdk.java.net/browse/JDK-8244556
>
> +      * Returns an array containing {@code ClassDesc} objects 
> representing all the
> +      * permitted subclasses of this {@linkplain Class} if it is 
> sealed. Returns an empty array if this
> +      * {@linkplain Class} is not sealed.
>
> should add "or this class represents an array or primitive type" 
> (using the standard wording for such cases).

well given that array and primitive classes are not sealed classes I 
think we are already covered by the method's spec.

>
> +      * @throws IllegalArgumentException if a class descriptor is not 
> in the correct format
>
> IllegalArgumentException is not an appropriate exception to use as 
> this method takes no arguments. If the class descriptor is not valid 
> and it comes from the VM then I think we have a problem with how the 
> VM validates class descriptors. Any IAE from ClassDesc.of should be 
> caught and converted to a more suitable exception type - preferably 
> InternalError if the VM should always return valid strings.

we agree with you here, this will be fixed in the next review iteration.

>
> +     public ClassDesc[] getPermittedSubclasses() {
>
> As mentioned for jvm.cpp this Java code should do the isArray() and 
> isPrimitive() check before calling the VM.

agreed.

>
Thanks,
Vicente


More information about the core-libs-dev mailing list