< prev index next >

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

Print this page




 106   assert(!ZAddress::is_weak_good(addr), "Should not be weak good");
 107   return ZHeap::heap()->relocate_object(addr);
 108 }
 109 
 110 uintptr_t ZBarrier::relocate_or_mark(uintptr_t addr) {
 111   return during_relocate() ? relocate(addr) : mark<Strong, Publish>(addr);
 112 }
 113 
 114 uintptr_t ZBarrier::relocate_or_remap(uintptr_t addr) {
 115   return during_relocate() ? relocate(addr) : remap(addr);
 116 }
 117 
 118 //
 119 // Load barrier
 120 //
 121 uintptr_t ZBarrier::load_barrier_on_oop_slow_path(uintptr_t addr) {
 122   return relocate_or_mark(addr);
 123 }
 124 
 125 void ZBarrier::load_barrier_on_oop_fields(oop o) {
 126   assert(ZAddress::is_good(ZOop::to_address(o)), "Should be good");
 127   ZLoadBarrierOopClosure cl;
 128   o->oop_iterate(&cl);
 129 }
 130 
 131 //
 132 // Weak load barrier
 133 //
 134 uintptr_t ZBarrier::weak_load_barrier_on_oop_slow_path(uintptr_t addr) {
 135   return ZAddress::is_weak_good(addr) ? ZAddress::good(addr) : relocate_or_remap(addr);
 136 }
 137 
 138 uintptr_t ZBarrier::weak_load_barrier_on_weak_oop_slow_path(uintptr_t addr) {
 139   const uintptr_t good_addr = weak_load_barrier_on_oop_slow_path(addr);
 140   if (ZHeap::heap()->is_object_strongly_live(good_addr)) {
 141     return good_addr;
 142   }
 143 
 144   // Not strongly live
 145   return 0;
 146 }




 106   assert(!ZAddress::is_weak_good(addr), "Should not be weak good");
 107   return ZHeap::heap()->relocate_object(addr);
 108 }
 109 
 110 uintptr_t ZBarrier::relocate_or_mark(uintptr_t addr) {
 111   return during_relocate() ? relocate(addr) : mark<Strong, Publish>(addr);
 112 }
 113 
 114 uintptr_t ZBarrier::relocate_or_remap(uintptr_t addr) {
 115   return during_relocate() ? relocate(addr) : remap(addr);
 116 }
 117 
 118 //
 119 // Load barrier
 120 //
 121 uintptr_t ZBarrier::load_barrier_on_oop_slow_path(uintptr_t addr) {
 122   return relocate_or_mark(addr);
 123 }
 124 
 125 void ZBarrier::load_barrier_on_oop_fields(oop o) {
 126   assert(ZOop::is_good(o), "Should be good");
 127   ZLoadBarrierOopClosure cl;
 128   o->oop_iterate(&cl);
 129 }
 130 
 131 //
 132 // Weak load barrier
 133 //
 134 uintptr_t ZBarrier::weak_load_barrier_on_oop_slow_path(uintptr_t addr) {
 135   return ZAddress::is_weak_good(addr) ? ZAddress::good(addr) : relocate_or_remap(addr);
 136 }
 137 
 138 uintptr_t ZBarrier::weak_load_barrier_on_weak_oop_slow_path(uintptr_t addr) {
 139   const uintptr_t good_addr = weak_load_barrier_on_oop_slow_path(addr);
 140   if (ZHeap::heap()->is_object_strongly_live(good_addr)) {
 141     return good_addr;
 142   }
 143 
 144   // Not strongly live
 145   return 0;
 146 }


< prev index next >