equal
deleted
inserted
replaced
49 friend class PrepareExtraDataClosure; |
49 friend class PrepareExtraDataClosure; |
50 |
50 |
51 private: |
51 private: |
52 Arena* _arena; // Alias for _ciEnv_arena except in init_shared_objects() |
52 Arena* _arena; // Alias for _ciEnv_arena except in init_shared_objects() |
53 Arena _ciEnv_arena; |
53 Arena _ciEnv_arena; |
54 int _system_dictionary_modification_counter; |
|
55 ciObjectFactory* _factory; |
54 ciObjectFactory* _factory; |
56 OopRecorder* _oop_recorder; |
55 OopRecorder* _oop_recorder; |
57 DebugInformationRecorder* _debug_info; |
56 DebugInformationRecorder* _debug_info; |
58 Dependencies* _dependencies; |
57 Dependencies* _dependencies; |
59 const char* _failure_reason; |
58 const char* _failure_reason; |
67 |
66 |
68 char* _name_buffer; |
67 char* _name_buffer; |
69 int _name_buffer_len; |
68 int _name_buffer_len; |
70 |
69 |
71 // Cache Jvmti state |
70 // Cache Jvmti state |
|
71 uint64_t _jvmti_redefinition_count; |
72 bool _jvmti_can_hotswap_or_post_breakpoint; |
72 bool _jvmti_can_hotswap_or_post_breakpoint; |
73 bool _jvmti_can_access_local_variables; |
73 bool _jvmti_can_access_local_variables; |
74 bool _jvmti_can_post_on_exceptions; |
74 bool _jvmti_can_post_on_exceptions; |
75 bool _jvmti_can_pop_frame; |
75 bool _jvmti_can_pop_frame; |
|
76 bool _jvmti_can_get_owned_monitor_info; // includes can_get_owned_monitor_stack_depth_info |
76 |
77 |
77 // Cache DTrace flags |
78 // Cache DTrace flags |
78 bool _dtrace_extended_probes; |
79 bool _dtrace_extended_probes; |
79 bool _dtrace_monitor_probes; |
80 bool _dtrace_monitor_probes; |
80 bool _dtrace_method_probes; |
81 bool _dtrace_method_probes; |
289 static bool is_in_vm(); |
290 static bool is_in_vm(); |
290 |
291 |
291 // Helper routine for determining the validity of a compilation with |
292 // Helper routine for determining the validity of a compilation with |
292 // respect to method dependencies (e.g. concurrent class loading). |
293 // respect to method dependencies (e.g. concurrent class loading). |
293 void validate_compile_task_dependencies(ciMethod* target); |
294 void validate_compile_task_dependencies(ciMethod* target); |
294 |
|
295 // Call internally when Compile_lock is already held. |
|
296 bool system_dictionary_modification_counter_changed_locked(); |
|
297 public: |
295 public: |
298 enum { |
296 enum { |
299 MethodCompilable, |
297 MethodCompilable, |
300 MethodCompilable_not_at_tier, |
298 MethodCompilable_not_at_tier, |
301 MethodCompilable_never |
299 MethodCompilable_never |
302 }; |
300 }; |
303 |
301 |
304 ciEnv(CompileTask* task, int system_dictionary_modification_counter); |
302 ciEnv(CompileTask* task); |
305 // Used only during initialization of the ci |
303 // Used only during initialization of the ci |
306 ciEnv(Arena* arena); |
304 ciEnv(Arena* arena); |
307 ~ciEnv(); |
305 ~ciEnv(); |
308 |
306 |
309 OopRecorder* oop_recorder() { return _oop_recorder; } |
307 OopRecorder* oop_recorder() { return _oop_recorder; } |
348 bool should_retain_local_variables() const { |
346 bool should_retain_local_variables() const { |
349 return _jvmti_can_access_local_variables || _jvmti_can_pop_frame; |
347 return _jvmti_can_access_local_variables || _jvmti_can_pop_frame; |
350 } |
348 } |
351 bool jvmti_can_hotswap_or_post_breakpoint() const { return _jvmti_can_hotswap_or_post_breakpoint; } |
349 bool jvmti_can_hotswap_or_post_breakpoint() const { return _jvmti_can_hotswap_or_post_breakpoint; } |
352 bool jvmti_can_post_on_exceptions() const { return _jvmti_can_post_on_exceptions; } |
350 bool jvmti_can_post_on_exceptions() const { return _jvmti_can_post_on_exceptions; } |
|
351 bool jvmti_can_get_owned_monitor_info() const { return _jvmti_can_get_owned_monitor_info; } |
353 |
352 |
354 // Cache DTrace flags |
353 // Cache DTrace flags |
355 void cache_dtrace_flags(); |
354 void cache_dtrace_flags(); |
356 bool dtrace_extended_probes() const { return _dtrace_extended_probes; } |
355 bool dtrace_extended_probes() const { return _dtrace_extended_probes; } |
357 bool dtrace_monitor_probes() const { return _dtrace_monitor_probes; } |
356 bool dtrace_monitor_probes() const { return _dtrace_monitor_probes; } |
454 |
453 |
455 // Output stream for logging compilation info. |
454 // Output stream for logging compilation info. |
456 CompileLog* log() { return _log; } |
455 CompileLog* log() { return _log; } |
457 void set_log(CompileLog* log) { _log = log; } |
456 void set_log(CompileLog* log) { _log = log; } |
458 |
457 |
459 // Check for changes to the system dictionary during compilation |
|
460 bool system_dictionary_modification_counter_changed(); |
|
461 |
|
462 void record_failure(const char* reason); // Record failure and report later |
458 void record_failure(const char* reason); // Record failure and report later |
463 void report_failure(const char* reason); // Report failure immediately |
459 void report_failure(const char* reason); // Report failure immediately |
464 void record_method_not_compilable(const char* reason, bool all_tiers = true); |
460 void record_method_not_compilable(const char* reason, bool all_tiers = true); |
465 void record_out_of_memory_failure(); |
461 void record_out_of_memory_failure(); |
466 |
462 |