Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
8241638: launcher time metrics always report 1 on Linux when _JAVA_LA…
…UNCHER_DEBUG set
Reviewed-by: alanb, dholmes
- Loading branch information
|
@@ -144,7 +144,7 @@ define SetupBuildLauncherBody |
|
|
-DPROGNAME='"$1"' \ |
|
|
$$($1_CFLAGS), \ |
|
|
CFLAGS_linux := -fPIC, \ |
|
|
CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \ |
|
|
CFLAGS_solaris := -KPIC, \ |
|
|
CFLAGS_windows := $$($1_CFLAGS_windows), \ |
|
|
DISABLED_WARNINGS_gcc := unused-function, \ |
|
|
LDFLAGS := $$(LDFLAGS_JDKEXE) \ |
|
|
|
@@ -641,7 +641,7 @@ static void MacOSXStartup(int argc, char *argv[]) { |
|
|
{ |
|
|
struct timeval tv; |
|
|
gettimeofday(&tv, NULL); |
|
|
return (tv.tv_sec * 1000) + tv.tv_usec; |
|
|
return (tv.tv_sec * 1000000) + tv.tv_usec; |
|
|
} |
|
|
|
|
|
|
|
|
|
@@ -241,7 +241,7 @@ JLI_Launch(int argc, char ** argv, /* main argc, argv */ |
|
|
char *main_class = NULL; |
|
|
int ret; |
|
|
InvocationFunctions ifn; |
|
|
jlong start, end; |
|
|
jlong start = 0, end = 0; |
|
|
char jvmpath[MAXPATHLEN]; |
|
|
char jrepath[MAXPATHLEN]; |
|
|
char jvmcfg[MAXPATHLEN]; |
|
@@ -408,7 +408,7 @@ JavaMain(void* _args) |
|
|
jmethodID mainID; |
|
|
jobjectArray mainArgs; |
|
|
int ret = 0; |
|
|
jlong start, end; |
|
|
jlong start = 0, end = 0; |
|
|
|
|
|
RegisterThread(); |
|
|
|
|
@@ -1618,7 +1618,7 @@ LoadMainClass(JNIEnv *env, int mode, char *name) |
|
|
jmethodID mid; |
|
|
jstring str; |
|
|
jobject result; |
|
|
jlong start, end; |
|
|
jlong start = 0, end = 0; |
|
|
jclass cls = GetLauncherHelperClass(env); |
|
|
NULL_CHECK0(cls); |
|
|
if (JLI_IsTraceLauncher()) { |
|
@@ -1633,7 +1633,7 @@ LoadMainClass(JNIEnv *env, int mode, char *name) |
|
|
USE_STDERR, mode, str)); |
|
|
|
|
|
if (JLI_IsTraceLauncher()) { |
|
|
end = CounterGet(); |
|
|
end = CounterGet(); |
|
|
printf("%ld micro seconds to load main class\n", |
|
|
(long)(jint)Counter2Micros(end-start)); |
|
|
printf("----%s----\n", JLDEBUG_ENV_ENTRY); |
|
@@ -2080,7 +2080,7 @@ ReadKnownVMs(const char *jvmCfgName, jboolean speculative) |
|
|
char line[MAXPATHLEN+20]; |
|
|
int cnt = 0; |
|
|
int lineno = 0; |
|
|
jlong start, end; |
|
|
jlong start = 0, end = 0; |
|
|
int vmType; |
|
|
char *tmpPtr; |
|
|
char *altVMName = NULL; |
|
@@ -2172,7 +2172,7 @@ ReadKnownVMs(const char *jvmCfgName, jboolean speculative) |
|
|
knownVMsCount = cnt; |
|
|
|
|
|
if (JLI_IsTraceLauncher()) { |
|
|
end = CounterGet(); |
|
|
end = CounterGet(); |
|
|
printf("%ld micro seconds to parse jvm.cfg\n", |
|
|
(long)(jint)Counter2Micros(end-start)); |
|
|
} |
|
|
|
@@ -813,3 +813,24 @@ ProcessPlatformOption(const char *arg) |
|
|
{ |
|
|
return JNI_FALSE; |
|
|
} |
|
|
|
|
|
#ifndef __solaris__ |
|
|
|
|
|
/* |
|
|
* Provide a CounterGet() implementation based on gettimeofday() which |
|
|
* is universally available, even though it may not be 'high resolution' |
|
|
* compared to platforms that provide gethrtime() (like Solaris). It is |
|
|
* also subject to time-of-day changes, but alternatives may not be |
|
|
* known to be available at either build time or run time. |
|
|
*/ |
|
|
uint64_t CounterGet() { |
|
|
uint64_t result = 0; |
|
|
struct timeval tv; |
|
|
if (gettimeofday(&tv, NULL) != -1) { |
|
|
result = 1000000LL * (uint64_t)tv.tv_sec; |
|
|
result += (uint64_t)tv.tv_usec; |
|
|
} |
|
|
return result; |
|
|
} |
|
|
|
|
|
#endif // !__solaris__ |
|
@@ -26,17 +26,17 @@ |
|
|
#ifndef JAVA_MD_SOLINUX_H |
|
|
#define JAVA_MD_SOLINUX_H |
|
|
|
|
|
#ifdef HAVE_GETHRTIME |
|
|
#include <sys/time.h> |
|
|
#ifdef __solaris__ |
|
|
/* |
|
|
* Support for doing cheap, accurate interval timing. |
|
|
*/ |
|
|
#include <sys/time.h> |
|
|
#define CounterGet() (gethrtime()/1000) |
|
|
#define Counter2Micros(counts) (counts) |
|
|
#else /* ! HAVE_GETHRTIME */ |
|
|
#define CounterGet() (0) |
|
|
#define Counter2Micros(counts) (1) |
|
|
#endif /* HAVE_GETHRTIME */ |
|
|
#else /* ! __solaris__ */ |
|
|
uint64_t CounterGet(void); |
|
|
#define Counter2Micros(counts) (counts) |
|
|
#endif /* __solaris__ */ |
|
|
|
|
|
/* pointer to environment */ |
|
|
extern char **environ; |
|
|