< prev index next >

src/hotspot/share/opto/compile.cpp

Print this page




 637                   _save_argument_registers(false),
 638                   _subsume_loads(subsume_loads),
 639                   _do_escape_analysis(do_escape_analysis),
 640                   _eliminate_boxing(eliminate_boxing),
 641                   _method(target),
 642                   _entry_bci(osr_bci),
 643                   _stub_function(NULL),
 644                   _stub_name(NULL),
 645                   _stub_entry_point(NULL),
 646                   _max_node_limit(MaxNodeLimit),
 647                   _orig_pc_slot(0),
 648                   _orig_pc_slot_offset_in_bytes(0),
 649                   _inlining_progress(false),
 650                   _inlining_incrementally(false),
 651                   _do_cleanup(false),
 652                   _has_reserved_stack_access(target->has_reserved_stack_access()),
 653 #ifndef PRODUCT
 654                   _trace_opto_output(directive->TraceOptoOutputOption),
 655 #endif
 656                   _has_method_handle_invokes(false),

 657                   _comp_arena(mtCompiler),
 658                   _barrier_set_state(BarrierSet::barrier_set()->barrier_set_c2()->create_barrier_state(comp_arena())),
 659                   _env(ci_env),
 660                   _directive(directive),
 661                   _log(ci_env->log()),
 662                   _failure_reason(NULL),
 663                   _congraph(NULL),
 664 #ifndef PRODUCT
 665                   _printer(IdealGraphPrinter::printer()),
 666 #endif
 667                   _dead_node_list(comp_arena()),
 668                   _dead_node_count(0),
 669                   _node_arena(mtCompiler),
 670                   _old_arena(mtCompiler),
 671                   _mach_constant_base_node(NULL),
 672                   _Compile_types(mtCompiler),
 673                   _initial_gvn(NULL),
 674                   _for_igvn(NULL),
 675                   _warm_calls(NULL),
 676                   _late_inlines(comp_arena(), 2, 0, NULL),


 968     _compile_id(0),
 969     _save_argument_registers(save_arg_registers),
 970     _subsume_loads(true),
 971     _do_escape_analysis(false),
 972     _eliminate_boxing(false),
 973     _method(NULL),
 974     _entry_bci(InvocationEntryBci),
 975     _stub_function(stub_function),
 976     _stub_name(stub_name),
 977     _stub_entry_point(NULL),
 978     _max_node_limit(MaxNodeLimit),
 979     _orig_pc_slot(0),
 980     _orig_pc_slot_offset_in_bytes(0),
 981     _inlining_progress(false),
 982     _inlining_incrementally(false),
 983     _has_reserved_stack_access(false),
 984 #ifndef PRODUCT
 985     _trace_opto_output(directive->TraceOptoOutputOption),
 986 #endif
 987     _has_method_handle_invokes(false),

 988     _comp_arena(mtCompiler),
 989     _env(ci_env),
 990     _directive(directive),
 991     _log(ci_env->log()),
 992     _failure_reason(NULL),
 993     _congraph(NULL),
 994 #ifndef PRODUCT
 995     _printer(NULL),
 996 #endif
 997     _dead_node_list(comp_arena()),
 998     _dead_node_count(0),
 999     _node_arena(mtCompiler),
1000     _old_arena(mtCompiler),
1001     _mach_constant_base_node(NULL),
1002     _Compile_types(mtCompiler),
1003     _initial_gvn(NULL),
1004     _for_igvn(NULL),
1005     _warm_calls(NULL),
1006     _number_of_mh_late_inlines(0),
1007     _print_inlining_stream(NULL),


