src/share/vm/compiler/compileBroker.hpp
Print this page
rev 1083 : code cache unloading for webrev 091214
rev 1085 : checkpoint unloading changes on 100107
rev 1087 : use enum for passing compiler on/off state
@@ -191,10 +191,13 @@
private:
static bool _initialized;
static volatile bool _should_block;
+ // This flag can be used to stop compilation or turn it back on
+ static volatile jint _should_compile_new_jobs;
+
// The installed compiler(s)
static AbstractCompiler* _compilers[2];
// These counters are used for assigning id's to each compilation
static uint _compilation_id;
@@ -317,19 +320,34 @@
methodHandle hot_method, int hot_count,
const char* comment, TRAPS);
static void compiler_thread_loop();
+ static uint get_compilation_id() { return _compilation_id; }
static bool is_idle();
// Set _should_block.
// Call this from the VM, with Threads_lock held and a safepoint requested.
static void set_should_block();
// Call this from the compiler at convenient points, to poll for _should_block.
static void maybe_block();
+ enum {
+ // Flags for toggling compiler activity
+ stop_compilation = 0,
+ run_compilation = 1
+ };
+
+ static bool should_compile_new_jobs() { return UseCompiler && (_should_compile_new_jobs == run_compilation); }
+ static bool set_should_compile_new_jobs(jint new_state) {
+ // Return success if the current caller set it
+ jint old = Atomic::cmpxchg(new_state, &_should_compile_new_jobs, 1-new_state);
+ return (old == (1-new_state));
+ }
+ static void handle_full_code_cache();
+
// Return total compilation ticks
static jlong total_compilation_ticks() {
return _perf_total_compilation != NULL ? _perf_total_compilation->get_value() : 0;
}