changeset 40:b1930d079140

Bug 1683: HeapStats agent should be adapted to JDK-8027746 reviewed-by: ykubota
author Yasumasa Suenaga <yasuenag@gmail.com>
date Wed, 18 Jun 2014 23:59:21 +0900
parents c1b7b75d1930
children db8eea95ac52
files agent/ChangeLog agent/src/jvmInfo.hpp agent/src/oopUtil.cpp agent/src/oopUtil.hpp agent/src/overrideFunc.S
diffstat 5 files changed, 107 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/agent/ChangeLog	Tue Jun 17 23:20:20 2014 +0900
+++ b/agent/ChangeLog	Wed Jun 18 23:59:21 2014 +0900
@@ -1,3 +1,7 @@
+2014-06-18  Yasumasa Suenaga  <yasuenag@gmail.com>
+
+	* Bug 1683: HeapStats agent should be adapted to JDK-8027746
+
 2014-06-17  Yasumasa Suenaga  <yasuenag@gmail.com>
 
 	* Bug 1844: Agent should be adapted new HotSpot versioning: JDK-8030011
--- a/agent/src/jvmInfo.hpp	Tue Jun 17 23:20:20 2014 +0900
+++ b/agent/src/jvmInfo.hpp	Wed Jun 18 23:59:21 2014 +0900
@@ -413,6 +413,14 @@
     }
 
     /*!
+     * \brief Decision for JDK-8027746: Remove do_gen_barrier template parameter in G1ParCopyClosure
+     */
+    inline bool isAfterCR8027746(void){
+      // jdk9-b03 (1.9.0-b03)
+      return (this->_hsVersion >= MAKE_HS_VERSION(26, 9, 0, 3));
+    }
+
+    /*!
      * \brief Get JVM name.
      * \return JVM name.
      */
--- a/agent/src/oopUtil.cpp	Tue Jun 17 23:20:20 2014 +0900
+++ b/agent/src/oopUtil.cpp	Wed Jun 18 23:59:21 2014 +0900
@@ -136,6 +136,11 @@
 DEFINE_OVERRIDE_FUNC_9(CR8000213_g1)
 
 /*!
+ * \brief Override function for instance object on G1GC for after CR8027746.
+ */
+DEFINE_OVERRIDE_FUNC_9(CR8027746_g1)
+
+/*!
  * \brief Override function for cleanup event on G1GC.
  */
 DEFINE_OVERRIDE_FUNC_3(g1Event)
@@ -163,7 +168,9 @@
 /* Macro. */
 
 #define SELECT_HOOK_FUNCS(result, prefix) \
-  if(jvmInfo->isAfterCR8000213())       \
+  if(jvmInfo->isAfterCR8027746())       \
+    result = CR8027746_##prefix##_hook; \
+  else if(jvmInfo->isAfterCR8000213())  \
     result = CR8000213_##prefix##_hook; \
   else if(jvmInfo->isAfterCR6964458())  \
     result = CR6964458_##prefix##_hook; \
