< prev index next >

src/share/vm/gc/parallel/psParallelCompact.cpp

Print this page




3116   if (UseCompressedOops) {
3117     oop_pc_update_pointers_specialized<narrowOop>(obj, cm);
3118   } else {
3119     oop_pc_update_pointers_specialized<oop>(obj, cm);
3120   }
3121 }
3122 
3123 void ObjArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3124   assert(obj->is_objArray(), "obj must be obj array");
3125   PSParallelCompact::AdjustPointerClosure closure(cm);
3126   oop_oop_iterate_elements<true>(objArrayOop(obj), &closure);
3127 }
3128 
3129 void TypeArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3130   assert(obj->is_typeArray(),"must be a type array");
3131 }
3132 
3133 void ValueArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3134   assert(obj->is_valueArray(),"must be a value array");
3135   if (contains_oops()) {
3136     Unimplemented();
3137 #if 0
3138     PSParallelCompact::AdjustPointerClosure closure(cm);
3139     oop_oop_iterate_elements<true>(valueArrayOop(obj), &closure);
3140 #endif
3141   }
3142 }
3143 
3144 ParMarkBitMapClosure::IterationStatus
3145 MoveAndUpdateClosure::do_addr(HeapWord* addr, size_t words) {
3146   assert(destination() != NULL, "sanity");
3147   assert(bitmap()->obj_size(addr) == words, "bad size");
3148 
3149   _source = addr;
3150   assert(PSParallelCompact::summary_data().calc_new_pointer(source(), compaction_manager()) ==
3151          destination(), "wrong destination");
3152 
3153   if (words > words_remaining()) {
3154     return ParMarkBitMap::would_overflow;
3155   }
3156 
3157   // The start_array must be updated even if the object is not moving.
3158   if (_start_array != NULL) {
3159     _start_array->allocate_block(destination());
3160   }




3116   if (UseCompressedOops) {
3117     oop_pc_update_pointers_specialized<narrowOop>(obj, cm);
3118   } else {
3119     oop_pc_update_pointers_specialized<oop>(obj, cm);
3120   }
3121 }
3122 
3123 void ObjArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3124   assert(obj->is_objArray(), "obj must be obj array");
3125   PSParallelCompact::AdjustPointerClosure closure(cm);
3126   oop_oop_iterate_elements<true>(objArrayOop(obj), &closure);
3127 }
3128 
3129 void TypeArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3130   assert(obj->is_typeArray(),"must be a type array");
3131 }
3132 
3133 void ValueArrayKlass::oop_pc_update_pointers(oop obj, ParCompactionManager* cm) {
3134   assert(obj->is_valueArray(),"must be a value array");
3135   if (contains_oops()) {


3136     PSParallelCompact::AdjustPointerClosure closure(cm);
3137     oop_oop_iterate_elements<true>(valueArrayOop(obj), &closure);

3138   }
3139 }
3140 
3141 ParMarkBitMapClosure::IterationStatus
3142 MoveAndUpdateClosure::do_addr(HeapWord* addr, size_t words) {
3143   assert(destination() != NULL, "sanity");
3144   assert(bitmap()->obj_size(addr) == words, "bad size");
3145 
3146   _source = addr;
3147   assert(PSParallelCompact::summary_data().calc_new_pointer(source(), compaction_manager()) ==
3148          destination(), "wrong destination");
3149 
3150   if (words > words_remaining()) {
3151     return ParMarkBitMap::would_overflow;
3152   }
3153 
3154   // The start_array must be updated even if the object is not moving.
3155   if (_start_array != NULL) {
3156     _start_array->allocate_block(destination());
3157   }


< prev index next >