Mercurial > hg > graal-compiler
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)}, |