# HG changeset patch # User simonis # Date 1415894336 -3600 # Node ID d373a4781717d9fc5eeaf234b047afd6232a59bf # Parent 3c814b51da6c18c096ef02c1223bed60e5931beb 8064471: Port 8013895: G1: G1SummarizeRSetStats output on Linux needs improvement to AIX Reviewed-by: dholmes, simonis Contributed-by: gunter.haug@sap.com diff -r 3c814b51da6c -r d373a4781717 hotspot/src/os/aix/vm/os_aix.cpp --- a/hotspot/src/os/aix/vm/os_aix.cpp Mon Nov 17 11:26:43 2014 -0500 +++ b/hotspot/src/os/aix/vm/os_aix.cpp Thu Nov 13 16:58:56 2014 +0100 @@ -107,6 +107,12 @@ #include #include +// If RUSAGE_THREAD for getrusage() has not been defined, do it here. The code calling +// getrusage() is prepared to handle the associated failure. +#ifndef RUSAGE_THREAD +#define RUSAGE_THREAD (1) /* only the calling thread */ +#endif + // Add missing declarations (should be in procinfo.h but isn't until AIX 6.1). #if !defined(_AIXVERSION_610) extern "C" { @@ -1072,15 +1078,19 @@ return (1000 * 1000); } -// For now, we say that linux does not support vtime. I have no idea -// whether it can actually be made to (DLD, 9/13/05). - -bool os::supports_vtime() { return false; } +bool os::supports_vtime() { return true; } bool os::enable_vtime() { return false; } bool os::vtime_enabled() { return false; } + double os::elapsedVTime() { - // better than nothing, but not much - return elapsedTime(); + struct rusage usage; + int retval = getrusage(RUSAGE_THREAD, &usage); + if (retval == 0) { + return usage.ru_utime.tv_sec + usage.ru_stime.tv_sec + (usage.ru_utime.tv_usec + usage.ru_stime.tv_usec) / (1000.0 * 1000); + } else { + // better than nothing, but not much + return elapsedTime(); + } } jlong os::javaTimeMillis() {