[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-serviceability-dev
Subject: Add new CLHSDB command to print all methods in CodeCache
From: Yasumasa Suenaga <yasuenag () gmail ! com>
Date: 2017-01-03 2:18:54
Message-ID: c3360798-81d5-b57b-0220-c8da7705749a () gmail ! com
[Download RAW message or body]
Hi all,
I want to check what methods have been compiled in memory dump.
I know we can use dumpcodecache command in CLHSDB, but it is too long fot it because \
dumpcodecache prints contents (assembly code).
I want to add a command to CLHSDB to print all method name and signature in CodeCache \
as below. Is it accepted? If so, I will file it to JBS and will upload webrev.
-------------------------------------------
diff -r 8d23544aa002 src/jdk.hotspot.agent/doc/clhsdb.html
--- a/src/jdk.hotspot.agent/doc/clhsdb.html Mon Jan 02 00:26:40 2017 -0800
+++ b/src/jdk.hotspot.agent/doc/clhsdb.html Tue Jan 03 11:16:46 2017 +0900
@@ -46,6 +46,7 @@
dumpcfg -a | id <font color="red">Dump the PhaseCFG for every compiler thread \
that has one live</font> dumpclass { address | name } [ directory ] <font \
color="red">dump .class file for given Klass* or class name</font> dumpcodecache \
<font color="red">dump codecache contents</font> + listcodecache <font \
color="red">list methods in codecache</font> dumpheap [ file ] <font \
color="red">dump heap in hprof binary format</font> dumpideal -a | id <font \
color="red">dump ideal graph like debug flag -XX:+PrintIdeal</font> dumpilt -a | id \
<font color="red">dump inline tree for C2 compilation</font>
diff -r 8d23544aa002 \
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java
--- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java Mon \
Jan 02 00:26:40 2017 -0800
+++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/CommandProcessor.java Tue \
Jan 03 11:16:46 2017 +0900 @@ -1559,6 +1559,24 @@
}
}
},
+ new Command("listcodecache", "listcodecache", false) {
+ public void doit(Tokens t) {
+ if (t.countTokens() != 0) {
+ usage();
+ } else {
+ CodeCacheVisitor v = new CodeCacheVisitor() {
+ public void prologue(Address start, Address end) {
+ }
+ public void visit(CodeBlob blob) {
+ blob.printOn(out);
+ }
+ public void epilogue() {
+ }
+ };
+ VM.getVM().getCodeCache().iterate(v);
+ }
+ }
+ },
new Command("where", "where { -a | id }", false) {
public void doit(Tokens t) {
if (t.countTokens() != 1) {
-------------------------------------------
Thanks,
Yasumasa
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic