comparison src/share/vm/runtime/java.cpp @ 2925:b78b4ae0757c

Also call Compiler shutdown hook in case of System.exit call. Draft VMExits.Sandbox class.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Thu, 09 Jun 2011 14:42:24 +0200
parents 23ae54207126
children 1e13559b112d
comparison
equal deleted inserted replaced
2924:9d4e5b492521 2925:b78b4ae0757c
28 #include "classfile/systemDictionary.hpp" 28 #include "classfile/systemDictionary.hpp"
29 #include "code/codeCache.hpp" 29 #include "code/codeCache.hpp"
30 #include "compiler/compileBroker.hpp" 30 #include "compiler/compileBroker.hpp"
31 #include "compiler/compilerOracle.hpp" 31 #include "compiler/compilerOracle.hpp"
32 #include "interpreter/bytecodeHistogram.hpp" 32 #include "interpreter/bytecodeHistogram.hpp"
33 #include "graal/graalCompiler.hpp"
33 #include "memory/genCollectedHeap.hpp" 34 #include "memory/genCollectedHeap.hpp"
34 #include "memory/oopFactory.hpp" 35 #include "memory/oopFactory.hpp"
35 #include "memory/universe.hpp" 36 #include "memory/universe.hpp"
36 #include "oops/constantPoolOop.hpp" 37 #include "oops/constantPoolOop.hpp"
37 #include "oops/generateOopMap.hpp" 38 #include "oops/generateOopMap.hpp"
416 #define BEFORE_EXIT_NOT_RUN 0 417 #define BEFORE_EXIT_NOT_RUN 0
417 #define BEFORE_EXIT_RUNNING 1 418 #define BEFORE_EXIT_RUNNING 1
418 #define BEFORE_EXIT_DONE 2 419 #define BEFORE_EXIT_DONE 2
419 static jint volatile _before_exit_status = BEFORE_EXIT_NOT_RUN; 420 static jint volatile _before_exit_status = BEFORE_EXIT_NOT_RUN;
420 421
422 if (UseGraal) {
423 GraalCompiler::instance()->exit();
424 }
425
421 // Note: don't use a Mutex to guard the entire before_exit(), as 426 // Note: don't use a Mutex to guard the entire before_exit(), as
422 // JVMTI post_thread_end_event and post_vm_death_event will run native code. 427 // JVMTI post_thread_end_event and post_vm_death_event will run native code.
423 // A CAS or OSMutex would work just fine but then we need to manipulate 428 // A CAS or OSMutex would work just fine but then we need to manipulate
424 // thread state for Safepoint. Here we use Monitor wait() and notify_all() 429 // thread state for Safepoint. Here we use Monitor wait() and notify_all()
425 // for synchronization. 430 // for synchronization.