src/share/vm/opto/bytecodeInfo.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot-comp Sdiff src/share/vm/opto

src/share/vm/opto/bytecodeInfo.cpp

Print this page




 372     }
 373 
 374     if ((!UseInterpreter || CompileTheWorld) &&
 375         is_init_with_ea(callee_method, caller_method, C)) {
 376 
 377       // Escape Analysis stress testing when running Xcomp or CTW:
 378       // inline constructors even if they are not reached.
 379 
 380     } else if (profile.count() == 0) {
 381       // don't inline unreached call sites
 382        set_msg("call site not reached");
 383        return false;
 384     }
 385   }
 386 
 387   if (!C->do_inlining() && InlineAccessors) {
 388     set_msg("not an accessor");
 389     return false;
 390   }
 391   if (inline_level() > _max_inline_level) {




 392     if (!callee_method->force_inline() || !IncrementalInline) {
 393       set_msg("inlining too deep");
 394       return false;
 395     } else if (!C->inlining_incrementally()) {
 396       should_delay = true;
 397     }
 398   }
 399 
 400   // detect direct and indirect recursive inlining
 401   {
 402     // count the current method and the callee
 403     const bool is_compiled_lambda_form = callee_method->is_compiled_lambda_form();
 404     int inline_level = 0;
 405     if (!is_compiled_lambda_form) {
 406       if (method() == callee_method) {
 407         inline_level++;
 408       }
 409     }
 410     // count callers of current method and callee
 411     Node* callee_argument0 = is_compiled_lambda_form ? jvms->map()->argument(jvms, 0)->uncast() : NULL;




 372     }
 373 
 374     if ((!UseInterpreter || CompileTheWorld) &&
 375         is_init_with_ea(callee_method, caller_method, C)) {
 376 
 377       // Escape Analysis stress testing when running Xcomp or CTW:
 378       // inline constructors even if they are not reached.
 379 
 380     } else if (profile.count() == 0) {
 381       // don't inline unreached call sites
 382        set_msg("call site not reached");
 383        return false;
 384     }
 385   }
 386 
 387   if (!C->do_inlining() && InlineAccessors) {
 388     set_msg("not an accessor");
 389     return false;
 390   }
 391   if (inline_level() > _max_inline_level) {
 392     if (callee_method->force_inline() && inline_level() > MaxForceInlineLevel) {
 393       set_msg("MaxForceInlineLevel");
 394       return false;
 395     }
 396     if (!callee_method->force_inline() || !IncrementalInline) {
 397       set_msg("inlining too deep");
 398       return false;
 399     } else if (!C->inlining_incrementally()) {
 400       should_delay = true;
 401     }
 402   }
 403 
 404   // detect direct and indirect recursive inlining
 405   {
 406     // count the current method and the callee
 407     const bool is_compiled_lambda_form = callee_method->is_compiled_lambda_form();
 408     int inline_level = 0;
 409     if (!is_compiled_lambda_form) {
 410       if (method() == callee_method) {
 411         inline_level++;
 412       }
 413     }
 414     // count callers of current method and callee
 415     Node* callee_argument0 = is_compiled_lambda_form ? jvms->map()->argument(jvms, 0)->uncast() : NULL;


src/share/vm/opto/bytecodeInfo.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File