| Index: runtime/vm/assembler_arm.cc
|
| ===================================================================
|
| --- runtime/vm/assembler_arm.cc (revision 41908)
|
| +++ runtime/vm/assembler_arm.cc (working copy)
|
| @@ -1759,6 +1759,33 @@
|
| }
|
|
|
|
|
| +void Assembler::InitializeFieldsNoBarrierUnrolled(Register object,
|
| + Register begin,
|
| + intptr_t count,
|
| + Register value_even,
|
| + Register value_odd) {
|
| + ASSERT(value_odd == value_even + 1);
|
| + intptr_t current_offset = 0;
|
| + const intptr_t end_offset = count * kWordSize;
|
| + while (current_offset + kWordSize < end_offset) {
|
| + strd(value_even, Address(begin, current_offset));
|
| + current_offset += 2*kWordSize;
|
| + }
|
| + while (current_offset < end_offset) {
|
| + str(value_even, Address(begin, current_offset));
|
| + current_offset += kWordSize;
|
| + }
|
| +#if defined(DEBUG)
|
| + Label done;
|
| + StoreIntoObjectFilter(object, value_even, &done);
|
| + StoreIntoObjectFilter(object, value_odd, &done);
|
| + Stop("Store buffer update is required");
|
| + Bind(&done);
|
| +#endif // defined(DEBUG)
|
| + // No store buffer update.
|
| +}
|
| +
|
| +
|
| void Assembler::LoadClassId(Register result, Register object, Condition cond) {
|
| ASSERT(RawObject::kClassIdTagPos == 16);
|
| ASSERT(RawObject::kClassIdTagSize == 16);
|
|
|