--- 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