--- old/src/share/vm/gc/parallel/psMarkSweepDecorator.cpp 2016-12-20 16:31:17.171683061 -0500 +++ new/src/share/vm/gc/parallel/psMarkSweepDecorator.cpp 2016-12-20 16:31:15.987615327 -0500 @@ -266,7 +266,7 @@ } } -void PSMarkSweepDecorator::adjust_pointers() { +void PSMarkSweepDecorator::adjust_pointers(MarkSweep* ms) { // adjust all the interior pointers to point at the new locations of objects // Used by MarkSweep::mark_sweep_phase3() @@ -284,7 +284,8 @@ while (q < end) { // point all the oops to the new location - size_t size = MarkSweep::adjust_pointers(oop(q)); + assert(ms!= NULL, " MarkSweep must be active"); + size_t size = ms->adjust_pointers(oop(q)); q += size; } @@ -304,7 +305,8 @@ if (oop(q)->is_gc_marked()) { // q is alive // point all the oops to the new location - size_t size = MarkSweep::adjust_pointers(oop(q)); + assert(ms!= NULL, " MarkSweep must be active"); + size_t size = ms->adjust_pointers(oop(q)); debug_only(prev_q = q); q += size; } else {