Commit 59db8059 authored by danno@chromium.org's avatar danno@chromium.org

MIPS: Support Smi->Double->HeapObject transitions in constructed Arrays.

Port r10218 (1f42dff).

Original commit message:

Also several bugs with Smi/double elements handling and make Ensure* routines more flexible.

BUG=
TEST=

Review URL: http://codereview.chromium.org/8894030

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10282 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 76cc6878
......@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment