RFR add lworld specific value type checks to classFileParser
Karen Kinnear
karen.kinnear at oracle.com
Thu Mar 22 16:12:15 UTC 2018
Harold,
Thanks for the updates and sharing the webrev.
#1: it is not the case that “Arrays are always flattenable”. It is the case that “Arrays of value classes are always flattenable”.
Would you mind changing that again?
#3 - thank you for the comment update
#4 - looks good.
thanks,
Karen
p.s. I don’t need to see it again :-)
> On Mar 22, 2018, at 10:08 AM, harold seigel <harold.seigel at oracle.com> wrote:
>
> Hi Karen,
>
> Thanks for reviewing this!
>
> Please review this updated webrev. It addresses the comments 1, 3, and 4 that you made below.
> http://cr.openjdk.java.net/~hseigel/valueTypes_lworld.cfp.2/webrev/index.html <http://cr.openjdk.java.net/~hseigel/valueTypes_lworld.cfp.2/webrev/index.html>
> Additionally, I opened bug JDK-8200069 <https://bugs.openjdk.java.net/browse/JDK-8200069> for comment 2.
>
>
Thank you - I like Mr Simms’ approach to filing rfes and bugs with the lworld label.
> Thanks, Harold
>
> On 3/21/2018 2:48 PM, Karen Kinnear wrote:
>> 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> <mailto:harold.seigel at oracle.com> wrote:
>>>
>>> Hi,
>>>
>>> Please review the following webrev:
>>>
>>> http://cr.openjdk.java.net/~hseigel/valueTypes_lworld.cfp.Mar19/ <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