[Crankshaft] Allow inlining of callees that don't pass FLAG_hydrogen_filter

To be useful for narrowing down bugs, --hydrogen-filter shouldn't prevent any
inlining that the function(s) being allowed to get optimized want(s) to do.

Free bonus content in this CL: support FLAG_stop_at in lithium-codegen-arm64,
copied from full-codegen-arm64.

Review URL: https://codereview.chromium.org/1407043004

Cr-Commit-Position: refs/heads/master@{#31333}
This commit is contained in:
jkummerow 2015-10-16 04:56:38 -07:00 committed by Commit bot
parent cf71c28f13
commit 192c0f7234
2 changed files with 9 additions and 3 deletions

View File

@ -625,7 +625,12 @@ bool LCodeGen::GeneratePrologue() {
if (info()->IsOptimizing()) { if (info()->IsOptimizing()) {
ProfileEntryHookStub::MaybeCallEntryHook(masm_); ProfileEntryHookStub::MaybeCallEntryHook(masm_);
// TODO(all): Add support for stop_t FLAG in DEBUG mode. #ifdef DEBUG
if (strlen(FLAG_stop_at) > 0 &&
info()->literal()->name()->IsUtf8EqualTo(CStrVector(FLAG_stop_at))) {
__ Debug("stop-at", __LINE__, BREAK);
}
#endif
// Sloppy mode functions and builtins need to replace the receiver with the // Sloppy mode functions and builtins need to replace the receiver with the
// global proxy when called as functions (without an explicit receiver // global proxy when called as functions (without an explicit receiver

View File

@ -8278,11 +8278,12 @@ int HOptimizedGraphBuilder::InliningAstSize(Handle<JSFunction> target) {
} }
// Target must be inlineable. // Target must be inlineable.
if (!target_shared->IsInlineable()) { BailoutReason noopt_reason = target_shared->disable_optimization_reason();
if (!target_shared->IsInlineable() && noopt_reason != kHydrogenFilter) {
TraceInline(target, caller, "target not inlineable"); TraceInline(target, caller, "target not inlineable");
return kNotInlinable; return kNotInlinable;
} }
if (target_shared->disable_optimization_reason() != kNoReason) { if (noopt_reason != kNoReason && noopt_reason != kHydrogenFilter) {
TraceInline(target, caller, "target contains unsupported syntax [early]"); TraceInline(target, caller, "target contains unsupported syntax [early]");
return kNotInlinable; return kNotInlinable;
} }