< prev index next >

src/hotspot/share/gc/z/zBarrierSetNMethod.cpp

Print this page
@@ -59,16 +59,14 @@
    disarm(nm);
  
    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 {
    return ZThreadLocalData::nmethod_disarmed_offset();
  }
< prev index next >