| 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()));
|
| }
|
|
|
|
|
|
|