[turbofan] Teach escape analysis about ObjectIsNaN.
BUG=chromium:698607 R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2735633003 Cr-Commit-Position: refs/heads/master@{#43612}
This commit is contained in:
parent
fe704477d6
commit
1e4a2725b8
@ -840,6 +840,7 @@ bool EscapeStatusAnalysis::CheckUsesForEscape(Node* uses, Node* rep,
|
||||
case IrOpcode::kStringCharCodeAt:
|
||||
case IrOpcode::kStringIndexOf:
|
||||
case IrOpcode::kObjectIsDetectableCallable:
|
||||
case IrOpcode::kObjectIsNaN:
|
||||
case IrOpcode::kObjectIsNonCallable:
|
||||
case IrOpcode::kObjectIsNumber:
|
||||
case IrOpcode::kObjectIsReceiver:
|
||||
|
22
test/mjsunit/regress/regress-crbug-698607.js
Normal file
22
test/mjsunit/regress/regress-crbug-698607.js
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright 2017 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
|
||||
|
||||
function assertSame(expected, found) {
|
||||
if (found === expected) {
|
||||
} else if ((expected !== expected) && (found !== found)) {
|
||||
}
|
||||
}
|
||||
|
||||
function foo() {
|
||||
var x = {var: 0.5};
|
||||
assertSame(x, x.val);
|
||||
return () => x;
|
||||
}
|
||||
|
||||
foo(1);
|
||||
foo(1);
|
||||
%OptimizeFunctionOnNextCall(foo);
|
||||
foo(1);
|
Loading…
Reference in New Issue
Block a user