258 259 #ifndef SERIALGC 260 void instanceMirrorKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { 261 instanceKlass::oop_push_contents(pm, obj); 262 InstanceMirrorKlass_OOP_ITERATE( \ 263 start_of_static_fields(obj), java_lang_Class::static_oop_field_size(obj), \ 264 if (PSScavenge::should_scavenge(p)) { \ 265 pm->claim_or_forward_depth(p); \ 266 }, \ 267 assert_nothing ) 268 } 269 270 int instanceMirrorKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { 271 instanceKlass::oop_update_pointers(cm, obj); 272 InstanceMirrorKlass_OOP_ITERATE( \ 273 start_of_static_fields(obj), java_lang_Class::static_oop_field_size(obj), \ 274 PSParallelCompact::adjust_pointer(p), \ 275 assert_nothing) 276 return oop_size(obj); 277 } 278 279 280 int instanceMirrorKlass::oop_update_pointers(ParCompactionManager* cm, oop obj, 281 HeapWord* beg_addr, HeapWord* end_addr) { 282 instanceKlass::oop_update_pointers(cm, obj, beg_addr, end_addr); 283 InstanceMirrorKlass_BOUNDED_OOP_ITERATE( \ 284 start_of_static_fields(obj), java_lang_Class::static_oop_field_size(obj), \ 285 beg_addr, end_addr, \ 286 PSParallelCompact::adjust_pointer(p), \ 287 assert_nothing ) 288 return oop_size(obj); 289 } 290 #endif // SERIALGC 291 292 int instanceMirrorKlass::instance_size(KlassHandle k) { 293 if (k() != NULL && k->oop_is_instance()) { 294 return align_object_size(size_helper() + instanceKlass::cast(k())->static_field_size()); 295 } 296 return size_helper(); 297 } 298 299 instanceOop instanceMirrorKlass::allocate_permanent_instance(KlassHandle k, TRAPS) { 300 // Query before forming handle. 301 int size = instance_size(k); 302 KlassHandle h_k(THREAD, as_klassOop()); 303 instanceOop i = (instanceOop) CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL); 304 return i; 305 } 306 307 int instanceMirrorKlass::oop_size(oop obj) const { 308 return java_lang_Class::oop_size(obj); 309 } 310 311 int instanceMirrorKlass::compute_static_oop_field_size(oop obj) { 312 klassOop k = java_lang_Class::as_klassOop(obj); 313 if (k != NULL && k->klass_part()->oop_is_instance()) { 314 return instanceKlass::cast(k)->static_oop_field_size(); 315 } 316 return 0; 317 } | 258 259 #ifndef SERIALGC 260 void instanceMirrorKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { 261 instanceKlass::oop_push_contents(pm, obj); 262 InstanceMirrorKlass_OOP_ITERATE( \ 263 start_of_static_fields(obj), java_lang_Class::static_oop_field_size(obj), \ 264 if (PSScavenge::should_scavenge(p)) { \ 265 pm->claim_or_forward_depth(p); \ 266 }, \ 267 assert_nothing ) 268 } 269 270 int instanceMirrorKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { 271 instanceKlass::oop_update_pointers(cm, obj); 272 InstanceMirrorKlass_OOP_ITERATE( \ 273 start_of_static_fields(obj), java_lang_Class::static_oop_field_size(obj), \ 274 PSParallelCompact::adjust_pointer(p), \ 275 assert_nothing) 276 return oop_size(obj); 277 } 278 #endif // SERIALGC 279 280 int instanceMirrorKlass::instance_size(KlassHandle k) { 281 if (k() != NULL && k->oop_is_instance()) { 282 return align_object_size(size_helper() + instanceKlass::cast(k())->static_field_size()); 283 } 284 return size_helper(); 285 } 286 287 instanceOop instanceMirrorKlass::allocate_instance(KlassHandle k, TRAPS) { 288 // Query before forming handle. 289 int size = instance_size(k); 290 KlassHandle h_k(THREAD, as_klassOop()); 291 instanceOop i; 292 293 if (JavaObjectsInPerm) { 294 i = (instanceOop) CollectedHeap::permanent_obj_allocate(h_k, size, CHECK_NULL); 295 } else { 296 assert(ScavengeRootsInCode > 0, "must be"); 297 i = (instanceOop) CollectedHeap::obj_allocate(h_k, size, CHECK_NULL); 298 } 299 300 return i; 301 } 302 303 int instanceMirrorKlass::oop_size(oop obj) const { 304 return java_lang_Class::oop_size(obj); 305 } 306 307 int instanceMirrorKlass::compute_static_oop_field_size(oop obj) { 308 klassOop k = java_lang_Class::as_klassOop(obj); 309 if (k != NULL && k->klass_part()->oop_is_instance()) { 310 return instanceKlass::cast(k)->static_oop_field_size(); 311 } 312 return 0; 313 } |