Index: src/compiler/typer.cc |
diff --git a/src/compiler/typer.cc b/src/compiler/typer.cc |
index 137829e92d9bb1b077fc31b10b4fa14e6b6c181c..1fcfa17de9a4b920a30e7ead291e7921d5d1c10b 100644 |
--- a/src/compiler/typer.cc |
+++ b/src/compiler/typer.cc |
@@ -1596,6 +1596,14 @@ Bounds Typer::Visitor::TypeChangeFloat64ToTagged(Node* node) { |
} |
+Bounds Typer::Visitor::TypeChangeBitToBool(Node* node) { |
+ Bounds arg = Operand(node, 0); |
+ // TODO(neis): DCHECK(arg.upper->Is(Type::Boolean())); |
+ return Bounds(ChangeRepresentation(arg.lower, Type::TaggedPointer(), zone()), |
+ ChangeRepresentation(arg.upper, Type::TaggedPointer(), zone())); |
+} |
+ |
+ |
Bounds Typer::Visitor::TypeChangeBoolToBit(Node* node) { |
Bounds arg = Operand(node, 0); |
// TODO(neis): DCHECK(arg.upper->Is(Type::Boolean())); |
@@ -1605,12 +1613,15 @@ Bounds Typer::Visitor::TypeChangeBoolToBit(Node* node) { |
} |
-Bounds Typer::Visitor::TypeChangeBitToBool(Node* node) { |
- Bounds arg = Operand(node, 0); |
- // TODO(neis): DCHECK(arg.upper->Is(Type::Boolean())); |
+Bounds Typer::Visitor::TypeChangeWord32ToBit(Node* node) { |
+ return Bounds( |
+ ChangeRepresentation(Type::Boolean(), Type::UntaggedBit(), zone())); |
+} |
+ |
+ |
+Bounds Typer::Visitor::TypeChangeWord64ToBit(Node* node) { |
return Bounds( |
- ChangeRepresentation(arg.lower, Type::TaggedPointer(), zone()), |
- ChangeRepresentation(arg.upper, Type::TaggedPointer(), zone())); |
+ ChangeRepresentation(Type::Boolean(), Type::UntaggedBit(), zone())); |
} |