364 const bool _eliminate_boxing; // Do boxing elimination. 365 ciMethod* _method; // The method being compiled. 366 int _entry_bci; // entry bci for osr methods. 367 const TypeFunc* _tf; // My kind of signature 368 InlineTree* _ilt; // Ditto (temporary). 369 address _stub_function; // VM entry for stub being compiled, or NULL 370 const char* _stub_name; // Name of stub or adapter being compiled, or NULL 371 address _stub_entry_point; // Compile code entry for generated stub, or NULL 372 373 // Control of this compilation. 374 int _num_loop_opts; // Number of iterations for doing loop optimiztions 375 int _max_inline_size; // Max inline size for this compilation 376 int _freq_inline_size; // Max hot method inline size for this compilation 377 int _fixed_slots; // count of frame slots not allocated by the register 378 // allocator i.e. locks, original deopt pc, etc. 379 uintx _max_node_limit; // Max unique node count during a single compilation. 380 // For deopt 381 int _orig_pc_slot; 382 int _orig_pc_slot_offset_in_bytes; 383 384 int _major_progress; // Count of something big happening 385 bool _inlining_progress; // progress doing incremental inlining? 386 bool _inlining_incrementally;// Are we doing incremental inlining (post parse) 387 bool _has_loops; // True if the method _may_ have some loops 388 bool _has_split_ifs; // True if the method _may_ have some split-if 389 bool _has_unsafe_access; // True if the method _may_ produce faults in unsafe loads or stores. 390 bool _has_stringbuilder; // True StringBuffers or StringBuilders are allocated 391 bool _has_boxed_value; // True if a boxed object is allocated 392 bool _has_reserved_stack_access; // True if the method or an inlined method is annotated with ReservedStackAccess 393 uint _max_vector_size; // Maximum size of generated vectors 394 bool _clear_upper_avx; // Clear upper bits of ymm registers using vzeroupper 395 uint _trap_hist[trapHistLength]; // Cumulative traps 396 bool _trap_can_recompile; // Have we emitted a recompiling trap? 397 uint _decompile_count; // Cumulative decompilation counts. 398 bool _do_inlining; // True if we intend to do inlining 399 bool _do_scheduling; // True if we intend to do scheduling 400 bool _do_freq_based_layout; // True if we intend to do frequency based block layout 401 bool _do_count_invocations; // True if we generate code to count invocations 402 bool _do_method_data_update; // True if we generate code to update MethodData*s 403 bool _do_vector_loop; // True if allowed to execute loop in parallel iterations 697 void set_do_method_data_update(bool z) { _do_method_data_update = z; } 698 bool do_vector_loop() const { return _do_vector_loop; } 699 void set_do_vector_loop(bool z) { _do_vector_loop = z; } 700 bool use_cmove() const { return _use_cmove; } 701 void set_use_cmove(bool z) { _use_cmove = z; } 702 bool age_code() const { return _age_code; } 703 void set_age_code(bool z) { _age_code = z; } 704 int AliasLevel() const { return _AliasLevel; } 705 bool print_assembly() const { return _print_assembly; } 706 void set_print_assembly(bool z) { _print_assembly = z; } 707 bool print_inlining() const { return _print_inlining; } 708 void set_print_inlining(bool z) { _print_inlining = z; } 709 bool print_intrinsics() const { return _print_intrinsics; } 710 void set_print_intrinsics(bool z) { _print_intrinsics = z; } 711 RTMState rtm_state() const { return _rtm_state; } 712 void set_rtm_state(RTMState s) { _rtm_state = s; } 713 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; } 714 bool profile_rtm() const { return _rtm_state == ProfileRTM; } 715 uint max_node_limit() const { return (uint)_max_node_limit; } 716 void set_max_node_limit(uint n) { _max_node_limit = n; } 717 718 // check the CompilerOracle for special behaviours for this compile 719 bool method_has_option(const char * option) { 720 return method() != NULL && method()->has_option(option); 721 } 722 723 #ifndef PRODUCT 724 bool trace_opto_output() const { return _trace_opto_output; } 725 bool parsed_irreducible_loop() const { return _parsed_irreducible_loop; } 726 void set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; } 727 int _in_dump_cnt; // Required for dumping ir nodes. 728 #endif 729 bool has_irreducible_loop() const { return _has_irreducible_loop; } 730 void set_has_irreducible_loop(bool z) { _has_irreducible_loop = z; } 731 732 // JSR 292 733 bool has_method_handle_invokes() const { return _has_method_handle_invokes; } 734 void set_has_method_handle_invokes(bool z) { _has_method_handle_invokes = z; } 735 736 Ticks _latest_stage_start_counter; | 364 const bool _eliminate_boxing; // Do boxing elimination. 365 ciMethod* _method; // The method being compiled. 366 int _entry_bci; // entry bci for osr methods. 367 const TypeFunc* _tf; // My kind of signature 368 InlineTree* _ilt; // Ditto (temporary). 369 address _stub_function; // VM entry for stub being compiled, or NULL 370 const char* _stub_name; // Name of stub or adapter being compiled, or NULL 371 address _stub_entry_point; // Compile code entry for generated stub, or NULL 372 373 // Control of this compilation. 374 int _num_loop_opts; // Number of iterations for doing loop optimiztions 375 int _max_inline_size; // Max inline size for this compilation 376 int _freq_inline_size; // Max hot method inline size for this compilation 377 int _fixed_slots; // count of frame slots not allocated by the register 378 // allocator i.e. locks, original deopt pc, etc. 379 uintx _max_node_limit; // Max unique node count during a single compilation. 380 // For deopt 381 int _orig_pc_slot; 382 int _orig_pc_slot_offset_in_bytes; 383 384 // For value type calling convention 385 int _sp_inc_slot; 386 int _sp_inc_slot_offset_in_bytes; 387 388 int _major_progress; // Count of something big happening 389 bool _inlining_progress; // progress doing incremental inlining? 390 bool _inlining_incrementally;// Are we doing incremental inlining (post parse) 391 bool _has_loops; // True if the method _may_ have some loops 392 bool _has_split_ifs; // True if the method _may_ have some split-if 393 bool _has_unsafe_access; // True if the method _may_ produce faults in unsafe loads or stores. 394 bool _has_stringbuilder; // True StringBuffers or StringBuilders are allocated 395 bool _has_boxed_value; // True if a boxed object is allocated 396 bool _has_reserved_stack_access; // True if the method or an inlined method is annotated with ReservedStackAccess 397 uint _max_vector_size; // Maximum size of generated vectors 398 bool _clear_upper_avx; // Clear upper bits of ymm registers using vzeroupper 399 uint _trap_hist[trapHistLength]; // Cumulative traps 400 bool _trap_can_recompile; // Have we emitted a recompiling trap? 401 uint _decompile_count; // Cumulative decompilation counts. 402 bool _do_inlining; // True if we intend to do inlining 403 bool _do_scheduling; // True if we intend to do scheduling 404 bool _do_freq_based_layout; // True if we intend to do frequency based block layout 405 bool _do_count_invocations; // True if we generate code to count invocations 406 bool _do_method_data_update; // True if we generate code to update MethodData*s 407 bool _do_vector_loop; // True if allowed to execute loop in parallel iterations 701 void set_do_method_data_update(bool z) { _do_method_data_update = z; } 702 bool do_vector_loop() const { return _do_vector_loop; } 703 void set_do_vector_loop(bool z) { _do_vector_loop = z; } 704 bool use_cmove() const { return _use_cmove; } 705 void set_use_cmove(bool z) { _use_cmove = z; } 706 bool age_code() const { return _age_code; } 707 void set_age_code(bool z) { _age_code = z; } 708 int AliasLevel() const { return _AliasLevel; } 709 bool print_assembly() const { return _print_assembly; } 710 void set_print_assembly(bool z) { _print_assembly = z; } 711 bool print_inlining() const { return _print_inlining; } 712 void set_print_inlining(bool z) { _print_inlining = z; } 713 bool print_intrinsics() const { return _print_intrinsics; } 714 void set_print_intrinsics(bool z) { _print_intrinsics = z; } 715 RTMState rtm_state() const { return _rtm_state; } 716 void set_rtm_state(RTMState s) { _rtm_state = s; } 717 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; } 718 bool profile_rtm() const { return _rtm_state == ProfileRTM; } 719 uint max_node_limit() const { return (uint)_max_node_limit; } 720 void set_max_node_limit(uint n) { _max_node_limit = n; } 721 722 // Support for scalarized value type calling convention 723 bool has_scalarized_args() const { return _method != NULL && _method->get_Method()->has_scalarized_args(); } 724 bool needs_stack_repair() const { return _method != NULL && _method->get_Method()->needs_stack_repair(); } 725 SigEntry get_res_entry() const { return _method->get_Method()->get_res_entry(); } 726 int sp_inc_offset() const { return _sp_inc_slot_offset_in_bytes; } 727 728 // check the CompilerOracle for special behaviours for this compile 729 bool method_has_option(const char * option) { 730 return method() != NULL && method()->has_option(option); 731 } 732 733 #ifndef PRODUCT 734 bool trace_opto_output() const { return _trace_opto_output; } 735 bool parsed_irreducible_loop() const { return _parsed_irreducible_loop; } 736 void set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; } 737 int _in_dump_cnt; // Required for dumping ir nodes. 738 #endif 739 bool has_irreducible_loop() const { return _has_irreducible_loop; } 740 void set_has_irreducible_loop(bool z) { _has_irreducible_loop = z; } 741 742 // JSR 292 743 bool has_method_handle_invokes() const { return _has_method_handle_invokes; } 744 void set_has_method_handle_invokes(bool z) { _has_method_handle_invokes = z; } 745 746 Ticks _latest_stage_start_counter; |