[concurrency-interest] Thread safety of WeakReference .get() method?

Aleksey Shipilev aleksey.shipilev at oracle.com
Fri Aug 10 02:05:21 EDT 2012


On 08/08/2012 06:11 PM, Aleksey Shipilev wrote:
> Hence, the compiler should probably handle the fields which are normally
> updated by the GC in a specific way, e.g. prevent hoisting. Marking
> referent as volatile brings that effect into life, but at the cost of
> volatile write for the initial value (we had some optimization in mind
> to handle that, but this is by no means a quick solution).

FYI.

This is the submitted bug (not available in public yet):
 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7190310

And this is the fix:
 http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2012-August/008190.html

I had double-checked Heinz's testcase now works, and disassembly shows
plain field read inside the loop. membar_acquire had essentially reduced
to nop on my x86 laptop.

-Aleksey.


More information about the Concurrency-interest mailing list