1034 }
1035 return CompileBroker::assign_compile_id_unlocked(THREAD, method, entry_bci);
1036 C2V_END
1037
1038
1039 C2V_VMENTRY(jboolean, isMature, (JNIEnv*, jobject, jlong metaspace_method_data))
1040 MethodData* mdo = CompilerToVM::asMethodData(metaspace_method_data);
1041 return mdo != NULL && mdo->is_mature();
1042 C2V_END
1043
1044 C2V_VMENTRY(jboolean, hasCompiledCodeForOSR, (JNIEnv*, jobject, jobject jvmci_method, int entry_bci, int comp_level))
1045 Method* method = CompilerToVM::asMethod(jvmci_method);
1046 return method->lookup_osr_nmethod_for(entry_bci, comp_level, true) != NULL;
1047 C2V_END
1048
1049 C2V_VMENTRY(jobject, getSymbol, (JNIEnv*, jobject, jlong symbol))
1050 Handle sym = java_lang_String::create_from_symbol((Symbol*)(address)symbol, CHECK_NULL);
1051 return JNIHandles::make_local(THREAD, sym());
1052 C2V_END
1053
1054 bool matches(jobjectArray methods, Method* method) {
1055 objArrayOop methods_oop = (objArrayOop) JNIHandles::resolve(methods);
1056
1057 for (int i = 0; i < methods_oop->length(); i++) {
1058 oop resolved = methods_oop->obj_at(i);
1059 if (resolved->is_a(HotSpotResolvedJavaMethodImpl::klass()) && CompilerToVM::asMethod(resolved) == method) {
1060 return true;
1061 }
1062 }
1063 return false;
1064 }
1065
1066 C2V_VMENTRY(jobject, getNextStackFrame, (JNIEnv*, jobject compilerToVM, jobject hs_frame, jobjectArray methods, jint initialSkip))
1067 ResourceMark rm;
1068
1069 if (!thread->has_last_Java_frame()) return NULL;
1070 Handle result = HotSpotStackFrameReference::klass()->allocate_instance(thread);
1071 HotSpotStackFrameReference::klass()->initialize(thread);
1072
1073 StackFrameStream fst(thread);
1461 {CC"getResolvedJavaMethod", CC"(Ljava/lang/Object;J)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethod)},
1462 {CC"getConstantPool", CC"(Ljava/lang/Object;J)"HS_CONSTANT_POOL, FN_PTR(getConstantPool)},
1463 {CC"getResolvedJavaType", CC"(Ljava/lang/Object;JZ)"HS_RESOLVED_KLASS, FN_PTR(getResolvedJavaType)},
1464 {CC"initializeConfiguration", CC"("HS_CONFIG")J", FN_PTR(initializeConfiguration)},
1465 {CC"installCode", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE INSTALLED_CODE HS_SPECULATION_LOG")I", FN_PTR(installCode)},
1466 {CC"getMetadata", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE HS_METADATA")I", FN_PTR(getMetadata)},
1467 {CC"resetCompilationStatistics", CC"()V", FN_PTR(resetCompilationStatistics)},
1468 {CC"disassembleCodeBlob", CC"("INSTALLED_CODE")"STRING, FN_PTR(disassembleCodeBlob)},
1469 {CC"executeInstalledCode", CC"(["OBJECT INSTALLED_CODE")"OBJECT, FN_PTR(executeInstalledCode)},
1470 {CC"getLineNumberTable", CC"("HS_RESOLVED_METHOD")[J", FN_PTR(getLineNumberTable)},
1471 {CC"getLocalVariableTableStart", CC"("HS_RESOLVED_METHOD")J", FN_PTR(getLocalVariableTableStart)},
1472 {CC"getLocalVariableTableLength", CC"("HS_RESOLVED_METHOD")I", FN_PTR(getLocalVariableTableLength)},
1473 {CC"reprofile", CC"("HS_RESOLVED_METHOD")V", FN_PTR(reprofile)},
1474 {CC"invalidateInstalledCode", CC"("INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)},
1475 {CC"readUncompressedOop", CC"(J)"OBJECT, FN_PTR(readUncompressedOop)},
1476 {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)},
1477 {CC"allocateCompileId", CC"("HS_RESOLVED_METHOD"I)I", FN_PTR(allocateCompileId)},
1478 {CC"isMature", CC"("METASPACE_METHOD_DATA")Z", FN_PTR(isMature)},
1479 {CC"hasCompiledCodeForOSR", CC"("HS_RESOLVED_METHOD"II)Z", FN_PTR(hasCompiledCodeForOSR)},
1480 {CC"getSymbol", CC"(J)"STRING, FN_PTR(getSymbol)},
1481 {CC"getNextStackFrame", CC"("HS_STACK_FRAME_REF "["RESOLVED_METHOD"I)"HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)},
1482 {CC"materializeVirtualObjects", CC"("HS_STACK_FRAME_REF"Z)V", FN_PTR(materializeVirtualObjects)},
1483 {CC"shouldDebugNonSafepoints", CC"()Z", FN_PTR(shouldDebugNonSafepoints)},
1484 {CC"writeDebugOutput", CC"([BII)V", FN_PTR(writeDebugOutput)},
1485 {CC"flushDebugOutput", CC"()V", FN_PTR(flushDebugOutput)},
1486 {CC"methodDataProfileDataSize", CC"(JI)I", FN_PTR(methodDataProfileDataSize)},
1487 {CC"interpreterFrameSize", CC"("BYTECODE_FRAME")I", FN_PTR(interpreterFrameSize)},
1488 };
1489
1490 int CompilerToVM::methods_count() {
1491 return sizeof(methods) / sizeof(JNINativeMethod);
1492 }
1493
|
1034 }
1035 return CompileBroker::assign_compile_id_unlocked(THREAD, method, entry_bci);
1036 C2V_END
1037
1038
1039 C2V_VMENTRY(jboolean, isMature, (JNIEnv*, jobject, jlong metaspace_method_data))
1040 MethodData* mdo = CompilerToVM::asMethodData(metaspace_method_data);
1041 return mdo != NULL && mdo->is_mature();
1042 C2V_END
1043
1044 C2V_VMENTRY(jboolean, hasCompiledCodeForOSR, (JNIEnv*, jobject, jobject jvmci_method, int entry_bci, int comp_level))
1045 Method* method = CompilerToVM::asMethod(jvmci_method);
1046 return method->lookup_osr_nmethod_for(entry_bci, comp_level, true) != NULL;
1047 C2V_END
1048
1049 C2V_VMENTRY(jobject, getSymbol, (JNIEnv*, jobject, jlong symbol))
1050 Handle sym = java_lang_String::create_from_symbol((Symbol*)(address)symbol, CHECK_NULL);
1051 return JNIHandles::make_local(THREAD, sym());
1052 C2V_END
1053
1054 C2V_VMENTRY(jlong, lookupSymbol, (JNIEnv*, jobject, jobject string))
1055 Symbol* symbol = java_lang_String::as_symbol_or_null(JNIHandles::resolve(string));
1056 return (jlong) symbol;
1057 C2V_END
1058
1059 bool matches(jobjectArray methods, Method* method) {
1060 objArrayOop methods_oop = (objArrayOop) JNIHandles::resolve(methods);
1061
1062 for (int i = 0; i < methods_oop->length(); i++) {
1063 oop resolved = methods_oop->obj_at(i);
1064 if (resolved->is_a(HotSpotResolvedJavaMethodImpl::klass()) && CompilerToVM::asMethod(resolved) == method) {
1065 return true;
1066 }
1067 }
1068 return false;
1069 }
1070
1071 C2V_VMENTRY(jobject, getNextStackFrame, (JNIEnv*, jobject compilerToVM, jobject hs_frame, jobjectArray methods, jint initialSkip))
1072 ResourceMark rm;
1073
1074 if (!thread->has_last_Java_frame()) return NULL;
1075 Handle result = HotSpotStackFrameReference::klass()->allocate_instance(thread);
1076 HotSpotStackFrameReference::klass()->initialize(thread);
1077
1078 StackFrameStream fst(thread);
1466 {CC"getResolvedJavaMethod", CC"(Ljava/lang/Object;J)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethod)},
1467 {CC"getConstantPool", CC"(Ljava/lang/Object;J)"HS_CONSTANT_POOL, FN_PTR(getConstantPool)},
1468 {CC"getResolvedJavaType", CC"(Ljava/lang/Object;JZ)"HS_RESOLVED_KLASS, FN_PTR(getResolvedJavaType)},
1469 {CC"initializeConfiguration", CC"("HS_CONFIG")J", FN_PTR(initializeConfiguration)},
1470 {CC"installCode", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE INSTALLED_CODE HS_SPECULATION_LOG")I", FN_PTR(installCode)},
1471 {CC"getMetadata", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE HS_METADATA")I", FN_PTR(getMetadata)},
1472 {CC"resetCompilationStatistics", CC"()V", FN_PTR(resetCompilationStatistics)},
1473 {CC"disassembleCodeBlob", CC"("INSTALLED_CODE")"STRING, FN_PTR(disassembleCodeBlob)},
1474 {CC"executeInstalledCode", CC"(["OBJECT INSTALLED_CODE")"OBJECT, FN_PTR(executeInstalledCode)},
1475 {CC"getLineNumberTable", CC"("HS_RESOLVED_METHOD")[J", FN_PTR(getLineNumberTable)},
1476 {CC"getLocalVariableTableStart", CC"("HS_RESOLVED_METHOD")J", FN_PTR(getLocalVariableTableStart)},
1477 {CC"getLocalVariableTableLength", CC"("HS_RESOLVED_METHOD")I", FN_PTR(getLocalVariableTableLength)},
1478 {CC"reprofile", CC"("HS_RESOLVED_METHOD")V", FN_PTR(reprofile)},
1479 {CC"invalidateInstalledCode", CC"("INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)},
1480 {CC"readUncompressedOop", CC"(J)"OBJECT, FN_PTR(readUncompressedOop)},
1481 {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)},
1482 {CC"allocateCompileId", CC"("HS_RESOLVED_METHOD"I)I", FN_PTR(allocateCompileId)},
1483 {CC"isMature", CC"("METASPACE_METHOD_DATA")Z", FN_PTR(isMature)},
1484 {CC"hasCompiledCodeForOSR", CC"("HS_RESOLVED_METHOD"II)Z", FN_PTR(hasCompiledCodeForOSR)},
1485 {CC"getSymbol", CC"(J)"STRING, FN_PTR(getSymbol)},
1486 {CC"lookupSymbol", CC"("STRING")J", FN_PTR(lookupSymbol)},
1487 {CC"getNextStackFrame", CC"("HS_STACK_FRAME_REF "["RESOLVED_METHOD"I)"HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)},
1488 {CC"materializeVirtualObjects", CC"("HS_STACK_FRAME_REF"Z)V", FN_PTR(materializeVirtualObjects)},
1489 {CC"shouldDebugNonSafepoints", CC"()Z", FN_PTR(shouldDebugNonSafepoints)},
1490 {CC"writeDebugOutput", CC"([BII)V", FN_PTR(writeDebugOutput)},
1491 {CC"flushDebugOutput", CC"()V", FN_PTR(flushDebugOutput)},
1492 {CC"methodDataProfileDataSize", CC"(JI)I", FN_PTR(methodDataProfileDataSize)},
1493 {CC"interpreterFrameSize", CC"("BYTECODE_FRAME")I", FN_PTR(interpreterFrameSize)},
1494 };
1495
1496 int CompilerToVM::methods_count() {
1497 return sizeof(methods) / sizeof(JNINativeMethod);
1498 }
1499
|