29 #include "gc/z/zMarkStack.inline.hpp" |
29 #include "gc/z/zMarkStack.inline.hpp" |
30 #include "gc/z/zThreadLocalData.hpp" |
30 #include "gc/z/zThreadLocalData.hpp" |
31 #include "runtime/thread.hpp" |
31 #include "runtime/thread.hpp" |
32 #include "utilities/debug.hpp" |
32 #include "utilities/debug.hpp" |
33 |
33 |
34 template <bool finalizable, bool publish> |
34 template <bool follow, bool finalizable, bool publish> |
35 inline void ZMark::mark_object(uintptr_t addr) { |
35 inline void ZMark::mark_object(uintptr_t addr) { |
36 assert(ZAddress::is_marked(addr), "Should be marked"); |
36 assert(ZAddress::is_marked(addr), "Should be marked"); |
37 ZMarkThreadLocalStacks* const stacks = ZThreadLocalData::stacks(Thread::current()); |
37 ZMarkThreadLocalStacks* const stacks = ZThreadLocalData::stacks(Thread::current()); |
38 ZMarkStripe* const stripe = _stripes.stripe_for_addr(addr); |
38 ZMarkStripe* const stripe = _stripes.stripe_for_addr(addr); |
39 ZMarkStackEntry entry(addr, finalizable); |
39 ZMarkStackEntry entry(addr, follow, finalizable); |
40 |
40 |
41 stacks->push(&_allocator, &_stripes, stripe, entry, publish); |
41 stacks->push(&_allocator, &_stripes, stripe, entry, publish); |
42 } |
42 } |
43 |
43 |
44 #endif // SHARE_GC_Z_ZMARK_INLINE_HPP |
44 #endif // SHARE_GC_Z_ZMARK_INLINE_HPP |