Mercurial > hg > truffle
comparison src/share/vm/memory/space.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 | e9be0e04635a |
comparison
equal
deleted
inserted
replaced
480:d249b360e026 | 481:7d7a7c599c17 |
---|---|
407 | 407 |
408 bool CompactibleSpace::insert_deadspace(size_t& allowed_deadspace_words, | 408 bool CompactibleSpace::insert_deadspace(size_t& allowed_deadspace_words, |
409 HeapWord* q, size_t deadlength) { | 409 HeapWord* q, size_t deadlength) { |
410 if (allowed_deadspace_words >= deadlength) { | 410 if (allowed_deadspace_words >= deadlength) { |
411 allowed_deadspace_words -= deadlength; | 411 allowed_deadspace_words -= deadlength; |
412 oop(q)->set_mark(markOopDesc::prototype()->set_marked()); | 412 CollectedHeap::fill_with_object(q, deadlength); |
413 const size_t min_int_array_size = typeArrayOopDesc::header_size(T_INT); | 413 oop(q)->set_mark(oop(q)->mark()->set_marked()); |
414 if (deadlength >= min_int_array_size) { | 414 assert((int) deadlength == oop(q)->size(), "bad filler object size"); |
415 oop(q)->set_klass(Universe::intArrayKlassObj()); | |
416 typeArrayOop(q)->set_length((int)((deadlength - min_int_array_size) | |
417 * (HeapWordSize/sizeof(jint)))); | |
418 } else { | |
419 assert((int) deadlength == instanceOopDesc::header_size(), | |
420 "size for smallest fake dead object doesn't match"); | |
421 oop(q)->set_klass(SystemDictionary::object_klass()); | |
422 } | |
423 assert((int) deadlength == oop(q)->size(), | |
424 "make sure size for fake dead object match"); | |
425 // Recall that we required "q == compaction_top". | 415 // Recall that we required "q == compaction_top". |
426 return true; | 416 return true; |
427 } else { | 417 } else { |
428 allowed_deadspace_words = 0; | 418 allowed_deadspace_words = 0; |
429 return false; | 419 return false; |