src/share/vm/compiler/compileBroker.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File JDK-8022494 Sdiff src/share/vm/compiler

src/share/vm/compiler/compileBroker.hpp

Print this page




 229 public:
 230   CompileTaskWrapper(CompileTask* task);
 231   ~CompileTaskWrapper();
 232 };
 233 
 234 
 235 // Compilation
 236 //
 237 // The broker for all compilation requests.
 238 class CompileBroker: AllStatic {
 239  friend class Threads;
 240   friend class CompileTaskWrapper;
 241 
 242  public:
 243   enum {
 244     name_buffer_length = 100
 245   };
 246 
 247   // Compile type Information for print_last_compile() and CompilerCounters
 248   enum { no_compile, normal_compile, osr_compile, native_compile };


 249 
 250  private:
 251   static bool _initialized;
 252   static volatile bool _should_block;
 253 
 254   // This flag can be used to stop compilation or turn it back on
 255   static volatile jint _should_compile_new_jobs;
 256 
 257   // The installed compiler(s)
 258   static AbstractCompiler* _compilers[2];
 259 
 260   // These counters are used for assigning id's to each compilation
 261   static uint _compilation_id;
 262   static uint _osr_compilation_id;
 263   static uint _native_compilation_id;
 264 
 265   static int  _last_compile_type;
 266   static int  _last_compile_level;
 267   static char _last_method_compiled[name_buffer_length];
 268 
 269   static CompileQueue* _c2_method_queue;
 270   static CompileQueue* _c1_method_queue;
 271   static CompileTask* _task_free_list;
 272 
 273   static GrowableArray<CompilerThread*>* _compiler_threads;
 274 
 275   // performance counters
 276   static PerfCounter* _perf_total_compilation;
 277   static PerfCounter* _perf_native_compilation;
 278   static PerfCounter* _perf_osr_compilation;
 279   static PerfCounter* _perf_standard_compilation;
 280 
 281   static PerfCounter* _perf_total_bailout_count;
 282   static PerfCounter* _perf_total_invalidated_count;
 283   static PerfCounter* _perf_total_compile_count;


 302   static elapsedTimer _t_total_compilation;
 303   static elapsedTimer _t_osr_compilation;
 304   static elapsedTimer _t_standard_compilation;
 305 
 306   static int _total_compile_count;
 307   static int _total_bailout_count;
 308   static int _total_invalidated_count;
 309   static int _total_native_compile_count;
 310   static int _total_osr_compile_count;
 311   static int _total_standard_compile_count;
 312   static int _sum_osr_bytes_compiled;
 313   static int _sum_standard_bytes_compiled;
 314   static int _sum_nmethod_size;
 315   static int _sum_nmethod_code_size;
 316   static long _peak_compilation_time;
 317 
 318   static CompilerThread* make_compiler_thread(const char* name, CompileQueue* queue, CompilerCounters* counters, AbstractCompiler* comp, TRAPS);
 319   static void init_compiler_threads(int c1_compiler_count, int c2_compiler_count);
 320   static bool compilation_is_complete  (methodHandle method, int osr_bci, int comp_level);
 321   static bool compilation_is_prohibited(methodHandle method, int osr_bci, int comp_level);
 322   static uint assign_compile_id        (methodHandle method, int osr_bci);
 323   static bool is_compile_blocking      (methodHandle method, int osr_bci);
 324   static void preload_classes          (methodHandle method, TRAPS);
 325 
 326   static CompileTask* create_compile_task(CompileQueue* queue,
 327                                           int           compile_id,
 328                                           methodHandle  method,
 329                                           int           osr_bci,
 330                                           int           comp_level,
 331                                           methodHandle  hot_method,
 332                                           int           hot_count,
 333                                           const char*   comment,
 334                                           bool          blocking);
 335   static CompileTask* allocate_task();
 336   static void free_task(CompileTask* task);
 337   static void wait_for_completion(CompileTask* task);
 338 
 339   static void invoke_compiler_on_method(CompileTask* task);
 340   static void set_last_compile(CompilerThread *thread, methodHandle method, bool is_osr, int comp_level);
 341   static void push_jni_handle_block();
 342   static void pop_jni_handle_block();




 229 public:
 230   CompileTaskWrapper(CompileTask* task);
 231   ~CompileTaskWrapper();
 232 };
 233 
 234 
 235 // Compilation
 236 //
 237 // The broker for all compilation requests.
 238 class CompileBroker: AllStatic {
 239  friend class Threads;
 240   friend class CompileTaskWrapper;
 241 
 242  public:
 243   enum {
 244     name_buffer_length = 100
 245   };
 246 
 247   // Compile type Information for print_last_compile() and CompilerCounters
 248   enum { no_compile, normal_compile, osr_compile, native_compile };
 249   static int assign_compile_id (methodHandle method, int osr_bci);
 250 
 251 
 252  private:
 253   static bool _initialized;
 254   static volatile bool _should_block;
 255 
 256   // This flag can be used to stop compilation or turn it back on
 257   static volatile jint _should_compile_new_jobs;
 258 
 259   // The installed compiler(s)
 260   static AbstractCompiler* _compilers[2];
 261 
 262   // These counters are used for assigning id's to each compilation
 263   static volatile jint _compilation_id;
 264   static volatile jint _osr_compilation_id;

 265 
 266   static int  _last_compile_type;
 267   static int  _last_compile_level;
 268   static char _last_method_compiled[name_buffer_length];
 269 
 270   static CompileQueue* _c2_method_queue;
 271   static CompileQueue* _c1_method_queue;
 272   static CompileTask* _task_free_list;
 273 
 274   static GrowableArray<CompilerThread*>* _compiler_threads;
 275 
 276   // performance counters
 277   static PerfCounter* _perf_total_compilation;
 278   static PerfCounter* _perf_native_compilation;
 279   static PerfCounter* _perf_osr_compilation;
 280   static PerfCounter* _perf_standard_compilation;
 281 
 282   static PerfCounter* _perf_total_bailout_count;
 283   static PerfCounter* _perf_total_invalidated_count;
 284   static PerfCounter* _perf_total_compile_count;


 303   static elapsedTimer _t_total_compilation;
 304   static elapsedTimer _t_osr_compilation;
 305   static elapsedTimer _t_standard_compilation;
 306 
 307   static int _total_compile_count;
 308   static int _total_bailout_count;
 309   static int _total_invalidated_count;
 310   static int _total_native_compile_count;
 311   static int _total_osr_compile_count;
 312   static int _total_standard_compile_count;
 313   static int _sum_osr_bytes_compiled;
 314   static int _sum_standard_bytes_compiled;
 315   static int _sum_nmethod_size;
 316   static int _sum_nmethod_code_size;
 317   static long _peak_compilation_time;
 318 
 319   static CompilerThread* make_compiler_thread(const char* name, CompileQueue* queue, CompilerCounters* counters, AbstractCompiler* comp, TRAPS);
 320   static void init_compiler_threads(int c1_compiler_count, int c2_compiler_count);
 321   static bool compilation_is_complete  (methodHandle method, int osr_bci, int comp_level);
 322   static bool compilation_is_prohibited(methodHandle method, int osr_bci, int comp_level);

 323   static bool is_compile_blocking      (methodHandle method, int osr_bci);
 324   static void preload_classes          (methodHandle method, TRAPS);
 325 
 326   static CompileTask* create_compile_task(CompileQueue* queue,
 327                                           int           compile_id,
 328                                           methodHandle  method,
 329                                           int           osr_bci,
 330                                           int           comp_level,
 331                                           methodHandle  hot_method,
 332                                           int           hot_count,
 333                                           const char*   comment,
 334                                           bool          blocking);
 335   static CompileTask* allocate_task();
 336   static void free_task(CompileTask* task);
 337   static void wait_for_completion(CompileTask* task);
 338 
 339   static void invoke_compiler_on_method(CompileTask* task);
 340   static void set_last_compile(CompilerThread *thread, methodHandle method, bool is_osr, int comp_level);
 341   static void push_jni_handle_block();
 342   static void pop_jni_handle_block();


src/share/vm/compiler/compileBroker.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File