Index: src/x64/ic-x64.cc |
diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc |
index 663df1264b8a8c7b37c75076e3e584e585d24678..2d2a3264f49181f3c0c3dc9961f807894d5b2e8c 100644 |
--- a/src/x64/ic-x64.cc |
+++ b/src/x64/ic-x64.cc |
@@ -76,11 +76,11 @@ static void GenerateStringDictionaryReceiverCheck(MacroAssembler* masm, |
// Check that the receiver is a valid JS object. |
__ movq(r1, FieldOperand(receiver, HeapObject::kMapOffset)); |
__ movb(r0, FieldOperand(r1, Map::kInstanceTypeOffset)); |
- __ cmpb(r0, Immediate(FIRST_JS_OBJECT_TYPE)); |
+ __ cmpb(r0, Immediate(FIRST_SPEC_OBJECT_TYPE)); |
__ j(below, miss); |
// If this assert fails, we have to check upper bound too. |
- ASSERT(LAST_TYPE == JS_FUNCTION_TYPE); |
+ STATIC_ASSERT(LAST_TYPE == LAST_SPEC_OBJECT_TYPE); |
GenerateGlobalInstanceTypeCheck(masm, r0, miss); |
@@ -730,9 +730,13 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, |
__ CmpInstanceType(rbx, JS_ARRAY_TYPE); |
__ j(equal, &array); |
- // Check that the object is some kind of JS object. |
- __ CmpInstanceType(rbx, FIRST_JS_OBJECT_TYPE); |
+ // Check that the object is some kind of JSObject. |
+ __ CmpInstanceType(rbx, FIRST_JS_RECEIVER_TYPE); |
__ j(below, &slow); |
+ __ CmpInstanceType(rbx, JS_PROXY_TYPE); |
+ __ j(equal, &slow); |
+ __ CmpInstanceType(rbx, JS_FUNCTION_PROXY_TYPE); |
+ __ j(equal, &slow); |
// Object case: Check key against length in the elements array. |
// rax: value |