37 return (_obj == NULL) ? (oop)NULL : NativeAccess<AS_NO_KEEPALIVE>::oop_load(_obj); 38 } 39 40 inline OopHandle::OopHandle(OopStorage* storage, oop obj) : 41 _obj(storage->allocate()) { 42 if (_obj == NULL) { 43 vm_exit_out_of_memory(sizeof(oop), OOM_MALLOC_ERROR, 44 "Cannot create oop handle"); 45 } 46 NativeAccess<>::oop_store(_obj, obj); 47 } 48 49 inline void OopHandle::release(OopStorage* storage) { 50 if (peek() != NULL) { 51 // Clear the OopHandle first 52 NativeAccess<>::oop_store(_obj, (oop)NULL); 53 storage->release(_obj); 54 } 55 } 56 57 #endif // SHARE_OOPS_OOPHANDLE_INLINE_HPP | 37 return (_obj == NULL) ? (oop)NULL : NativeAccess<AS_NO_KEEPALIVE>::oop_load(_obj); 38 } 39 40 inline OopHandle::OopHandle(OopStorage* storage, oop obj) : 41 _obj(storage->allocate()) { 42 if (_obj == NULL) { 43 vm_exit_out_of_memory(sizeof(oop), OOM_MALLOC_ERROR, 44 "Cannot create oop handle"); 45 } 46 NativeAccess<>::oop_store(_obj, obj); 47 } 48 49 inline void OopHandle::release(OopStorage* storage) { 50 if (peek() != NULL) { 51 // Clear the OopHandle first 52 NativeAccess<>::oop_store(_obj, (oop)NULL); 53 storage->release(_obj); 54 } 55 } 56 57 inline void OopHandle::replace(oop obj) { 58 oop* ptr = ptr_raw(); 59 assert(ptr != NULL, "should not use replace"); 60 NativeAccess<>::oop_store(ptr, obj); 61 } 62 63 #endif // SHARE_OOPS_OOPHANDLE_INLINE_HPP |