@@ -507,6 +514,12 @@
 };
 
 /*!
+ * \brief Pointer of hook information on parallelGC for after CR8027746.
+ * (no change)
+ */
+#define CR8027746_par_hook CR8000213_par_hook
+
+/*!
  * \brief Pointer of hook information on parallelOldGC.
  */
 THookFunctionInfo parOld_hook[] = {
@@ -576,6 +589,12 @@
 };
 
 /*!
+ * \brief Pointer of hook information on parallelOldGC for after CR8027746.
+ * (no change)
+ */
+#define CR8027746_parOld_hook CR8000213_parOld_hook
+
+/*!
  * \brief Pointer of hook information on CMSGC.
  */
 THookFunctionInfo cms_sweep_hook[] = {
@@ -655,6 +674,12 @@
 };
 
 /*!
+ * \brief Pointer of hook information on CMSGC for after CR8027746.
+ * (no change)
+ */
+#define CR8027746_cms_new_hook CR8000213_cms_new_hook
+
+/*!
  * \brief Pointer of hook information on G1GC.
  */
 THookFunctionInfo g1_hook[] = {
@@ -725,6 +750,41 @@
 };
 
 /*!
+ * \brief Pointer of hook information on G1GC for after CR8027746.
+ */
+THookFunctionInfo CR8027746_g1_hook[] = {
+  HOOK_FUNC("_ZTV16G1ParCopyClosureIL9G1Barrier0ELb1EE",
+    "_ZN16G1ParCopyClosureIL9G1Barrier0ELb1EE6do_oopEPP7oopDesc",
+    &CR8027746_g1_override_func_0, NULL),
+  HOOK_FUNC("_ZTV16G1ParCopyClosureIL9G1Barrier0ELb1EE",
+    "_ZN16G1ParCopyClosureIL9G1Barrier0ELb1EE6do_oopEPj",
+    &CR8027746_g1_override_func_1, NULL),
+  HOOK_FUNC("_ZTV13InstanceKlass",
+    "_ZN13InstanceKlass18oop_oop_iterate_nvEP7oopDescP23G1RootRegionScanClosure",
+    &CR8027746_g1_override_func_2, NULL),
+  HOOK_FUNC("_ZTV13ObjArrayKlass",
+    "_ZN13ObjArrayKlass18oop_oop_iterate_nvEP7oopDescP23G1RootRegionScanClosure",
+    &CR8027746_g1_override_func_3, NULL),
+  HOOK_FUNC("_ZTV16InstanceRefKlass",
+    "_ZN16InstanceRefKlass18oop_oop_iterate_nvEP7oopDescP23G1RootRegionScanClosure",
+    &CR8027746_g1_override_func_4, NULL),
+
+  HOOK_FUNC("_ZTV13InstanceKlass",
+    "_ZN13InstanceKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+    &CR8027746_g1_override_func_5, NULL),
+  HOOK_FUNC("_ZTV13ObjArrayKlass",
+    "_ZN13ObjArrayKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+    &CR8027746_g1_override_func_6, NULL),
+  HOOK_FUNC("_ZTV14TypeArrayKlass",
+    "_ZN14TypeArrayKlass15oop_oop_iterateEP7oopDescP18ExtendedOopClosure",
+    &CR8027746_g1_override_func_7, NULL),
+  HOOK_FUNC("_ZTV16InstanceRefKlass",
+    "_ZN16InstanceRefKlass18oop_oop_iterate_nvEP7oopDescP14G1CMOopClosure",
+    &CR8027746_g1_override_func_8, NULL),
+  HOOK_FUNC_END
+};
+
+/*!
  * \brief Pointer of hook information on G1GC for after CR8000213.
  */
 THookFunctionInfo CR8000213_g1_hook[] = {
--- a/agent/src/oopUtil.hpp	Tue Jun 17 23:20:20 2014 +0900
+++ b/agent/src/oopUtil.hpp	Wed Jun 18 23:59:21 2014 +0900
@@ -297,6 +297,11 @@
 extern "C" THookFunctionInfo CR8000213_g1_hook[];
 
 /*!
+ * \brief Pointer of hook information on G1GC after CR8027746.
+ */
+extern "C" THookFunctionInfo CR8027746_g1_hook[];
+
+/*!
  * \brief Pointer of hook information on G1GC event.
  */
 extern "C" THookFunctionInfo g1Event_hook[];
--- a/agent/src/overrideFunc.S	Tue Jun 17 23:20:20 2014 +0900
+++ b/agent/src/overrideFunc.S	Wed Jun 18 23:59:21 2014 +0900
@@ -1,7 +1,7 @@
 /*!
  * \file overrideFunc.S
  * \brief This file is used to override JVM inner function.<br>
- * Copyright (C) 2011-2013 Nippon Telegraph and Telephone Corporation
+ * Copyright (C) 2011-2014 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
@@ -659,6 +659,34 @@
 /* InstanceRefKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
 OVERRIDE_OOP_OOP_ITERATE(CR8000213_g1, 8)
 
+/* For G1 (CR8027746). */
+
+/* initial-mark */
+/* G1ParScanAndMarkExtRootClosure::do_oop(oopDesc**) */
+/* G1ParCopyClosure<false, (G1Barrier)0, false>::do_oop(oopDesc**) */
+OVERRIDE_CALLBACK_DEFINE(CR8027746_g1, 0, callbackForDoOop);
+/* G1ParScanAndMarkExtRootClosure::do_oop(unsigned int*) */
+/* G1ParCopyClosure<false, (G1Barrier)0, false>::do_oop(unsigned int*) */
+OVERRIDE_CALLBACK_DEFINE(CR8027746_g1, 1, callbackForDoNarrowOop);
+
+/* concurrent-root-region-scan */
+/* InstanceKlass::oop_oop_iterate_nv(oopDesc*, G1RootRegionScanClosure*) */
+OVERRIDE_OOP_OOP_ITERATE(CR8027746_g1, 2)
+/* objArrayKlass::oop_oop_iterate_nv(oopDesc*, G1RootRegionScanClosure*) */
+OVERRIDE_OOP_OOP_ITERATE(CR8027746_g1, 3)
+/* InstanceRefKlass::oop_oop_iterate_nv(oopDesc*, G1RootRegionScanClosure*) */
+OVERRIDE_OOP_OOP_ITERATE(CR8027746_g1, 4)
+
+/* concurrent-mark / remark */
+/* InstanceKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
+OVERRIDE_OOP_OOP_ITERATE(CR8027746_g1, 5)
+/* ObjArrayKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
+OVERRIDE_OOP_OOP_ITERATE(CR8027746_g1, 6)
+/* TypeArrayKlass::oop_oop_iterate(oopDesc*, ExtendedOopClosure*) */
+OVERRIDE_OOP_OOP_ITERATE_WITH_CALLER_CHECK(CR8027746_g1, 7, VTableForTypeArrayOopClosure)
+/* InstanceRefKlass::oop_oop_iterate_nv(oopDesc*, G1CMOopClosure*) */
+OVERRIDE_OOP_OOP_ITERATE(CR8027746_g1, 8)
+
 /* G1 events */
 
 /* CMCleanUp::do_void() */