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 }