52 int _system_dictionary_modification_counter;
53 ciObjectFactory* _factory;
54 OopRecorder* _oop_recorder;
55 DebugInformationRecorder* _debug_info;
56 Dependencies* _dependencies;
57 const char* _failure_reason;
58 int _compilable;
59 bool _break_at_compile;
60 int _num_inlined_bytecodes;
61 CompileTask* _task; // faster access to CompilerThread::task
62 CompileLog* _log; // faster access to CompilerThread::log
63 void* _compiler_data; // compiler-specific stuff, if any
64
65 char* _name_buffer;
66 int _name_buffer_len;
67
68 // Cache Jvmti state
69 bool _jvmti_can_hotswap_or_post_breakpoint;
70 bool _jvmti_can_access_local_variables;
71 bool _jvmti_can_post_on_exceptions;
72
73 // Cache DTrace flags
74 bool _dtrace_extended_probes;
75 bool _dtrace_monitor_probes;
76 bool _dtrace_method_probes;
77 bool _dtrace_alloc_probes;
78
79 // Distinguished instances of certain ciObjects..
80 static ciObject* _null_object_instance;
81
82 #define WK_KLASS_DECL(name, ignore_s, ignore_o) static ciInstanceKlass* _##name;
83 WK_KLASSES_DO(WK_KLASS_DECL)
84 #undef WK_KLASS_DECL
85
86 static ciSymbol* _unloaded_cisymbol;
87 static ciInstanceKlass* _unloaded_ciinstance_klass;
88 static ciObjArrayKlass* _unloaded_ciobjarrayklass;
89
90 static jobject _ArrayIndexOutOfBoundsException_handle;
91 static jobject _ArrayStoreException_handle;
315
316 const char* retry_message() const {
317 switch (_compilable) {
318 case ciEnv::MethodCompilable_not_at_tier:
319 return "retry at different tier";
320 case ciEnv::MethodCompilable_never:
321 return "not retryable";
322 case ciEnv::MethodCompilable:
323 return NULL;
324 default:
325 ShouldNotReachHere();
326 return NULL;
327 }
328 }
329
330 bool break_at_compile() { return _break_at_compile; }
331 void set_break_at_compile(bool z) { _break_at_compile = z; }
332
333 // Cache Jvmti state
334 void cache_jvmti_state();
335 bool jvmti_can_hotswap_or_post_breakpoint() const { return _jvmti_can_hotswap_or_post_breakpoint; }
336 bool jvmti_can_access_local_variables() const { return _jvmti_can_access_local_variables; }
337 bool jvmti_can_post_on_exceptions() const { return _jvmti_can_post_on_exceptions; }
338
339 // Cache DTrace flags
340 void cache_dtrace_flags();
341 bool dtrace_extended_probes() const { return _dtrace_extended_probes; }
342 bool dtrace_monitor_probes() const { return _dtrace_monitor_probes; }
343 bool dtrace_method_probes() const { return _dtrace_method_probes; }
344 bool dtrace_alloc_probes() const { return _dtrace_alloc_probes; }
345
346 // The compiler task which has created this env.
347 // May be useful to find out compile_id, comp_level, etc.
348 CompileTask* task() { return _task; }
349 // Handy forwards to the task:
350 int comp_level(); // task()->comp_level()
351 uint compile_id(); // task()->compile_id()
352
353 // Register the result of a compilation.
354 void register_method(ciMethod* target,
355 int entry_bci,
356 CodeOffsets* offsets,
|
52 int _system_dictionary_modification_counter;
53 ciObjectFactory* _factory;
54 OopRecorder* _oop_recorder;
55 DebugInformationRecorder* _debug_info;
56 Dependencies* _dependencies;
57 const char* _failure_reason;
58 int _compilable;
59 bool _break_at_compile;
60 int _num_inlined_bytecodes;
61 CompileTask* _task; // faster access to CompilerThread::task
62 CompileLog* _log; // faster access to CompilerThread::log
63 void* _compiler_data; // compiler-specific stuff, if any
64
65 char* _name_buffer;
66 int _name_buffer_len;
67
68 // Cache Jvmti state
69 bool _jvmti_can_hotswap_or_post_breakpoint;
70 bool _jvmti_can_access_local_variables;
71 bool _jvmti_can_post_on_exceptions;
72 bool _jvmti_can_pop_frame;
73
74 // Cache DTrace flags
75 bool _dtrace_extended_probes;
76 bool _dtrace_monitor_probes;
77 bool _dtrace_method_probes;
78 bool _dtrace_alloc_probes;
79
80 // Distinguished instances of certain ciObjects..
81 static ciObject* _null_object_instance;
82
83 #define WK_KLASS_DECL(name, ignore_s, ignore_o) static ciInstanceKlass* _##name;
84 WK_KLASSES_DO(WK_KLASS_DECL)
85 #undef WK_KLASS_DECL
86
87 static ciSymbol* _unloaded_cisymbol;
88 static ciInstanceKlass* _unloaded_ciinstance_klass;
89 static ciObjArrayKlass* _unloaded_ciobjarrayklass;
90
91 static jobject _ArrayIndexOutOfBoundsException_handle;
92 static jobject _ArrayStoreException_handle;
316
317 const char* retry_message() const {
318 switch (_compilable) {
319 case ciEnv::MethodCompilable_not_at_tier:
320 return "retry at different tier";
321 case ciEnv::MethodCompilable_never:
322 return "not retryable";
323 case ciEnv::MethodCompilable:
324 return NULL;
325 default:
326 ShouldNotReachHere();
327 return NULL;
328 }
329 }
330
331 bool break_at_compile() { return _break_at_compile; }
332 void set_break_at_compile(bool z) { _break_at_compile = z; }
333
334 // Cache Jvmti state
335 void cache_jvmti_state();
336 bool jvmti_state_changed() const;
337 bool should_retain_local_variables() const;
338 bool jvmti_can_hotswap_or_post_breakpoint() const { return _jvmti_can_hotswap_or_post_breakpoint; }
339 bool jvmti_can_post_on_exceptions() const { return _jvmti_can_post_on_exceptions; }
340
341 // Cache DTrace flags
342 void cache_dtrace_flags();
343 bool dtrace_extended_probes() const { return _dtrace_extended_probes; }
344 bool dtrace_monitor_probes() const { return _dtrace_monitor_probes; }
345 bool dtrace_method_probes() const { return _dtrace_method_probes; }
346 bool dtrace_alloc_probes() const { return _dtrace_alloc_probes; }
347
348 // The compiler task which has created this env.
349 // May be useful to find out compile_id, comp_level, etc.
350 CompileTask* task() { return _task; }
351 // Handy forwards to the task:
352 int comp_level(); // task()->comp_level()
353 uint compile_id(); // task()->compile_id()
354
355 // Register the result of a compilation.
356 void register_method(ciMethod* target,
357 int entry_bci,
358 CodeOffsets* offsets,
|