| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef VM_ASSEMBLER_ARM_H_ | 5 #ifndef VM_ASSEMBLER_ARM_H_ |
| 6 #define VM_ASSEMBLER_ARM_H_ | 6 #define VM_ASSEMBLER_ARM_H_ |
| 7 | 7 |
| 8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
| 9 #error Do not include assembler_arm.h directly; use assembler.h instead. | 9 #error Do not include assembler_arm.h directly; use assembler.h instead. |
| 10 #endif | 10 #endif |
| (...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 547 Register scratch, Condition cond = AL); | 547 Register scratch, Condition cond = AL); |
| 548 | 548 |
| 549 void MarkExceptionHandler(Label* label); | 549 void MarkExceptionHandler(Label* label); |
| 550 | 550 |
| 551 void Drop(intptr_t stack_elements); | 551 void Drop(intptr_t stack_elements); |
| 552 | 552 |
| 553 void LoadObject(Register rd, const Object& object); | 553 void LoadObject(Register rd, const Object& object); |
| 554 void PushObject(const Object& object); | 554 void PushObject(const Object& object); |
| 555 void CompareObject(Register rn, const Object& object); | 555 void CompareObject(Register rn, const Object& object); |
| 556 | 556 |
| 557 void StoreIntoObject(Register object, // Object we are storing into. |
| 558 const Address& dest, // Where we are storing into. |
| 559 Register value, // Value we are storing. |
| 560 bool can_value_be_smi = true); |
| 561 |
| 562 void StoreIntoObjectNoBarrier(Register object, |
| 563 const Address& dest, |
| 564 Register value); |
| 565 void StoreIntoObjectNoBarrier(Register object, |
| 566 const Address& dest, |
| 567 const Object& value); |
| 568 |
| 557 void LoadClassId(Register result, Register object); | 569 void LoadClassId(Register result, Register object); |
| 558 void LoadClassById(Register result, Register class_id); | 570 void LoadClassById(Register result, Register class_id); |
| 559 void LoadClass(Register result, Register object, Register scratch); | 571 void LoadClass(Register result, Register object, Register scratch); |
| 560 void CompareClassId(Register object, intptr_t class_id, Register scratch); | 572 void CompareClassId(Register object, intptr_t class_id, Register scratch); |
| 561 | 573 |
| 562 void LoadWordFromPoolOffset(Register rd, int32_t offset); | 574 void LoadWordFromPoolOffset(Register rd, int32_t offset); |
| 563 void LoadFromOffset(LoadOperandType type, | 575 void LoadFromOffset(LoadOperandType type, |
| 564 Register reg, | 576 Register reg, |
| 565 Register base, | 577 Register base, |
| 566 int32_t offset, | 578 int32_t offset, |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 765 int32_t opcode, | 777 int32_t opcode, |
| 766 DRegister dd, | 778 DRegister dd, |
| 767 SRegister sm); | 779 SRegister sm); |
| 768 | 780 |
| 769 void EmitBranch(Condition cond, Label* label, bool link); | 781 void EmitBranch(Condition cond, Label* label, bool link); |
| 770 static int32_t EncodeBranchOffset(int32_t offset, int32_t inst); | 782 static int32_t EncodeBranchOffset(int32_t offset, int32_t inst); |
| 771 static int DecodeBranchOffset(int32_t inst); | 783 static int DecodeBranchOffset(int32_t inst); |
| 772 int32_t EncodeTstOffset(int32_t offset, int32_t inst); | 784 int32_t EncodeTstOffset(int32_t offset, int32_t inst); |
| 773 int DecodeTstOffset(int32_t inst); | 785 int DecodeTstOffset(int32_t inst); |
| 774 | 786 |
| 775 // Returns whether or not the given register is used for passing parameters. | 787 void StoreIntoObjectFilter(Register object, Register value, Label* no_update); |
| 776 static int RegisterCompare(const Register* reg1, const Register* reg2) { | 788 |
| 777 return *reg1 - *reg2; | 789 // Shorter filtering sequence that assumes that value is not a smi. |
| 778 } | 790 void StoreIntoObjectFilterNoSmi(Register object, |
| 791 Register value, |
| 792 Label* no_update); |
| 779 | 793 |
| 780 DISALLOW_ALLOCATION(); | 794 DISALLOW_ALLOCATION(); |
| 781 DISALLOW_COPY_AND_ASSIGN(Assembler); | 795 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 782 }; | 796 }; |
| 783 | 797 |
| 784 } // namespace dart | 798 } // namespace dart |
| 785 | 799 |
| 786 #endif // VM_ASSEMBLER_ARM_H_ | 800 #endif // VM_ASSEMBLER_ARM_H_ |
| OLD | NEW |