Mercurial > hg > jdk9-shenandoah > hotspot
changeset 9438:fa747dd25e5b
Resolve oops at draining SATB buffers, don't resolve at marking time.
author | rkennke |
---|---|
date | Thu, 30 Jul 2015 15:51:43 +0200 |
parents | 5cec8cad3e97 |
children | 399bc16a1b86 |
files | src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.cpp src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.inline.hpp |
diffstat | 2 files changed, 2 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.cpp Thu Jul 30 15:51:42 2015 +0200 +++ b/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.cpp Thu Jul 30 15:51:43 2015 +0200 @@ -405,6 +405,7 @@ oop obj = oop(entry); // tty->print_cr("satb buffer entry: "PTR_FORMAT, p2i((HeapWord*) obj)); if (!oopDesc::is_null(obj)) { + obj = ShenandoahBarrierSet::resolve_oop_static_not_null(obj); bool pushed = _queue->push(obj); assert(pushed, "overflow queue should always succeed pushing"); }
--- a/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.inline.hpp Thu Jul 30 15:51:42 2015 +0200 +++ b/src/share/vm/gc_implementation/shenandoah/shenandoahConcurrentMark.inline.hpp Thu Jul 30 15:51:43 2015 +0200 @@ -64,7 +64,7 @@ assert(obj != NULL, "expect non-null object"); - obj = ShenandoahBarrierSet::resolve_oop_static_not_null(obj); + assert(obj == ShenandoahBarrierSet::resolve_oop_static_not_null(obj), "expect forwarded obj in queue"); #ifdef ASSERT if (_heap->heap_region_containing(obj)->is_in_collection_set()) {