| Index: src/compiler/typer.cc
 | 
| diff --git a/src/compiler/typer.cc b/src/compiler/typer.cc
 | 
| index 94c54ac60089a60418f1e22ae263bc2ba9e236dc..3150222b79f8ce0322ffbcf26fff40e185c04631 100644
 | 
| --- a/src/compiler/typer.cc
 | 
| +++ b/src/compiler/typer.cc
 | 
| @@ -1119,11 +1119,7 @@ Type* Typer::Visitor::TypeJSCreateArguments(Node* node) {
 | 
|    return Type::OtherObject();
 | 
|  }
 | 
|  
 | 
| -
 | 
| -Type* Typer::Visitor::TypeJSCreateArray(Node* node) {
 | 
| -  return Type::OtherObject();
 | 
| -}
 | 
| -
 | 
| +Type* Typer::Visitor::TypeJSCreateArray(Node* node) { return Type::Array(); }
 | 
|  
 | 
|  Type* Typer::Visitor::TypeJSCreateClosure(Node* node) {
 | 
|    return Type::Function();
 | 
| @@ -1139,7 +1135,7 @@ Type* Typer::Visitor::TypeJSCreateKeyValueArray(Node* node) {
 | 
|  }
 | 
|  
 | 
|  Type* Typer::Visitor::TypeJSCreateLiteralArray(Node* node) {
 | 
| -  return Type::OtherObject();
 | 
| +  return Type::Array();
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -1516,6 +1512,7 @@ Type* Typer::Visitor::JSCallTyper(Type* fun, Typer* t) {
 | 
|  
 | 
|          // Object functions.
 | 
|          case kObjectAssign:
 | 
| +          return Type::Receiver();
 | 
|          case kObjectCreate:
 | 
|            return Type::OtherObject();
 | 
|          case kObjectHasOwnProperty:
 | 
| @@ -1527,7 +1524,7 @@ Type* Typer::Visitor::JSCallTyper(Type* fun, Typer* t) {
 | 
|          case kRegExpCompile:
 | 
|            return Type::OtherObject();
 | 
|          case kRegExpExec:
 | 
| -          return Type::Union(Type::OtherObject(), Type::Null(), t->zone());
 | 
| +          return Type::Union(Type::Array(), Type::Null(), t->zone());
 | 
|          case kRegExpTest:
 | 
|            return Type::Boolean();
 | 
|          case kRegExpToString:
 | 
| 
 |