--- old/src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp 2016-09-20 14:24:03.466496214 +0200 +++ new/src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp 2016-09-20 14:24:03.362496210 +0200 @@ -7829,7 +7829,7 @@ assert(stack->isEmpty(), "Expected precondition"); assert(stack->capacity() > num, "Shouldn't bite more than can chew"); size_t i = num; - oop cur = _overflow_list; + oop cur = oop(_overflow_list); const markOop proto = markOopDesc::prototype(); NOT_PRODUCT(ssize_t n = 0;) for (oop next; i > 0 && cur != NULL; cur = next, i--) { @@ -7840,7 +7840,7 @@ assert(res, "Bit off more than can chew?"); NOT_PRODUCT(n++;) } - _overflow_list = cur; + _overflow_list = (oopDesc*)cur; #ifndef PRODUCT assert(_num_par_pushes >= n, "Too many pops?"); _num_par_pushes -=n; @@ -7935,7 +7935,7 @@ // we left it in a short while ago; in that case we may be // able to place back the suffix without incurring the cost // of a walk down the list. - oop observed_overflow_list = _overflow_list; + oop observed_overflow_list = oop(_overflow_list); oop cur_overflow_list = observed_overflow_list; bool attached = false; while (observed_overflow_list == BUSY || observed_overflow_list == NULL) { @@ -7954,7 +7954,7 @@ oop suffix_tail = cur; assert(suffix_tail != NULL && suffix_tail->mark() == NULL, "Tautology"); - observed_overflow_list = _overflow_list; + observed_overflow_list = oop(_overflow_list); do { cur_overflow_list = observed_overflow_list; if (cur_overflow_list != BUSY) { @@ -7997,7 +7997,7 @@ assert(p->is_oop(), "Not an oop"); preserve_mark_if_necessary(p); p->set_mark((markOop)_overflow_list); - _overflow_list = p; + _overflow_list = (oopDesc*)p; } // Multi-threaded; use CAS to prepend to overflow list @@ -8005,7 +8005,7 @@ NOT_PRODUCT(Atomic::inc_ptr(&_num_par_pushes);) assert(p->is_oop(), "Not an oop"); par_preserve_mark_if_necessary(p); - oop observed_overflow_list = _overflow_list; + oop observed_overflow_list = oop(_overflow_list); oop cur_overflow_list; do { cur_overflow_list = observed_overflow_list;