src/share/bin/java.c

Print this page
rev 9771 : 8042469 : Launcher changes for native memory tracking scalability enhancement


 987     JLI_FreeManifest();
 988     JLI_MemFree(new_argv);
 989     return;
 990 }
 991 
 992 /*
 993  * Parses command line arguments.  Returns JNI_FALSE if launcher
 994  * should exit without starting vm, returns JNI_TRUE if vm needs
 995  * to be started to process given options.  *pret (the launcher
 996  * process return value) is set to 0 for a normal exit.
 997  */
 998 static jboolean
 999 ParseArguments(int *pargc, char ***pargv,
1000                int *pmode, char **pwhat,
1001                int *pret, const char *jrepath)
1002 {
1003     int argc = *pargc;
1004     char **argv = *pargv;
1005     int mode = LM_UNKNOWN;
1006     char *arg;

1007 
1008     *pret = 0;
1009 
1010     while ((arg = *argv) != 0 && *arg == '-') {
1011         argv++; --argc;
1012         if (JLI_StrCmp(arg, "-classpath") == 0 || JLI_StrCmp(arg, "-cp") == 0) {
1013             ARG_CHECK (argc, ARG_ERROR1, arg);
1014             SetClassPath(*argv);
1015             mode = LM_CLASS;
1016             argv++; --argc;
1017         } else if (JLI_StrCmp(arg, "-jar") == 0) {
1018             ARG_CHECK (argc, ARG_ERROR2, arg);
1019             mode = LM_JAR;
1020         } else if (JLI_StrCmp(arg, "-help") == 0 ||
1021                    JLI_StrCmp(arg, "-h") == 0 ||
1022                    JLI_StrCmp(arg, "-?") == 0) {
1023             printUsage = JNI_TRUE;
1024             return JNI_TRUE;
1025         } else if (JLI_StrCmp(arg, "-version") == 0) {
1026             printVersion = JNI_TRUE;
1027             return JNI_TRUE;
1028         } else if (JLI_StrCmp(arg, "-showversion") == 0) {
1029             showVersion = JNI_TRUE;
1030         } else if (JLI_StrCmp(arg, "-X") == 0) {
1031             printXUsage = JNI_TRUE;
1032             return JNI_TRUE;


































1033 /*
1034  * The following case checks for -XshowSettings OR -XshowSetting:SUBOPT.
1035  * In the latter case, any SUBOPT value not recognized will default to "all"
1036  */
1037         } else if (JLI_StrCmp(arg, "-XshowSettings") == 0 ||
1038                 JLI_StrCCmp(arg, "-XshowSettings:") == 0) {
1039             showSettings = arg;
1040         } else if (JLI_StrCmp(arg, "-Xdiag") == 0) {
1041             AddOption("-Dsun.java.launcher.diag=true", NULL);
1042 /*
1043  * The following case provide backward compatibility with old-style
1044  * command line options.
1045  */
1046         } else if (JLI_StrCmp(arg, "-fullversion") == 0) {
1047             JLI_ReportMessage("%s full version \"%s\"", _launcher_name, GetFullVersion());
1048             return JNI_FALSE;
1049         } else if (JLI_StrCmp(arg, "-verbosegc") == 0) {
1050             AddOption("-verbose:gc", NULL);
1051         } else if (JLI_StrCmp(arg, "-t") == 0) {
1052             AddOption("-Xt", NULL);




 987     JLI_FreeManifest();
 988     JLI_MemFree(new_argv);
 989     return;
 990 }
 991 
 992 /*
 993  * Parses command line arguments.  Returns JNI_FALSE if launcher
 994  * should exit without starting vm, returns JNI_TRUE if vm needs
 995  * to be started to process given options.  *pret (the launcher
 996  * process return value) is set to 0 for a normal exit.
 997  */
 998 static jboolean
 999 ParseArguments(int *pargc, char ***pargv,
1000                int *pmode, char **pwhat,
1001                int *pret, const char *jrepath)
1002 {
1003     int argc = *pargc;
1004     char **argv = *pargv;
1005     int mode = LM_UNKNOWN;
1006     char *arg;
1007     static const char*  NMT_Env_Name    = "NMT_LEVEL_";
1008 
1009     *pret = 0;
1010 
1011     while ((arg = *argv) != 0 && *arg == '-') {
1012         argv++; --argc;
1013         if (JLI_StrCmp(arg, "-classpath") == 0 || JLI_StrCmp(arg, "-cp") == 0) {
1014             ARG_CHECK (argc, ARG_ERROR1, arg);
1015             SetClassPath(*argv);
1016             mode = LM_CLASS;
1017             argv++; --argc;
1018         } else if (JLI_StrCmp(arg, "-jar") == 0) {
1019             ARG_CHECK (argc, ARG_ERROR2, arg);
1020             mode = LM_JAR;
1021         } else if (JLI_StrCmp(arg, "-help") == 0 ||
1022                    JLI_StrCmp(arg, "-h") == 0 ||
1023                    JLI_StrCmp(arg, "-?") == 0) {
1024             printUsage = JNI_TRUE;
1025             return JNI_TRUE;
1026         } else if (JLI_StrCmp(arg, "-version") == 0) {
1027             printVersion = JNI_TRUE;
1028             return JNI_TRUE;
1029         } else if (JLI_StrCmp(arg, "-showversion") == 0) {
1030             showVersion = JNI_TRUE;
1031         } else if (JLI_StrCmp(arg, "-X") == 0) {
1032             printXUsage = JNI_TRUE;
1033             return JNI_TRUE;
1034 /*
1035  * The following case checks for "-XX:NativeMemoryTracking=value".
1036  * If value is non null, an environmental variable set to this value
1037  * will be created to be used by the JVM.
1038  * The argument is passed to the JVM, which will check validity.
1039  */
1040         } else if (JLI_StrCCmp(arg, "-XX:NativeMemoryTracking=") == 0) {
1041             int retval;
1042             // get what follows this parameter, include "="
1043             size_t pnlen = JLI_StrLen("-XX:NativeMemoryTracking=");
1044             if (JLI_StrLen(arg) > pnlen) {
1045                 char* value = arg + pnlen;
1046                 size_t pbuflen = pnlen + JLI_StrLen(value) + 10; // 10 max pid#
1047                 char * pbuf = malloc(pbuflen);
1048                 JLI_Snprintf(pbuf, pbuflen, "%s%d=%s", NMT_Env_Name, JLI_GetPid(), value);
1049                 retval = JLI_PutEnv(pbuf);
1050                 if (JLI_IsTraceLauncher()) {
1051                     char* envName;
1052                     char* envBuf;
1053 
1054                     envName = malloc(pbuflen);
1055                     JLI_Snprintf(envName, pbuflen, "%s%d", NMT_Env_Name, JLI_GetPid());
1056                     
1057                     printf("TRACER_MARKER: NativeMemoryTracking: env var is %s\n",envName);
1058                     printf("TRACER_MARKER: NativeMemoryTracking: putenv arg %s\n",pbuf);
1059                     envBuf = getenv(envName);
1060                     printf("TRACER_MARKER: NativeMemoryTracking: got value %s\n",envBuf);
1061                 }
1062 
1063                 free(pbuf);
1064             }
1065 
1066             // The argument is passed to JVM for comment.
1067             AddOption(arg, NULL);
1068 /*
1069  * The following case checks for -XshowSettings OR -XshowSetting:SUBOPT.
1070  * In the latter case, any SUBOPT value not recognized will default to "all"
1071  */
1072         } else if (JLI_StrCmp(arg, "-XshowSettings") == 0 ||
1073                 JLI_StrCCmp(arg, "-XshowSettings:") == 0) {
1074             showSettings = arg;
1075         } else if (JLI_StrCmp(arg, "-Xdiag") == 0) {
1076             AddOption("-Dsun.java.launcher.diag=true", NULL);
1077 /*
1078  * The following case provide backward compatibility with old-style
1079  * command line options.
1080  */
1081         } else if (JLI_StrCmp(arg, "-fullversion") == 0) {
1082             JLI_ReportMessage("%s full version \"%s\"", _launcher_name, GetFullVersion());
1083             return JNI_FALSE;
1084         } else if (JLI_StrCmp(arg, "-verbosegc") == 0) {
1085             AddOption("-verbose:gc", NULL);
1086         } else if (JLI_StrCmp(arg, "-t") == 0) {
1087             AddOption("-Xt", NULL);