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; |