[14] RFR (XXS): 8235143: C2: No memory state needed in Thread::currentThread() intrinsic

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Thu Dec 5 12:43:39 UTC 2019


http://cr.openjdk.java.net/~vlivanov/8235143/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8235143

Thread::currentThread() intrinsic doesn't need memory state:
though multiple threads can execute same code, "current thread" can't 
change in the context of a single method activation. So, once it is 
observed, it's safe to share among all users.

One of the use cases which benefit a lot from such optimization is 
ownership checks for thread confined resources (fast path check for 
owner thread to avoid heavy-weight synchronization).

The patch was part of foreign-memaccess branch in Project Panama and 
showed good performance results on Memory Access API implementation [1].

Testing: tier1-4

PS: the optimization should be disabled in Project Loom: the assumption 
doesn't hold for continuations (in their current form).

Best regards,
Vladimir Ivanov

[1] https://openjdk.java.net/jeps/370
     JEP 370: Foreign-Memory Access API (Incubator)


More information about the hotspot-compiler-dev mailing list