155 constMethodOop cm = constMethodOop(obj); 156 MarkSweep::adjust_pointer(cm->adr_method()); 157 MarkSweep::adjust_pointer(cm->adr_stackmap_data()); 158 MarkSweep::adjust_pointer(cm->adr_exception_table()); 159 // Get size before changing pointers. 160 // Don't call size() or oop_size() since that is a virtual call. 161 int size = cm->object_size(); 162 // Performance tweak: We skip iterating over the klass pointer since we 163 // know that Universe::constMethodKlassObj never moves. 164 return size; 165 } 166 167 #ifndef SERIALGC 168 void constMethodKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { 169 assert(obj->is_constMethod(), "should be constMethod"); 170 } 171 172 int constMethodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { 173 assert(obj->is_constMethod(), "should be constMethod"); 174 constMethodOop cm_oop = constMethodOop(obj); 175 #if 0 176 PSParallelCompact::adjust_pointer(cm_oop->adr_method()); 177 PSParallelCompact::adjust_pointer(cm_oop->adr_exception_table()); 178 PSParallelCompact::adjust_pointer(cm_oop->adr_stackmap_data()); 179 #endif 180 oop* const beg_oop = cm_oop->oop_block_beg(); 181 oop* const end_oop = cm_oop->oop_block_end(); 182 for (oop* cur_oop = beg_oop; cur_oop < end_oop; ++cur_oop) { 183 PSParallelCompact::adjust_pointer(cur_oop); 184 } 185 return cm_oop->object_size(); 186 } 187 #endif // SERIALGC 188 189 // Printing 190 191 void constMethodKlass::oop_print_on(oop obj, outputStream* st) { 192 ResourceMark rm; 193 assert(obj->is_constMethod(), "must be constMethod"); 194 Klass::oop_print_on(obj, st); 195 constMethodOop m = constMethodOop(obj); 196 st->print(" - method: " INTPTR_FORMAT " ", (address)m->method()); 197 m->method()->print_value_on(st); st->cr(); 198 st->print(" - exceptions: " INTPTR_FORMAT "\n", (address)m->exception_table()); 199 if (m->has_stackmap_table()) { | 155 constMethodOop cm = constMethodOop(obj); 156 MarkSweep::adjust_pointer(cm->adr_method()); 157 MarkSweep::adjust_pointer(cm->adr_stackmap_data()); 158 MarkSweep::adjust_pointer(cm->adr_exception_table()); 159 // Get size before changing pointers. 160 // Don't call size() or oop_size() since that is a virtual call. 161 int size = cm->object_size(); 162 // Performance tweak: We skip iterating over the klass pointer since we 163 // know that Universe::constMethodKlassObj never moves. 164 return size; 165 } 166 167 #ifndef SERIALGC 168 void constMethodKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { 169 assert(obj->is_constMethod(), "should be constMethod"); 170 } 171 172 int constMethodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { 173 assert(obj->is_constMethod(), "should be constMethod"); 174 constMethodOop cm_oop = constMethodOop(obj); 175 oop* const beg_oop = cm_oop->oop_block_beg(); 176 oop* const end_oop = cm_oop->oop_block_end(); 177 for (oop* cur_oop = beg_oop; cur_oop < end_oop; ++cur_oop) { 178 PSParallelCompact::adjust_pointer(cur_oop); 179 } 180 return cm_oop->object_size(); 181 } 182 #endif // SERIALGC 183 184 // Printing 185 186 void constMethodKlass::oop_print_on(oop obj, outputStream* st) { 187 ResourceMark rm; 188 assert(obj->is_constMethod(), "must be constMethod"); 189 Klass::oop_print_on(obj, st); 190 constMethodOop m = constMethodOop(obj); 191 st->print(" - method: " INTPTR_FORMAT " ", (address)m->method()); 192 m->method()->print_value_on(st); st->cr(); 193 st->print(" - exceptions: " INTPTR_FORMAT "\n", (address)m->exception_table()); 194 if (m->has_stackmap_table()) { |