55 56 // Heal oops and disarm 57 ZNMethodOopClosure cl; 58 ZNMethod::nmethod_oops_do(nm, &cl); 59 disarm(nm); 60 61 return true; 62 } 63 64 int ZBarrierSetNMethod::disarmed_value() const { 65 // We override the default BarrierSetNMethod::disarmed_value() since 66 // this can be called by GC threads, which doesn't keep an up to date 67 // address_bad_mask. 68 const uintptr_t disarmed_addr = ((uintptr_t)&ZAddressBadMask) + ZNMethodDisarmedOffset; 69 return *((int*)disarmed_addr); 70 } 71 72 ByteSize ZBarrierSetNMethod::thread_disarmed_offset() const { 73 return ZThreadLocalData::nmethod_disarmed_offset(); 74 } | 55 56 // Heal oops and disarm 57 ZNMethodOopClosure cl; 58 ZNMethod::nmethod_oops_do(nm, &cl); 59 disarm(nm); 60 61 return true; 62 } 63 64 int ZBarrierSetNMethod::disarmed_value() const { 65 // We override the default BarrierSetNMethod::disarmed_value() since 66 // this can be called by GC threads, which doesn't keep an up to date 67 // address_bad_mask. 68 const uintptr_t disarmed_addr = ((uintptr_t)&ZAddressBadMask) + ZNMethodDisarmedOffset; 69 return *((int*)disarmed_addr); 70 } 71 72 ByteSize ZBarrierSetNMethod::thread_disarmed_offset() const { 73 return ZThreadLocalData::nmethod_disarmed_offset(); 74 } 75 76 intptr_t ZBarrierSetNMethod::disarmed_address() const { 77 ShouldNotReachHere(); 78 return (intptr_t)NULL; 79 } |