| Index: src/full-codegen/x64/full-codegen-x64.cc
 | 
| diff --git a/src/full-codegen/x64/full-codegen-x64.cc b/src/full-codegen/x64/full-codegen-x64.cc
 | 
| index 075c59795f11d2d558cdc4fc13517f99909a63d4..432734e4f7296fc1eff4421403026c9bd08308c7 100644
 | 
| --- a/src/full-codegen/x64/full-codegen-x64.cc
 | 
| +++ b/src/full-codegen/x64/full-codegen-x64.cc
 | 
| @@ -108,7 +108,7 @@ void FullCodeGenerator::Generate() {
 | 
|      StackArgumentsAccessor args(rsp, info->scope()->num_parameters());
 | 
|      __ movp(rcx, args.GetReceiverOperand());
 | 
|      __ AssertNotSmi(rcx);
 | 
| -    __ CmpObjectType(rcx, FIRST_SPEC_OBJECT_TYPE, rcx);
 | 
| +    __ CmpObjectType(rcx, FIRST_JS_RECEIVER_TYPE, rcx);
 | 
|      __ Assert(above_equal, kSloppyFunctionExpectsJSReceiverReceiver);
 | 
|    }
 | 
|  
 | 
| @@ -996,7 +996,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
 | 
|    // Convert the object to a JS object.
 | 
|    Label convert, done_convert;
 | 
|    __ JumpIfSmi(rax, &convert, Label::kNear);
 | 
| -  __ CmpObjectType(rax, FIRST_SPEC_OBJECT_TYPE, rcx);
 | 
| +  __ CmpObjectType(rax, FIRST_JS_RECEIVER_TYPE, rcx);
 | 
|    __ j(above_equal, &done_convert, Label::kNear);
 | 
|    __ bind(&convert);
 | 
|    ToObjectStub stub(isolate());
 | 
| @@ -1007,7 +1007,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
 | 
|  
 | 
|    // Check for proxies.
 | 
|    Label call_runtime;
 | 
| -  STATIC_ASSERT(FIRST_JS_PROXY_TYPE == FIRST_SPEC_OBJECT_TYPE);
 | 
| +  STATIC_ASSERT(FIRST_JS_PROXY_TYPE == FIRST_JS_RECEIVER_TYPE);
 | 
|    __ CmpObjectType(rax, LAST_JS_PROXY_TYPE, rcx);
 | 
|    __ j(below_equal, &call_runtime);
 | 
|  
 | 
| @@ -1072,7 +1072,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
 | 
|            TypeFeedbackVector::MegamorphicSentinel(isolate()));
 | 
|    __ Move(rbx, Smi::FromInt(1));  // Smi indicates slow check
 | 
|    __ movp(rcx, Operand(rsp, 0 * kPointerSize));  // Get enumerated object
 | 
| -  STATIC_ASSERT(FIRST_JS_PROXY_TYPE == FIRST_SPEC_OBJECT_TYPE);
 | 
| +  STATIC_ASSERT(FIRST_JS_PROXY_TYPE == FIRST_JS_RECEIVER_TYPE);
 | 
|    __ CmpObjectType(rcx, LAST_JS_PROXY_TYPE, rcx);
 | 
|    __ j(above, &non_proxy);
 | 
|    __ Move(rbx, Smi::FromInt(0));  // Zero indicates proxy
 | 
| @@ -2976,7 +2976,7 @@ void FullCodeGenerator::EmitIsSpecObject(CallRuntime* expr) {
 | 
|                           &if_true, &if_false, &fall_through);
 | 
|  
 | 
|    __ JumpIfSmi(rax, if_false);
 | 
| -  __ CmpObjectType(rax, FIRST_SPEC_OBJECT_TYPE, rbx);
 | 
| +  __ CmpObjectType(rax, FIRST_JS_RECEIVER_TYPE, rbx);
 | 
|    PrepareForBailoutBeforeSplit(expr, true, if_true, if_false);
 | 
|    Split(above_equal, if_true, if_false, fall_through);
 | 
|  
 | 
| @@ -3255,16 +3255,16 @@ void FullCodeGenerator::EmitClassOf(CallRuntime* expr) {
 | 
|    // Assume that there are only two callable types, and one of them is at
 | 
|    // either end of the type range for JS object types. Saves extra comparisons.
 | 
|    STATIC_ASSERT(NUM_OF_CALLABLE_SPEC_OBJECT_TYPES == 2);
 | 
| -  __ CmpObjectType(rax, FIRST_SPEC_OBJECT_TYPE, rax);
 | 
| +  __ CmpObjectType(rax, FIRST_JS_RECEIVER_TYPE, rax);
 | 
|    // Map is now in rax.
 | 
|    __ j(below, &null);
 | 
|    STATIC_ASSERT(FIRST_NONCALLABLE_SPEC_OBJECT_TYPE ==
 | 
| -                FIRST_SPEC_OBJECT_TYPE + 1);
 | 
| +                FIRST_JS_RECEIVER_TYPE + 1);
 | 
|    __ j(equal, &function);
 | 
|  
 | 
| -  __ CmpInstanceType(rax, LAST_SPEC_OBJECT_TYPE);
 | 
| +  __ CmpInstanceType(rax, LAST_JS_RECEIVER_TYPE);
 | 
|    STATIC_ASSERT(LAST_NONCALLABLE_SPEC_OBJECT_TYPE ==
 | 
| -                LAST_SPEC_OBJECT_TYPE - 1);
 | 
| +                LAST_JS_RECEIVER_TYPE - 1);
 | 
|    __ j(equal, &function);
 | 
|    // Assume that there is no larger type.
 | 
|    STATIC_ASSERT(LAST_NONCALLABLE_SPEC_OBJECT_TYPE == LAST_TYPE - 1);
 | 
| @@ -4568,8 +4568,8 @@ void FullCodeGenerator::EmitLiteralCompareTypeof(Expression* expr,
 | 
|      __ JumpIfSmi(rax, if_false);
 | 
|      __ CompareRoot(rax, Heap::kNullValueRootIndex);
 | 
|      __ j(equal, if_true);
 | 
| -    STATIC_ASSERT(LAST_SPEC_OBJECT_TYPE == LAST_TYPE);
 | 
| -    __ CmpObjectType(rax, FIRST_SPEC_OBJECT_TYPE, rdx);
 | 
| +    STATIC_ASSERT(LAST_JS_RECEIVER_TYPE == LAST_TYPE);
 | 
| +    __ CmpObjectType(rax, FIRST_JS_RECEIVER_TYPE, rdx);
 | 
|      __ j(below, if_false);
 | 
|      // Check for callable or undetectable objects => false.
 | 
|      __ testb(FieldOperand(rdx, Map::kBitFieldOffset),
 | 
| 
 |