v8/test/mjsunit/regress/regress-crbug-729573-2.js
bmeurer 337bb36e52 [deoptimizer] Teach the Deoptimizer about bound functions.
The inlining of Function.prototype.bind can lead to escape analyzed
bound functions, which weren't handled by the Deoptimizer previously.

BUG=chromium:729573
R=jarin@chromium.org,cbruni@chromium.org

Review-Url: https://codereview.chromium.org/2931483003
Cr-Commit-Position: refs/heads/master@{#45751}
2017-06-07 06:25:26 +00:00

24 lines
491 B
JavaScript

// 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 bar(x) {
"use strict";
return this + x;
}
function foo(f) {
var a = bar.bind(42, 1);
return f() ? 0 : a;
}
function t() { return true; }
assertEquals(0, foo(t));
assertEquals(0, foo(t));
%OptimizeFunctionOnNextCall(foo);
var a = foo(_ => false);
assertEquals(43, a());