changeset 48:5e137ea0f4ee

Bug 2529: HeapStats agent should hook InstanceClassLoaderKlass after JDK-6964458 reviewed-by: ykubota
author Yasumasa Suenaga <yasuenag@gmail.com>
date Thu, 16 Jul 2015 23:17:37 +0900
parents 52506cc0986b
children 46eb873607e8
files agent/ChangeLog agent/src/oopUtil.cpp agent/src/overrideFunc.S
diffstat 3 files changed, 74 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/agent/ChangeLog	Wed Jul 15 17:15:11 2015 +0900
+++ b/agent/ChangeLog	Thu Jul 16 23:17:37 2015 +0900
@@ -1,3 +1,7 @@
+2015-07-16 Yasumasa Suenaga  <yasuenag@gmail.com>
+
+	* Bug 2529: HeapStats agent should hook InstanceClassLoaderKlass after JDK-6964458
+
 2015-07-15  KUBOTA Yuji <kubota.yuji@lab.ntt.co.jp>
 
 	* Bug 2525: Prevent configure error on running rpmbuild without binutils-devel
--- a/agent/src/oopUtil.cpp	Wed Jul 15 17:15:11 2015 +0900
+++ b/agent/src/oopUtil.cpp	Thu Jul 16 23:17:37 2015 +0900
@@ -70,13 +70,14 @@
     DEFINE_OVERRIDE_FUNC_N(prefix, 2)
 
 /*!
- * \brief Override function define macro for four function.
+ * \brief Override function define macro for five function.
  */
-#define DEFINE_OVERRIDE_FUNC_4(prefix) \
+#define DEFINE_OVERRIDE_FUNC_5(prefix) \
     DEFINE_OVERRIDE_FUNC_N(prefix, 0) \
     DEFINE_OVERRIDE_FUNC_N(prefix, 1) \
     DEFINE_OVERRIDE_FUNC_N(prefix, 2) \
-    DEFINE_OVERRIDE_FUNC_N(prefix, 3)
+    DEFINE_OVERRIDE_FUNC_N(prefix, 3) \
+    DEFINE_OVERRIDE_FUNC_N(prefix, 4)
 
 /*!
  * \brief Override function define macro for eight function.
@@ -92,9 +93,9 @@
     DEFINE_OVERRIDE_FUNC_N(prefix, 7)
 
 /*!
- * \brief Override function define macro for nine function.
+ * \brief Override function define macro for eleven function.
  */
-#define DEFINE_OVERRIDE_FUNC_9(prefix) \
+#define DEFINE_OVERRIDE_FUNC_11(prefix) \
     DEFINE_OVERRIDE_FUNC_N(prefix, 0) \
     DEFINE_OVERRIDE_FUNC_N(prefix, 1) \
     DEFINE_OVERRIDE_FUNC_N(prefix, 2) \
@@ -103,7 +104,9 @@
     DEFINE_OVERRIDE_FUNC_N(prefix, 5) \
     DEFINE_OVERRIDE_FUNC_N(prefix, 6) \
     DEFINE_OVERRIDE_FUNC_N(prefix, 7) \
-    DEFINE_OVERRIDE_FUNC_N(prefix, 8)
+    DEFINE_OVERRIDE_FUNC_N(prefix, 8) \
+    DEFINE_OVERRIDE_FUNC_N(prefix, 9) \
+    DEFINE_OVERRIDE_FUNC_N(prefix, 10)
 
 /*!
  * \brief Select override function information macro.
@@ -126,12 +129,12 @@
 /*!
  * \brief Override function for heap object on parallelGC.
  */
-DEFINE_OVERRIDE_FUNC_4(par);
+DEFINE_OVERRIDE_FUNC_5(par);
 
 /*!
  * \brief Override function for heap object on parallelOldGC.
  */
-DEFINE_OVERRIDE_FUNC_4(parOld);
+DEFINE_OVERRIDE_FUNC_5(parOld);
 
 /*!
  * \brief Override function for sweep at old gen on CMSGC.
@@ -141,12 +144,12 @@
 /*!
  * \brief Override function for heap object at new gen on CMSGC.
  */
-DEFINE_OVERRIDE_FUNC_4(cms_new);
+DEFINE_OVERRIDE_FUNC_5(cms_new);
 
 /*!
  * \brief Override function for heap object on G1GC.
  */
-DEFINE_OVERRIDE_FUNC_9(g1);
+DEFINE_OVERRIDE_FUNC_11(g1);
 /*!
  * \brief Override function for cleanup and System.gc() event on G1GC.
  */
@@ -523,6 +526,9 @@
     HOOK_FUNC("_ZTV16InstanceRefKlass",
         "_ZN16InstanceRefKlass19oop_follow_contentsEP7oopDesc",
         &par_override_func_3, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass19oop_follow_contentsEP7oopDesc",
+        &par_override_func_4, NULL),
     HOOK_FUNC_END
 };
 
@@ -542,6 +548,9 @@
     HOOK_FUNC("_ZTV16InstanceRefKlass",
         "_ZN16InstanceRefKlass19oop_follow_contentsEP7oopDesc",
         &par_override_func_3, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass19oop_follow_contentsEP7oopDesc",
+        &par_override_func_4, NULL),
     HOOK_FUNC_END
 };
 
@@ -600,6 +609,10 @@
         "_ZN16InstanceRefKlass19oop_follow_contents"
         "EP20ParCompactionManagerP7oopDesc",
         &parOld_override_func_3, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass19oop_follow_contents"
+        "EP20ParCompactionManagerP7oopDesc",
+        &parOld_override_func_4, NULL),
     HOOK_FUNC_END
 };
 
