< prev index next >

hotspot/src/share/vm/runtime/thread.cpp

Print this page
rev 7517 : 8080776: ARM 32 bit binaries do not run on 64 bit ARM v8 hardware
Summary: Need to know arm cpu type earlier in the init sequence to avoid illegal instruction
Reviewed-by: dholmes, dlong, bdelsart


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();


< prev index next >