< prev index next >

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

Print this page




  56   return (markWord*) &_mark;
  57 }
  58 
  59 void oopDesc::set_mark(markWord m) {
  60   HeapAccess<MO_VOLATILE>::store_at(as_oop(), mark_offset_in_bytes(), m.value());
  61 }
  62 
  63 void oopDesc::set_mark_raw(markWord m) {
  64   Atomic::store(&_mark, m);
  65 }
  66 
  67 void oopDesc::set_mark_raw(HeapWord* mem, markWord m) {
  68   *(markWord*)(((char*)mem) + mark_offset_in_bytes()) = m;
  69 }
  70 
  71 void oopDesc::release_set_mark(markWord m) {
  72   HeapAccess<MO_RELEASE>::store_at(as_oop(), mark_offset_in_bytes(), m.value());
  73 }
  74 
  75 markWord oopDesc::cas_set_mark(markWord new_mark, markWord old_mark) {
  76   uintptr_t v = HeapAccess<>::atomic_cmpxchg_at(new_mark.value(), as_oop(), mark_offset_in_bytes(), old_mark.value());
  77   return markWord(v);
  78 }
  79 
  80 markWord oopDesc::cas_set_mark_raw(markWord new_mark, markWord old_mark, atomic_memory_order order) {
  81   return Atomic::cmpxchg(new_mark, &_mark, old_mark, order);
  82 }
  83 
  84 void oopDesc::init_mark() {
  85   set_mark(markWord::prototype_for_klass(klass()));
  86 }
  87 
  88 void oopDesc::init_mark_raw() {
  89   set_mark_raw(markWord::prototype_for_klass(klass()));
  90 }
  91 
  92 Klass* oopDesc::klass() const {
  93   if (UseCompressedClassPointers) {
  94     return CompressedKlassPointers::decode_not_null(_metadata._compressed_klass);
  95   } else {
  96     return _metadata._klass;
  97   }
  98 }
  99 
 100 Klass* oopDesc::klass_or_null() const volatile {
 101   if (UseCompressedClassPointers) {




  56   return (markWord*) &_mark;
  57 }
  58 
  59 void oopDesc::set_mark(markWord m) {
  60   HeapAccess<MO_VOLATILE>::store_at(as_oop(), mark_offset_in_bytes(), m.value());
  61 }
  62 
  63 void oopDesc::set_mark_raw(markWord m) {
  64   Atomic::store(&_mark, m);
  65 }
  66 
  67 void oopDesc::set_mark_raw(HeapWord* mem, markWord m) {
  68   *(markWord*)(((char*)mem) + mark_offset_in_bytes()) = m;
  69 }
  70 
  71 void oopDesc::release_set_mark(markWord m) {
  72   HeapAccess<MO_RELEASE>::store_at(as_oop(), mark_offset_in_bytes(), m.value());
  73 }
  74 
  75 markWord oopDesc::cas_set_mark(markWord new_mark, markWord old_mark) {
  76   uintptr_t v = HeapAccess<>::atomic_cmpxchg_at(as_oop(), mark_offset_in_bytes(), old_mark.value(), new_mark.value());
  77   return markWord(v);
  78 }
  79 
  80 markWord oopDesc::cas_set_mark_raw(markWord new_mark, markWord old_mark, atomic_memory_order order) {
  81   return Atomic::cmpxchg(&_mark, old_mark, new_mark, order);
  82 }
  83 
  84 void oopDesc::init_mark() {
  85   set_mark(markWord::prototype_for_klass(klass()));
  86 }
  87 
  88 void oopDesc::init_mark_raw() {
  89   set_mark_raw(markWord::prototype_for_klass(klass()));
  90 }
  91 
  92 Klass* oopDesc::klass() const {
  93   if (UseCompressedClassPointers) {
  94     return CompressedKlassPointers::decode_not_null(_metadata._compressed_klass);
  95   } else {
  96     return _metadata._klass;
  97   }
  98 }
  99 
 100 Klass* oopDesc::klass_or_null() const volatile {
 101   if (UseCompressedClassPointers) {


< prev index next >