Mercurial > hg > truffle
comparison src/share/vm/graal/graalCompilerToVM.cpp @ 15161:2c940b1a48d8
Convert InstalledCode from an interface into an abstract class.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Tue, 15 Apr 2014 15:01:40 +0200 |
parents | ed29f7ff71eb |
children | 7bc92bdfd322 |
comparison
equal
deleted
inserted
replaced
15160:a47e68e146a2 | 15161:2c940b1a48d8 |
---|---|
208 #endif | 208 #endif |
209 | 209 |
210 #undef set_boolean | 210 #undef set_boolean |
211 #undef set_int | 211 #undef set_int |
212 #undef set_long | 212 #undef set_long |
213 #undef set_address | |
213 | 214 |
214 C2V_END | 215 C2V_END |
215 | 216 |
216 C2V_ENTRY(jbyteArray, initializeBytecode, (JNIEnv *env, jobject, jlong metaspace_method, jbyteArray result)) | 217 C2V_ENTRY(jbyteArray, initializeBytecode, (JNIEnv *env, jobject, jlong metaspace_method, jbyteArray result)) |
217 methodHandle method = asMethod(metaspace_method); | 218 methodHandle method = asMethod(metaspace_method); |
528 | 529 |
529 if (result != GraalEnv::ok) { | 530 if (result != GraalEnv::ok) { |
530 assert(cb == NULL, "should be"); | 531 assert(cb == NULL, "should be"); |
531 } else { | 532 } else { |
532 if (!installed_code_handle.is_null()) { | 533 if (!installed_code_handle.is_null()) { |
533 assert(installed_code_handle->is_a(HotSpotInstalledCode::klass()), "wrong type"); | 534 assert(installed_code_handle->is_a(InstalledCode::klass()), "wrong type"); |
534 HotSpotInstalledCode::set_codeBlob(installed_code_handle, (jlong) cb); | 535 InstalledCode::set_address(installed_code_handle, (jlong) cb); |
535 oop comp_result = HotSpotCompiledCode::comp(compiled_code_handle); | 536 oop comp_result = HotSpotCompiledCode::comp(compiled_code_handle); |
536 if (comp_result->is_a(ExternalCompilationResult::klass())) { | 537 if (comp_result->is_a(ExternalCompilationResult::klass())) { |
537 if (TraceGPUInteraction) { | 538 if (TraceGPUInteraction) { |
538 tty->print_cr("installCode0: ExternalCompilationResult"); | 539 tty->print_cr("installCode0: ExternalCompilationResult"); |
539 } | 540 } |
540 HotSpotInstalledCode::set_codeStart(installed_code_handle, ExternalCompilationResult::entryPoint(comp_result)); | 541 HotSpotInstalledCode::set_codeStart(installed_code_handle, ExternalCompilationResult::entryPoint(comp_result)); |
541 } else { | 542 } else if (installed_code_handle->is_a(HotSpotInstalledCode::klass())) { |
542 HotSpotInstalledCode::set_size(installed_code_handle, cb->size()); | 543 HotSpotInstalledCode::set_size(installed_code_handle, cb->size()); |
543 HotSpotInstalledCode::set_codeStart(installed_code_handle, (jlong) cb->code_begin()); | 544 HotSpotInstalledCode::set_codeStart(installed_code_handle, (jlong) cb->code_begin()); |
544 HotSpotInstalledCode::set_codeSize(installed_code_handle, cb->code_size()); | 545 HotSpotInstalledCode::set_codeSize(installed_code_handle, cb->code_size()); |
545 } | 546 } |
546 nmethod* nm = cb->as_nmethod_or_null(); | 547 nmethod* nm = cb->as_nmethod_or_null(); |
558 stats->_osr.update(timer, processedBytecodes); | 559 stats->_osr.update(timer, processedBytecodes); |
559 } else { | 560 } else { |
560 stats->_standard.update(timer, processedBytecodes); | 561 stats->_standard.update(timer, processedBytecodes); |
561 } | 562 } |
562 Handle installed_code_handle = JNIHandles::resolve(installed_code); | 563 Handle installed_code_handle = JNIHandles::resolve(installed_code); |
563 stats->_nmethods_size += HotSpotInstalledCode::size(installed_code_handle); | 564 if (installed_code_handle->is_a(HotSpotInstalledCode::klass())) { |
564 stats->_nmethods_code_size += HotSpotInstalledCode::codeSize(installed_code_handle); | 565 stats->_nmethods_size += HotSpotInstalledCode::size(installed_code_handle); |
566 stats->_nmethods_code_size += HotSpotInstalledCode::codeSize(installed_code_handle); | |
567 } | |
565 | 568 |
566 if (CITimeEach) { | 569 if (CITimeEach) { |
567 methodHandle method = asMethod(HotSpotResolvedJavaMethod::metaspaceMethod(hotspot_method)); | 570 methodHandle method = asMethod(HotSpotResolvedJavaMethod::metaspaceMethod(hotspot_method)); |
568 float bytes_per_sec = 1.0 * processedBytecodes / timer.seconds(); | 571 float bytes_per_sec = 1.0 * processedBytecodes / timer.seconds(); |
569 tty->print_cr("%3d seconds: %f bytes/sec: %f (bytes %d)", | 572 tty->print_cr("%3d seconds: %f bytes/sec: %f (bytes %d)", |
631 | 634 |
632 C2V_VMENTRY(jobject, executeCompiledMethodVarargs, (JNIEnv *env, jobject, jobject args, jobject hotspotInstalledCode)) | 635 C2V_VMENTRY(jobject, executeCompiledMethodVarargs, (JNIEnv *env, jobject, jobject args, jobject hotspotInstalledCode)) |
633 ResourceMark rm; | 636 ResourceMark rm; |
634 HandleMark hm; | 637 HandleMark hm; |
635 | 638 |
636 jlong nmethodValue = HotSpotInstalledCode::codeBlob(hotspotInstalledCode); | 639 jlong nmethodValue = InstalledCode::address(hotspotInstalledCode); |
637 if (nmethodValue == 0L) { | 640 if (nmethodValue == 0L) { |
638 THROW_(vmSymbols::com_oracle_graal_api_code_InvalidInstalledCodeException(), NULL); | 641 THROW_(vmSymbols::com_oracle_graal_api_code_InvalidInstalledCodeException(), NULL); |
639 } | 642 } |
640 nmethod* nm = (nmethod*) (address) nmethodValue; | 643 nmethod* nm = (nmethod*) (address) nmethodValue; |
641 methodHandle mh = nm->method(); | 644 methodHandle mh = nm->method(); |
722 } | 725 } |
723 C2V_END | 726 C2V_END |
724 | 727 |
725 | 728 |
726 C2V_VMENTRY(void, invalidateInstalledCode, (JNIEnv *env, jobject, jobject hotspotInstalledCode)) | 729 C2V_VMENTRY(void, invalidateInstalledCode, (JNIEnv *env, jobject, jobject hotspotInstalledCode)) |
727 jlong nativeMethod = HotSpotInstalledCode::codeBlob(hotspotInstalledCode); | 730 jlong nativeMethod = InstalledCode::address(hotspotInstalledCode); |
728 nmethod* m = (nmethod*)nativeMethod; | 731 nmethod* m = (nmethod*)nativeMethod; |
729 if (m != NULL && !m->is_not_entrant()) { | 732 if (m != NULL && !m->is_not_entrant()) { |
730 m->mark_for_deoptimization(); | 733 m->mark_for_deoptimization(); |
731 VM_Deoptimize op; | 734 VM_Deoptimize op; |
732 VMThread::execute(&op); | 735 VMThread::execute(&op); |
733 } | 736 } |
734 HotSpotInstalledCode::set_codeBlob(hotspotInstalledCode, 0); | 737 InstalledCode::set_address(hotspotInstalledCode, 0); |
735 C2V_END | 738 C2V_END |
736 | 739 |
737 C2V_VMENTRY(jobject, getJavaMirror, (JNIEnv *env, jobject, jlong metaspace_klass)) | 740 C2V_VMENTRY(jobject, getJavaMirror, (JNIEnv *env, jobject, jlong metaspace_klass)) |
738 Klass* klass = asKlass(metaspace_klass); | 741 Klass* klass = asKlass(metaspace_klass); |
739 return JNIHandles::make_local(klass->java_mirror()); | 742 return JNIHandles::make_local(klass->java_mirror()); |
1044 #define STACK_TRACE_ELEMENT "Ljava/lang/StackTraceElement;" | 1047 #define STACK_TRACE_ELEMENT "Ljava/lang/StackTraceElement;" |
1045 #define HS_RESOLVED_METHOD "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;" | 1048 #define HS_RESOLVED_METHOD "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;" |
1046 #define RESOLVED_METHOD "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;" | 1049 #define RESOLVED_METHOD "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;" |
1047 #define HS_COMPILED_CODE "Lcom/oracle/graal/hotspot/HotSpotCompiledCode;" | 1050 #define HS_COMPILED_CODE "Lcom/oracle/graal/hotspot/HotSpotCompiledCode;" |
1048 #define HS_CONFIG "Lcom/oracle/graal/hotspot/HotSpotVMConfig;" | 1051 #define HS_CONFIG "Lcom/oracle/graal/hotspot/HotSpotVMConfig;" |
1049 #define HS_INSTALLED_CODE "Lcom/oracle/graal/hotspot/meta/HotSpotInstalledCode;" | 1052 #define INSTALLED_CODE "Lcom/oracle/graal/api/code/InstalledCode;" |
1050 #define NODE_CLASS "Lcom/oracle/graal/graph/NodeClass;" | 1053 #define NODE_CLASS "Lcom/oracle/graal/graph/NodeClass;" |
1051 #define HS_STACK_FRAME_REF "Lcom/oracle/graal/hotspot/HotSpotStackFrameReference;" | 1054 #define HS_STACK_FRAME_REF "Lcom/oracle/graal/hotspot/HotSpotStackFrameReference;" |
1052 #define METASPACE_KLASS "J" | 1055 #define METASPACE_KLASS "J" |
1053 #define METASPACE_METHOD "J" | 1056 #define METASPACE_METHOD "J" |
1054 #define METASPACE_METHOD_DATA "J" | 1057 #define METASPACE_METHOD_DATA "J" |
1084 {CC"getClassInitializer", CC"("METASPACE_KLASS")"METASPACE_METHOD, FN_PTR(getClassInitializer)}, | 1087 {CC"getClassInitializer", CC"("METASPACE_KLASS")"METASPACE_METHOD, FN_PTR(getClassInitializer)}, |
1085 {CC"hasFinalizableSubclass", CC"("METASPACE_KLASS")Z", FN_PTR(hasFinalizableSubclass)}, | 1088 {CC"hasFinalizableSubclass", CC"("METASPACE_KLASS")Z", FN_PTR(hasFinalizableSubclass)}, |
1086 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)}, | 1089 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)}, |
1087 {CC"getMetaspaceMethod", CC"("CLASS"I)"METASPACE_METHOD, FN_PTR(getMetaspaceMethod)}, | 1090 {CC"getMetaspaceMethod", CC"("CLASS"I)"METASPACE_METHOD, FN_PTR(getMetaspaceMethod)}, |
1088 {CC"initializeConfiguration", CC"("HS_CONFIG")V", FN_PTR(initializeConfiguration)}, | 1091 {CC"initializeConfiguration", CC"("HS_CONFIG")V", FN_PTR(initializeConfiguration)}, |
1089 {CC"installCode0", CC"("HS_COMPILED_CODE HS_INSTALLED_CODE SPECULATION_LOG")I", FN_PTR(installCode0)}, | 1092 {CC"installCode0", CC"("HS_COMPILED_CODE INSTALLED_CODE SPECULATION_LOG")I", FN_PTR(installCode0)}, |
1090 {CC"notifyCompilationStatistics", CC"(I"HS_RESOLVED_METHOD"ZIJJ"HS_INSTALLED_CODE")V", FN_PTR(notifyCompilationStatistics)}, | 1093 {CC"notifyCompilationStatistics", CC"(I"HS_RESOLVED_METHOD"ZIJJ"INSTALLED_CODE")V", FN_PTR(notifyCompilationStatistics)}, |
1091 {CC"printCompilationStatistics", CC"(ZZ)V", FN_PTR(printCompilationStatistics)}, | 1094 {CC"printCompilationStatistics", CC"(ZZ)V", FN_PTR(printCompilationStatistics)}, |
1092 {CC"resetCompilationStatistics", CC"()V", FN_PTR(resetCompilationStatistics)}, | 1095 {CC"resetCompilationStatistics", CC"()V", FN_PTR(resetCompilationStatistics)}, |
1093 {CC"disassembleCodeBlob", CC"(J)"STRING, FN_PTR(disassembleCodeBlob)}, | 1096 {CC"disassembleCodeBlob", CC"(J)"STRING, FN_PTR(disassembleCodeBlob)}, |
1094 {CC"executeCompiledMethodVarargs", CC"(["OBJECT HS_INSTALLED_CODE")"OBJECT, FN_PTR(executeCompiledMethodVarargs)}, | 1097 {CC"executeCompiledMethodVarargs", CC"(["OBJECT INSTALLED_CODE")"OBJECT, FN_PTR(executeCompiledMethodVarargs)}, |
1095 {CC"getLineNumberTable", CC"("METASPACE_METHOD")[J", FN_PTR(getLineNumberTable)}, | 1098 {CC"getLineNumberTable", CC"("METASPACE_METHOD")[J", FN_PTR(getLineNumberTable)}, |
1096 {CC"getLocalVariableTableStart", CC"("METASPACE_METHOD")J", FN_PTR(getLocalVariableTableStart)}, | 1099 {CC"getLocalVariableTableStart", CC"("METASPACE_METHOD")J", FN_PTR(getLocalVariableTableStart)}, |
1097 {CC"getLocalVariableTableLength", CC"("METASPACE_METHOD")I", FN_PTR(getLocalVariableTableLength)}, | 1100 {CC"getLocalVariableTableLength", CC"("METASPACE_METHOD")I", FN_PTR(getLocalVariableTableLength)}, |
1098 {CC"reprofile", CC"("METASPACE_METHOD")V", FN_PTR(reprofile)}, | 1101 {CC"reprofile", CC"("METASPACE_METHOD")V", FN_PTR(reprofile)}, |
1099 {CC"invalidateInstalledCode", CC"("HS_INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)}, | 1102 {CC"invalidateInstalledCode", CC"("INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)}, |
1100 {CC"getJavaMirror", CC"("METASPACE_KLASS")"CLASS, FN_PTR(getJavaMirror)}, | 1103 {CC"getJavaMirror", CC"("METASPACE_KLASS")"CLASS, FN_PTR(getJavaMirror)}, |
1101 {CC"setNodeClass", CC"("CLASS NODE_CLASS")V", FN_PTR(setNodeClass)}, | 1104 {CC"setNodeClass", CC"("CLASS NODE_CLASS")V", FN_PTR(setNodeClass)}, |
1102 {CC"readUnsafeKlassPointer", CC"("OBJECT")J", FN_PTR(readUnsafeKlassPointer)}, | 1105 {CC"readUnsafeKlassPointer", CC"("OBJECT")J", FN_PTR(readUnsafeKlassPointer)}, |
1103 {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)}, | 1106 {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)}, |
1104 {CC"getGPUs", CC"()"STRING, FN_PTR(getGPUs)}, | 1107 {CC"getGPUs", CC"()"STRING, FN_PTR(getGPUs)}, |