diff src/share/vm/oops/methodData.cpp @ 9762:57e5211846f9

Added class unloading support to the method profiling infrastructure.
author Christian Haeubl <haeubl@ssw.jku.at>
date Fri, 17 May 2013 17:24:03 +0200
parents 89e4d67fdd2a
children 2461285a2f90
line wrap: on
line diff
--- a/src/share/vm/oops/methodData.cpp	Fri May 17 15:40:06 2013 +0200
+++ b/src/share/vm/oops/methodData.cpp	Fri May 17 17:24:03 2013 +0200
@@ -198,6 +198,18 @@
   print_shared(st, "VirtualCallData");
   print_receiver_data_on(st);
 }
+
+#ifdef GRAAL
+void VirtualCallData::clean_weak_klass_links(BoolObjectClosure* is_alive_cl) {
+  ReceiverTypeData::clean_weak_klass_links(is_alive_cl);
+  for (uint row = 0; row < method_row_limit(); row++) {
+    Method* p = method(row);
+    if (p != NULL && !p->method_holder()->is_loader_alive(is_alive_cl)) {
+      clear_method_row(row);
+    }
+  }
+}
+#endif // GRAAL
 #endif // !PRODUCT
 
 // ==================================================================