comparison src/share/vm/gc_implementation/parNew/parNewGeneration.cpp @ 167:feeb96a45707

6696264: assert("narrow oop can never be zero") for GCBasher & ParNewGC Summary: decouple set_klass() with zeroing the gap when compressed. Reviewed-by: kvn, ysr, jrose
author coleenp
date Wed, 28 May 2008 21:06:24 -0700
parents ba764ed4b6f2
children d1605aabd0a1 12eea04c8b06
comparison
equal deleted inserted replaced
166:aaa1137c5ef4 167:feeb96a45707
1167 return false; 1167 return false;
1168 } 1168 }
1169 // Trim off a prefix of at most objsFromOverflow items 1169 // Trim off a prefix of at most objsFromOverflow items
1170 int i = 1; 1170 int i = 1;
1171 oop cur = prefix; 1171 oop cur = prefix;
1172 while (i < objsFromOverflow && cur->klass() != NULL) { 1172 while (i < objsFromOverflow && cur->klass_or_null() != NULL) {
1173 i++; cur = oop(cur->klass()); 1173 i++; cur = oop(cur->klass());
1174 } 1174 }
1175 1175
1176 // Reattach remaining (suffix) to overflow list 1176 // Reattach remaining (suffix) to overflow list
1177 if (cur->klass() != NULL) { 1177 if (cur->klass_or_null() != NULL) {
1178 oop suffix = oop(cur->klass()); 1178 oop suffix = oop(cur->klass());
1179 cur->set_klass_to_list_ptr(NULL); 1179 cur->set_klass_to_list_ptr(NULL);
1180 1180
1181 // Find last item of suffix list 1181 // Find last item of suffix list
1182 oop last = suffix; 1182 oop last = suffix;
1183 while (last->klass() != NULL) { 1183 while (last->klass_or_null() != NULL) {
1184 last = oop(last->klass()); 1184 last = oop(last->klass());
1185 } 1185 }
1186 // Atomically prepend suffix to current overflow list 1186 // Atomically prepend suffix to current overflow list
1187 oop cur_overflow_list = _overflow_list; 1187 oop cur_overflow_list = _overflow_list;
1188 while (true) { 1188 while (true) {