1148   set_age_code(has_method() && method()->profile_aging());
1149   set_rtm_state(NoRTM); // No RTM lock eliding by default
1150   _max_node_limit = _directive->MaxNodeLimitOption;
1151 
1152 #if INCLUDE_RTM_OPT
1153   if (UseRTMLocking && has_method() && (method()->method_data_or_null() != NULL)) {
1154     int rtm_state = method()->method_data()->rtm_state();
1155     if (method_has_option("NoRTMLockEliding") || ((rtm_state & NoRTM) != 0)) {
1156       // Don't generate RTM lock eliding code.
1157       set_rtm_state(NoRTM);
1158     } else if (method_has_option("UseRTMLockEliding") || ((rtm_state & UseRTM) != 0) || !UseRTMDeopt) {
1159       // Generate RTM lock eliding code without abort ratio calculation code.
1160       set_rtm_state(UseRTM);
1161     } else if (UseRTMDeopt) {
1162       // Generate RTM lock eliding code and include abort ratio calculation
1163       // code if UseRTMDeopt is on.
1164       set_rtm_state(ProfileRTM);
1165     }
1166   }
1167 #endif



1168   if (debug_info()->recording_non_safepoints()) {
1169     set_node_note_array(new(comp_arena()) GrowableArray<Node_Notes*>
1170                         (comp_arena(), 8, 0, NULL));
1171     set_default_node_notes(Node_Notes::make(this));
1172   }
1173 
1174   // // -- Initialize types before each compile --
1175   // // Update cached type information
1176   // if( _method && _method->constants() )
1177   //   Type::update_loaded_types(_method, _method->constants());
1178 
1179   // Init alias_type map.
1180   if (!_do_escape_analysis && aliaslevel == 3)
1181     aliaslevel = 2;  // No unique types without escape analysis
1182   _AliasLevel = aliaslevel;
1183   const int grow_ats = 16;
1184   _max_alias_types = grow_ats;
1185   _alias_types   = NEW_ARENA_ARRAY(comp_arena(), AliasType*, grow_ats);
1186   AliasType* ats = NEW_ARENA_ARRAY(comp_arena(), AliasType,  grow_ats);
1187   Copy::zero_to_bytes(ats, sizeof(AliasType)*grow_ats);




 637                   _save_argument_registers(false),
 638                   _subsume_loads(subsume_loads),
 639                   _do_escape_analysis(do_escape_analysis),
 640                   _eliminate_boxing(eliminate_boxing),
 641                   _method(target),
 642                   _entry_bci(osr_bci),
 643                   _stub_function(NULL),
 644                   _stub_name(NULL),
 645                   _stub_entry_point(NULL),
 646                   _max_node_limit(MaxNodeLimit),
 647                   _orig_pc_slot(0),
 648                   _orig_pc_slot_offset_in_bytes(0),
 649                   _inlining_progress(false),
 650                   _inlining_incrementally(false),
 651                   _do_cleanup(false),
 652                   _has_reserved_stack_access(target->has_reserved_stack_access()),
 653 #ifndef PRODUCT
 654                   _trace_opto_output(directive->TraceOptoOutputOption),
 655 #endif
 656                   _has_method_handle_invokes(false),
 657                   _clinit_barrier_on_entry(false),
 658                   _comp_arena(mtCompiler),
 659                   _barrier_set_state(BarrierSet::barrier_set()->barrier_set_c2()->create_barrier_state(comp_arena())),
 660                   _env(ci_env),
 661                   _directive(directive),
 662                   _log(ci_env->log()),
 663                   _failure_reason(NULL),
 664                   _congraph(NULL),
 665 #ifndef PRODUCT
 666                   _printer(IdealGraphPrinter::printer()),
 667 #endif
 668                   _dead_node_list(comp_arena()),
 669                   _dead_node_count(0),
 670                   _node_arena(mtCompiler),
 671                   _old_arena(mtCompiler),
 672                   _mach_constant_base_node(NULL),
 673                   _Compile_types(mtCompiler),
 674                   _initial_gvn(NULL),
 675                   _for_igvn(NULL),
 676                   _warm_calls(NULL),
 677                   _late_inlines(comp_arena(), 2, 0, NULL),


 969     _compile_id(0),
 970     _save_argument_registers(save_arg_registers),
 971     _subsume_loads(true),
 972     _do_escape_analysis(false),
 973     _eliminate_boxing(false),
 974     _method(NULL),
 975     _entry_bci(InvocationEntryBci),
 976     _stub_function(stub_function),
 977     _stub_name(stub_name),
 978     _stub_entry_point(NULL),
 979     _max_node_limit(MaxNodeLimit),
 980     _orig_pc_slot(0),
 981     _orig_pc_slot_offset_in_bytes(0),
 982     _inlining_progress(false),
 983     _inlining_incrementally(false),
 984     _has_reserved_stack_access(false),
 985 #ifndef PRODUCT
 986     _trace_opto_output(directive->TraceOptoOutputOption),
 987 #endif
 988     _has_method_handle_invokes(false),
 989     _clinit_barrier_on_entry(false),
 990     _comp_arena(mtCompiler),
 991     _env(ci_env),
 992     _directive(directive),
 993     _log(ci_env->log()),
 994     _failure_reason(NULL),
 995     _congraph(NULL),
 996 #ifndef PRODUCT
 997     _printer(NULL),
 998 #endif
 999     _dead_node_list(comp_arena()),
