1084 set_has_stringbuilder(false); 1085 set_has_boxed_value(false); 1086 _trap_can_recompile = false; // no traps emitted yet 1087 _major_progress = true; // start out assuming good things will happen 1088 set_has_unsafe_access(false); 1089 set_max_vector_size(0); 1090 Copy::zero_to_bytes(_trap_hist, sizeof(_trap_hist)); 1091 set_decompile_count(0); 1092 1093 set_do_freq_based_layout(BlockLayoutByFrequency || method_has_option("BlockLayoutByFrequency")); 1094 set_num_loop_opts(LoopOptsCount); 1095 set_do_inlining(Inline); 1096 set_max_inline_size(MaxInlineSize); 1097 set_freq_inline_size(FreqInlineSize); 1098 set_do_scheduling(OptoScheduling); 1099 set_do_count_invocations(false); 1100 set_do_method_data_update(false); 1101 1102 set_do_vector_loop(false); 1103 1104 bool do_vector = false; 1105 if (AllowVectorizeOnDemand) { 1106 if (has_method() && (method()->has_option("Vectorize") || method()->has_option("VectorizeDebug"))) { 1107 set_do_vector_loop(true); 1108 } else if (has_method() && method()->name() != 0 && 1109 method()->intrinsic_id() == vmIntrinsics::_forEachRemaining) { 1110 set_do_vector_loop(true); 1111 } 1112 #ifndef PRODUCT 1113 if (do_vector_loop() && Verbose) { 1114 tty->print("Compile::Init: do vectorized loops (SIMD like) for method %s\n", method()->name()->as_quoted_ascii()); 1115 } 1116 #endif 1117 } 1118 1119 set_age_code(has_method() && method()->profile_aging()); 1120 set_rtm_state(NoRTM); // No RTM lock eliding by default 1121 method_has_option_value("MaxNodeLimit", _max_node_limit); 1122 #if INCLUDE_RTM_OPT 1123 if (UseRTMLocking && has_method() && (method()->method_data_or_null() != NULL)) { 1124 int rtm_state = method()->method_data()->rtm_state(); 1125 if (method_has_option("NoRTMLockEliding") || ((rtm_state & NoRTM) != 0)) { 1126 // Don't generate RTM lock eliding code. 1127 set_rtm_state(NoRTM); 1128 } else if (method_has_option("UseRTMLockEliding") || ((rtm_state & UseRTM) != 0) || !UseRTMDeopt) { 1129 // Generate RTM lock eliding code without abort ratio calculation code. 1130 set_rtm_state(UseRTM); 1131 } else if (UseRTMDeopt) { 1132 // Generate RTM lock eliding code and include abort ratio calculation 1133 // code if UseRTMDeopt is on. 1134 set_rtm_state(ProfileRTM); 1135 } 1136 } 1137 #endif | 1084 set_has_stringbuilder(false); 1085 set_has_boxed_value(false); 1086 _trap_can_recompile = false; // no traps emitted yet 1087 _major_progress = true; // start out assuming good things will happen 1088 set_has_unsafe_access(false); 1089 set_max_vector_size(0); 1090 Copy::zero_to_bytes(_trap_hist, sizeof(_trap_hist)); 1091 set_decompile_count(0); 1092 1093 set_do_freq_based_layout(BlockLayoutByFrequency || method_has_option("BlockLayoutByFrequency")); 1094 set_num_loop_opts(LoopOptsCount); 1095 set_do_inlining(Inline); 1096 set_max_inline_size(MaxInlineSize); 1097 set_freq_inline_size(FreqInlineSize); 1098 set_do_scheduling(OptoScheduling); 1099 set_do_count_invocations(false); 1100 set_do_method_data_update(false); 1101 1102 set_do_vector_loop(false); 1103 1104 if (AllowVectorizeOnDemand) { 1105 if (has_method() && (method()->has_option("Vectorize") || method()->has_option("VectorizeDebug"))) { 1106 set_do_vector_loop(true); 1107 NOT_PRODUCT(if (do_vector_loop() && Verbose) {tty->print("Compile::Init: do vectorized loops (SIMD like) for method %s\n", method()->name()->as_quoted_ascii());}) 1108 } else if (has_method() && method()->name() != 0 && 1109 method()->intrinsic_id() == vmIntrinsics::_forEachRemaining) { 1110 set_do_vector_loop(true); 1111 } 1112 } 1113 set_use_cmove(UseCMoveUnconditionally /* || do_vector_loop()*/); //TODO: consider do_vector_loop() mandate use_cmove unconditionally 1114 NOT_PRODUCT(if (use_cmove() && Verbose && has_method()) {tty->print("Compile::Init: use CMove without profitability tests for method %s\n", method()->name()->as_quoted_ascii());}) 1115 1116 set_age_code(has_method() && method()->profile_aging()); 1117 set_rtm_state(NoRTM); // No RTM lock eliding by default 1118 method_has_option_value("MaxNodeLimit", _max_node_limit); 1119 #if INCLUDE_RTM_OPT 1120 if (UseRTMLocking && has_method() && (method()->method_data_or_null() != NULL)) { 1121 int rtm_state = method()->method_data()->rtm_state(); 1122 if (method_has_option("NoRTMLockEliding") || ((rtm_state & NoRTM) != 0)) { 1123 // Don't generate RTM lock eliding code. 1124 set_rtm_state(NoRTM); 1125 } else if (method_has_option("UseRTMLockEliding") || ((rtm_state & UseRTM) != 0) || !UseRTMDeopt) { 1126 // Generate RTM lock eliding code without abort ratio calculation code. 1127 set_rtm_state(UseRTM); 1128 } else if (UseRTMDeopt) { 1129 // Generate RTM lock eliding code and include abort ratio calculation 1130 // code if UseRTMDeopt is on. 1131 set_rtm_state(ProfileRTM); 1132 } 1133 } 1134 #endif |