v8/test/mjsunit/compiler/deopt-tonumber-shift.js
bmeurer 5494920a18 [turbofan] Use frame state before for shift operations as well.
This was already done for other binary operations, so it's basically
copying the existing functionality to shift left and shift right
logical/arithmetic.

R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28389}
2015-05-13 11:17:28 +00:00

41 lines
759 B
JavaScript

// Copyright 2015 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
var f = (function() {
"use asm";
function f(x, y) {
return x << y;
}
return f;
})();
var counter = 0;
var deopt = { toString : function() {
%DeoptimizeFunction(f);
counter++;
return "2";
} };
var o = { toString : function() {
counter++;
return "1";
} };
counter = 0;
assertEquals(4, f(deopt, o));
assertEquals(2, counter);
%OptimizeFunctionOnNextCall(f);
counter = 0;
assertEquals(4, f(o, deopt));
assertEquals(2, counter);
%OptimizeFunctionOnNextCall(f);
counter = 0;
assertEquals(8, f(deopt, deopt));
assertEquals(2, counter);