comparison src/share/vm/graal/graalCompilerToVM.cpp @ 11381:001c41b01d13

HotSpotInstalledCode: moved getCode to Java and added the ability to get the whole blob
author twisti
date Tue, 20 Aug 2013 12:48:28 -0700
parents a7c7b0bd0557
children 8d4e5e08d83f
comparison
equal deleted inserted replaced
11380:d9bcf8789d57 11381:001c41b01d13
926 oop comp_result = HotSpotCompiledCode::comp(compiled_code_handle); 926 oop comp_result = HotSpotCompiledCode::comp(compiled_code_handle);
927 if (comp_result->is_a(ExternalCompilationResult::klass())) { 927 if (comp_result->is_a(ExternalCompilationResult::klass())) {
928 if (TraceGPUInteraction) { 928 if (TraceGPUInteraction) {
929 tty->print_cr("installCode0: ExternalCompilationResult"); 929 tty->print_cr("installCode0: ExternalCompilationResult");
930 } 930 }
931 HotSpotInstalledCode::set_start(installed_code_handle, ExternalCompilationResult::entryPoint(comp_result)); 931 HotSpotInstalledCode::set_codeStart(installed_code_handle, ExternalCompilationResult::entryPoint(comp_result));
932 } else { 932 } else {
933 HotSpotInstalledCode::set_start(installed_code_handle, (jlong) cb->code_begin()); 933 HotSpotInstalledCode::set_size(installed_code_handle, cb->size());
934 HotSpotInstalledCode::set_codeStart(installed_code_handle, (jlong) cb->code_begin());
935 HotSpotInstalledCode::set_codeSize(installed_code_handle, cb->code_size());
934 } 936 }
935 nmethod* nm = cb->as_nmethod_or_null(); 937 nmethod* nm = cb->as_nmethod_or_null();
936 assert(nm == NULL || !installed_code_handle->is_scavengable() || nm->on_scavenge_root_list(), "nm should be scavengable if installed_code is scavengable"); 938 assert(nm == NULL || !installed_code_handle->is_scavengable() || nm->on_scavenge_root_list(), "nm should be scavengable if installed_code is scavengable");
937 } 939 }
938 } 940 }
939 return result; 941 return result;
940 C2V_END
941
942 C2V_VMENTRY(jobject, getCode, (JNIEnv *jniEnv, jobject, jlong codeBlob))
943 ResourceMark rm;
944 HandleMark hm;
945
946 CodeBlob* cb = (CodeBlob*) (address) codeBlob;
947 if (cb == NULL) {
948 return NULL;
949 }
950 if (cb->is_nmethod()) {
951 nmethod* nm = (nmethod*) cb;
952 if (!nm->is_alive()) {
953 return NULL;
954 }
955 }
956 int length = cb->code_size();
957 arrayOop codeCopy = oopFactory::new_byteArray(length, CHECK_0);
958 memcpy(codeCopy->base(T_BYTE), cb->code_begin(), length);
959 return JNIHandles::make_local(codeCopy);
960 C2V_END 942 C2V_END
961 943
962 C2V_VMENTRY(jobject, disassembleCodeBlob, (JNIEnv *jniEnv, jobject, jlong codeBlob)) 944 C2V_VMENTRY(jobject, disassembleCodeBlob, (JNIEnv *jniEnv, jobject, jlong codeBlob))
963 ResourceMark rm; 945 ResourceMark rm;
964 HandleMark hm; 946 HandleMark hm;
1242 {CC"getMetaspaceMethod", CC"("REFLECT_METHOD"["HS_RESOLVED_TYPE")"METASPACE_METHOD, FN_PTR(getMetaspaceMethod)}, 1224 {CC"getMetaspaceMethod", CC"("REFLECT_METHOD"["HS_RESOLVED_TYPE")"METASPACE_METHOD, FN_PTR(getMetaspaceMethod)},
1243 {CC"getMetaspaceConstructor", CC"("REFLECT_CONSTRUCTOR"["HS_RESOLVED_TYPE")"METASPACE_METHOD, FN_PTR(getMetaspaceConstructor)}, 1225 {CC"getMetaspaceConstructor", CC"("REFLECT_CONSTRUCTOR"["HS_RESOLVED_TYPE")"METASPACE_METHOD, FN_PTR(getMetaspaceConstructor)},
1244 {CC"getJavaField", CC"("REFLECT_FIELD")"HS_RESOLVED_FIELD, FN_PTR(getJavaField)}, 1226 {CC"getJavaField", CC"("REFLECT_FIELD")"HS_RESOLVED_FIELD, FN_PTR(getJavaField)},
1245 {CC"initializeConfiguration", CC"("HS_CONFIG")V", FN_PTR(initializeConfiguration)}, 1227 {CC"initializeConfiguration", CC"("HS_CONFIG")V", FN_PTR(initializeConfiguration)},
1246 {CC"installCode0", CC"("HS_COMPILED_CODE HS_INSTALLED_CODE"[Z)I", FN_PTR(installCode0)}, 1228 {CC"installCode0", CC"("HS_COMPILED_CODE HS_INSTALLED_CODE"[Z)I", FN_PTR(installCode0)},
1247 {CC"getCode", CC"(J)[B", FN_PTR(getCode)},
1248 {CC"disassembleCodeBlob", CC"(J)"STRING, FN_PTR(disassembleCodeBlob)}, 1229 {CC"disassembleCodeBlob", CC"(J)"STRING, FN_PTR(disassembleCodeBlob)},
1249 {CC"executeCompiledMethodVarargs", CC"(["OBJECT HS_INSTALLED_CODE")"OBJECT, FN_PTR(executeCompiledMethodVarargs)}, 1230 {CC"executeCompiledMethodVarargs", CC"(["OBJECT HS_INSTALLED_CODE")"OBJECT, FN_PTR(executeCompiledMethodVarargs)},
1250 {CC"getDeoptedLeafGraphIds", CC"()[J", FN_PTR(getDeoptedLeafGraphIds)}, 1231 {CC"getDeoptedLeafGraphIds", CC"()[J", FN_PTR(getDeoptedLeafGraphIds)},
1251 {CC"getLineNumberTable", CC"("HS_RESOLVED_METHOD")[J", FN_PTR(getLineNumberTable)}, 1232 {CC"getLineNumberTable", CC"("HS_RESOLVED_METHOD")[J", FN_PTR(getLineNumberTable)},
1252 {CC"getLocalVariableTable", CC"("HS_RESOLVED_METHOD")["LOCAL, FN_PTR(getLocalVariableTable)}, 1233 {CC"getLocalVariableTable", CC"("HS_RESOLVED_METHOD")["LOCAL, FN_PTR(getLocalVariableTable)},