comparison src/share/vm/oops/methodData.hpp @ 14860:8762b6b8fbb6

fix scanning of method data for redefined methods
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Thu, 27 Mar 2014 13:11:17 -0700
parents 12eaf1a47a90
children 4ca6dc0799b6
comparison
equal deleted inserted replaced
14859:4f5c312d676e 14860:8762b6b8fbb6
255 255
256 ProfileData* data_in(); 256 ProfileData* data_in();
257 257
258 // GC support 258 // GC support
259 void clean_weak_klass_links(BoolObjectClosure* cl); 259 void clean_weak_klass_links(BoolObjectClosure* cl);
260
261 // Redefinition support
262 void clean_weak_method_links();
260 }; 263 };
261 264
262 265
263 // ProfileData class hierarchy 266 // ProfileData class hierarchy
264 class ProfileData; 267 class ProfileData;
511 // Subclass specific initialization 514 // Subclass specific initialization
512 virtual void post_initialize(BytecodeStream* stream, MethodData* mdo) {} 515 virtual void post_initialize(BytecodeStream* stream, MethodData* mdo) {}
513 516
514 // GC support 517 // GC support
515 virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure) {} 518 virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure) {}
519
520 // Redefinition support
521 virtual void clean_weak_method_links() {}
516 522
517 // CI translation: ProfileData can represent both MethodDataOop data 523 // CI translation: ProfileData can represent both MethodDataOop data
518 // as well as CIMethodData data. This function is provided for translating 524 // as well as CIMethodData data. This function is provided for translating
519 // an oop in a ProfileData to the ci equivalent. Generally speaking, 525 // an oop in a ProfileData to the ci equivalent. Generally speaking,
520 // most ProfileData don't require any translation, so we provide the null 526 // most ProfileData don't require any translation, so we provide the null
1427 set_method_count(row, 0); 1433 set_method_count(row, 0);
1428 } 1434 }
1429 1435
1430 // GC support 1436 // GC support
1431 virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure); 1437 virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure);
1438
1439 // Redefinition support
1440 virtual void clean_weak_method_links();
1432 #endif 1441 #endif
1433 1442
1434 #ifndef PRODUCT 1443 #ifndef PRODUCT
1435 #ifdef GRAAL 1444 #ifdef GRAAL
1436 void print_method_data_on(outputStream* st) const; 1445 void print_method_data_on(outputStream* st) const;
2292 2301
2293 void clean_extra_data(BoolObjectClosure* is_alive); 2302 void clean_extra_data(BoolObjectClosure* is_alive);
2294 void clean_extra_data_helper(DataLayout* dp, int shift, bool reset = false); 2303 void clean_extra_data_helper(DataLayout* dp, int shift, bool reset = false);
2295 void verify_extra_data_clean(BoolObjectClosure* is_alive); 2304 void verify_extra_data_clean(BoolObjectClosure* is_alive);
2296 2305
2306 // Redefinition support
2307 void clean_weak_method_extra_data();
2308 void verify_weak_method_extra_data_clean();
2309
2297 public: 2310 public:
2298 static int header_size() { 2311 static int header_size() {
2299 return sizeof(MethodData)/wordSize; 2312 return sizeof(MethodData)/wordSize;
2300 } 2313 }
2301 2314
2570 static bool profile_return(); 2583 static bool profile_return();
2571 static bool profile_parameters(); 2584 static bool profile_parameters();
2572 static bool profile_return_jsr292_only(); 2585 static bool profile_return_jsr292_only();
2573 2586
2574 void clean_method_data(BoolObjectClosure* is_alive); 2587 void clean_method_data(BoolObjectClosure* is_alive);
2588
2589 void clean_weak_method_links();
2575 }; 2590 };
2576 2591
2577 #endif // SHARE_VM_OOPS_METHODDATAOOP_HPP 2592 #endif // SHARE_VM_OOPS_METHODDATAOOP_HPP