570 // Don't call size() or oop_size() since that is a virtual call.
571 int size = a->object_size();
572 ObjArrayKlass_OOP_ITERATE(a, p, MarkSweep::adjust_pointer(p))
573 return size;
574 }
575
576 #if INCLUDE_ALL_GCS
577 void ObjArrayKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
578 assert(obj->is_objArray(), "obj must be obj array");
579 ObjArrayKlass_OOP_ITERATE( \
580 objArrayOop(obj), p, \
581 if (PSScavenge::should_scavenge(p)) { \
582 pm->claim_or_forward_depth(p); \
583 })
584 }
585
586 int ObjArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
587 assert (obj->is_objArray(), "obj must be obj array");
588 objArrayOop a = objArrayOop(obj);
589 int size = a->object_size();
590 a->update_header(cm);
591 ObjArrayKlass_OOP_ITERATE(a, p, PSParallelCompact::adjust_pointer(p))
592 return size;
593 }
594 #endif // INCLUDE_ALL_GCS
595
596 // JVM support
597
598 jint ObjArrayKlass::compute_modifier_flags(TRAPS) const {
599 // The modifier for an objectArray is the same as its element
600 if (element_klass() == NULL) {
601 assert(Universe::is_bootstrapping(), "partial objArray only at startup");
602 return JVM_ACC_ABSTRACT | JVM_ACC_FINAL | JVM_ACC_PUBLIC;
603 }
604 // Return the flags of the bottom element type.
605 jint element_flags = bottom_klass()->compute_modifier_flags(CHECK_0);
606
607 return (element_flags & (JVM_ACC_PUBLIC | JVM_ACC_PRIVATE | JVM_ACC_PROTECTED))
608 | (JVM_ACC_ABSTRACT | JVM_ACC_FINAL);
609 }
610
|
570 // Don't call size() or oop_size() since that is a virtual call.
571 int size = a->object_size();
572 ObjArrayKlass_OOP_ITERATE(a, p, MarkSweep::adjust_pointer(p))
573 return size;
574 }
575
576 #if INCLUDE_ALL_GCS
577 void ObjArrayKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
578 assert(obj->is_objArray(), "obj must be obj array");
579 ObjArrayKlass_OOP_ITERATE( \
580 objArrayOop(obj), p, \
581 if (PSScavenge::should_scavenge(p)) { \
582 pm->claim_or_forward_depth(p); \
583 })
584 }
585
586 int ObjArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
587 assert (obj->is_objArray(), "obj must be obj array");
588 objArrayOop a = objArrayOop(obj);
589 int size = a->object_size();
590 ObjArrayKlass_OOP_ITERATE(a, p, PSParallelCompact::adjust_pointer(p))
591 return size;
592 }
593 #endif // INCLUDE_ALL_GCS
594
595 // JVM support
596
597 jint ObjArrayKlass::compute_modifier_flags(TRAPS) const {
598 // The modifier for an objectArray is the same as its element
599 if (element_klass() == NULL) {
600 assert(Universe::is_bootstrapping(), "partial objArray only at startup");
601 return JVM_ACC_ABSTRACT | JVM_ACC_FINAL | JVM_ACC_PUBLIC;
602 }
603 // Return the flags of the bottom element type.
604 jint element_flags = bottom_klass()->compute_modifier_flags(CHECK_0);
605
606 return (element_flags & (JVM_ACC_PUBLIC | JVM_ACC_PRIVATE | JVM_ACC_PROTECTED))
607 | (JVM_ACC_ABSTRACT | JVM_ACC_FINAL);
608 }
609
|