74 // Cache the offset of the static fields in the Class instance
75 assert(_offset_of_static_fields == 0, "once");
76 _offset_of_static_fields = InstanceMirrorKlass::cast(SystemDictionary::Class_klass())->size_helper() << LogHeapWordSize;
77 }
78
79 static int offset_of_static_fields() {
80 return _offset_of_static_fields;
81 }
82
83 int compute_static_oop_field_count(oop obj);
84
85 // Given a Klass return the size of the instance
86 int instance_size(KlassHandle k);
87
88 // allocation
89 instanceOop allocate_instance(KlassHandle k, TRAPS);
90
91 // GC specific object visitors
92 //
93 // Mark Sweep
94 void oop_ms_follow_contents(oop obj);
95 int oop_ms_adjust_pointers(oop obj);
96 #if INCLUDE_ALL_GCS
97 // Parallel Scavenge
98 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
99 // Parallel Compact
100 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
101 void oop_pc_update_pointers(oop obj);
102 #endif
103
104 // Oop fields (and metadata) iterators
105 // [nv = true] Use non-virtual calls to do_oop_nv.
106 // [nv = false] Use virtual calls to do_oop.
107 //
108 // The InstanceMirrorKlass iterators also visit the hidden Klass pointer.
109
110 public:
111 // Iterate over the static fields.
112 template <bool nv, class OopClosureType>
113 inline void oop_oop_iterate_statics(oop obj, OopClosureType* closure);
114
|
74 // Cache the offset of the static fields in the Class instance
75 assert(_offset_of_static_fields == 0, "once");
76 _offset_of_static_fields = InstanceMirrorKlass::cast(SystemDictionary::Class_klass())->size_helper() << LogHeapWordSize;
77 }
78
79 static int offset_of_static_fields() {
80 return _offset_of_static_fields;
81 }
82
83 int compute_static_oop_field_count(oop obj);
84
85 // Given a Klass return the size of the instance
86 int instance_size(KlassHandle k);
87
88 // allocation
89 instanceOop allocate_instance(KlassHandle k, TRAPS);
90
91 // GC specific object visitors
92 //
93 // Mark Sweep
94 int oop_ms_adjust_pointers(oop obj);
95 #if INCLUDE_ALL_GCS
96 // Parallel Scavenge
97 void oop_ps_push_contents( oop obj, PSPromotionManager* pm);
98 // Parallel Compact
99 void oop_pc_follow_contents(oop obj, ParCompactionManager* cm);
100 void oop_pc_update_pointers(oop obj);
101 #endif
102
103 // Oop fields (and metadata) iterators
104 // [nv = true] Use non-virtual calls to do_oop_nv.
105 // [nv = false] Use virtual calls to do_oop.
106 //
107 // The InstanceMirrorKlass iterators also visit the hidden Klass pointer.
108
109 public:
110 // Iterate over the static fields.
111 template <bool nv, class OopClosureType>
112 inline void oop_oop_iterate_statics(oop obj, OopClosureType* closure);
113
|