hotspot/src/share/vm/memory/space.cpp
changeset 1668 8ec481b8f514
parent 1557 13878a2edfef
child 1893 c82e388e17c5
equal deleted inserted replaced
1667:fc79935c3055 1668:8ec481b8f514
   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;