diff 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
line wrap: on
line diff
--- a/src/share/vm/oops/methodData.hpp	Thu Mar 27 18:35:55 2014 +0100
+++ b/src/share/vm/oops/methodData.hpp	Thu Mar 27 13:11:17 2014 -0700
@@ -257,6 +257,9 @@
 
   // GC support
   void clean_weak_klass_links(BoolObjectClosure* cl);
+
+  // Redefinition support
+  void clean_weak_method_links();
 };
 
 
@@ -514,6 +517,9 @@
   // GC support
   virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure) {}
 
+  // Redefinition support
+  virtual void clean_weak_method_links() {}
+
   // CI translation: ProfileData can represent both MethodDataOop data
   // as well as CIMethodData data. This function is provided for translating
   // an oop in a ProfileData to the ci equivalent. Generally speaking,
@@ -1429,6 +1435,9 @@
 
   // GC support
   virtual void clean_weak_klass_links(BoolObjectClosure* is_alive_closure);
+
+  // Redefinition support
+  virtual void clean_weak_method_links();
 #endif
 
 #ifndef PRODUCT
@@ -2294,6 +2303,10 @@
   void clean_extra_data_helper(DataLayout* dp, int shift, bool reset = false);
   void verify_extra_data_clean(BoolObjectClosure* is_alive);
 
+  // Redefinition support
+  void clean_weak_method_extra_data();
+  void verify_weak_method_extra_data_clean();
+
 public:
   static int header_size() {
     return sizeof(MethodData)/wordSize;
@@ -2572,6 +2585,8 @@
   static bool profile_return_jsr292_only();
 
   void clean_method_data(BoolObjectClosure* is_alive);
+
+  void clean_weak_method_links();
 };
 
 #endif // SHARE_VM_OOPS_METHODDATAOOP_HPP