v8/test/mjsunit/asm/if-tonumber.js
Benedikt Meurer 1d4dfd9ac4 [turbofan] Push JSToNumber conversions into Phis.
This essentially performs the following transformation

  JSToNumber(phi(x1,...,xn,control):primitive)
    => phi(JSToNumber(x1),...,JSToNumber(xn),control):number

which is similar to what we already do for JSToBoolean.

TEST=mjsunit/asm
R=svenpanne@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#25390}
2014-11-18 11:34:21 +00:00

32 lines
690 B
JavaScript

// Copyright 2014 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.
var stdlib = this;
var buffer = new ArrayBuffer(64 * 1024);
var foreign = {}
function Module(stdlib, foreign, heap) {
"use asm";
function foo(i) {
i = i|0;
if (i > 0) {
i = i == 1;
} else {
i = 1;
}
return i & 1|0;
}
return { foo: foo };
}
var m = Module(stdlib, foreign, buffer);
assertEquals(1, m.foo(-1));
assertEquals(1, m.foo(-0));
assertEquals(1, m.foo(0));
assertEquals(1, m.foo(1));
assertEquals(0, m.foo(2));
assertEquals(1, m.foo(true));
assertEquals(1, m.foo(false));