changeset 164:765bf9000f5b

Bug 2970: [JDK 9] Add ParallelOldGC hook for JDK 9
author Yasumasa Suenaga <yasuenag@gmail.com>
date Thu, 02 Jun 2016 22:23:04 +0900
parents 975c815a82d7
children a51e5042a3d1
files agent/src/heapstats-engines/overrideFunc.S agent/src/heapstats-engines/overrider.cpp
diffstat 2 files changed, 36 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/agent/src/heapstats-engines/overrideFunc.S	Mon Apr 18 21:29:23 2016 +0900
+++ b/agent/src/heapstats-engines/overrideFunc.S	Thu Jun 02 22:23:04 2016 +0900
@@ -241,6 +241,19 @@
 /* InstanceClassLoaderKlass::oop_ms_adjust_pointers(oopDesc*) */
 OVERRIDE_DEFINE(par_jdk9, 4, 2)
 
+/* For JDK 9 ParallelOld GC hook */
+
+/* InstanceKlass::oop_pc_follow_contents(oopDesc*, ParCompactionManager*) */
+OVERRIDE_DEFINE(parOld_jdk9, 0, 2)
+/* ObjArrayKlass::oop_pc_follow_contents(oopDesc*, ParCompactionManager*) */
+OVERRIDE_DEFINE(parOld_jdk9, 1, 2)
+/* TypeArrayKlass::oop_pc_follow_contents(oopDesc*, ParCompactionManager*) */
+OVERRIDE_DEFINE(parOld_jdk9, 2, 2)
+/* InstanceRefKlass::oop_pc_follow_contents(oopDesc*, ParCompactionManager*) */
+OVERRIDE_DEFINE(parOld_jdk9, 3, 2)
+/* InstanceClassLoaderKlass::oop_pc_follow_contents(oopDesc*, ParCompactionManager*) */
+OVERRIDE_DEFINE(parOld_jdk9, 4, 2)
+
 
 #ifdef AVOID__i686
 /* Restore definition. */
--- a/agent/src/heapstats-engines/overrider.cpp	Mon Apr 18 21:29:23 2016 +0900
+++ b/agent/src/heapstats-engines/overrider.cpp	Thu Jun 02 22:23:04 2016 +0900
@@ -61,8 +61,9 @@
  * \brief Override function for heap object on parallelOldGC.
  */
 DEFINE_OVERRIDE_FUNC_4(parOld);
+DEFINE_OVERRIDE_FUNC_5(parOld_6964458);
+DEFINE_OVERRIDE_FUNC_5(parOld_jdk9);
 
-DEFINE_OVERRIDE_FUNC_5(parOld_6964458);
 /*!
  * \brief Override function for sweep at old gen on CMSGC.
  */
@@ -280,13 +281,32 @@
     HOOK_FUNC_END};
 
 /*!
+ * \brief Pointer of hook information on parallelOldGC for after jdk 9.
+ */
+THookFunctionInfo jdk9_parOld_hook[] = {
+    HOOK_FUNC(parOld_jdk9, 0, "_ZTV13InstanceKlass",
+              "_ZN13InstanceKlass22oop_pc_follow_contentsEP7oopDescP20ParCompactionManager",
+              &callbackForParOld),
+    HOOK_FUNC(parOld_jdk9, 1, "_ZTV13ObjArrayKlass",
+              "_ZN13ObjArrayKlass22oop_pc_follow_contentsEP7oopDescP20ParCompactionManager",
+              &callbackForParOld),
+    HOOK_FUNC(parOld_jdk9, 2, "_ZTV14TypeArrayKlass",
+              "_ZN14TypeArrayKlass22oop_pc_follow_contentsEP7oopDescP20ParCompactionManager",
+              &callbackForParOld),
+    HOOK_FUNC(parOld_jdk9, 3, "_ZTV16InstanceRefKlass",
+              "_ZN16InstanceRefKlass22oop_pc_follow_contentsEP7oopDescP20ParCompactionManager",
+              &callbackForParOld),
+    HOOK_FUNC(parOld_jdk9, 4, "_ZTV24InstanceClassLoaderKlass",
+              "_ZN24InstanceClassLoaderKlass22oop_pc_follow_contentsEP7oopDescP20ParCompactionManager",
+              &callbackForParOld),
+    HOOK_FUNC_END};
+
+/*!
  * \brief Pointers of hook information on parallelOldGC for several CRs.<br>
  *        These CRs have no impact on parallelOldGC, so refer to the last.
  */
 #define CR8027746_parOld_hook CR8000213_parOld_hook
 #define CR8049421_parOld_hook CR8000213_parOld_hook
-/* TODO: We have to define valid hook for JDK 9 */
-#define jdk9_parOld_hook CR8049421_parOld_hook
 
 /*!
  * \brief Pointer of hook information on parallelOldGC.