Index: src/mips/ic-mips.cc |
=================================================================== |
--- src/mips/ic-mips.cc (revision 8174) |
+++ src/mips/ic-mips.cc (working copy) |
@@ -80,10 +80,10 @@ |
// Check that the receiver is a valid JS object. |
__ GetObjectType(receiver, scratch0, scratch1); |
- __ Branch(miss, lt, scratch1, Operand(FIRST_JS_OBJECT_TYPE)); |
+ __ Branch(miss, lt, scratch1, Operand(FIRST_SPEC_OBJECT_TYPE)); |
// 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, scratch1, miss); |
@@ -567,7 +567,8 @@ |
// Invoke the function. |
ParameterCount actual(argc); |
- __ InvokeFunction(a1, actual, JUMP_FUNCTION); |
+ __ InvokeFunction(a1, actual, JUMP_FUNCTION, |
+ NullCallWrapper(), CALL_AS_METHOD); |
} |
@@ -949,11 +950,8 @@ |
GenerateKeyedLoadReceiverCheck( |
masm, receiver, a2, a3, Map::kHasIndexedInterceptor, &slow); |
- // Check the "has fast elements" bit in the receiver's map which is |
- // now in a2. |
- __ lbu(a3, FieldMemOperand(a2, Map::kBitField2Offset)); |
- __ And(at, a3, Operand(1 << Map::kHasFastElements)); |
- __ Branch(&check_number_dictionary, eq, at, Operand(zero_reg)); |
+ // Check the receiver's map to see if it has fast elements. |
+ __ CheckFastElements(a2, a3, &check_number_dictionary); |
GenerateFastArrayLoad( |
masm, receiver, key, t0, a3, a2, v0, NULL, &slow); |
@@ -1173,8 +1171,10 @@ |
__ lbu(t3, FieldMemOperand(t3, Map::kInstanceTypeOffset)); |
__ Branch(&array, eq, t3, Operand(JS_ARRAY_TYPE)); |
- // Check that the object is some kind of JS object. |
- __ Branch(&slow, lt, t3, Operand(FIRST_JS_OBJECT_TYPE)); |
+ // Check that the object is some kind of JSObject. |
+ __ Branch(&slow, lt, t3, Operand(FIRST_JS_RECEIVER_TYPE)); |
+ __ Branch(&slow, eq, t3, Operand(JS_PROXY_TYPE)); |
+ __ Branch(&slow, eq, t3, Operand(JS_FUNCTION_PROXY_TYPE)); |
// Object case: Check key against length in the elements array. |
__ lw(elements, FieldMemOperand(receiver, JSObject::kElementsOffset)); |