3290 tc->do_thread(VMThread::vm_thread());
3291 Universe::heap()->gc_threads_do(tc);
3292 WatcherThread *wt = WatcherThread::watcher_thread();
3293 // Strictly speaking, the following NULL check isn't sufficient to make sure
3294 // the data for WatcherThread is still valid upon being examined. However,
3295 // considering that WatchThread terminates when the VM is on the way to
3296 // exit at safepoint, the chance of the above is extremely small. The right
3297 // way to prevent termination of WatcherThread would be to acquire
3298 // Terminator_lock, but we can't do that without violating the lock rank
3299 // checking in some cases.
3300 if (wt != NULL)
3301 tc->do_thread(wt);
3302
3303 // If CompilerThreads ever become non-JavaThreads, add them here
3304 }
3305
3306 jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
3307
3308 extern void JDK_Version_init();
3309
3310 // Check version
3311 if (!is_supported_jni_version(args->version)) return JNI_EVERSION;
3312
3313 // Initialize the output stream module
3314 ostream_init();
3315
3316 // Process java launcher properties.
3317 Arguments::process_sun_java_launcher_properties(args);
3318
3319 // Initialize the os module before using TLS
3320 os::init();
3321
3322 // Initialize system properties.
3323 Arguments::init_system_properties();
3324
3325 // So that JDK version can be used as a discrimintor when parsing arguments
3326 JDK_Version_init();
3327
3328 // Update/Initialize System properties after JDK version number is known
3329 Arguments::init_version_specific_system_properties();
|
3290 tc->do_thread(VMThread::vm_thread());
3291 Universe::heap()->gc_threads_do(tc);
3292 WatcherThread *wt = WatcherThread::watcher_thread();
3293 // Strictly speaking, the following NULL check isn't sufficient to make sure
3294 // the data for WatcherThread is still valid upon being examined. However,
3295 // considering that WatchThread terminates when the VM is on the way to
3296 // exit at safepoint, the chance of the above is extremely small. The right
3297 // way to prevent termination of WatcherThread would be to acquire
3298 // Terminator_lock, but we can't do that without violating the lock rank
3299 // checking in some cases.
3300 if (wt != NULL)
3301 tc->do_thread(wt);
3302
3303 // If CompilerThreads ever become non-JavaThreads, add them here
3304 }
3305
3306 jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
3307
3308 extern void JDK_Version_init();
3309
3310 // Preinitialize version info.
3311 VM_Version::early_initialize();
3312
3313 // Check version
3314 if (!is_supported_jni_version(args->version)) return JNI_EVERSION;
3315
3316 // Initialize the output stream module
3317 ostream_init();
3318
3319 // Process java launcher properties.
3320 Arguments::process_sun_java_launcher_properties(args);
3321
3322 // Initialize the os module before using TLS
3323 os::init();
3324
3325 // Initialize system properties.
3326 Arguments::init_system_properties();
3327
3328 // So that JDK version can be used as a discrimintor when parsing arguments
3329 JDK_Version_init();
3330
3331 // Update/Initialize System properties after JDK version number is known
3332 Arguments::init_version_specific_system_properties();
|