hotspot/src/share/vm/opto/compile.cpp
changeset 211 e2b60448c234
parent 1 489c9b5090e2
child 238 803c80713999
equal deleted inserted replaced
210:6da234892f4a 211:e2b60448c234
   329   // Check if recompiling
   329   // Check if recompiling
   330   if (_subsume_loads == false && PrintOpto) {
   330   if (_subsume_loads == false && PrintOpto) {
   331     // Recompiling without allowing machine instructions to subsume loads
   331     // Recompiling without allowing machine instructions to subsume loads
   332     tty->print_cr("*********************************************************");
   332     tty->print_cr("*********************************************************");
   333     tty->print_cr("** Bailout: Recompile without subsuming loads          **");
   333     tty->print_cr("** Bailout: Recompile without subsuming loads          **");
       
   334     tty->print_cr("*********************************************************");
       
   335   }
       
   336   if (_do_escape_analysis != DoEscapeAnalysis && PrintOpto) {
       
   337     // Recompiling without escape analysis
       
   338     tty->print_cr("*********************************************************");
       
   339     tty->print_cr("** Bailout: Recompile without escape analysis          **");
   334     tty->print_cr("*********************************************************");
   340     tty->print_cr("*********************************************************");
   335   }
   341   }
   336   if (env()->break_at_compile()) {
   342   if (env()->break_at_compile()) {
   337     // Open the debugger when compiing this method.
   343     // Open the debugger when compiing this method.
   338     tty->print("### Breaking when compiling: ");
   344     tty->print("### Breaking when compiling: ");
   413 
   419 
   414 // Compile a method.  entry_bci is -1 for normal compilations and indicates
   420 // Compile a method.  entry_bci is -1 for normal compilations and indicates
   415 // the continuation bci for on stack replacement.
   421 // the continuation bci for on stack replacement.
   416 
   422 
   417 
   423 
   418 Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr_bci, bool subsume_loads )
   424 Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr_bci, bool subsume_loads, bool do_escape_analysis )
   419                 : Phase(Compiler),
   425                 : Phase(Compiler),
   420                   _env(ci_env),
   426                   _env(ci_env),
   421                   _log(ci_env->log()),
   427                   _log(ci_env->log()),
   422                   _compile_id(ci_env->compile_id()),
   428                   _compile_id(ci_env->compile_id()),
   423                   _save_argument_registers(false),
   429                   _save_argument_registers(false),
   428                   _entry_bci(osr_bci),
   434                   _entry_bci(osr_bci),
   429                   _initial_gvn(NULL),
   435                   _initial_gvn(NULL),
   430                   _for_igvn(NULL),
   436                   _for_igvn(NULL),
   431                   _warm_calls(NULL),
   437                   _warm_calls(NULL),
   432                   _subsume_loads(subsume_loads),
   438                   _subsume_loads(subsume_loads),
       
   439                   _do_escape_analysis(do_escape_analysis),
   433                   _failure_reason(NULL),
   440                   _failure_reason(NULL),
   434                   _code_buffer("Compile::Fill_buffer"),
   441                   _code_buffer("Compile::Fill_buffer"),
   435                   _orig_pc_slot(0),
   442                   _orig_pc_slot(0),
   436                   _orig_pc_slot_offset_in_bytes(0),
   443                   _orig_pc_slot_offset_in_bytes(0),
   437                   _node_bundling_limit(0),
   444                   _node_bundling_limit(0),
   485   uint estimated_size = method()->code_size()*4+64;
   492   uint estimated_size = method()->code_size()*4+64;
   486   estimated_size = (estimated_size < MINIMUM_NODE_HASH ? MINIMUM_NODE_HASH : estimated_size);
   493   estimated_size = (estimated_size < MINIMUM_NODE_HASH ? MINIMUM_NODE_HASH : estimated_size);
   487   PhaseGVN gvn(node_arena(), estimated_size);
   494   PhaseGVN gvn(node_arena(), estimated_size);
   488   set_initial_gvn(&gvn);
   495   set_initial_gvn(&gvn);
   489 
   496 
   490   if (DoEscapeAnalysis)
   497   if (_do_escape_analysis)
   491     _congraph = new ConnectionGraph(this);
   498     _congraph = new ConnectionGraph(this);
   492 
   499 
   493   { // Scope for timing the parser
   500   { // Scope for timing the parser
   494     TracePhase t3("parse", &_t_parser, true);
   501     TracePhase t3("parse", &_t_parser, true);
   495 
   502 
   575 
   582 
   576   // Perform escape analysis
   583   // Perform escape analysis
   577   if (_congraph != NULL) {
   584   if (_congraph != NULL) {
   578     NOT_PRODUCT( TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, TimeCompiler); )
   585     NOT_PRODUCT( TracePhase t2("escapeAnalysis", &_t_escapeAnalysis, TimeCompiler); )
   579     _congraph->compute_escape();
   586     _congraph->compute_escape();
       
   587     if (failing())  return;
       
   588 
   580 #ifndef PRODUCT
   589 #ifndef PRODUCT
   581     if (PrintEscapeAnalysis) {
   590     if (PrintEscapeAnalysis) {
   582       _congraph->dump();
   591       _congraph->dump();
   583     }
   592     }
   584 #endif
   593 #endif
   673     _for_igvn(NULL),
   682     _for_igvn(NULL),
   674     _warm_calls(NULL),
   683     _warm_calls(NULL),
   675     _orig_pc_slot(0),
   684     _orig_pc_slot(0),
   676     _orig_pc_slot_offset_in_bytes(0),
   685     _orig_pc_slot_offset_in_bytes(0),
   677     _subsume_loads(true),
   686     _subsume_loads(true),
       
   687     _do_escape_analysis(false),
   678     _failure_reason(NULL),
   688     _failure_reason(NULL),
   679     _code_buffer("Compile::Fill_buffer"),
   689     _code_buffer("Compile::Fill_buffer"),
   680     _node_bundling_limit(0),
   690     _node_bundling_limit(0),
   681     _node_bundling_base(NULL),
   691     _node_bundling_base(NULL),
   682 #ifndef PRODUCT
   692 #ifndef PRODUCT
   820   // // Update cached type information
   830   // // Update cached type information
   821   // if( _method && _method->constants() )
   831   // if( _method && _method->constants() )
   822   //   Type::update_loaded_types(_method, _method->constants());
   832   //   Type::update_loaded_types(_method, _method->constants());
   823 
   833 
   824   // Init alias_type map.
   834   // Init alias_type map.
   825   if (!DoEscapeAnalysis && aliaslevel == 3)
   835   if (!_do_escape_analysis && aliaslevel == 3)
   826     aliaslevel = 2;  // No unique types without escape analysis
   836     aliaslevel = 2;  // No unique types without escape analysis
   827   _AliasLevel = aliaslevel;
   837   _AliasLevel = aliaslevel;
   828   const int grow_ats = 16;
   838   const int grow_ats = 16;
   829   _max_alias_types = grow_ats;
   839   _max_alias_types = grow_ats;
   830   _alias_types   = NEW_ARENA_ARRAY(comp_arena(), AliasType*, grow_ats);
   840   _alias_types   = NEW_ARENA_ARRAY(comp_arena(), AliasType*, grow_ats);