Index: src/compiler/js-typed-lowering.cc |
diff --git a/src/compiler/js-typed-lowering.cc b/src/compiler/js-typed-lowering.cc |
index 361cb94f058c3e39ce117c69ba3b44c32a91039c..a9b7493841ba61706bda171c993484344fdc94c0 100644 |
--- a/src/compiler/js-typed-lowering.cc |
+++ b/src/compiler/js-typed-lowering.cc |
@@ -515,6 +515,16 @@ Reduction JSTypedLowering::ReduceJSToBooleanInput(Node* input) { |
cmp->ReplaceInput(0, input); |
return Changed(inv); |
} |
+ if (input_type->Is(Type::Number())) { |
rossberg
2014/08/06 13:04:07
Why is this duplicated?
|
+ // JSToBoolean(number) => BooleanNot(NumberEqual(x, #0)) |
+ Node* cmp = graph()->NewNode(simplified()->NumberEqual(), input, |
+ jsgraph()->ZeroConstant()); |
+ Node* inv = graph()->NewNode(simplified()->BooleanNot(), cmp); |
+ ReplaceEagerly(input, inv); |
+ // TODO(titzer): Ugly. ReplaceEagerly() smashes all uses. So smash it back. |
+ cmp->ReplaceInput(0, input); |
+ return Changed(inv); |
+ } |
// TODO(turbofan): js-typed-lowering of ToBoolean(string) |
return NoChange(); |
} |