RFR: 8295214: Generational ZGC: Guard nmethods from cross modifying code

Erik Österlund eosterlund at openjdk.org
Wed Nov 9 10:17:04 UTC 2022


On Wed, 9 Nov 2022 01:53:48 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> Generational ZGC will need to patch nmethod instructions outside of safepoints, and guard entries into the nmethods with cross modifying code fences. This is mostly taken care of by nmethod entry barrier code. But there are a few entries that don't go through nmethod entry barriers that need fixing. In particular when entering an nmethod by returning through the stack watermark barrier. This patch ensures that whenever the stack watermark barrier exposes a new nmethod, we also ensure that a cross modify fence is executed, so that any concurrently updated instructions can be safely executed.
>
> src/hotspot/share/runtime/safepointMechanism.cpp line 144:
> 
>> 142: 
>> 143:   update_poll_values(thread);
>> 144:   OrderAccess::cross_modify_fence();
> 
> Has this simply been moved to cover more paths?

The new logic inside of update_poll_values makes is more accurate and made this cross_modify_fence redundant. That's why I removed it.

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

PR: https://git.openjdk.org/jdk/pull/11042


More information about the hotspot-dev mailing list