comparison src/share/vm/graal/graalCompilerToVM.cpp @ 8349:8d6ea1915d42

merged CodeInfo into InstalledCode (GRAAL-156)
author Doug Simon <doug.simon@oracle.com>
date Mon, 18 Mar 2013 18:26:12 +0100
parents 79f0ff46290b
children 10293cbfc2b6 c3657d00e343
comparison
equal deleted inserted replaced
8348:79f0ff46290b 8349:8d6ea1915d42
792 #undef set_object 792 #undef set_object
793 #undef set_int_array 793 #undef set_int_array
794 794
795 C2V_END 795 C2V_END
796 796
797 C2V_VMENTRY(jint, installCode0, (JNIEnv *jniEnv, jobject, jobject compResult, jobject installed_code, jobject info, jobject triggered_deoptimizations)) 797 C2V_VMENTRY(jint, installCode0, (JNIEnv *jniEnv, jobject, jobject compResult, jobject installed_code, jobject triggered_deoptimizations))
798 ResourceMark rm; 798 ResourceMark rm;
799 HandleMark hm; 799 HandleMark hm;
800 Handle compResultHandle = JNIHandles::resolve(compResult); 800 Handle compResultHandle = JNIHandles::resolve(compResult);
801 nmethod* nm = NULL; 801 nmethod* nm = NULL;
802 methodHandle method = getMethodFromHotSpotMethod(HotSpotCompilationResult::method(compResult)); 802 methodHandle method = getMethodFromHotSpotMethod(HotSpotCompilationResult::method(compResult));
806 CodeInstaller installer(compResultHandle, method, result, nm, installed_code_handle, triggered_deoptimizations_handle); 806 CodeInstaller installer(compResultHandle, method, result, nm, installed_code_handle, triggered_deoptimizations_handle);
807 807
808 if (result != GraalEnv::ok) { 808 if (result != GraalEnv::ok) {
809 assert(nm == NULL, "should be"); 809 assert(nm == NULL, "should be");
810 } else { 810 } else {
811 if (info != NULL) {
812 arrayOop codeCopy = oopFactory::new_byteArray(nm->code_size(), CHECK_0);
813 memcpy(codeCopy->base(T_BYTE), nm->code_begin(), nm->code_size());
814 HotSpotCodeInfo::set_code(info, codeCopy);
815 HotSpotCodeInfo::set_start(info, (jlong) nm->code_begin());
816 }
817
818 if (!installed_code_handle.is_null()) { 811 if (!installed_code_handle.is_null()) {
819 assert(installed_code_handle->is_a(HotSpotInstalledCode::klass()), "wrong type"); 812 assert(installed_code_handle->is_a(HotSpotInstalledCode::klass()), "wrong type");
820 HotSpotInstalledCode::set_nmethod(installed_code_handle, (jlong) nm); 813 HotSpotInstalledCode::set_nmethod(installed_code_handle, (jlong) nm);
821 HotSpotInstalledCode::set_method(installed_code_handle, HotSpotCompilationResult::method(compResult)); 814 HotSpotInstalledCode::set_method(installed_code_handle, HotSpotCompilationResult::method(compResult));
815 HotSpotInstalledCode::set_start(installed_code_handle, (jlong) nm->code_begin());
822 assert(nm == NULL || !installed_code_handle->is_scavengable() || nm->on_scavenge_root_list(), "nm should be scavengable if installed_code is scavengable"); 816 assert(nm == NULL || !installed_code_handle->is_scavengable() || nm->on_scavenge_root_list(), "nm should be scavengable if installed_code is scavengable");
823 } 817 }
824 } 818 }
825 return result; 819 return result;
820 C2V_END
821
822 C2V_VMENTRY(jobject, getCode, (JNIEnv *jniEnv, jobject, jlong metaspace_nmethod))
823 ResourceMark rm;
824 HandleMark hm;
825
826 nmethod* nm = (nmethod*) (address) metaspace_nmethod;
827 if (nm == NULL || !nm->is_alive()) {
828 return NULL;
829 }
830 int length = nm->code_size();
831 arrayOop codeCopy = oopFactory::new_byteArray(length, CHECK_0);
832 memcpy(codeCopy->base(T_BYTE), nm->code_begin(), length);
833 return JNIHandles::make_local(codeCopy);
826 C2V_END 834 C2V_END
827 835
828 C2V_VMENTRY(jobject, disassembleNMethod, (JNIEnv *jniEnv, jobject, jlong metaspace_nmethod)) 836 C2V_VMENTRY(jobject, disassembleNMethod, (JNIEnv *jniEnv, jobject, jlong metaspace_nmethod))
829 ResourceMark rm; 837 ResourceMark rm;
830 HandleMark hm; 838 HandleMark hm;
1026 #define HS_RESOLVED_FIELD "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaField;" 1034 #define HS_RESOLVED_FIELD "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaField;"
1027 #define HS_COMP_RESULT "Lcom/oracle/graal/hotspot/HotSpotCompilationResult;" 1035 #define HS_COMP_RESULT "Lcom/oracle/graal/hotspot/HotSpotCompilationResult;"
1028 #define HS_CONFIG "Lcom/oracle/graal/hotspot/HotSpotVMConfig;" 1036 #define HS_CONFIG "Lcom/oracle/graal/hotspot/HotSpotVMConfig;"
1029 #define HS_METHOD "Lcom/oracle/graal/hotspot/meta/HotSpotMethod;" 1037 #define HS_METHOD "Lcom/oracle/graal/hotspot/meta/HotSpotMethod;"
1030 #define HS_INSTALLED_CODE "Lcom/oracle/graal/hotspot/meta/HotSpotInstalledCode;" 1038 #define HS_INSTALLED_CODE "Lcom/oracle/graal/hotspot/meta/HotSpotInstalledCode;"
1031 #define HS_CODE_INFO "Lcom/oracle/graal/hotspot/meta/HotSpotCodeInfo;"
1032 #define METHOD_DATA "Lcom/oracle/graal/hotspot/meta/HotSpotMethodData;" 1039 #define METHOD_DATA "Lcom/oracle/graal/hotspot/meta/HotSpotMethodData;"
1033 #define METASPACE_METHOD "J" 1040 #define METASPACE_METHOD "J"
1034 #define METASPACE_METHOD_DATA "J" 1041 #define METASPACE_METHOD_DATA "J"
1035 #define NMETHOD "J" 1042 #define NMETHOD "J"
1036 1043
1062 {CC"getResolvedType", CC"("CLASS")"RESOLVED_TYPE, FN_PTR(getResolvedType)}, 1069 {CC"getResolvedType", CC"("CLASS")"RESOLVED_TYPE, FN_PTR(getResolvedType)},
1063 {CC"getMetaspaceMethod", CC"("REFLECT_METHOD"["HS_RESOLVED_TYPE")"METASPACE_METHOD, FN_PTR(getMetaspaceMethod)}, 1070 {CC"getMetaspaceMethod", CC"("REFLECT_METHOD"["HS_RESOLVED_TYPE")"METASPACE_METHOD, FN_PTR(getMetaspaceMethod)},
1064 {CC"getMetaspaceConstructor", CC"("REFLECT_CONSTRUCTOR"["HS_RESOLVED_TYPE")"METASPACE_METHOD, FN_PTR(getMetaspaceConstructor)}, 1071 {CC"getMetaspaceConstructor", CC"("REFLECT_CONSTRUCTOR"["HS_RESOLVED_TYPE")"METASPACE_METHOD, FN_PTR(getMetaspaceConstructor)},
1065 {CC"getJavaField", CC"("REFLECT_FIELD")"HS_RESOLVED_FIELD, FN_PTR(getJavaField)}, 1072 {CC"getJavaField", CC"("REFLECT_FIELD")"HS_RESOLVED_FIELD, FN_PTR(getJavaField)},
1066 {CC"initializeConfiguration", CC"("HS_CONFIG")V", FN_PTR(initializeConfiguration)}, 1073 {CC"initializeConfiguration", CC"("HS_CONFIG")V", FN_PTR(initializeConfiguration)},
1067 {CC"installCode0", CC"("HS_COMP_RESULT HS_INSTALLED_CODE HS_CODE_INFO"[Z)I", FN_PTR(installCode0)}, 1074 {CC"installCode0", CC"("HS_COMP_RESULT HS_INSTALLED_CODE"[Z)I", FN_PTR(installCode0)},
1075 {CC"getCode", CC"(J)[B", FN_PTR(getCode)},
1068 {CC"disassembleNMethod", CC"(J)"STRING, FN_PTR(disassembleNMethod)}, 1076 {CC"disassembleNMethod", CC"(J)"STRING, FN_PTR(disassembleNMethod)},
1069 {CC"executeCompiledMethod", CC"("METASPACE_METHOD NMETHOD OBJECT OBJECT OBJECT")"OBJECT, FN_PTR(executeCompiledMethod)}, 1077 {CC"executeCompiledMethod", CC"("METASPACE_METHOD NMETHOD OBJECT OBJECT OBJECT")"OBJECT, FN_PTR(executeCompiledMethod)},
1070 {CC"executeCompiledMethodVarargs", CC"("METASPACE_METHOD NMETHOD "["OBJECT")"OBJECT, FN_PTR(executeCompiledMethodVarargs)}, 1078 {CC"executeCompiledMethodVarargs", CC"("METASPACE_METHOD NMETHOD "["OBJECT")"OBJECT, FN_PTR(executeCompiledMethodVarargs)},
1071 {CC"getDeoptedLeafGraphIds", CC"()[J", FN_PTR(getDeoptedLeafGraphIds)}, 1079 {CC"getDeoptedLeafGraphIds", CC"()[J", FN_PTR(getDeoptedLeafGraphIds)},
1072 {CC"getLineNumberTable", CC"("HS_RESOLVED_METHOD")[J", FN_PTR(getLineNumberTable)}, 1080 {CC"getLineNumberTable", CC"("HS_RESOLVED_METHOD")[J", FN_PTR(getLineNumberTable)},