| Index: runtime/vm/assembler_mips.cc
|
| ===================================================================
|
| --- runtime/vm/assembler_mips.cc (revision 37406)
|
| +++ runtime/vm/assembler_mips.cc (working copy)
|
| @@ -588,6 +588,20 @@
|
| }
|
|
|
|
|
| +void Assembler::StoreIntoObjectOffset(Register object,
|
| + int32_t offset,
|
| + Register value,
|
| + bool can_value_be_smi) {
|
| + if (Address::CanHoldOffset(offset - kHeapObjectTag)) {
|
| + StoreIntoObject(
|
| + object, FieldAddress(object, offset), value, can_value_be_smi);
|
| + } else {
|
| + AddImmediate(TMP, object, offset - kHeapObjectTag);
|
| + StoreIntoObject(object, Address(TMP), value, can_value_be_smi);
|
| + }
|
| +}
|
| +
|
| +
|
| void Assembler::StoreIntoObjectNoBarrier(Register object,
|
| const Address& dest,
|
| Register value) {
|
| @@ -603,6 +617,18 @@
|
| }
|
|
|
|
|
| +void Assembler::StoreIntoObjectNoBarrierOffset(Register object,
|
| + int32_t offset,
|
| + Register value) {
|
| + if (Address::CanHoldOffset(offset - kHeapObjectTag)) {
|
| + StoreIntoObjectNoBarrier(object, FieldAddress(object, offset), value);
|
| + } else {
|
| + AddImmediate(TMP, object, offset - kHeapObjectTag);
|
| + StoreIntoObjectNoBarrier(object, Address(TMP), value);
|
| + }
|
| +}
|
| +
|
| +
|
| void Assembler::StoreIntoObjectNoBarrier(Register object,
|
| const Address& dest,
|
| const Object& value) {
|
| @@ -615,6 +641,18 @@
|
| }
|
|
|
|
|
| +void Assembler::StoreIntoObjectNoBarrierOffset(Register object,
|
| + int32_t offset,
|
| + const Object& value) {
|
| + if (Address::CanHoldOffset(offset - kHeapObjectTag)) {
|
| + StoreIntoObjectNoBarrier(object, FieldAddress(object, offset), value);
|
| + } else {
|
| + AddImmediate(TMP, object, offset - kHeapObjectTag);
|
| + StoreIntoObjectNoBarrier(object, Address(TMP), value);
|
| + }
|
| +}
|
| +
|
| +
|
| void Assembler::LoadClassId(Register result, Register object) {
|
| ASSERT(RawObject::kClassIdTagPos == 16);
|
| ASSERT(RawObject::kClassIdTagSize == 16);
|
|
|