< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahTraversalGC.inline.hpp

Print this page
rev 51546 : Some optimization to traversal-marking
rev 51547 : Refactor to group marking bitmap and TAMS structure in one class ShenandoahMarkingContext
rev 51548 : Avoid indirection to next-mark-context

*** 35,45 **** #include "gc/shenandoah/shenandoahTaskqueue.hpp" #include "memory/iterator.inline.hpp" #include "oops/oop.inline.hpp" template <class T, bool STRING_DEDUP, bool DEGEN, bool UPDATE_MATRIX> ! void ShenandoahTraversalGC::process_oop(T* p, Thread* thread, ShenandoahObjToScanQueue* queue, oop base_obj) { T o = RawAccess<>::oop_load(p); if (!CompressedOops::is_null(o)) { oop obj = CompressedOops::decode_not_null(o); bool update_matrix = true; if (DEGEN) { --- 35,45 ---- #include "gc/shenandoah/shenandoahTaskqueue.hpp" #include "memory/iterator.inline.hpp" #include "oops/oop.inline.hpp" template <class T, bool STRING_DEDUP, bool DEGEN, bool UPDATE_MATRIX> ! void ShenandoahTraversalGC::process_oop(T* p, Thread* thread, ShenandoahObjToScanQueue* queue, ShenandoahMarkingContext* const mark_context, oop base_obj) { T o = RawAccess<>::oop_load(p); if (!CompressedOops::is_null(o)) { oop obj = CompressedOops::decode_not_null(o); bool update_matrix = true; if (DEGEN) {
*** 75,85 **** if (src != NULL) { _matrix->set_connected(src, obj); } } ! if (_heap->next_marking_context()->mark(obj)) { bool succeeded = queue->push(ShenandoahMarkTask(obj)); assert(succeeded, "must succeed to push to task queue"); if (STRING_DEDUP && ShenandoahStringDedup::is_candidate(obj) && !_heap->cancelled_gc()) { assert(ShenandoahStringDedup::is_enabled(), "Must be enabled"); --- 75,85 ---- if (src != NULL) { _matrix->set_connected(src, obj); } } ! if (mark_context->mark(obj)) { bool succeeded = queue->push(ShenandoahMarkTask(obj)); assert(succeeded, "must succeed to push to task queue"); if (STRING_DEDUP && ShenandoahStringDedup::is_candidate(obj) && !_heap->cancelled_gc()) { assert(ShenandoahStringDedup::is_enabled(), "Must be enabled");
< prev index next >