302 bool _has_unsafe_access; // True if the method _may_ produce faults in unsafe loads or stores.
303 bool _has_stringbuilder; // True StringBuffers or StringBuilders are allocated
304 bool _has_boxed_value; // True if a boxed object is allocated
305 int _max_vector_size; // Maximum size of generated vectors
306 uint _trap_hist[trapHistLength]; // Cumulative traps
307 bool _trap_can_recompile; // Have we emitted a recompiling trap?
308 uint _decompile_count; // Cumulative decompilation counts.
309 bool _do_inlining; // True if we intend to do inlining
310 bool _do_scheduling; // True if we intend to do scheduling
311 bool _do_freq_based_layout; // True if we intend to do frequency based block layout
312 bool _do_count_invocations; // True if we generate code to count invocations
313 bool _do_method_data_update; // True if we generate code to update MethodData*s
314 int _AliasLevel; // Locally-adjusted version of AliasLevel flag.
315 bool _print_assembly; // True if we should dump assembly code for this compilation
316 bool _print_inlining; // True if we should print inlining for this compilation
317 bool _print_intrinsics; // True if we should print intrinsics for this compilation
318 #ifndef PRODUCT
319 bool _trace_opto_output;
320 bool _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
321 #endif
322 // JSR 292
323 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes.
324 RTMState _rtm_state; // State of Restricted Transactional Memory usage
325
326 // Compilation environment.
327 Arena _comp_arena; // Arena with lifetime equivalent to Compile
328 ciEnv* _env; // CI interface
329 CompileLog* _log; // from CompilerThread
330 const char* _failure_reason; // for record_failure/failing pattern
331 GrowableArray<CallGenerator*>* _intrinsics; // List of intrinsics.
332 GrowableArray<Node*>* _macro_nodes; // List of nodes which need to be expanded before matching.
333 GrowableArray<Node*>* _predicate_opaqs; // List of Opaque1 nodes for the loop predicates.
334 GrowableArray<Node*>* _expensive_nodes; // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
335 ConnectionGraph* _congraph;
336 #ifndef PRODUCT
337 IdealGraphPrinter* _printer;
338 #endif
339
340
341 // Node management
587 bool print_assembly() const { return _print_assembly; }
588 void set_print_assembly(bool z) { _print_assembly = z; }
589 bool print_inlining() const { return _print_inlining; }
590 void set_print_inlining(bool z) { _print_inlining = z; }
591 bool print_intrinsics() const { return _print_intrinsics; }
592 void set_print_intrinsics(bool z) { _print_intrinsics = z; }
593 RTMState rtm_state() const { return _rtm_state; }
594 void set_rtm_state(RTMState s) { _rtm_state = s; }
595 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; }
596 bool profile_rtm() const { return _rtm_state == ProfileRTM; }
597 // check the CompilerOracle for special behaviours for this compile
598 bool method_has_option(const char * option) {
599 return method() != NULL && method()->has_option(option);
600 }
601 #ifndef PRODUCT
602 bool trace_opto_output() const { return _trace_opto_output; }
603 bool parsed_irreducible_loop() const { return _parsed_irreducible_loop; }
604 void set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; }
605 int _in_dump_cnt; // Required for dumping ir nodes.
606 #endif
607
608 // JSR 292
609 bool has_method_handle_invokes() const { return _has_method_handle_invokes; }
610 void set_has_method_handle_invokes(bool z) { _has_method_handle_invokes = z; }
611
612 Ticks _latest_stage_start_counter;
613
614 void begin_method() {
615 #ifndef PRODUCT
616 if (_printer) _printer->begin_method(this);
617 #endif
618 C->_latest_stage_start_counter.stamp();
619 }
620
621 void print_method(CompilerPhaseType cpt, int level = 1) {
622 EventCompilerPhase event;
623 if (event.should_commit()) {
624 event.set_starttime(C->_latest_stage_start_counter);
625 event.set_phase((u1) cpt);
626 event.set_compileID(C->_compile_id);
|
302 bool _has_unsafe_access; // True if the method _may_ produce faults in unsafe loads or stores.
303 bool _has_stringbuilder; // True StringBuffers or StringBuilders are allocated
304 bool _has_boxed_value; // True if a boxed object is allocated
305 int _max_vector_size; // Maximum size of generated vectors
306 uint _trap_hist[trapHistLength]; // Cumulative traps
307 bool _trap_can_recompile; // Have we emitted a recompiling trap?
308 uint _decompile_count; // Cumulative decompilation counts.
309 bool _do_inlining; // True if we intend to do inlining
310 bool _do_scheduling; // True if we intend to do scheduling
311 bool _do_freq_based_layout; // True if we intend to do frequency based block layout
312 bool _do_count_invocations; // True if we generate code to count invocations
313 bool _do_method_data_update; // True if we generate code to update MethodData*s
314 int _AliasLevel; // Locally-adjusted version of AliasLevel flag.
315 bool _print_assembly; // True if we should dump assembly code for this compilation
316 bool _print_inlining; // True if we should print inlining for this compilation
317 bool _print_intrinsics; // True if we should print intrinsics for this compilation
318 #ifndef PRODUCT
319 bool _trace_opto_output;
320 bool _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
321 #endif
322 bool _has_irreducible_loop; // Found irreducible loops
323 // JSR 292
324 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes.
325 RTMState _rtm_state; // State of Restricted Transactional Memory usage
326
327 // Compilation environment.
328 Arena _comp_arena; // Arena with lifetime equivalent to Compile
329 ciEnv* _env; // CI interface
330 CompileLog* _log; // from CompilerThread
331 const char* _failure_reason; // for record_failure/failing pattern
332 GrowableArray<CallGenerator*>* _intrinsics; // List of intrinsics.
333 GrowableArray<Node*>* _macro_nodes; // List of nodes which need to be expanded before matching.
334 GrowableArray<Node*>* _predicate_opaqs; // List of Opaque1 nodes for the loop predicates.
335 GrowableArray<Node*>* _expensive_nodes; // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
336 ConnectionGraph* _congraph;
337 #ifndef PRODUCT
338 IdealGraphPrinter* _printer;
339 #endif
340
341
342 // Node management
588 bool print_assembly() const { return _print_assembly; }
589 void set_print_assembly(bool z) { _print_assembly = z; }
590 bool print_inlining() const { return _print_inlining; }
591 void set_print_inlining(bool z) { _print_inlining = z; }
592 bool print_intrinsics() const { return _print_intrinsics; }
593 void set_print_intrinsics(bool z) { _print_intrinsics = z; }
594 RTMState rtm_state() const { return _rtm_state; }
595 void set_rtm_state(RTMState s) { _rtm_state = s; }
596 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; }
597 bool profile_rtm() const { return _rtm_state == ProfileRTM; }
598 // check the CompilerOracle for special behaviours for this compile
599 bool method_has_option(const char * option) {
600 return method() != NULL && method()->has_option(option);
601 }
602 #ifndef PRODUCT
603 bool trace_opto_output() const { return _trace_opto_output; }
604 bool parsed_irreducible_loop() const { return _parsed_irreducible_loop; }
605 void set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; }
606 int _in_dump_cnt; // Required for dumping ir nodes.
607 #endif
608 bool has_irreducible_loop() const { return _has_irreducible_loop; }
609 void set_has_irreducible_loop(bool z) { _has_irreducible_loop = z; }
610
611 // JSR 292
612 bool has_method_handle_invokes() const { return _has_method_handle_invokes; }
613 void set_has_method_handle_invokes(bool z) { _has_method_handle_invokes = z; }
614
615 Ticks _latest_stage_start_counter;
616
617 void begin_method() {
618 #ifndef PRODUCT
619 if (_printer) _printer->begin_method(this);
620 #endif
621 C->_latest_stage_start_counter.stamp();
622 }
623
624 void print_method(CompilerPhaseType cpt, int level = 1) {
625 EventCompilerPhase event;
626 if (event.should_commit()) {
627 event.set_starttime(C->_latest_stage_start_counter);
628 event.set_phase((u1) cpt);
629 event.set_compileID(C->_compile_id);
|