Mercurial > hg > graal-compiler
comparison src/share/vm/graal/graalCompiler.hpp @ 16399:4481cf549cfc
removed (Java based) CompilationQueue
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 03 Jul 2014 23:28:35 +0200 |
parents | d32be0297274 |
children | 4a6e24a8fc2c |
comparison
equal
deleted
inserted
replaced
16398:c5ab3fbec257 | 16399:4481cf549cfc |
---|---|
30 | 30 |
31 private: | 31 private: |
32 | 32 |
33 #ifdef COMPILERGRAAL | 33 #ifdef COMPILERGRAAL |
34 bool _bootstrapping; | 34 bool _bootstrapping; |
35 volatile int _compiled; // no synchronization so may not be 100% accurate | |
36 | 35 |
37 void start_compilation_queue(); | 36 /** |
38 void shutdown_compilation_queue(); | 37 * Number of methods compiled by Graal. This is not synchronized |
38 * so may not be 100% accurate. | |
39 */ | |
40 volatile int _methodsCompiled; | |
41 | |
39 #endif | 42 #endif |
40 | 43 |
41 static GraalCompiler* _instance; | 44 static GraalCompiler* _instance; |
42 | 45 |
43 public: | 46 public: |
65 void bootstrap(); | 68 void bootstrap(); |
66 | 69 |
67 // Compilation entry point for methods | 70 // Compilation entry point for methods |
68 virtual void compile_method(ciEnv* env, ciMethod* target, int entry_bci); | 71 virtual void compile_method(ciEnv* env, ciMethod* target, int entry_bci); |
69 | 72 |
70 void compile_method(methodHandle target, int entry_bci, CompileTask* task, jboolean blocking); | 73 void compile_method(methodHandle target, int entry_bci, CompileTask* task); |
71 | 74 |
72 // Print compilation timers and statistics | 75 // Print compilation timers and statistics |
73 virtual void print_timers(); | 76 virtual void print_timers(); |
74 | 77 |
75 // Print compilation statistics | 78 // Print compilation statistics |
76 void reset_compilation_stats(); | 79 void reset_compilation_stats(); |
77 | |
78 void shutdown(); | |
79 #endif // COMPILERGRAAL | 80 #endif // COMPILERGRAAL |
80 | 81 |
81 #ifndef PRODUCT | 82 #ifndef PRODUCT |
82 void compile_the_world(); | 83 void compile_the_world(); |
83 #endif | 84 #endif |
84 }; | 85 }; |
85 | 86 |
86 #ifdef COMPILERGRAAL | |
87 /** | |
88 * Creates a scope in which scheduling a Graal compilation is disabled. | |
89 * Scheduling a compilation can happen anywhere a counter can overflow and | |
90 * calling back into the Java code for scheduling a compilation (i.e., | |
91 * CompilationTask.compileMetaspaceMethod()) from such arbitrary locations | |
92 * can cause objects to be in an unexpected state. | |
93 * | |
94 * In addition, it can be useful to disable compilation scheduling in | |
95 * other circumstances such as when initializing the Graal compilation | |
96 * queue or when running the Graal bootstrap process. | |
97 */ | |
98 class NoGraalCompilationScheduling: public StackObj { | |
99 private: | |
100 JavaThread* _thread; | |
101 public: | |
102 | |
103 NoGraalCompilationScheduling(JavaThread *thread) { | |
104 assert(thread == JavaThread::current(), "not the current thread"); | |
105 assert(thread->can_schedule_graal_compilation(), "recursive Graal compilation scheduling"); | |
106 _thread = thread; | |
107 thread->set_can_schedule_graal_compilation(false); | |
108 } | |
109 | |
110 ~NoGraalCompilationScheduling() { | |
111 assert(!_thread->can_schedule_graal_compilation(), "unexpected Graal compilation scheduling state"); | |
112 _thread->set_can_schedule_graal_compilation(true); | |
113 } | |
114 }; | |
115 #endif // COMPILERGRAAL | |
116 | |
117 #endif // SHARE_VM_GRAAL_GRAAL_COMPILER_HPP | 87 #endif // SHARE_VM_GRAAL_GRAAL_COMPILER_HPP |