Index: src/mips/builtins-mips.cc |
diff --git a/src/mips/builtins-mips.cc b/src/mips/builtins-mips.cc |
index 98fd57de784e5aff57a4ec70e01c602ca58a66ff..701450b81454d4b9cb8e5c6346bfa80f22d551b4 100644 |
--- a/src/mips/builtins-mips.cc |
+++ b/src/mips/builtins-mips.cc |
@@ -400,13 +400,19 @@ static void ArrayNativeCode(MacroAssembler* masm, |
// sp[0]: last argument |
Label loop, entry; |
- __ Branch(&entry); |
+ __ Branch(USE_DELAY_SLOT, &entry); |
+ __ mov(t3, sp); |
__ bind(&loop); |
- __ pop(a2); |
+ __ lw(a2, MemOperand(t3)); |
+ __ Addu(t3, t3, kPointerSize); |
+ if (FLAG_smi_only_arrays) { |
+ __ JumpIfNotSmi(a2, call_generic_code); |
+ } |
__ Addu(t1, t1, -kPointerSize); |
__ sw(a2, MemOperand(t1)); |
__ bind(&entry); |
__ Branch(&loop, lt, t0, Operand(t1)); |
+ __ mov(sp, t3); |
// Remove caller arguments and receiver from the stack, setup return value and |
// return. |