Mercurial > hg > graal-compiler
comparison src/share/vm/graal/graalCompilerToVM.cpp @ 4442:dc6f6e2f1a00
Merge
author | Christian Haeubl <christian.haeubl@oracle.com> |
---|---|
date | Mon, 23 Jan 2012 13:37:40 -0800 |
parents | 4e3aaf14cbc6 874fcc2ddd9d |
children | 6fb167f79df6 |
comparison
equal
deleted
inserted
replaced
4441:4e3aaf14cbc6 | 4442:dc6f6e2f1a00 |
---|---|
840 ciEnv env(&arena); | 840 ciEnv env(&arena); |
841 CodeInstaller installer(targetMethodHandle, id); | 841 CodeInstaller installer(targetMethodHandle, id); |
842 return id; | 842 return id; |
843 } | 843 } |
844 | 844 |
845 // public String disassembleNative(byte[] code, long address); | |
846 JNIEXPORT jobject JNICALL Java_com_oracle_max_graal_hotspot_bridge_CompilerToVMImpl_disassembleNative(JNIEnv *jniEnv, jobject, jbyteArray code, jlong start_address) { | |
847 TRACE_graal_3("CompilerToVM::disassembleNative"); | |
848 VM_ENTRY_MARK; | |
849 ResourceMark rm; | |
850 HandleMark hm; | |
851 | |
852 stringStream(st); | |
853 arrayOop code_oop = (arrayOop) JNIHandles::resolve(code); | |
854 int len = code_oop->length(); | |
855 address begin = (address) code_oop->base(T_BYTE); | |
856 address end = begin + len; | |
857 Disassembler::decode(begin, end, &st); | |
858 | |
859 Handle result = java_lang_String::create_from_platform_dependent_str(st.as_string(), CHECK_NULL); | |
860 return JNIHandles::make_local(result()); | |
861 } | |
862 | |
863 // public String disassembleJava(HotSpotMethodResolved method); | |
864 JNIEXPORT jobject JNICALL Java_com_oracle_max_graal_hotspot_bridge_CompilerToVMImpl_disassembleJava(JNIEnv *env, jobject, jobject hotspot_method) { | |
865 TRACE_graal_3("CompilerToVM::disassembleJava"); | |
866 | |
867 // Important: The bytecode printing functions are all NOT PRODUCT code, so this method returns an empty string for a product VM build. | |
868 | |
869 VM_ENTRY_MARK; | |
870 ResourceMark rm; | |
871 HandleMark hm; | |
872 | |
873 methodHandle method = getMethodFromHotSpotMethod(hotspot_method); | |
874 // Note: cannot use resource-allocated stringStream because print_code_on has its own ResourceMark. | |
875 bufferedStream(st); | |
876 method->print_codes_on(&st); | |
877 | |
878 Handle result = java_lang_String::create_from_platform_dependent_str(st.as_string(), CHECK_NULL); | |
879 return JNIHandles::make_local(result()); | |
880 } | |
845 | 881 |
846 | 882 |
847 #define CC (char*) /*cast a literal from (const char*)*/ | 883 #define CC (char*) /*cast a literal from (const char*)*/ |
848 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(Java_com_oracle_max_graal_hotspot_bridge_CompilerToVMImpl_##f)) | 884 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &(Java_com_oracle_max_graal_hotspot_bridge_CompilerToVMImpl_##f)) |
849 | 885 |
897 {CC"getPrimitiveArrayType", CC"("CI_KIND")"TYPE, FN_PTR(getPrimitiveArrayType)}, | 933 {CC"getPrimitiveArrayType", CC"("CI_KIND")"TYPE, FN_PTR(getPrimitiveArrayType)}, |
898 {CC"getMaxCallTargetOffset", CC"("CI_RUNTIME_CALL")J", FN_PTR(getMaxCallTargetOffset)}, | 934 {CC"getMaxCallTargetOffset", CC"("CI_RUNTIME_CALL")J", FN_PTR(getMaxCallTargetOffset)}, |
899 {CC"getType", CC"("CLASS")"TYPE, FN_PTR(getType)}, | 935 {CC"getType", CC"("CLASS")"TYPE, FN_PTR(getType)}, |
900 {CC"getConfiguration", CC"()"CONFIG, FN_PTR(getConfiguration)}, | 936 {CC"getConfiguration", CC"()"CONFIG, FN_PTR(getConfiguration)}, |
901 {CC"installMethod", CC"("TARGET_METHOD"Z)"HS_COMP_METHOD, FN_PTR(installMethod)}, | 937 {CC"installMethod", CC"("TARGET_METHOD"Z)"HS_COMP_METHOD, FN_PTR(installMethod)}, |
902 {CC"installStub", CC"("TARGET_METHOD")"PROXY, FN_PTR(installStub)} | 938 {CC"installStub", CC"("TARGET_METHOD")"PROXY, FN_PTR(installStub)}, |
939 {CC"disassembleNative", CC"([BJ)"STRING, FN_PTR(disassembleNative)}, | |
940 {CC"disassembleJava", CC"("RESOLVED_METHOD")"STRING, FN_PTR(disassembleJava)}, | |
903 }; | 941 }; |
904 | 942 |
905 int CompilerToVM_methods_count() { | 943 int CompilerToVM_methods_count() { |
906 return sizeof(CompilerToVM_methods) / sizeof(JNINativeMethod); | 944 return sizeof(CompilerToVM_methods) / sizeof(JNINativeMethod); |
907 } | 945 } |