1000     _dead_node_count(0),
1001     _node_arena(mtCompiler),
1002     _old_arena(mtCompiler),
1003     _mach_constant_base_node(NULL),
1004     _Compile_types(mtCompiler),
1005     _initial_gvn(NULL),
1006     _for_igvn(NULL),
1007     _warm_calls(NULL),
1008     _number_of_mh_late_inlines(0),
1009     _print_inlining_stream(NULL),


1150   set_age_code(has_method() && method()->profile_aging());
1151   set_rtm_state(NoRTM); // No RTM lock eliding by default
1152   _max_node_limit = _directive->MaxNodeLimitOption;
1153 
1154 #if INCLUDE_RTM_OPT
1155   if (UseRTMLocking && has_method() && (method()->method_data_or_null() != NULL)) {
1156     int rtm_state = method()->method_data()->rtm_state();
1157     if (method_has_option("NoRTMLockEliding") || ((rtm_state & NoRTM) != 0)) {
1158       // Don't generate RTM lock eliding code.
1159       set_rtm_state(NoRTM);
1160     } else if (method_has_option("UseRTMLockEliding") || ((rtm_state & UseRTM) != 0) || !UseRTMDeopt) {
1161       // Generate RTM lock eliding code without abort ratio calculation code.
1162       set_rtm_state(UseRTM);
1163     } else if (UseRTMDeopt) {
1164       // Generate RTM lock eliding code and include abort ratio calculation
1165       // code if UseRTMDeopt is on.
1166       set_rtm_state(ProfileRTM);
1167     }
1168   }
1169 #endif
1170   if (UseFastClassInitChecks && has_method() && !is_osr_compilation() && method()->needs_clinit_barrier()) {
1171     set_clinit_barrier_on_entry(true);
1172   }
1173   if (debug_info()->recording_non_safepoints()) {
1174     set_node_note_array(new(comp_arena()) GrowableArray<Node_Notes*>
1175                         (comp_arena(), 8, 0, NULL));
1176     set_default_node_notes(Node_Notes::make(this));
1177   }
1178 
1179   // // -- Initialize types before each compile --
1180   // // Update cached type information
1181   // if( _method && _method->constants() )
1182   //   Type::update_loaded_types(_method, _method->constants());
1183 
1184   // Init alias_type map.
1185   if (!_do_escape_analysis && aliaslevel == 3)
1186     aliaslevel = 2;  // No unique types without escape analysis
1187   _AliasLevel = aliaslevel;
1188   const int grow_ats = 16;
1189   _max_alias_types = grow_ats;
1190   _alias_types   = NEW_ARENA_ARRAY(comp_arena(), AliasType*, grow_ats);
1191   AliasType* ats = NEW_ARENA_ARRAY(comp_arena(), AliasType,  grow_ats);
1192   Copy::zero_to_bytes(ats, sizeof(AliasType)*grow_ats);


< prev index next >