[turbofan] Fix bit representation of NumberConstant.

TEST=mjsunit/compiler/regress-bit-number-constant

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

Cr-Commit-Position: refs/heads/master@{#25979}
This commit is contained in:
bmeurer 2015-01-07 07:44:13 -08:00 committed by Commit bot
parent 0d6785805c
commit d1c1a3c48f
2 changed files with 24 additions and 0 deletions

View File

@ -296,6 +296,13 @@ class RepresentationChanger {
if (value == 0 || value == 1) return node;
return jsgraph()->Int32Constant(1); // value != 0
}
case IrOpcode::kNumberConstant: {
double value = OpParameter<double>(node);
if (std::isnan(value) || value == 0.0) {
return jsgraph()->Int32Constant(0);
}
return jsgraph()->Int32Constant(1);
}
case IrOpcode::kHeapConstant: {
Handle<Object> handle = OpParameter<Unique<Object> >(node).handle();
DCHECK(*handle == isolate()->heap()->true_value() ||

View File

@ -0,0 +1,17 @@
// 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.
var stdlib = this;
var buffer = new ArrayBuffer(64 * 1024);
var foreign = {}
var foo = (function Module(stdlib, foreign, heap) {
"use asm";
function foo(i) {
return !(i ? 1 : false);
}
return {foo:foo};
})(stdlib, foreign, buffer).foo;
assertFalse(foo(1));