| Index: runtime/vm/stub_code_arm.cc
|
| ===================================================================
|
| --- runtime/vm/stub_code_arm.cc (revision 41855)
|
| +++ runtime/vm/stub_code_arm.cc (working copy)
|
| @@ -690,21 +690,23 @@
|
| // Initialize all array elements to raw_null.
|
| // R0: new object start as a tagged pointer.
|
| // R3: allocation stats address.
|
| + // R4, R5: null
|
| + // R6: iterator which initially points to the start of the variable
|
| + // data area to be initialized.
|
| // R7: new object end address.
|
| - // R8: iterator which initially points to the start of the variable
|
| - // data area to be initialized.
|
| - // R4, R5: null
|
| + // R8: allocation size.
|
| +
|
| __ LoadImmediate(R4, reinterpret_cast<intptr_t>(Object::null()));
|
| __ mov(R5, Operand(R4));
|
| - __ AddImmediate(R8, R0, sizeof(RawArray) - kHeapObjectTag);
|
| + __ AddImmediate(R6, R0, sizeof(RawArray) - kHeapObjectTag);
|
|
|
| Label init_loop;
|
| __ Bind(&init_loop);
|
| - __ AddImmediate(R8, 2 * kWordSize);
|
| - __ cmp(R8, Operand(R7));
|
| - __ strd(R4, Address(R8, -2 * kWordSize), LS);
|
| + __ AddImmediate(R6, 2 * kWordSize);
|
| + __ cmp(R6, Operand(R7));
|
| + __ strd(R4, Address(R6, -2 * kWordSize), LS);
|
| __ b(&init_loop, CC);
|
| - __ str(R4, Address(R8, -2 * kWordSize), HI);
|
| + __ str(R4, Address(R6, -2 * kWordSize), HI);
|
|
|
| __ IncrementAllocationStatsWithSize(R3, R8, cid, space);
|
| __ Ret(); // Returns the newly allocated object in R0.
|
|
|