Index: runtime/vm/assembler_arm.h |
=================================================================== |
--- runtime/vm/assembler_arm.h (revision 21081) |
+++ runtime/vm/assembler_arm.h (working copy) |
@@ -554,6 +554,18 @@ |
void PushObject(const Object& object); |
void CompareObject(Register rn, const Object& object); |
+ void StoreIntoObject(Register object, // Object we are storing into. |
+ const Address& dest, // Where we are storing into. |
+ Register value, // Value we are storing. |
+ bool can_value_be_smi = true); |
+ |
+ void StoreIntoObjectNoBarrier(Register object, |
+ const Address& dest, |
+ Register value); |
+ void StoreIntoObjectNoBarrier(Register object, |
+ const Address& dest, |
+ const Object& value); |
+ |
void LoadClassId(Register result, Register object); |
void LoadClassById(Register result, Register class_id); |
void LoadClass(Register result, Register object, Register scratch); |
@@ -772,11 +784,13 @@ |
int32_t EncodeTstOffset(int32_t offset, int32_t inst); |
int DecodeTstOffset(int32_t inst); |
- // Returns whether or not the given register is used for passing parameters. |
- static int RegisterCompare(const Register* reg1, const Register* reg2) { |
- return *reg1 - *reg2; |
- } |
+ void StoreIntoObjectFilter(Register object, Register value, Label* no_update); |
+ // Shorter filtering sequence that assumes that value is not a smi. |
+ void StoreIntoObjectFilterNoSmi(Register object, |
+ Register value, |
+ Label* no_update); |
+ |
DISALLOW_ALLOCATION(); |
DISALLOW_COPY_AND_ASSIGN(Assembler); |
}; |