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()) {