changeset 168:ce4c68bbea97

Bug 2979: [JDK 9] Add G1GC hook for JDK 9
author Yasumasa Suenaga <yasuenag@gmail.com>
date Thu, 02 Jun 2016 22:23:44 +0900
parents 365f5563c84b
children 855a307943b1
files agent/src/heapstats-engines/overrideFunc.S agent/src/heapstats-engines/overrider.cpp agent/src/heapstats-engines/overrider.hpp
diffstat 3 files changed, 100 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/agent/src/heapstats-engines/overrideFunc.S	Thu Jun 02 22:23:35 2016 +0900
+++ b/agent/src/heapstats-engines/overrideFunc.S	Thu Jun 02 22:23:44 2016 +0900
@@ -267,6 +267,38 @@
 /* InstanceClassLoaderKlass::oop_oop_iterate_v(oopDesc*, ExtendedOopClosure*) */
 OVERRIDE_DEFINE(cms_new_jdk9, 4, 2)
 
+/* For JDK 9 G1 GC hook */
+
+/* initial-mark */
+/* G1ParCopyClosure<(G1Barrier)0, (G1Mark)1, false>::do_oop(oopDesc**) */
+OVERRIDE_DEFINE(g1_jdk9, 0, 2)
+/* G1ParCopyClosure<(G1Barrier)0, (G1Mark)1, false>::do_oop(unsigned int*) */
+OVERRIDE_DEFINE(g1_jdk9, 1, 2)
+
+/* concurrent-root-region-scan */
+/* InstanceKlass::oop_oop_iterate_nv(oopDesc*, G1RootRegionScanClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 2, 2)
+/* ObjArrayKlass::oop_oop_iterate_nv(oopDesc*, G1RootRegionScanClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 3, 2)
+/* TypeArrayKlass::oop_oop_iterate_nv(oopDesc*, G1RootRegionScanClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 4, 2)
+/* InstanceRefKlass::oop_oop_iterate_nv(oopDesc*, G1RootRegionScanClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 5, 2)
+/* InstanceClassLoaderKlass::oop_oop_iterate_nv(oopDesc*, G1RootRegionScanClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 6, 2)
+
+/* concurrent-mark / remark */
+/* InstanceKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 7, 2)
+/* ObjArrayKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 8, 2)
+/* TypeArrayKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 9, 2)
+/* InstanceRefKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 10, 2)
+/* InstanceClassLoaderKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
+OVERRIDE_DEFINE(g1_jdk9, 11, 2)
+
 
 #ifdef AVOID__i686
 /* Restore definition. */
--- a/agent/src/heapstats-engines/overrider.cpp	Thu Jun 02 22:23:35 2016 +0900
+++ b/agent/src/heapstats-engines/overrider.cpp	Thu Jun 02 22:23:44 2016 +0900
@@ -81,6 +81,7 @@
  */
 DEFINE_OVERRIDE_FUNC_9(g1);
 DEFINE_OVERRIDE_FUNC_11(g1_6964458);
+DEFINE_OVERRIDE_FUNC_12(g1_jdk9);
 
 /*!
  * \brief Override function for cleanup and System.gc() event on G1GC.
@@ -671,8 +672,59 @@
         &callbackForIterate),
     HOOK_FUNC_END};
 
-/* TODO: We have to define valid hook for JDK 9 */
-#define jdk9_g1_hook CR8049421_g1_hook
+/*!
+ * \brief Pointer of hook information on G1GC for after JDK 9.
+ */
+THookFunctionInfo jdk9_g1_hook[] = {
+    HOOK_FUNC(
+        g1_jdk9, 0, "_ZTV16G1ParCopyClosureIL9G1Barrier0EL6G1Mark1ELb0EE",
+        "_ZN16G1ParCopyClosureIL9G1Barrier0EL6G1Mark1ELb0EE6do_oopEPP7oopDesc",
+        &callbackForDoOop),
+    HOOK_FUNC(
+        g1_jdk9, 1, "_ZTV16G1ParCopyClosureIL9G1Barrier0EL6G1Mark1ELb0EE",
+        "_ZN16G1ParCopyClosureIL9G1Barrier0EL6G1Mark1ELb0EE6do_oopEPj",
+        &callbackForDoNarrowOop),
+    HOOK_FUNC(
+        g1_jdk9, 2, "_ZTV13InstanceKlass",
+        "_ZN13InstanceKlass18oop_oop_iterate_nvEP7oopDescP23G1RootRegionScanClosure",
+        &callbackForIterate),
+    HOOK_FUNC(
+        g1_jdk9, 3, "_ZTV13ObjArrayKlass",
+        "_ZN13ObjArrayKlass18oop_oop_iterate_nvEP7oopDescP23G1RootRegionScanClosure",
+        &callbackForIterate),
+    HOOK_FUNC(
+        g1_jdk9, 4, "_ZTV14TypeArrayKlass",
+        "_ZN14TypeArrayKlass18oop_oop_iterate_nvEP7oopDescP23G1RootRegionScanClosure",
+        &callbackForIterate),
+    HOOK_FUNC(
+        g1_jdk9, 5, "_ZTV16InstanceRefKlass",
+        "_ZN16InstanceRefKlass18oop_oop_iterate_nvEP7oopDescP23G1RootRegionScanClosure",
+        &callbackForIterate),
+    HOOK_FUNC(
+        g1_jdk9, 6, "_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP23G1RootRegionScanClosure",
+        &callbackForIterate),
+    HOOK_FUNC(
+        g1_jdk9, 7, "_ZTV13InstanceKlass",
+        "_ZN13InstanceKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+        &callbackForIterate),
+    HOOK_FUNC(
+        g1_jdk9, 8, "_ZTV13ObjArrayKlass",
+        "_ZN13ObjArrayKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+        &callbackForIterate),
+    HOOK_FUNC(
+        g1_jdk9, 9, "_ZTV14TypeArrayKlass",
+        "_ZN14TypeArrayKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+        &callbackForIterate),
+    HOOK_FUNC(
+        g1_jdk9, 10, "_ZTV16InstanceRefKlass",
+        "_ZN16InstanceRefKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+        &callbackForIterate),
+    HOOK_FUNC(
+        g1_jdk9, 11, "_ZTV24InstanceClassLoaderKlass",
+        "_ZN24InstanceClassLoaderKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+        &callbackForIterate),
+    HOOK_FUNC_END};
 
 /*!
  * \brief Pointer of hook information on G1GC.
--- a/agent/src/heapstats-engines/overrider.hpp	Thu Jun 02 22:23:35 2016 +0900
+++ b/agent/src/heapstats-engines/overrider.hpp	Thu Jun 02 22:23:44 2016 +0900
@@ -158,6 +158,20 @@
   DEFINE_OVERRIDE_FUNC_N(prefix, 9)     \
   DEFINE_OVERRIDE_FUNC_N(prefix, 10)
 
+#define DEFINE_OVERRIDE_FUNC_12(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, 4)     \
+  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, 9)     \
+  DEFINE_OVERRIDE_FUNC_N(prefix, 10)    \
+  DEFINE_OVERRIDE_FUNC_N(prefix, 11)
+
 /*!
  * \brief Macro to select override function with CR.
  */