@@ -623,6 +636,10 @@
         "_ZN16InstanceRefKlass19oop_follow_contents"
         "EP20ParCompactionManagerP7oopDesc",
         &parOld_override_func_3, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass19oop_follow_contents"
+        "EP20ParCompactionManagerP7oopDesc",
+        &parOld_override_func_4, NULL),
     HOOK_FUNC_END
 };
 
@@ -696,6 +713,10 @@
         "_ZN16InstanceRefKlass18oop_oop_iterate_nv"
         "EP7oopDescP30Par_MarkRefsIntoAndScanClosure",
         &cms_new_override_func_3, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nv"
+        "EP7oopDescP30Par_MarkRefsIntoAndScanClosure",
+        &cms_new_override_func_4, NULL),
     HOOK_FUNC_END
 };
 
@@ -719,6 +740,10 @@
         "_ZN16InstanceRefKlass18oop_oop_iterate_nv"
         "EP7oopDescP30Par_MarkRefsIntoAndScanClosure",
         &cms_new_override_func_3, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nv"
+        "EP7oopDescP30Par_MarkRefsIntoAndScanClosure",
+        &cms_new_override_func_4, NULL),
     HOOK_FUNC_END
 };
 
@@ -799,6 +824,12 @@
     HOOK_FUNC("_ZTV16InstanceRefKlass",
         "_ZN16InstanceRefKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
         &g1_override_func_8, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP30Par_MarkRefsIntoAndScanClosure",
+        &g1_override_func_9, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+        &g1_override_func_10, NULL),
     HOOK_FUNC_END
 };
 
@@ -833,6 +864,12 @@
     HOOK_FUNC("_ZTV16InstanceRefKlass",
         "_ZN16InstanceRefKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
         &g1_override_func_8, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP30Par_MarkRefsIntoAndScanClosure",
+        &g1_override_func_9, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+        &g1_override_func_10, NULL),
     HOOK_FUNC_END
 };
 
@@ -867,6 +904,12 @@
     HOOK_FUNC("_ZTV16InstanceRefKlass",
         "_ZN16InstanceRefKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
         &g1_override_func_8, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP30Par_MarkRefsIntoAndScanClosure",
+        &g1_override_func_9, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+        &g1_override_func_10, NULL),
     HOOK_FUNC_END
 };
 
@@ -901,6 +944,12 @@
     HOOK_FUNC("_ZTV16InstanceRefKlass",
         "_ZN16InstanceRefKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
         &g1_override_func_8, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP30Par_MarkRefsIntoAndScanClosure",
+        &g1_override_func_9, NULL),
+    HOOK_FUNC("_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+        &g1_override_func_10, NULL),
     HOOK_FUNC_END
 };
 
--- a/agent/src/overrideFunc.S	Wed Jul 15 17:15:11 2015 +0900
+++ b/agent/src/overrideFunc.S	Thu Jul 16 23:17:37 2015 +0900
@@ -3,7 +3,7 @@
  * \brief This file is used to override JVM inner function.<br>
  *        The function defined this file, used with v-table hook.<br>
  *        So in this file, all function is written by only assembler and macro.
- * Copyright (C) 2011-2013 Nippon Telegraph and Telephone Corporation
+ * Copyright (C) 2011-2015 Nippon Telegraph and Telephone Corporation
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -506,6 +506,8 @@
 OVERRIDE_OOP_FOLLOW_CONTENTS(par, 2)
 /* instanceRefKlass::oop_follow_contents(oopDesc*) */
 OVERRIDE_OOP_FOLLOW_CONTENTS(par, 3)
+/* InstanceClassLoaderKlass::oop_follow_contents(oopDesc*) */
+OVERRIDE_OOP_FOLLOW_CONTENTS(par, 4)
 
 /* For ParallelOld. */
 
@@ -517,6 +519,8 @@
 OVERRIDE_PAR_OOP_FOLLOW_CONTENTS(parOld, 2)
 /* instanceRefKlass::oop_follow_contents(ParCompactionManager*, oopDesc*) */
 OVERRIDE_PAR_OOP_FOLLOW_CONTENTS(parOld, 3)
+/* InstanceClassLoaderKlass::oop_follow_contents(ParCompactionManager*, oopDesc*) */
+OVERRIDE_PAR_OOP_FOLLOW_CONTENTS(parOld, 4)
 
 /* For CMS. */
 /*
@@ -534,6 +538,8 @@
 OVERRIDE_OOP_OOP_ITERATE(cms_new, 2)
 /* instanceRefKlass::oop_oop_iterate_nv(oopDesc*, Par_MarkRefsIntoAndScanClosure*) */
 OVERRIDE_OOP_OOP_ITERATE(cms_new, 3)
+/* InstanceClassLoaderKlass::oop_oop_iterate_nv(oopDesc*, Par_MarkRefsIntoAndScanClosure*) */
+OVERRIDE_OOP_OOP_ITERATE(cms_new, 4)
 
 /* For G1. */
 
@@ -562,6 +568,10 @@
 OVERRIDE_OOP_OOP_ITERATE_WITH_CALLER_CHECK(g1, 7, VTableForTypeArrayOopClosure)
 /* instanceRefKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
 OVERRIDE_OOP_OOP_ITERATE(g1, 8)
+/* InstanceClassLoaderKlass::oop_oop_iterate_nv(oopDesc*, G1RootRegionScanClosure*) */
+OVERRIDE_OOP_OOP_ITERATE(g1, 9)
+/* InstanceClassLoaderKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
+OVERRIDE_OOP_OOP_ITERATE(g1, 10)
 
 /* CMCleanUp::do_void() */
 OVERRIDE_CALLBACK_DEFINE(g1Event, 0, callbackForG1Cleanup, 1);