< prev index next >
src/hotspot/share/gc/z/zMark.cpp
Print this page
@@ -117,10 +117,15 @@
}
}
}
class ZMarkRootsIteratorClosure : public ZRootsIteratorClosure {
+private:
+ static void fixup_address(HeapWord** p) {
+ *p = (HeapWord*)ZAddress::good_or_null((uintptr_t)*p);
+ }
+
public:
ZMarkRootsIteratorClosure() {
ZStatTLAB::reset();
}
@@ -134,10 +139,11 @@
// Update thread local address bad mask
ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask);
// Retire TLAB
if (UseTLAB && thread->is_Java_thread()) {
+ thread->tlab().addresses_do(fixup_address);
thread->tlab().retire(ZStatTLAB::get());
thread->tlab().resize();
}
}
< prev index next >