Index: src/mips/stub-cache-mips.cc |
diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc |
index 84ff991ce20501e8b464b617387dc3222a79d7cd..ec63551b1c41e2cb7fa55629af88fbb8ddc4aeeb 100644 |
--- a/src/mips/stub-cache-mips.cc |
+++ b/src/mips/stub-cache-mips.cc |
@@ -3494,7 +3494,7 @@ void KeyedLoadStubCompiler::GenerateLoadExternalArray( |
__ lw(t1, FieldMemOperand(a3, ExternalArray::kLengthOffset)); |
__ sra(t2, key, kSmiTagSize); |
// Unsigned comparison catches both negative and too-large values. |
- __ Branch(&miss_force_generic, Uless, t1, Operand(t2)); |
+ __ Branch(&miss_force_generic, Ugreater_equal, key, Operand(t1)); |
__ lw(a3, FieldMemOperand(a3, ExternalArray::kExternalPointerOffset)); |
// a3: base pointer of external storage |
@@ -3822,16 +3822,16 @@ void KeyedStoreStubCompiler::GenerateStoreExternalArray( |
// This stub is meant to be tail-jumped to, the receiver must already |
// have been verified by the caller to not be a smi. |
- __ lw(a3, FieldMemOperand(receiver, JSObject::kElementsOffset)); |
- |
- // Check that the key is a smi. |
+ // Check that the key is a smi. |
__ JumpIfNotSmi(key, &miss_force_generic); |
+ __ lw(a3, FieldMemOperand(receiver, JSObject::kElementsOffset)); |
+ |
// Check that the index is in range. |
__ SmiUntag(t0, key); |
__ lw(t1, FieldMemOperand(a3, ExternalArray::kLengthOffset)); |
// Unsigned comparison catches both negative and too-large values. |
- __ Branch(&miss_force_generic, Ugreater_equal, t0, Operand(t1)); |
+ __ Branch(&miss_force_generic, Ugreater_equal, key, Operand(t1)); |
// Handle both smis and HeapNumbers in the fast path. Go to the |
// runtime for all other kinds of values. |