319 bool _trap_can_recompile; // Have we emitted a recompiling trap?
320 uint _decompile_count; // Cumulative decompilation counts.
321 bool _do_inlining; // True if we intend to do inlining
322 bool _do_scheduling; // True if we intend to do scheduling
323 bool _do_freq_based_layout; // True if we intend to do frequency based block layout
324 bool _do_vector_loop; // True if allowed to execute loop in parallel iterations
325 bool _use_cmove; // True if CMove should be used without profitability analysis
326 bool _do_aliasing; // True if we intend to do aliasing
327 bool _print_assembly; // True if we should dump assembly code for this compilation
328 bool _print_inlining; // True if we should print inlining for this compilation
329 bool _print_intrinsics; // True if we should print intrinsics for this compilation
330 #ifndef PRODUCT
331 uint _igv_idx; // Counter for IGV node identifiers
332 bool _trace_opto_output;
333 bool _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
334 #endif
335 bool _has_irreducible_loop; // Found irreducible loops
336 // JSR 292
337 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes.
338 bool _has_monitors; // Metadata transfered to nmethod to enable Continuations lock-detection fastpath
339 RTMState _rtm_state; // State of Restricted Transactional Memory usage
340 int _loop_opts_cnt; // loop opts round
341 bool _clinit_barrier_on_entry; // True if clinit barrier is needed on nmethod entry
342 uint _stress_seed; // Seed for stress testing
343
344 // Compilation environment.
345 Arena _comp_arena; // Arena with lifetime equivalent to Compile
346 void* _barrier_set_state; // Potential GC barrier state for Compile
347 ciEnv* _env; // CI interface
348 DirectiveSet* _directive; // Compiler directive
349 CompileLog* _log; // from CompilerThread
350 const char* _failure_reason; // for record_failure/failing pattern
351 GrowableArray<CallGenerator*> _intrinsics; // List of intrinsics.
352 GrowableArray<Node*> _macro_nodes; // List of nodes which need to be expanded before matching.
353 GrowableArray<Node*> _predicate_opaqs; // List of Opaque1 nodes for the loop predicates.
354 GrowableArray<Node*> _skeleton_predicate_opaqs; // List of Opaque4 nodes for the loop skeleton predicates.
355 GrowableArray<Node*> _expensive_nodes; // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
356 GrowableArray<Node*> _for_post_loop_igvn; // List of nodes for IGVN after loop opts are over
357 GrowableArray<UnstableIfTrap*> _unstable_if_traps; // List of ifnodes after IGVN
358 GrowableArray<Node_List*> _coarsened_locks; // List of coarsened Lock and Unlock nodes
613 bool use_cmove() const { return _use_cmove; }
614 void set_use_cmove(bool z) { _use_cmove = z; }
615 bool do_aliasing() const { return _do_aliasing; }
616 bool print_assembly() const { return _print_assembly; }
617 void set_print_assembly(bool z) { _print_assembly = z; }
618 bool print_inlining() const { return _print_inlining; }
619 void set_print_inlining(bool z) { _print_inlining = z; }
620 bool print_intrinsics() const { return _print_intrinsics; }
621 void set_print_intrinsics(bool z) { _print_intrinsics = z; }
622 RTMState rtm_state() const { return _rtm_state; }
623 void set_rtm_state(RTMState s) { _rtm_state = s; }
624 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; }
625 bool profile_rtm() const { return _rtm_state == ProfileRTM; }
626 uint max_node_limit() const { return (uint)_max_node_limit; }
627 void set_max_node_limit(uint n) { _max_node_limit = n; }
628 bool clinit_barrier_on_entry() { return _clinit_barrier_on_entry; }
629 void set_clinit_barrier_on_entry(bool z) { _clinit_barrier_on_entry = z; }
630 bool has_monitors() const { return _has_monitors; }
631 void set_has_monitors(bool v) { _has_monitors = v; }
632
633 // check the CompilerOracle for special behaviours for this compile
634 bool method_has_option(enum CompileCommand option) {
635 return method() != NULL && method()->has_option(option);
636 }
637
638 #ifndef PRODUCT
639 uint next_igv_idx() { return _igv_idx++; }
640 bool trace_opto_output() const { return _trace_opto_output; }
641 void print_ideal_ir(const char* phase_name);
642 bool should_print_ideal() const { return _directive->PrintIdealOption; }
643 bool parsed_irreducible_loop() const { return _parsed_irreducible_loop; }
644 void set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; }
645 int _in_dump_cnt; // Required for dumping ir nodes.
646 #endif
647 bool has_irreducible_loop() const { return _has_irreducible_loop; }
648 void set_has_irreducible_loop(bool z) { _has_irreducible_loop = z; }
649
650 // JSR 292
651 bool has_method_handle_invokes() const { return _has_method_handle_invokes; }
652 void set_has_method_handle_invokes(bool z) { _has_method_handle_invokes = z; }
|
319 bool _trap_can_recompile; // Have we emitted a recompiling trap?
320 uint _decompile_count; // Cumulative decompilation counts.
321 bool _do_inlining; // True if we intend to do inlining
322 bool _do_scheduling; // True if we intend to do scheduling
323 bool _do_freq_based_layout; // True if we intend to do frequency based block layout
324 bool _do_vector_loop; // True if allowed to execute loop in parallel iterations
325 bool _use_cmove; // True if CMove should be used without profitability analysis
326 bool _do_aliasing; // True if we intend to do aliasing
327 bool _print_assembly; // True if we should dump assembly code for this compilation
328 bool _print_inlining; // True if we should print inlining for this compilation
329 bool _print_intrinsics; // True if we should print intrinsics for this compilation
330 #ifndef PRODUCT
331 uint _igv_idx; // Counter for IGV node identifiers
332 bool _trace_opto_output;
333 bool _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
334 #endif
335 bool _has_irreducible_loop; // Found irreducible loops
336 // JSR 292
337 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes.
338 bool _has_monitors; // Metadata transfered to nmethod to enable Continuations lock-detection fastpath
339 uint _max_monitors; // Keep track of maximum number of active monitors in this compilation
340 RTMState _rtm_state; // State of Restricted Transactional Memory usage
341 int _loop_opts_cnt; // loop opts round
342 bool _clinit_barrier_on_entry; // True if clinit barrier is needed on nmethod entry
343 uint _stress_seed; // Seed for stress testing
344
345 // Compilation environment.
346 Arena _comp_arena; // Arena with lifetime equivalent to Compile
347 void* _barrier_set_state; // Potential GC barrier state for Compile
348 ciEnv* _env; // CI interface
349 DirectiveSet* _directive; // Compiler directive
350 CompileLog* _log; // from CompilerThread
351 const char* _failure_reason; // for record_failure/failing pattern
352 GrowableArray<CallGenerator*> _intrinsics; // List of intrinsics.
353 GrowableArray<Node*> _macro_nodes; // List of nodes which need to be expanded before matching.
354 GrowableArray<Node*> _predicate_opaqs; // List of Opaque1 nodes for the loop predicates.
355 GrowableArray<Node*> _skeleton_predicate_opaqs; // List of Opaque4 nodes for the loop skeleton predicates.
356 GrowableArray<Node*> _expensive_nodes; // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
357 GrowableArray<Node*> _for_post_loop_igvn; // List of nodes for IGVN after loop opts are over
358 GrowableArray<UnstableIfTrap*> _unstable_if_traps; // List of ifnodes after IGVN
359 GrowableArray<Node_List*> _coarsened_locks; // List of coarsened Lock and Unlock nodes
614 bool use_cmove() const { return _use_cmove; }
615 void set_use_cmove(bool z) { _use_cmove = z; }
616 bool do_aliasing() const { return _do_aliasing; }
617 bool print_assembly() const { return _print_assembly; }
618 void set_print_assembly(bool z) { _print_assembly = z; }
619 bool print_inlining() const { return _print_inlining; }
620 void set_print_inlining(bool z) { _print_inlining = z; }
621 bool print_intrinsics() const { return _print_intrinsics; }
622 void set_print_intrinsics(bool z) { _print_intrinsics = z; }
623 RTMState rtm_state() const { return _rtm_state; }
624 void set_rtm_state(RTMState s) { _rtm_state = s; }
625 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; }
626 bool profile_rtm() const { return _rtm_state == ProfileRTM; }
627 uint max_node_limit() const { return (uint)_max_node_limit; }
628 void set_max_node_limit(uint n) { _max_node_limit = n; }
629 bool clinit_barrier_on_entry() { return _clinit_barrier_on_entry; }
630 void set_clinit_barrier_on_entry(bool z) { _clinit_barrier_on_entry = z; }
631 bool has_monitors() const { return _has_monitors; }
632 void set_has_monitors(bool v) { _has_monitors = v; }
633
634 void push_monitor() { _max_monitors++; }
635 void reset_max_monitors() { _max_monitors = 0; }
636 uint max_monitors() { return _max_monitors; }
637
638 // check the CompilerOracle for special behaviours for this compile
639 bool method_has_option(enum CompileCommand option) {
640 return method() != NULL && method()->has_option(option);
641 }
642
643 #ifndef PRODUCT
644 uint next_igv_idx() { return _igv_idx++; }
645 bool trace_opto_output() const { return _trace_opto_output; }
646 void print_ideal_ir(const char* phase_name);
647 bool should_print_ideal() const { return _directive->PrintIdealOption; }
648 bool parsed_irreducible_loop() const { return _parsed_irreducible_loop; }
649 void set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; }
650 int _in_dump_cnt; // Required for dumping ir nodes.
651 #endif
652 bool has_irreducible_loop() const { return _has_irreducible_loop; }
653 void set_has_irreducible_loop(bool z) { _has_irreducible_loop = z; }
654
655 // JSR 292
656 bool has_method_handle_invokes() const { return _has_method_handle_invokes; }
657 void set_has_method_handle_invokes(bool z) { _has_method_handle_invokes = z; }
|