Mercurial > hg > truffle
diff src/share/vm/graal/graalCompilerToVM.cpp @ 13103:c0b0974dd509
moved notification of Graal compilation statistics from VMToCompiler to CompilerToVM
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 21 Nov 2013 22:08:04 +0100 |
parents | f6c511451e4a |
children | 389d40d7d99f |
line wrap: on
line diff
--- a/src/share/vm/graal/graalCompilerToVM.cpp Thu Nov 21 15:04:54 2013 +0100 +++ b/src/share/vm/graal/graalCompilerToVM.cpp Thu Nov 21 22:08:04 2013 +0100 @@ -732,8 +732,6 @@ set_int("instanceKlassVtableStartOffset", InstanceKlass::vtable_start_offset() * HeapWordSize); - set_long("elapsedTimerFrequency", os::elapsed_frequency()); - //------------------------------------------------------------------------------------------------ set_address("handleDeoptStub", SharedRuntime::deopt_blob()->unpack()); @@ -827,6 +825,37 @@ return result; C2V_END +C2V_VMENTRY(void, notifyCompilationStatistics, (JNIEnv *jniEnv, jobject, jint id, jobject hotspot_method, jboolean osr, jint processedBytecodes, jlong time, jlong timeUnitsPerSecond, jobject installed_code)) + CompilerStatistics* stats = GraalCompiler::instance()->stats(); + + elapsedTimer timer = elapsedTimer(time, timeUnitsPerSecond); + if (osr) { + stats->_osr.update(timer, processedBytecodes); + } else { + stats->_standard.update(timer, processedBytecodes); + } + Handle installed_code_handle = JNIHandles::resolve(installed_code); + stats->_nmethods_size += HotSpotInstalledCode::size(installed_code_handle); + stats->_nmethods_code_size += HotSpotInstalledCode::codeSize(installed_code_handle); + + if (CITimeEach) { + methodHandle method = asMethod(HotSpotResolvedJavaMethod::metaspaceMethod(hotspot_method)); + float bytes_per_sec = 1.0 * processedBytecodes / timer.seconds(); + tty->print_cr("%3d seconds: %f bytes/sec: %f (bytes %d)", + id, timer.seconds(), bytes_per_sec, processedBytecodes); + } +C2V_END + +C2V_VMENTRY(void, resetCompilationStatistics, (JNIEnv *jniEnv, jobject)) + CompilerStatistics* stats = GraalCompiler::instance()->stats(); + stats->_standard._time.reset(); + stats->_standard._bytes = 0; + stats->_standard._count = 0; + stats->_osr._time.reset(); + stats->_osr._bytes = 0; + stats->_osr._count = 0; +C2V_END + C2V_VMENTRY(jobject, disassembleCodeBlob, (JNIEnv *jniEnv, jobject, jlong codeBlob)) ResourceMark rm; HandleMark hm; @@ -1098,6 +1127,8 @@ {CC"getJavaField", CC"("REFLECT_FIELD")"HS_RESOLVED_FIELD, FN_PTR(getJavaField)}, {CC"initializeConfiguration", CC"("HS_CONFIG")V", FN_PTR(initializeConfiguration)}, {CC"installCode0", CC"("HS_COMPILED_CODE HS_INSTALLED_CODE"[Z)I", FN_PTR(installCode0)}, + {CC"notifyCompilationStatistics", CC"(I"HS_RESOLVED_METHOD"ZIJJ"HS_INSTALLED_CODE")V", FN_PTR(notifyCompilationStatistics)}, + {CC"resetCompilationStatistics", CC"()V", FN_PTR(resetCompilationStatistics)}, {CC"disassembleCodeBlob", CC"(J)"STRING, FN_PTR(disassembleCodeBlob)}, {CC"executeCompiledMethodVarargs", CC"(["OBJECT HS_INSTALLED_CODE")"OBJECT, FN_PTR(executeCompiledMethodVarargs)}, {CC"getDeoptedLeafGraphIds", CC"()[J", FN_PTR(getDeoptedLeafGraphIds)},