285 uint _decompile_count; // Cumulative decompilation counts.
286 bool _do_inlining; // True if we intend to do inlining
287 bool _do_scheduling; // True if we intend to do scheduling
288 bool _do_freq_based_layout; // True if we intend to do frequency based block layout
289 bool _do_vector_loop; // True if allowed to execute loop in parallel iterations
290 bool _use_cmove; // True if CMove should be used without profitability analysis
291 bool _age_code; // True if we need to profile code age (decrement the aging counter)
292 int _AliasLevel; // Locally-adjusted version of AliasLevel flag.
293 bool _print_assembly; // True if we should dump assembly code for this compilation
294 bool _print_inlining; // True if we should print inlining for this compilation
295 bool _print_intrinsics; // True if we should print intrinsics for this compilation
296 #ifndef PRODUCT
297 uint _igv_idx; // Counter for IGV node identifiers
298 bool _trace_opto_output;
299 bool _print_ideal;
300 bool _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
301 #endif
302 bool _has_irreducible_loop; // Found irreducible loops
303 // JSR 292
304 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes.
305 RTMState _rtm_state; // State of Restricted Transactional Memory usage
306 int _loop_opts_cnt; // loop opts round
307 bool _clinit_barrier_on_entry; // True if clinit barrier is needed on nmethod entry
308 uint _stress_seed; // Seed for stress testing
309
310 // Compilation environment.
311 Arena _comp_arena; // Arena with lifetime equivalent to Compile
312 void* _barrier_set_state; // Potential GC barrier state for Compile
313 ciEnv* _env; // CI interface
314 DirectiveSet* _directive; // Compiler directive
315 CompileLog* _log; // from CompilerThread
316 const char* _failure_reason; // for record_failure/failing pattern
317 GrowableArray<CallGenerator*> _intrinsics; // List of intrinsics.
318 GrowableArray<Node*> _macro_nodes; // List of nodes which need to be expanded before matching.
319 GrowableArray<Node*> _predicate_opaqs; // List of Opaque1 nodes for the loop predicates.
320 GrowableArray<Node*> _skeleton_predicate_opaqs; // List of Opaque4 nodes for the loop skeleton predicates.
321 GrowableArray<Node*> _expensive_nodes; // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
322 GrowableArray<Node*> _for_post_loop_igvn; // List of nodes for IGVN after loop opts are over
323 GrowableArray<Node_List*> _coarsened_locks; // List of coarsened Lock and Unlock nodes
324 ConnectionGraph* _congraph;
579 bool use_cmove() const { return _use_cmove; }
580 void set_use_cmove(bool z) { _use_cmove = z; }
581 bool age_code() const { return _age_code; }
582 void set_age_code(bool z) { _age_code = z; }
583 int AliasLevel() const { return _AliasLevel; }
584 bool print_assembly() const { return _print_assembly; }
585 void set_print_assembly(bool z) { _print_assembly = z; }
586 bool print_inlining() const { return _print_inlining; }
587 void set_print_inlining(bool z) { _print_inlining = z; }
588 bool print_intrinsics() const { return _print_intrinsics; }
589 void set_print_intrinsics(bool z) { _print_intrinsics = z; }
590 RTMState rtm_state() const { return _rtm_state; }
591 void set_rtm_state(RTMState s) { _rtm_state = s; }
592 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; }
593 bool profile_rtm() const { return _rtm_state == ProfileRTM; }
594 uint max_node_limit() const { return (uint)_max_node_limit; }
595 void set_max_node_limit(uint n) { _max_node_limit = n; }
596 bool clinit_barrier_on_entry() { return _clinit_barrier_on_entry; }
597 void set_clinit_barrier_on_entry(bool z) { _clinit_barrier_on_entry = z; }
598
599 // check the CompilerOracle for special behaviours for this compile
600 bool method_has_option(enum CompileCommand option) {
601 return method() != NULL && method()->has_option(option);
602 }
603
604 #ifndef PRODUCT
605 uint next_igv_idx() { return _igv_idx++; }
606 bool trace_opto_output() const { return _trace_opto_output; }
607 bool print_ideal() const { return _print_ideal; }
608 bool parsed_irreducible_loop() const { return _parsed_irreducible_loop; }
609 void set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; }
610 int _in_dump_cnt; // Required for dumping ir nodes.
611 #endif
612 bool has_irreducible_loop() const { return _has_irreducible_loop; }
613 void set_has_irreducible_loop(bool z) { _has_irreducible_loop = z; }
614
615 // JSR 292
616 bool has_method_handle_invokes() const { return _has_method_handle_invokes; }
617 void set_has_method_handle_invokes(bool z) { _has_method_handle_invokes = z; }
618
|
285 uint _decompile_count; // Cumulative decompilation counts.
286 bool _do_inlining; // True if we intend to do inlining
287 bool _do_scheduling; // True if we intend to do scheduling
288 bool _do_freq_based_layout; // True if we intend to do frequency based block layout
289 bool _do_vector_loop; // True if allowed to execute loop in parallel iterations
290 bool _use_cmove; // True if CMove should be used without profitability analysis
291 bool _age_code; // True if we need to profile code age (decrement the aging counter)
292 int _AliasLevel; // Locally-adjusted version of AliasLevel flag.
293 bool _print_assembly; // True if we should dump assembly code for this compilation
294 bool _print_inlining; // True if we should print inlining for this compilation
295 bool _print_intrinsics; // True if we should print intrinsics for this compilation
296 #ifndef PRODUCT
297 uint _igv_idx; // Counter for IGV node identifiers
298 bool _trace_opto_output;
299 bool _print_ideal;
300 bool _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
301 #endif
302 bool _has_irreducible_loop; // Found irreducible loops
303 // JSR 292
304 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes.
305 uint _max_monitors; // Keep track of maximum number of active monitors in this compilation
306 RTMState _rtm_state; // State of Restricted Transactional Memory usage
307 int _loop_opts_cnt; // loop opts round
308 bool _clinit_barrier_on_entry; // True if clinit barrier is needed on nmethod entry
309 uint _stress_seed; // Seed for stress testing
310
311 // Compilation environment.
312 Arena _comp_arena; // Arena with lifetime equivalent to Compile
313 void* _barrier_set_state; // Potential GC barrier state for Compile
314 ciEnv* _env; // CI interface
315 DirectiveSet* _directive; // Compiler directive
316 CompileLog* _log; // from CompilerThread
317 const char* _failure_reason; // for record_failure/failing pattern
318 GrowableArray<CallGenerator*> _intrinsics; // List of intrinsics.
319 GrowableArray<Node*> _macro_nodes; // List of nodes which need to be expanded before matching.
320 GrowableArray<Node*> _predicate_opaqs; // List of Opaque1 nodes for the loop predicates.
321 GrowableArray<Node*> _skeleton_predicate_opaqs; // List of Opaque4 nodes for the loop skeleton predicates.
322 GrowableArray<Node*> _expensive_nodes; // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
323 GrowableArray<Node*> _for_post_loop_igvn; // List of nodes for IGVN after loop opts are over
324 GrowableArray<Node_List*> _coarsened_locks; // List of coarsened Lock and Unlock nodes
325 ConnectionGraph* _congraph;
580 bool use_cmove() const { return _use_cmove; }
581 void set_use_cmove(bool z) { _use_cmove = z; }
582 bool age_code() const { return _age_code; }
583 void set_age_code(bool z) { _age_code = z; }
584 int AliasLevel() const { return _AliasLevel; }
585 bool print_assembly() const { return _print_assembly; }
586 void set_print_assembly(bool z) { _print_assembly = z; }
587 bool print_inlining() const { return _print_inlining; }
588 void set_print_inlining(bool z) { _print_inlining = z; }
589 bool print_intrinsics() const { return _print_intrinsics; }
590 void set_print_intrinsics(bool z) { _print_intrinsics = z; }
591 RTMState rtm_state() const { return _rtm_state; }
592 void set_rtm_state(RTMState s) { _rtm_state = s; }
593 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; }
594 bool profile_rtm() const { return _rtm_state == ProfileRTM; }
595 uint max_node_limit() const { return (uint)_max_node_limit; }
596 void set_max_node_limit(uint n) { _max_node_limit = n; }
597 bool clinit_barrier_on_entry() { return _clinit_barrier_on_entry; }
598 void set_clinit_barrier_on_entry(bool z) { _clinit_barrier_on_entry = z; }
599
600 void push_monitor() { _max_monitors++; }
601 void reset_max_monitors() { _max_monitors = 0; }
602 uint max_monitors() { return _max_monitors; }
603
604 // check the CompilerOracle for special behaviours for this compile
605 bool method_has_option(enum CompileCommand option) {
606 return method() != NULL && method()->has_option(option);
607 }
608
609 #ifndef PRODUCT
610 uint next_igv_idx() { return _igv_idx++; }
611 bool trace_opto_output() const { return _trace_opto_output; }
612 bool print_ideal() const { return _print_ideal; }
613 bool parsed_irreducible_loop() const { return _parsed_irreducible_loop; }
614 void set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; }
615 int _in_dump_cnt; // Required for dumping ir nodes.
616 #endif
617 bool has_irreducible_loop() const { return _has_irreducible_loop; }
618 void set_has_irreducible_loop(bool z) { _has_irreducible_loop = z; }
619
620 // JSR 292
621 bool has_method_handle_invokes() const { return _has_method_handle_invokes; }
622 void set_has_method_handle_invokes(bool z) { _has_method_handle_invokes = z; }
623
|