[turbofan] Escape analysis treats guard nodes as escaping.
This makes escape analysis treat all guard nodes in the graph as an escaping use. We eventually want to properly handle guard nodes, this just serves as a temporary workaround to get things going. R=bmeurer@chromium.org BUG=v8:602595 LOG=n Review-Url: https://codereview.chromium.org/1972323004 Cr-Commit-Position: refs/heads/master@{#36286}
This commit is contained in:
parent
639ce6027b
commit
7cef5593e4
@ -712,6 +712,7 @@ bool EscapeStatusAnalysis::CheckUsesForEscape(Node* uses, Node* rep,
|
||||
}
|
||||
break;
|
||||
case IrOpcode::kSelect:
|
||||
case IrOpcode::kGuard:
|
||||
if (SetEscaped(rep)) {
|
||||
TRACE("Setting #%d (%s) to escaped because of use by #%d (%s)\n",
|
||||
rep->id(), rep->op()->mnemonic(), use->id(),
|
||||
@ -721,7 +722,8 @@ bool EscapeStatusAnalysis::CheckUsesForEscape(Node* uses, Node* rep,
|
||||
break;
|
||||
default:
|
||||
if (use->op()->EffectInputCount() == 0 &&
|
||||
uses->op()->EffectInputCount() > 0) {
|
||||
uses->op()->EffectInputCount() > 0 &&
|
||||
!IrOpcode::IsJsOpcode(use->opcode())) {
|
||||
TRACE("Encountered unaccounted use by #%d (%s)\n", use->id(),
|
||||
use->op()->mnemonic());
|
||||
UNREACHABLE();
|
||||
|
12
test/mjsunit/regress/regress-crbug-602595.js
Normal file
12
test/mjsunit/regress/regress-crbug-602595.js
Normal file
@ -0,0 +1,12 @@
|
||||
// Copyright 2016 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Flags: --allow-natives-syntax --experimental-turbo-escape
|
||||
|
||||
function f(a) { return [a] }
|
||||
|
||||
assertEquals([23], f(23));
|
||||
assertEquals([42], f(42));
|
||||
%OptimizeFunctionOnNextCall(f);
|
||||
assertEquals([65], f(65));
|
Loading…
Reference in New Issue
Block a user