int methodDataKlass::oop_oop_iterate_m(oop obj, OopClosure* blk, MemRegion mr) { assert (obj->is_methodData(), "object must be method data"); methodDataOop m = methodDataOop(obj); // Get size before changing pointers // Don't call size() or oop_size() since that is a virtual call. int size = m->object_size(); obj->oop_iterate_header(blk, mr); oop* adr = m->adr_method(); if (mr.contains(adr)) { blk->do_oop(m->adr_method()); } ResourceMark rm; for (ProfileData* data = m->first_data(); m->is_valid(data); data = m->next_data(data)) { data->oop_iterate_m(blk, mr); } return size; }