hotspot/src/share/vm/runtime/arguments.cpp
changeset 17375 e9554fd82263
parent 17369 e769777dc844
child 17398 f7db0551c9eb
child 17388 8193ee82efbe
equal deleted inserted replaced
17374:a0b5154f6f6f 17375:e9554fd82263
  3180   UNSUPPORTED_GC_OPTION(UseConcMarkSweepGC);
  3180   UNSUPPORTED_GC_OPTION(UseConcMarkSweepGC);
  3181   UNSUPPORTED_GC_OPTION(UseParNewGC);
  3181   UNSUPPORTED_GC_OPTION(UseParNewGC);
  3182 }
  3182 }
  3183 #endif // INCLUDE_ALL_GCS
  3183 #endif // INCLUDE_ALL_GCS
  3184 
  3184 
       
  3185 // Sharing support
       
  3186 // Construct the path to the archive
       
  3187 static char* get_shared_archive_path() {
       
  3188   char *shared_archive_path;
       
  3189   if (SharedArchiveFile == NULL) {
       
  3190     char jvm_path[JVM_MAXPATHLEN];
       
  3191     os::jvm_path(jvm_path, sizeof(jvm_path));
       
  3192     char *end = strrchr(jvm_path, *os::file_separator());
       
  3193     if (end != NULL) *end = '\0';
       
  3194     size_t jvm_path_len = strlen(jvm_path);
       
  3195     size_t file_sep_len = strlen(os::file_separator());
       
  3196     shared_archive_path = NEW_C_HEAP_ARRAY(char, jvm_path_len +
       
  3197         file_sep_len + 20, mtInternal);
       
  3198     if (shared_archive_path != NULL) {
       
  3199       strncpy(shared_archive_path, jvm_path, jvm_path_len + 1);
       
  3200       strncat(shared_archive_path, os::file_separator(), file_sep_len);
       
  3201       strncat(shared_archive_path, "classes.jsa", 11);
       
  3202     }
       
  3203   } else {
       
  3204     shared_archive_path = NEW_C_HEAP_ARRAY(char, strlen(SharedArchiveFile) + 1, mtInternal);
       
  3205     if (shared_archive_path != NULL) {
       
  3206       strncpy(shared_archive_path, SharedArchiveFile, strlen(SharedArchiveFile) + 1);
       
  3207     }
       
  3208   }
       
  3209   return shared_archive_path;
       
  3210 }
       
  3211 
  3185 // Parse entry point called from JNI_CreateJavaVM
  3212 // Parse entry point called from JNI_CreateJavaVM
  3186 
  3213 
  3187 jint Arguments::parse(const JavaVMInitArgs* args) {
  3214 jint Arguments::parse(const JavaVMInitArgs* args) {
  3188 
       
  3189   // Sharing support
       
  3190   // Construct the path to the archive
       
  3191   char jvm_path[JVM_MAXPATHLEN];
       
  3192   os::jvm_path(jvm_path, sizeof(jvm_path));
       
  3193   char *end = strrchr(jvm_path, *os::file_separator());
       
  3194   if (end != NULL) *end = '\0';
       
  3195   char *shared_archive_path = NEW_C_HEAP_ARRAY(char, strlen(jvm_path) +
       
  3196       strlen(os::file_separator()) + 20, mtInternal);
       
  3197   if (shared_archive_path == NULL) return JNI_ENOMEM;
       
  3198   strcpy(shared_archive_path, jvm_path);
       
  3199   strcat(shared_archive_path, os::file_separator());
       
  3200   strcat(shared_archive_path, "classes");
       
  3201   strcat(shared_archive_path, ".jsa");
       
  3202   SharedArchivePath = shared_archive_path;
       
  3203 
  3215 
  3204   // Remaining part of option string
  3216   // Remaining part of option string
  3205   const char* tail;
  3217   const char* tail;
  3206 
  3218 
  3207   // If flag "-XX:Flags=flags-file" is used it will be the first option to be processed.
  3219   // If flag "-XX:Flags=flags-file" is used it will be the first option to be processed.
  3287 
  3299 
  3288   // Parse JavaVMInitArgs structure passed in, as well as JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
  3300   // Parse JavaVMInitArgs structure passed in, as well as JAVA_TOOL_OPTIONS and _JAVA_OPTIONS
  3289   jint result = parse_vm_init_args(args);
  3301   jint result = parse_vm_init_args(args);
  3290   if (result != JNI_OK) {
  3302   if (result != JNI_OK) {
  3291     return result;
  3303     return result;
       
  3304   }
       
  3305 
       
  3306   // Call get_shared_archive_path() here, after possible SharedArchiveFile option got parsed.
       
  3307   SharedArchivePath = get_shared_archive_path();
       
  3308   if (SharedArchivePath == NULL) {
       
  3309     return JNI_ENOMEM;
  3292   }
  3310   }
  3293 
  3311 
  3294   // Delay warning until here so that we've had a chance to process
  3312   // Delay warning until here so that we've had a chance to process
  3295   // the -XX:-PrintWarnings flag
  3313   // the -XX:-PrintWarnings flag
  3296   if (needs_hotspotrc_warning) {
  3314   if (needs_hotspotrc_warning) {