| Index: src/compiler/typer.cc | 
| diff --git a/src/compiler/typer.cc b/src/compiler/typer.cc | 
| index 7db9a05079453b6b227dc70236876abc5878b715..e33b7764567881f149e760262b26a9a58f2b1f87 100644 | 
| --- a/src/compiler/typer.cc | 
| +++ b/src/compiler/typer.cc | 
| @@ -1571,6 +1571,16 @@ Type* Typer::Visitor::TypeCheckBounds(Node* node) { | 
| return Type::Range(min, max, zone()); | 
| } | 
|  | 
| +Type* Typer::Visitor::TypeCheckHeapObject(Node* node) { | 
| +  Type* type = Operand(node, 0); | 
| +  return type; | 
| +} | 
| + | 
| +Type* Typer::Visitor::TypeCheckIf(Node* node) { | 
| +  UNREACHABLE(); | 
| +  return nullptr; | 
| +} | 
| + | 
| Type* Typer::Visitor::TypeCheckMaps(Node* node) { | 
| UNREACHABLE(); | 
| return nullptr; | 
| @@ -1581,24 +1591,14 @@ Type* Typer::Visitor::TypeCheckNumber(Node* node) { | 
| return Type::Intersect(arg, Type::Number(), zone()); | 
| } | 
|  | 
| -Type* Typer::Visitor::TypeCheckString(Node* node) { | 
| +Type* Typer::Visitor::TypeCheckSmi(Node* node) { | 
| Type* arg = Operand(node, 0); | 
| -  return Type::Intersect(arg, Type::String(), zone()); | 
| +  return Type::Intersect(arg, Type::SignedSmall(), zone()); | 
| } | 
|  | 
| -Type* Typer::Visitor::TypeCheckIf(Node* node) { | 
| -  UNREACHABLE(); | 
| -  return nullptr; | 
| -} | 
| - | 
| -Type* Typer::Visitor::TypeCheckTaggedPointer(Node* node) { | 
| -  Type* type = Operand(node, 0); | 
| -  return type; | 
| -} | 
| - | 
| -Type* Typer::Visitor::TypeCheckTaggedSigned(Node* node) { | 
| +Type* Typer::Visitor::TypeCheckString(Node* node) { | 
| Type* arg = Operand(node, 0); | 
| -  return Type::Intersect(arg, typer_->cache_.kSmi, zone()); | 
| +  return Type::Intersect(arg, Type::String(), zone()); | 
| } | 
|  | 
| Type* Typer::Visitor::TypeCheckFloat64Hole(Node* node) { | 
|  |