< prev index next >
src/hotspot/share/gc/z/zRelocate.cpp
Print this page
*** 20,29 ****
--- 20,31 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#include "precompiled.hpp"
+ #include "gc/z/zAddress.inline.hpp"
+ #include "gc/z/zBarrier.inline.hpp"
#include "gc/z/zHeap.hpp"
#include "gc/z/zOopClosures.inline.hpp"
#include "gc/z/zPage.hpp"
#include "gc/z/zRelocate.hpp"
#include "gc/z/zRelocationSet.inline.hpp"
*** 33,48 ****
--- 35,60 ----
ZRelocate::ZRelocate(ZWorkers* workers) :
_workers(workers) {}
class ZRelocateRootsIteratorClosure : public ZRootsIteratorClosure {
+ private:
+ static void remap_address(HeapWord** p) {
+ *p = (HeapWord*)ZAddress::good_or_null((uintptr_t)*p);
+ }
+
public:
virtual void do_thread(Thread* thread) {
ZRootsIteratorClosure::do_thread(thread);
// Update thread local address bad mask
ZThreadLocalData::set_address_bad_mask(thread, ZAddressBadMask);
+
+ // Remap TLAB
+ if (UseTLAB && thread->is_Java_thread()) {
+ thread->tlab().addresses_do(remap_address);
+ }
}
virtual void do_oop(oop* p) {
ZBarrier::relocate_barrier_on_root_oop_field(p);
}
< prev index next >