< prev index next >

src/hotspot/share/oops/oopHandle.inline.hpp

Print this page




  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
< prev index next >