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)},