diff src/share/vm/graal/graalCompilerToVM.cpp @ 7784:016e23829147

added HotSpot implementation of disassembling APIs
author Doug Simon <doug.simon@oracle.com>
date Wed, 13 Feb 2013 11:36:16 +1000
parents 0ae87cf94914
children 8bbbde9d0a52
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp	Wed Feb 13 11:34:22 2013 +1000
+++ b/src/share/vm/graal/graalCompilerToVM.cpp	Wed Feb 13 11:36:16 2013 +1000
@@ -844,6 +844,21 @@
   return JNIHandles::make_local(result());
 C2V_END
 
+C2V_VMENTRY(jobject, disassembleNMethod, (JNIEnv *jniEnv, jobject, jlong metaspace_nmethod))
+  ResourceMark rm;
+  HandleMark hm;
+
+  nmethod* nm = (nmethod*) (address) metaspace_nmethod;
+  if (nm == NULL || !nm->is_alive()) {
+    return NULL;
+  }
+  stringStream(st);
+  Disassembler::decode(nm, &st);
+
+  Handle result = java_lang_String::create_from_platform_dependent_str(st.as_string(), CHECK_NULL);
+  return JNIHandles::make_local(result());
+C2V_END
+
 C2V_VMENTRY(jobject, getStackTraceElement, (JNIEnv *env, jobject, jlong metaspace_method, int bci))
   ResourceMark rm;
   HandleMark hm;
@@ -1056,6 +1071,7 @@
   {CC"initializeConfiguration",       CC"("HS_CONFIG")V",                                               FN_PTR(initializeConfiguration)},
   {CC"installCode0",                  CC"("HS_COMP_RESULT HS_INSTALLED_CODE HS_CODE_INFO")I",           FN_PTR(installCode0)},
   {CC"disassembleNative",             CC"([BJ)"STRING,                                                  FN_PTR(disassembleNative)},
+  {CC"disassembleNMethod",            CC"(J)"STRING,                                                    FN_PTR(disassembleNMethod)},
   {CC"executeCompiledMethod",         CC"("METASPACE_METHOD NMETHOD OBJECT OBJECT OBJECT")"OBJECT,      FN_PTR(executeCompiledMethod)},
   {CC"executeCompiledMethodVarargs",  CC"("METASPACE_METHOD NMETHOD "["OBJECT")"OBJECT,                 FN_PTR(executeCompiledMethodVarargs)},
   {CC"getDeoptedLeafGraphIds",        CC"()[J",                                                         FN_PTR(getDeoptedLeafGraphIds)},