[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:
parent
0d6785805c
commit
d1c1a3c48f
@ -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() ||
|
||||
|
17
test/mjsunit/compiler/regress-bit-number-constant.js
Normal file
17
test/mjsunit/compiler/regress-bit-number-constant.js
Normal 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));
|
Loading…
Reference in New Issue
Block a user