On constant folding of final field loads

Paul Sandoz paul.sandoz at oracle.com
Mon Jun 29 12:13:39 UTC 2015


On Jun 29, 2015, at 2:00 PM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:

> Paul,
> 
>> For MHs it's not possible to lookup a MH (via MH.L.findSetter/unreflectSetter) to a final field.
>> 
>> http://hg.openjdk.java.net/jdk9/dev/jdk/file/93ced310c728/src/java.base/share/classes/java/lang/invoke/MethodHandles.java#l1516
>> 
>> Although i cannot find any such explicit mention in JavaDoc, so i guess it can be considered under the umbrella of "access checks".
> Though you can't lookup a setter for al final field directly, you can use Lookup.unreflectSetter:
>  Field f = T.class.getDeclaredField("t");
>  f.setAccessible(true);
>  MethodHandle setter = MethodHandles.lookup().unreflectSetter(f);
> 

Oh, yes, i see now, i missed the switch to use IMPL_LOOKUP if the field is set to accessible.


> But it doesn't matter much, since MH field getters/setters are baseon on Unsafe. So, if final field value tracking works for Unsafe, it works for j.l.i as well.
> 

Yes.

Paul.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 841 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20150629/9cb12d89/signature.asc>


More information about the hotspot-compiler-dev mailing list