@@ -859,10 +859,10 @@ void TR::CompilationInfo::freeAllResources()
859859
860860 freeAllCompilationThreads();
861861
862- if (_syncCompStats.longestWaitMethodInfo != NULL) {
862+ if (_syncCompStats.longestWaitMethod != NULL) {
863863 PORT_ACCESS_FROM_JITCONFIG(_jitConfig);
864- j9mem_free_memory(_syncCompStats.longestWaitMethodInfo );
865- _syncCompStats.longestWaitMethodInfo = NULL;
864+ j9mem_free_memory(_syncCompStats.longestWaitMethod );
865+ _syncCompStats.longestWaitMethod = NULL;
866866 }
867867}
868868
@@ -6170,8 +6170,11 @@ void *TR::CompilationInfo::compileOnSeparateThread(J9VMThread *vmThread, TR::IlG
61706170 entry->_numThreadsWaiting++;
61716171
61726172 uint64_t waitStart = 0;
6173+ uint64_t waitStartElapsedTime = 0;
6174+ PORT_ACCESS_FROM_JITCONFIG(_jitConfig);
61736175 if (!async) {
6174- waitStart = getPersistentInfo()->getElapsedTime();
6176+ waitStart = j9time_hires_clock();
6177+ waitStartElapsedTime = getPersistentInfo()->getElapsedTime();
61756178 }
61766179
61776180 // Release the compilation monitor
@@ -6272,56 +6275,37 @@ void *TR::CompilationInfo::compileOnSeparateThread(J9VMThread *vmThread, TR::IlG
62726275 entry->_numThreadsWaiting--;
62736276
62746277 if (!async) {
6275- uint64_t waitEnd = getPersistentInfo()->getElapsedTime ();
6276- uint64_t duration = waitEnd - waitStart ;
6278+ uint64_t waitEnd = j9time_hires_clock ();
6279+ uint64_t duration = j9time_hires_delta(waitStart, waitEnd, J9PORT_TIME_DELTA_IN_MICROSECONDS) ;
62776280
62786281 _syncCompStats.totalCount++;
62796282 _syncCompStats.totalWaitTime += duration;
62806283
62816284 if (duration > _syncCompStats.longestWaitTime) {
62826285 _syncCompStats.longestWaitTime = duration;
6283- _syncCompStats.longestWaitTimeStart = waitStart ;
6284- _syncCompStats.longestWaitTimeEnd = waitEnd ;
6286+ _syncCompStats.longestWaitTimeStart = waitStartElapsedTime * 1000 ;
6287+ _syncCompStats.longestWaitTimeEnd = (waitStartElapsedTime * 1000) + duration ;
62856288
62866289 J9UTF8 *className;
62876290 J9UTF8 *name;
62886291 J9UTF8 *signature;
62896292 getClassNameSignatureFromMethod(method, className, name, signature);
62906293
6291- PORT_ACCESS_FROM_JITCONFIG(_jitConfig);
6292-
6293- if (_syncCompStats.longestWaitMethodInfo != NULL) {
6294- j9mem_free_memory(_syncCompStats.longestWaitMethodInfo);
6295- _syncCompStats.longestWaitMethodInfo = NULL;
6294+ if (_syncCompStats.longestWaitMethod != NULL) {
6295+ j9mem_free_memory(_syncCompStats.longestWaitMethod);
6296+ _syncCompStats.longestWaitMethod = NULL;
62966297 }
62976298
6298- uint32_t classNameLen = J9UTF8_LENGTH(className);
6299- uint32_t nameLen = J9UTF8_LENGTH(name);
6300- uint32_t signatureLen = J9UTF8_LENGTH(signature);
6301-
6302- uint32_t totalLen = classNameLen + 1 + nameLen + 1 + signatureLen + 1;
6303-
6304- char *tempLongestWaitMethodInfo = (char *)j9mem_allocate_memory(totalLen, J9MEM_CATEGORY_JIT);
6305- if (tempLongestWaitMethodInfo != NULL) {
6306- char *tempPointer = tempLongestWaitMethodInfo;
6307-
6308- memcpy(tempPointer, J9UTF8_DATA(className), classNameLen);
6309- tempPointer += classNameLen;
6310- *tempPointer = '\0';
6311- tempPointer++;
6312-
6313- memcpy(tempPointer, J9UTF8_DATA(name), nameLen);
6314- tempPointer += nameLen;
6315- *tempPointer = '\0';
6316- tempPointer++;
6299+ uint32_t totalLen = J9UTF8_LENGTH(className) + J9UTF8_LENGTH(name) + J9UTF8_LENGTH(signature) + 2;
6300+ char *templongestWaitMethod = (char *)j9mem_allocate_memory(totalLen, J9MEM_CATEGORY_JIT);
63176301
6318- memcpy(tempPointer, J9UTF8_DATA(signature), signatureLen);
6319- tempPointer += signatureLen;
6320- *tempPointer = '\0';
6321- tempPointer++ ;
6302+ if (templongestWaitMethod != NULL) {
6303+ snprintf(templongestWaitMethod, totalLen, "%.*s.%.*s%.*s", J9UTF8_LENGTH(className),
6304+ J9UTF8_DATA(className), J9UTF8_LENGTH(name), J9UTF8_DATA(name), J9UTF8_LENGTH(signature),
6305+ J9UTF8_DATA(signature)) ;
63226306 }
63236307
6324- _syncCompStats.longestWaitMethodInfo = tempLongestWaitMethodInfo ;
6308+ _syncCompStats.longestWaitMethod = templongestWaitMethod ;
63256309 }
63266310 }
63276311
0 commit comments