comparison src/share/vm/gc_implementation/parNew/parNewGeneration.cpp @ 454:df4305d4c1a1

6774607: SIGSEGV or (!is_null(v),"oop value can never be zero") assertion when running with CMS and COOPs Summary: Use the more permissive set_klass_or_null() and klass_or_null() interfaces in ParNew's workqueue overflow code that manipulates the klass-word. Reviewed-by: coleenp
author ysr
date Mon, 24 Nov 2008 09:53:31 -0800
parents c96030fff130
children 27a80744a83b
comparison
equal deleted inserted replaced
453:c96030fff130 454:df4305d4c1a1
1203 assert(cur != NULL, "program logic"); 1203 assert(cur != NULL, "program logic");
1204 cur = prefix; 1204 cur = prefix;
1205 int n = 0; 1205 int n = 0;
1206 while (cur != NULL) { 1206 while (cur != NULL) {
1207 oop obj_to_push = cur->forwardee(); 1207 oop obj_to_push = cur->forwardee();
1208 oop next = oop(cur->klass()); 1208 oop next = oop(cur->klass_or_null());
1209 cur->set_klass(obj_to_push->klass()); 1209 cur->set_klass(obj_to_push->klass());
1210 if (par_scan_state->should_be_partially_scanned(obj_to_push, cur)) { 1210 if (par_scan_state->should_be_partially_scanned(obj_to_push, cur)) {
1211 obj_to_push = cur; 1211 obj_to_push = cur;
1212 assert(arrayOop(cur)->length() == 0, "entire array remaining to be scanned"); 1212 assert(arrayOop(cur)->length() == 0, "entire array remaining to be scanned");
1213 } 1213 }