| Index: runtime/vm/assembler_arm.h
|
| diff --git a/runtime/vm/assembler_arm.h b/runtime/vm/assembler_arm.h
|
| index 9a08c8e6fe50243a428a2aac9978a885a16782aa..49e621bf4ed4f2112c243babf29935b1e7873227 100644
|
| --- a/runtime/vm/assembler_arm.h
|
| +++ b/runtime/vm/assembler_arm.h
|
| @@ -717,6 +717,7 @@ class Assembler : public ValueObject {
|
| void Lsr(Register rd, Register rm, Register rs, Condition cond = AL);
|
| void Asr(Register rd, Register rm, uint32_t shift_imm, Condition cond = AL);
|
| void Asr(Register rd, Register rm, Register rs, Condition cond = AL);
|
| + void AsrS(Register rd, Register rm, uint32_t shift_imm, Condition cond = AL);
|
| void Ror(Register rd, Register rm, uint32_t shift_imm, Condition cond = AL);
|
| void Ror(Register rd, Register rm, Register rs, Condition cond = AL);
|
| void Rrx(Register rd, Register rm, Condition cond = AL);
|
| @@ -734,6 +735,10 @@ class Assembler : public ValueObject {
|
| Lsl(reg, reg, kSmiTagSize, cond);
|
| }
|
|
|
| + void SmiTag(Register dst, Register src, Condition cond = AL) {
|
| + Lsl(dst, src, kSmiTagSize, cond);
|
| + }
|
| +
|
| void SmiUntag(Register reg, Condition cond = AL) {
|
| Asr(reg, reg, kSmiTagSize, cond);
|
| }
|
| @@ -742,6 +747,12 @@ class Assembler : public ValueObject {
|
| Asr(dst, src, kSmiTagSize, cond);
|
| }
|
|
|
| + void SmiUntag(Register dst, Register src, Label* ok) {
|
| + ASSERT(kSmiTagSize == 1);
|
| + AsrS(dst, src, kSmiTagSize);
|
| + b(ok, CC);
|
| + }
|
| +
|
| // Function frame setup and tear down.
|
| void EnterFrame(RegList regs, intptr_t frame_space);
|
| void LeaveFrame(RegList regs);
|
|
|