932 _late_inlines.insert_before(0, cg); 933 } 934 935 void add_string_late_inline(CallGenerator* cg) { 936 _string_late_inlines.push(cg); 937 } 938 939 void add_boxing_late_inline(CallGenerator* cg) { 940 _boxing_late_inlines.push(cg); 941 } 942 943 void remove_useless_late_inlines(GrowableArray<CallGenerator*>* inlines, Unique_Node_List &useful); 944 945 void process_print_inlining(); 946 void dump_print_inlining(); 947 948 bool over_inlining_cutoff() const { 949 if (!inlining_incrementally()) { 950 return unique() > (uint)NodeCountInliningCutoff; 951 } else { 952 return live_nodes() > (uint)LiveNodeCountInliningCutoff; 953 } 954 } 955 956 void inc_number_of_mh_late_inlines() { _number_of_mh_late_inlines++; } 957 void dec_number_of_mh_late_inlines() { assert(_number_of_mh_late_inlines > 0, "_number_of_mh_late_inlines < 0 !"); _number_of_mh_late_inlines--; } 958 bool has_mh_late_inlines() const { return _number_of_mh_late_inlines > 0; } 959 960 void inline_incrementally_one(PhaseIterGVN& igvn); 961 void inline_incrementally(PhaseIterGVN& igvn); 962 void inline_string_calls(bool parse_time); 963 void inline_boxing_calls(PhaseIterGVN& igvn); 964 965 // Matching, CFG layout, allocation, code generation 966 PhaseCFG* cfg() { return _cfg; } 967 bool select_24_bit_instr() const { return _select_24_bit_instr; } 968 bool in_24_bit_fp_mode() const { return _in_24_bit_fp_mode; } 969 bool has_java_calls() const { return _java_calls > 0; } 970 int java_calls() const { return _java_calls; } 971 int inner_loops() const { return _inner_loops; } 972 Matcher* matcher() { return _matcher; } 973 PhaseRegAlloc* regalloc() { return _regalloc; } 974 int frame_slots() const { return _frame_slots; } 975 int frame_size_in_words() const; // frame_slots in units of the polymorphic 'words' 976 int frame_size_in_bytes() const { return _frame_slots << LogBytesPerInt; } 977 RegMask& FIRST_STACK_mask() { return _FIRST_STACK_mask; } 978 Arena* indexSet_arena() { return _indexSet_arena; } 979 void* indexSet_free_block_list() { return _indexSet_free_block_list; } 980 uint node_bundling_limit() { return _node_bundling_limit; } | 932 _late_inlines.insert_before(0, cg); 933 } 934 935 void add_string_late_inline(CallGenerator* cg) { 936 _string_late_inlines.push(cg); 937 } 938 939 void add_boxing_late_inline(CallGenerator* cg) { 940 _boxing_late_inlines.push(cg); 941 } 942 943 void remove_useless_late_inlines(GrowableArray<CallGenerator*>* inlines, Unique_Node_List &useful); 944 945 void process_print_inlining(); 946 void dump_print_inlining(); 947 948 bool over_inlining_cutoff() const { 949 if (!inlining_incrementally()) { 950 return unique() > (uint)NodeCountInliningCutoff; 951 } else { 952 // Give some room for incremental inlining algorithm to "breathe" 953 // and avoid thrashing when live node count is close to the limit. 954 // Keep in mind that live_nodes() isn't accurate during inlining until 955 // dead node elimination step happens (see Compile::inline_incrementally). 956 return live_nodes() > (uint)LiveNodeCountInliningCutoff * 11 / 10; 957 } 958 } 959 960 void inc_number_of_mh_late_inlines() { _number_of_mh_late_inlines++; } 961 void dec_number_of_mh_late_inlines() { assert(_number_of_mh_late_inlines > 0, "_number_of_mh_late_inlines < 0 !"); _number_of_mh_late_inlines--; } 962 bool has_mh_late_inlines() const { return _number_of_mh_late_inlines > 0; } 963 964 void inline_incrementally_one(); 965 void inline_incrementally(PhaseIterGVN& igvn); 966 void inline_string_calls(bool parse_time); 967 void inline_boxing_calls(PhaseIterGVN& igvn); 968 969 // Matching, CFG layout, allocation, code generation 970 PhaseCFG* cfg() { return _cfg; } 971 bool select_24_bit_instr() const { return _select_24_bit_instr; } 972 bool in_24_bit_fp_mode() const { return _in_24_bit_fp_mode; } 973 bool has_java_calls() const { return _java_calls > 0; } 974 int java_calls() const { return _java_calls; } 975 int inner_loops() const { return _inner_loops; } 976 Matcher* matcher() { return _matcher; } 977 PhaseRegAlloc* regalloc() { return _regalloc; } 978 int frame_slots() const { return _frame_slots; } 979 int frame_size_in_words() const; // frame_slots in units of the polymorphic 'words' 980 int frame_size_in_bytes() const { return _frame_slots << LogBytesPerInt; } 981 RegMask& FIRST_STACK_mask() { return _FIRST_STACK_mask; } 982 Arena* indexSet_arena() { return _indexSet_arena; } 983 void* indexSet_free_block_list() { return _indexSet_free_block_list; } 984 uint node_bundling_limit() { return _node_bundling_limit; } |