93 data->follow_contents(cm); |
93 data->follow_contents(cm); |
94 } |
94 } |
95 } |
95 } |
96 #endif // SERIALGC |
96 #endif // SERIALGC |
97 |
97 |
|
98 |
98 int methodDataKlass::oop_oop_iterate(oop obj, OopClosure* blk) { |
99 int methodDataKlass::oop_oop_iterate(oop obj, OopClosure* blk) { |
99 assert (obj->is_methodData(), "object must be method data"); |
100 assert (obj->is_methodData(), "object must be method data"); |
100 methodDataOop m = methodDataOop(obj); |
101 methodDataOop m = methodDataOop(obj); |
101 // Get size before changing pointers |
102 // Get size before changing pointers |
102 // Don't call size() or oop_size() since that is a virtual call. |
103 // Don't call size() or oop_size() since that is a virtual call. |
110 data = m->next_data(data)) { |
111 data = m->next_data(data)) { |
111 data->oop_iterate(blk); |
112 data->oop_iterate(blk); |
112 } |
113 } |
113 return size; |
114 return size; |
114 } |
115 } |
115 |
|
116 |
116 |
117 int methodDataKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) { |
117 int methodDataKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) { |
118 assert (obj->is_methodData(), "object must be method data"); |
118 assert (obj->is_methodData(), "object must be method data"); |
119 methodDataOop m = methodDataOop(obj); |
119 methodDataOop m = methodDataOop(obj); |
120 // Get size before changing pointers |
120 // Get size before changing pointers |
156 #ifndef SERIALGC |
156 #ifndef SERIALGC |
157 void methodDataKlass::oop_copy_contents(PSPromotionManager* pm, oop obj) { |
157 void methodDataKlass::oop_copy_contents(PSPromotionManager* pm, oop obj) { |
158 assert (obj->is_methodData(), "object must be method data"); |
158 assert (obj->is_methodData(), "object must be method data"); |
159 methodDataOop m = methodDataOop(obj); |
159 methodDataOop m = methodDataOop(obj); |
160 // This should never point into the young gen. |
160 // This should never point into the young gen. |
161 assert(!PSScavenge::should_scavenge(oop(*m->adr_method())), "Sanity"); |
161 assert(!PSScavenge::should_scavenge(m->adr_method()), "Sanity"); |
162 } |
162 } |
163 |
163 |
164 void methodDataKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { |
164 void methodDataKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { |
165 assert (obj->is_methodData(), "object must be method data"); |
165 assert (obj->is_methodData(), "object must be method data"); |
166 methodDataOop m = methodDataOop(obj); |
166 methodDataOop m = methodDataOop(obj); |
167 // This should never point into the young gen. |
167 // This should never point into the young gen. |
168 assert(!PSScavenge::should_scavenge(oop(*m->adr_method())), "Sanity"); |
168 assert(!PSScavenge::should_scavenge(m->adr_method()), "Sanity"); |
169 } |
169 } |
170 |
170 |
171 int methodDataKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { |
171 int methodDataKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { |
172 assert(obj->is_methodData(), "should be method data"); |
172 assert(obj->is_methodData(), "should be method data"); |
173 methodDataOop m = methodDataOop(obj); |
173 methodDataOop m = methodDataOop(obj); |