817 int oopmap_size = builder.heap_size();
818 typeArrayHandle oopMapArrayHandle = oopFactory::new_byteArray(oopmap_size, CHECK_(JVMCIEnv::cache_full));
819 builder.generate_into((address) oopMapArrayHandle->byte_at_addr(0));
820 HotSpotMetaData::set_oopMaps(metadata_handle, oopMapArrayHandle());
821 }
822
823 HotSpotMetaData::set_metadata(metadata_handle, NULL);
824
825 ExceptionHandlerTable* handler = code_metadata.get_exception_table();
826 int table_size = handler->size_in_bytes();
827 typeArrayHandle exceptionArrayOop = oopFactory::new_byteArray(table_size, CHECK_(JVMCIEnv::cache_full));
828
829 if (table_size > 0) {
830 handler->copy_bytes_to((address) exceptionArrayOop->byte_at_addr(0));
831 }
832 HotSpotMetaData::set_exceptionBytes(metadata_handle, exceptionArrayOop());
833
834 return result;
835 C2V_END
836
837 C2V_VMENTRY(void, notifyCompilationStatistics, (JNIEnv *jniEnv, jobject, jint id, jobject hotspot_method, jboolean osr, jint processedBytecodes, jlong time, jlong timeUnitsPerSecond, jobject installed_code))
838 JVMCICompiler* compiler = JVMCICompiler::instance(CHECK);
839 CompilerStatistics* stats = compiler->stats();
840
841 elapsedTimer timer = elapsedTimer(time, timeUnitsPerSecond);
842 if (osr) {
843 stats->_osr.update(timer, processedBytecodes);
844 } else {
845 stats->_standard.update(timer, processedBytecodes);
846 }
847 Handle installed_code_handle = JNIHandles::resolve(installed_code);
848 if (installed_code_handle->is_a(HotSpotInstalledCode::klass())) {
849 stats->_nmethods_size += HotSpotInstalledCode::size(installed_code_handle);
850 stats->_nmethods_code_size += HotSpotInstalledCode::codeSize(installed_code_handle);
851 }
852
853 if (CITimeEach) {
854 methodHandle method = CompilerToVM::asMethod(hotspot_method);
855 float bytes_per_sec = 1.0 * processedBytecodes / timer.seconds();
856 tty->print_cr("%3d seconds: %f bytes/sec: %f (bytes %d)",
857 id, timer.seconds(), bytes_per_sec, processedBytecodes);
858 }
859 C2V_END
860
861 C2V_VMENTRY(void, resetCompilationStatistics, (JNIEnv *jniEnv, jobject))
862 JVMCICompiler* compiler = JVMCICompiler::instance(CHECK);
863 CompilerStatistics* stats = compiler->stats();
864 stats->_standard.reset();
865 stats->_osr.reset();
866 C2V_END
867
868 C2V_VMENTRY(jobject, disassembleCodeBlob, (JNIEnv *jniEnv, jobject, jobject installedCode))
869 ResourceMark rm;
870 HandleMark hm;
871
872 if (installedCode == NULL) {
873 THROW_MSG_NULL(vmSymbols::java_lang_NullPointerException(), "installedCode is null");
874 }
875
876 jlong codeBlob = InstalledCode::address(installedCode);
877 if (codeBlob == 0L) {
878 return NULL;
879 }
880
1430 {CC"lookupMethodInPool", CC"("HS_CONSTANT_POOL"IB)"HS_RESOLVED_METHOD, FN_PTR(lookupMethodInPool)},
1431 {CC"constantPoolRemapInstructionOperandFromCache", CC"("HS_CONSTANT_POOL"I)I", FN_PTR(constantPoolRemapInstructionOperandFromCache)},
1432 {CC"resolveConstantInPool", CC"("HS_CONSTANT_POOL"I)"OBJECT, FN_PTR(resolveConstantInPool)},
1433 {CC"resolvePossiblyCachedConstantInPool", CC"("HS_CONSTANT_POOL"I)"OBJECT, FN_PTR(resolvePossiblyCachedConstantInPool)},
1434 {CC"resolveTypeInPool", CC"("HS_CONSTANT_POOL"I)"HS_RESOLVED_KLASS, FN_PTR(resolveTypeInPool)},
1435 {CC"resolveFieldInPool", CC"("HS_CONSTANT_POOL"IB[J)"HS_RESOLVED_KLASS, FN_PTR(resolveFieldInPool)},
1436 {CC"resolveInvokeDynamicInPool", CC"("HS_CONSTANT_POOL"I)V", FN_PTR(resolveInvokeDynamicInPool)},
1437 {CC"resolveInvokeHandleInPool", CC"("HS_CONSTANT_POOL"I)V", FN_PTR(resolveInvokeHandleInPool)},
1438 {CC"resolveMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD HS_RESOLVED_KLASS")"HS_RESOLVED_METHOD, FN_PTR(resolveMethod)},
1439 {CC"getVtableIndexForInterfaceMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD")I", FN_PTR(getVtableIndexForInterfaceMethod)},
1440 {CC"getClassInitializer", CC"("HS_RESOLVED_KLASS")"HS_RESOLVED_METHOD, FN_PTR(getClassInitializer)},
1441 {CC"hasFinalizableSubclass", CC"("HS_RESOLVED_KLASS")Z", FN_PTR(hasFinalizableSubclass)},
1442 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)},
1443 {CC"getResolvedJavaMethodAtSlot", CC"("CLASS"I)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethodAtSlot)},
1444 {CC"getResolvedJavaMethod", CC"(Ljava/lang/Object;J)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethod)},
1445 {CC"getConstantPool", CC"(Ljava/lang/Object;J)"HS_CONSTANT_POOL, FN_PTR(getConstantPool)},
1446 {CC"getResolvedJavaType", CC"(Ljava/lang/Object;JZ)"HS_RESOLVED_KLASS, FN_PTR(getResolvedJavaType)},
1447 {CC"initializeConfiguration", CC"("HS_CONFIG")J", FN_PTR(initializeConfiguration)},
1448 {CC"installCode", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE INSTALLED_CODE HS_SPECULATION_LOG")I", FN_PTR(installCode)},
1449 {CC"getMetadata", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE HS_METADATA")I", FN_PTR(getMetadata)},
1450 {CC"notifyCompilationStatistics", CC"(I"HS_RESOLVED_METHOD"ZIJJ"INSTALLED_CODE")V", FN_PTR(notifyCompilationStatistics)},
1451 {CC"resetCompilationStatistics", CC"()V", FN_PTR(resetCompilationStatistics)},
1452 {CC"disassembleCodeBlob", CC"("INSTALLED_CODE")"STRING, FN_PTR(disassembleCodeBlob)},
1453 {CC"executeInstalledCode", CC"(["OBJECT INSTALLED_CODE")"OBJECT, FN_PTR(executeInstalledCode)},
1454 {CC"getLineNumberTable", CC"("HS_RESOLVED_METHOD")[J", FN_PTR(getLineNumberTable)},
1455 {CC"getLocalVariableTableStart", CC"("HS_RESOLVED_METHOD")J", FN_PTR(getLocalVariableTableStart)},
1456 {CC"getLocalVariableTableLength", CC"("HS_RESOLVED_METHOD")I", FN_PTR(getLocalVariableTableLength)},
1457 {CC"reprofile", CC"("HS_RESOLVED_METHOD")V", FN_PTR(reprofile)},
1458 {CC"invalidateInstalledCode", CC"("INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)},
1459 {CC"readUncompressedOop", CC"(J)"OBJECT, FN_PTR(readUncompressedOop)},
1460 {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)},
1461 {CC"allocateCompileId", CC"("HS_RESOLVED_METHOD"I)I", FN_PTR(allocateCompileId)},
1462 {CC"isMature", CC"("METASPACE_METHOD_DATA")Z", FN_PTR(isMature)},
1463 {CC"hasCompiledCodeForOSR", CC"("HS_RESOLVED_METHOD"II)Z", FN_PTR(hasCompiledCodeForOSR)},
1464 {CC"getSymbol", CC"(J)"STRING, FN_PTR(getSymbol)},
1465 {CC"getNextStackFrame", CC"("HS_STACK_FRAME_REF "["RESOLVED_METHOD"I)"HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)},
1466 {CC"materializeVirtualObjects", CC"("HS_STACK_FRAME_REF"Z)V", FN_PTR(materializeVirtualObjects)},
1467 {CC"shouldDebugNonSafepoints", CC"()Z", FN_PTR(shouldDebugNonSafepoints)},
1468 {CC"writeDebugOutput", CC"([BII)V", FN_PTR(writeDebugOutput)},
1469 {CC"flushDebugOutput", CC"()V", FN_PTR(flushDebugOutput)},
1470 {CC"methodDataProfileDataSize", CC"(JI)I", FN_PTR(methodDataProfileDataSize)},
|
817 int oopmap_size = builder.heap_size();
818 typeArrayHandle oopMapArrayHandle = oopFactory::new_byteArray(oopmap_size, CHECK_(JVMCIEnv::cache_full));
819 builder.generate_into((address) oopMapArrayHandle->byte_at_addr(0));
820 HotSpotMetaData::set_oopMaps(metadata_handle, oopMapArrayHandle());
821 }
822
823 HotSpotMetaData::set_metadata(metadata_handle, NULL);
824
825 ExceptionHandlerTable* handler = code_metadata.get_exception_table();
826 int table_size = handler->size_in_bytes();
827 typeArrayHandle exceptionArrayOop = oopFactory::new_byteArray(table_size, CHECK_(JVMCIEnv::cache_full));
828
829 if (table_size > 0) {
830 handler->copy_bytes_to((address) exceptionArrayOop->byte_at_addr(0));
831 }
832 HotSpotMetaData::set_exceptionBytes(metadata_handle, exceptionArrayOop());
833
834 return result;
835 C2V_END
836
837 C2V_VMENTRY(void, resetCompilationStatistics, (JNIEnv *jniEnv, jobject))
838 JVMCICompiler* compiler = JVMCICompiler::instance(CHECK);
839 CompilerStatistics* stats = compiler->stats();
840 stats->_standard.reset();
841 stats->_osr.reset();
842 C2V_END
843
844 C2V_VMENTRY(jobject, disassembleCodeBlob, (JNIEnv *jniEnv, jobject, jobject installedCode))
845 ResourceMark rm;
846 HandleMark hm;
847
848 if (installedCode == NULL) {
849 THROW_MSG_NULL(vmSymbols::java_lang_NullPointerException(), "installedCode is null");
850 }
851
852 jlong codeBlob = InstalledCode::address(installedCode);
853 if (codeBlob == 0L) {
854 return NULL;
855 }
856
1406 {CC"lookupMethodInPool", CC"("HS_CONSTANT_POOL"IB)"HS_RESOLVED_METHOD, FN_PTR(lookupMethodInPool)},
1407 {CC"constantPoolRemapInstructionOperandFromCache", CC"("HS_CONSTANT_POOL"I)I", FN_PTR(constantPoolRemapInstructionOperandFromCache)},
1408 {CC"resolveConstantInPool", CC"("HS_CONSTANT_POOL"I)"OBJECT, FN_PTR(resolveConstantInPool)},
1409 {CC"resolvePossiblyCachedConstantInPool", CC"("HS_CONSTANT_POOL"I)"OBJECT, FN_PTR(resolvePossiblyCachedConstantInPool)},
1410 {CC"resolveTypeInPool", CC"("HS_CONSTANT_POOL"I)"HS_RESOLVED_KLASS, FN_PTR(resolveTypeInPool)},
1411 {CC"resolveFieldInPool", CC"("HS_CONSTANT_POOL"IB[J)"HS_RESOLVED_KLASS, FN_PTR(resolveFieldInPool)},
1412 {CC"resolveInvokeDynamicInPool", CC"("HS_CONSTANT_POOL"I)V", FN_PTR(resolveInvokeDynamicInPool)},
1413 {CC"resolveInvokeHandleInPool", CC"("HS_CONSTANT_POOL"I)V", FN_PTR(resolveInvokeHandleInPool)},
1414 {CC"resolveMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD HS_RESOLVED_KLASS")"HS_RESOLVED_METHOD, FN_PTR(resolveMethod)},
1415 {CC"getVtableIndexForInterfaceMethod", CC"("HS_RESOLVED_KLASS HS_RESOLVED_METHOD")I", FN_PTR(getVtableIndexForInterfaceMethod)},
1416 {CC"getClassInitializer", CC"("HS_RESOLVED_KLASS")"HS_RESOLVED_METHOD, FN_PTR(getClassInitializer)},
1417 {CC"hasFinalizableSubclass", CC"("HS_RESOLVED_KLASS")Z", FN_PTR(hasFinalizableSubclass)},
1418 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)},
1419 {CC"getResolvedJavaMethodAtSlot", CC"("CLASS"I)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethodAtSlot)},
1420 {CC"getResolvedJavaMethod", CC"(Ljava/lang/Object;J)"HS_RESOLVED_METHOD, FN_PTR(getResolvedJavaMethod)},
1421 {CC"getConstantPool", CC"(Ljava/lang/Object;J)"HS_CONSTANT_POOL, FN_PTR(getConstantPool)},
1422 {CC"getResolvedJavaType", CC"(Ljava/lang/Object;JZ)"HS_RESOLVED_KLASS, FN_PTR(getResolvedJavaType)},
1423 {CC"initializeConfiguration", CC"("HS_CONFIG")J", FN_PTR(initializeConfiguration)},
1424 {CC"installCode", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE INSTALLED_CODE HS_SPECULATION_LOG")I", FN_PTR(installCode)},
1425 {CC"getMetadata", CC"("TARGET_DESCRIPTION HS_COMPILED_CODE HS_METADATA")I", FN_PTR(getMetadata)},
1426 {CC"resetCompilationStatistics", CC"()V", FN_PTR(resetCompilationStatistics)},
1427 {CC"disassembleCodeBlob", CC"("INSTALLED_CODE")"STRING, FN_PTR(disassembleCodeBlob)},
1428 {CC"executeInstalledCode", CC"(["OBJECT INSTALLED_CODE")"OBJECT, FN_PTR(executeInstalledCode)},
1429 {CC"getLineNumberTable", CC"("HS_RESOLVED_METHOD")[J", FN_PTR(getLineNumberTable)},
1430 {CC"getLocalVariableTableStart", CC"("HS_RESOLVED_METHOD")J", FN_PTR(getLocalVariableTableStart)},
1431 {CC"getLocalVariableTableLength", CC"("HS_RESOLVED_METHOD")I", FN_PTR(getLocalVariableTableLength)},
1432 {CC"reprofile", CC"("HS_RESOLVED_METHOD")V", FN_PTR(reprofile)},
1433 {CC"invalidateInstalledCode", CC"("INSTALLED_CODE")V", FN_PTR(invalidateInstalledCode)},
1434 {CC"readUncompressedOop", CC"(J)"OBJECT, FN_PTR(readUncompressedOop)},
1435 {CC"collectCounters", CC"()[J", FN_PTR(collectCounters)},
1436 {CC"allocateCompileId", CC"("HS_RESOLVED_METHOD"I)I", FN_PTR(allocateCompileId)},
1437 {CC"isMature", CC"("METASPACE_METHOD_DATA")Z", FN_PTR(isMature)},
1438 {CC"hasCompiledCodeForOSR", CC"("HS_RESOLVED_METHOD"II)Z", FN_PTR(hasCompiledCodeForOSR)},
1439 {CC"getSymbol", CC"(J)"STRING, FN_PTR(getSymbol)},
1440 {CC"getNextStackFrame", CC"("HS_STACK_FRAME_REF "["RESOLVED_METHOD"I)"HS_STACK_FRAME_REF, FN_PTR(getNextStackFrame)},
1441 {CC"materializeVirtualObjects", CC"("HS_STACK_FRAME_REF"Z)V", FN_PTR(materializeVirtualObjects)},
1442 {CC"shouldDebugNonSafepoints", CC"()Z", FN_PTR(shouldDebugNonSafepoints)},
1443 {CC"writeDebugOutput", CC"([BII)V", FN_PTR(writeDebugOutput)},
1444 {CC"flushDebugOutput", CC"()V", FN_PTR(flushDebugOutput)},
1445 {CC"methodDataProfileDataSize", CC"(JI)I", FN_PTR(methodDataProfileDataSize)},
|