Mercurial > hg > graal-jvmci-8
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 } |