Mercurial > hg > graal-jvmci-8
comparison src/share/vm/gc_implementation/parallelScavenge/psMarkSweepDecorator.cpp @ 481:7d7a7c599c17
6578152: fill_region_with_object has usability and safety issues
Reviewed-by: apetrusenko, ysr
author | jcoomes |
---|---|
date | Thu, 11 Dec 2008 12:05:08 -0800 |
parents | 122d10c82f3f |
children | 0fbdb4381b99 |
comparison
equal
deleted
inserted
replaced
480:d249b360e026 | 481:7d7a7c599c17 |
---|---|
273 | 273 |
274 bool PSMarkSweepDecorator::insert_deadspace(size_t& allowed_deadspace_words, | 274 bool PSMarkSweepDecorator::insert_deadspace(size_t& allowed_deadspace_words, |
275 HeapWord* q, size_t deadlength) { | 275 HeapWord* q, size_t deadlength) { |
276 if (allowed_deadspace_words >= deadlength) { | 276 if (allowed_deadspace_words >= deadlength) { |
277 allowed_deadspace_words -= deadlength; | 277 allowed_deadspace_words -= deadlength; |
278 oop(q)->set_mark(markOopDesc::prototype()->set_marked()); | 278 CollectedHeap::fill_with_object(q, deadlength); |
279 const size_t aligned_min_int_array_size = | 279 oop(q)->set_mark(oop(q)->mark()->set_marked()); |
280 align_object_size(typeArrayOopDesc::header_size(T_INT)); | 280 assert((int) deadlength == oop(q)->size(), "bad filler object size"); |
281 if (deadlength >= aligned_min_int_array_size) { | |
282 oop(q)->set_klass(Universe::intArrayKlassObj()); | |
283 assert(((deadlength - aligned_min_int_array_size) * (HeapWordSize/sizeof(jint))) < (size_t)max_jint, | |
284 "deadspace too big for Arrayoop"); | |
285 typeArrayOop(q)->set_length((int)((deadlength - aligned_min_int_array_size) | |
286 * (HeapWordSize/sizeof(jint)))); | |
287 } else { | |
288 assert((int) deadlength == instanceOopDesc::header_size(), | |
289 "size for smallest fake dead object doesn't match"); | |
290 oop(q)->set_klass(SystemDictionary::object_klass()); | |
291 } | |
292 assert((int) deadlength == oop(q)->size(), | |
293 "make sure size for fake dead object match"); | |
294 // Recall that we required "q == compaction_top". | 281 // Recall that we required "q == compaction_top". |
295 return true; | 282 return true; |
296 } else { | 283 } else { |
297 allowed_deadspace_words = 0; | 284 allowed_deadspace_words = 0; |
298 return false; | 285 return false; |