comparison src/share/vm/graal/graalCompiler.cpp @ 15463:a20be10ad437

made Graal work with the HotSpot compiler queue and compiler threads, enabled by -XX:-UseGraalCompilationQueue
author Doug Simon <doug.simon@oracle.com>
date Fri, 02 May 2014 00:36:27 +0200
parents 6876a4599b7e
children 07fac8558d7b
comparison
equal deleted inserted replaced
15462:05d3f069cff2 15463:a20be10ad437
42 _instance = this; 42 _instance = this;
43 } 43 }
44 44
45 // Initialization 45 // Initialization
46 void GraalCompiler::initialize() { 46 void GraalCompiler::initialize() {
47 47 if (!should_perform_init()) {
48 return;
49 }
50
48 ThreadToNativeFromVM trans(JavaThread::current()); 51 ThreadToNativeFromVM trans(JavaThread::current());
49 JavaThread* THREAD = JavaThread::current(); 52 JavaThread* THREAD = JavaThread::current();
50 TRACE_graal_1("GraalCompiler::initialize"); 53 TRACE_graal_1("GraalCompiler::initialize");
51 54
52 uintptr_t heap_end = (uintptr_t) Universe::heap()->reserved_region().end(); 55 uintptr_t heap_end = (uintptr_t) Universe::heap()->reserved_region().end();
98 VMToCompiler::finalizeOptions(CITime || CITimeEach); 101 VMToCompiler::finalizeOptions(CITime || CITimeEach);
99 102
100 if (UseCompiler) { 103 if (UseCompiler) {
101 _external_deopt_i2c_entry = create_external_deopt_i2c(); 104 _external_deopt_i2c_entry = create_external_deopt_i2c();
102 #ifdef COMPILERGRAAL 105 #ifdef COMPILERGRAAL
103 bool bootstrap = FLAG_IS_DEFAULT(BootstrapGraal) ? !TieredCompilation : BootstrapGraal; 106 bool bootstrap = UseGraalCompilationQueue && (FLAG_IS_DEFAULT(BootstrapGraal) ? !TieredCompilation : BootstrapGraal);
104 #else 107 #else
105 bool bootstrap = false; 108 bool bootstrap = false;
106 #endif 109 #endif
107 VMToCompiler::startCompiler(bootstrap); 110 VMToCompiler::startCompiler(bootstrap);
108 _initialized = true; 111 _initialized = true;
170 } 173 }
171 } 174 }
172 return buffer_blob; 175 return buffer_blob;
173 } 176 }
174 177
175 void GraalCompiler::compile_method(methodHandle method, int entry_bci, jboolean blocking) { 178 void GraalCompiler::compile_method(methodHandle method, int entry_bci, CompileTask* task, jboolean blocking) {
176 GRAAL_EXCEPTION_CONTEXT 179 GRAAL_EXCEPTION_CONTEXT
177 if (!_initialized) { 180 if (!_initialized) {
178 CompilationPolicy::policy()->delay_compilation(method()); 181 CompilationPolicy::policy()->delay_compilation(method());
179 return; 182 return;
180 } 183 }
181 184
182 assert(_initialized, "must already be initialized"); 185 assert(_initialized, "must already be initialized");
183 ResourceMark rm; 186 ResourceMark rm;
184 thread->set_is_graal_compiling(true); 187 thread->set_is_graal_compiling(true);
185 VMToCompiler::compileMethod(method(), entry_bci, blocking); 188 VMToCompiler::compileMethod(method(), entry_bci, (jlong) (address) task, blocking);
186 thread->set_is_graal_compiling(false); 189 thread->set_is_graal_compiling(false);
187 } 190 }
188 191
189 // Compilation entry point for methods 192 // Compilation entry point for methods
190 void GraalCompiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci) { 193 void GraalCompiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci) {