diff -r 8b6cc0bb93d0 -r 9186be5c78ba src/hotspot/share/gc/shenandoah/shenandoahThreadLocalData.hpp --- a/src/hotspot/share/gc/shenandoah/shenandoahThreadLocalData.hpp Wed Nov 27 06:36:41 2019 -0800 +++ b/src/hotspot/share/gc/shenandoah/shenandoahThreadLocalData.hpp Wed Nov 27 11:52:57 2019 -0500 @@ -26,6 +26,7 @@ #include "gc/shared/plab.hpp" #include "gc/shenandoah/shenandoahBarrierSet.hpp" +#include "gc/shenandoah/shenandoahCodeRoots.hpp" #include "gc/shenandoah/shenandoahSATBMarkQueueSet.hpp" #include "runtime/thread.hpp" #include "utilities/debug.hpp" @@ -43,6 +44,7 @@ size_t _gclab_size; uint _worker_id; bool _force_satb_flush; + int _disarmed_value; ShenandoahThreadLocalData() : _gc_state(0), @@ -125,6 +127,7 @@ assert(data(thread)->_gclab == NULL, "Only initialize once"); data(thread)->_gclab = new PLAB(PLAB::min_size()); data(thread)->_gclab_size = 0; + data(thread)->_disarmed_value = ShenandoahCodeRoots::disarmed_value(); } static PLAB* gclab(Thread* thread) { @@ -139,6 +142,10 @@ data(thread)->_gclab_size = v; } + static void set_disarmed_value(Thread* thread, int value) { + data(thread)->_disarmed_value = value; + } + #ifdef ASSERT static void set_evac_allowed(Thread* thread, bool evac_allowed) { if (evac_allowed) { @@ -170,6 +177,9 @@ return Thread::gc_data_offset() + byte_offset_of(ShenandoahThreadLocalData, _gc_state); } + static ByteSize disarmed_value_offset() { + return Thread::gc_data_offset() + byte_offset_of(ShenandoahThreadLocalData, _disarmed_value); + } }; #endif // SHARE_GC_SHENANDOAH_SHENANDOAHTHREADLOCALDATA_HPP