On Thu, 10 Dec 2020 22:59:16 GMT, Mandy Chung <mch...@openjdk.org> wrote:

>> Hi Remi,
>> 
>>> For me, it's backout JDK-8247444, as i said on the amber-spec-expert, i 
>>> prefer VM to be oblivious about java.lang.Record.
>>> And in the future, the real fix is to change the spec of Field.set() to say 
>>> that it's only allowed for plain java classes and have the implementation 
>>> to directly asks the VM is a non static field is trusted or not.
>> 
>> This reply was before you realized that records are are permanent Java SE 16 
>> feature :-)  If the future ended up requiring/desiring to allow final fields 
>> of a record class be modifiable reflectively (I double that!), `Field::set` 
>> spec can be updated to remove that restriction with no compatibility risk
>> 
>>> And there are also a related issue with the validation of the 
>>> InnerClass/Enclosing attribute were the VM does a handshake between the 
>>> inner class attribute and the enclosing class attribute when calling 
>>> Class.getSimpleName(), again using the JLS definition of what an inner 
>>> class is instead of using the VM definition, the content of the InnerClass 
>>> attribute with no validation.
>> 
>> It's the implementation details of the core reflection how to determine if a 
>> class is a member of another class.   The `getSimpleName` spec and other 
>> related APIs (see JDK-8250226) need to define the behavior when there is an 
>> issue in determining the declaring class.   This indeed needs some 
>> investigation what the best way to address this.
>
> I have created a new branch off jdk16: 
> https://github.com/mlchung/jdk16/tree/8257596.  It fixed the attribute name 
> as Harold pointed out.   
> 
> @hseigel tier1-tier3 and jck-runtime:vm and jck-runtime:lang tests all passed.

Target this fix for jdk16 (https://github.com/openjdk/jdk16/pull/14).

-------------

PR: https://git.openjdk.java.net/jdk/pull/1706

Reply via email to