src/hotspot/share/gc/z/zBarrierSetNMethod.cpp
changeset 59284 88502b1cf76f
parent 58226 408c445d04e8
--- a/src/hotspot/share/gc/z/zBarrierSetNMethod.cpp	Tue Nov 26 14:33:56 2019 -0500
+++ b/src/hotspot/share/gc/z/zBarrierSetNMethod.cpp	Mon Sep 09 11:43:16 2019 -0400
@@ -61,12 +61,10 @@
   return true;
 }
 
-int ZBarrierSetNMethod::disarmed_value() const {
-  // We override the default BarrierSetNMethod::disarmed_value() since
-  // this can be called by GC threads, which doesn't keep an up to date
-  // address_bad_mask.
-  const uintptr_t disarmed_addr = ((uintptr_t)&ZAddressBadMask) + ZNMethodDisarmedOffset;
-  return *((int*)disarmed_addr);
+int* ZBarrierSetNMethod::disarmed_value_address() const {
+  const uintptr_t mask_addr = reinterpret_cast<uintptr_t>(&ZAddressBadMask);
+  const uintptr_t disarmed_addr = mask_addr + ZNMethodDisarmedOffset;
+  return reinterpret_cast<int*>(disarmed_addr);
 }
 
 ByteSize ZBarrierSetNMethod::thread_disarmed_offset() const {