On 14/09/2020 6:18 pm, Richard Reingruber wrote:
On Mon, 14 Sep 2020 04:57:21 GMT, David Holmes <dhol...@openjdk.org> wrote:

Hi,

this is the continuation of the review of the implementation for:

https://bugs.openjdk.java.net/browse/JDK-8227745
https://bugs.openjdk.java.net/browse/JDK-8233915

It allows for JIT optimizations based on escape analysis even if JVMTI agents 
acquire capabilities to access references
to objects that are subject to such optimizations, e.g. scalar replacement. The 
implementation reverts such
optimizations just before access very much as when switching from JIT compiled 
execution to the interpreter, aka
"deoptimization".  Webrev.8 was the last one before before the transition to 
Git/Github:

http://cr.openjdk.java.net/~rrich/webrevs/8227745/webrev.8/

Thanks, Richard.

src/hotspot/share/compiler/compileBroker.cpp line 831:

829:       MonitorLocker ml(dt, EscapeBarrier_lock, 
Mutex::_no_safepoint_check_flag);
830:       static int single_thread_count = 0;
831:       enter_single_loop = single_thread_count++ < 
DeoptimizeObjectsALotThreadCountSingle;

The update to `single_thread_count` is not atomic.

I think it is atomic because it is never accessed without holding 
EscapeBarrier_lock

Doh! My bad.

David

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

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

Reply via email to