# HG changeset patch # User Yasumasa Suenaga # Date 1437056257 -32400 # Node ID 5e137ea0f4eea8fcf8cf00d3150a5065f3176594 # Parent 52506cc0986b58e05013d99a3d6b3f6f1873c2b0 Bug 2529: HeapStats agent should hook InstanceClassLoaderKlass after JDK-6964458 reviewed-by: ykubota diff -r 52506cc0986b -r 5e137ea0f4ee agent/ChangeLog --- 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 + + * Bug 2529: HeapStats agent should hook InstanceClassLoaderKlass after JDK-6964458 + 2015-07-15 KUBOTA Yuji * Bug 2525: Prevent configure error on running rpmbuild without binutils-devel diff -r 52506cc0986b -r 5e137ea0f4ee agent/src/oopUtil.cpp --- 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 }; diff -r 52506cc0986b -r 5e137ea0f4ee agent/src/overrideFunc.S --- 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.
* The function defined this file, used with v-table hook.
* 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);