RFR add lworld specific value type checks to classFileParser

Karen Kinnear karen.kinnear at oracle.com
Wed Mar 21 18:48:59 UTC 2018


Harold,

Thank you so much for all of these changes.Code looks good. Glad jcod worked for you.

Minor comments:
1. classFileParser.cpp line 1622 “Arrays are not flattenable” -> actually value type arrays
are always flattenable with our prototype, so perhaps “Value Type arrays are always flattenable, ACC_FLATTENABLE not allowed”
or something. Would require a change to line 7 in the test as well

2. Thanks for commenting out the <init> is not ok in a value class - could you possibly file an rfe
so we remember to clean this up when this is decided?

3. lines 4013-4016
Thank you for the comments as to why we can check flattenable_field circularity and superclass circularity 
independently.
Could you also add a comment as to why we can check flattenable_field circularity and superinterface
circularity separately? That is because interfaces can not be value types.

4. systemDictionary.cpp
resolve_flattenable_field_or_fail
  I don’t think you need to do the register_loader here - I think resolve_or_fail will do that for you - but
you can double-check with Coleen.

thanks!
Karen



> On Mar 19, 2018, at 4:11 PM, harold seigel <harold.seigel at oracle.com> wrote:
> 
> Hi,
> 
> Please review the following webrev:
> 
>   http://cr.openjdk.java.net/~hseigel/valueTypes_lworld.cfp.Mar19/
> 
> The webrev adds checks to the JVM classFileParser.cpp source for the following:
> 
> * A class with ACC_VALUE and ACC_INTERFACE or ACC_ABSTRACT or ACC_ENUM
>   is invalid
> * java.lang.Object is the only valid super type for value types
> * A class with ACC_VALUE must be final
> * All instance fields in an ACC_VALUE class must be marked ACC_FINAL
> * A class with ACC_VALUE cannot have a method called <init>
> * A class with ACC_VALUE cannot have any synchronized instance methods
> * A field marked ACC_FLATTENABLE cannot be an array
> 
> Also, all ACC_FLATTENABLE fields are now pre-loaded and checked for circularity.
> 
> (Note that the change to test ValueOops.java is just to remove a <tab> character.)
> 
> The webrev was tested with hotspot/jtreg tests and many jdk/jtreg tests.
> 
> Thanks, Harold



More information about the valhalla-dev mailing list