| 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_IA32_H_ | 5 #ifndef VM_ASSEMBLER_IA32_H_ |
| 6 #define VM_ASSEMBLER_IA32_H_ | 6 #define VM_ASSEMBLER_IA32_H_ |
| 7 | 7 |
| 8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
| 9 #error Do not include assembler_ia32.h directly; use assembler.h instead. | 9 #error Do not include assembler_ia32.h directly; use assembler.h instead. |
| 10 #endif | 10 #endif |
| (...skipping 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 | 604 |
| 605 void Drop(intptr_t stack_elements); | 605 void Drop(intptr_t stack_elements); |
| 606 | 606 |
| 607 void LoadObject(Register dst, const Object& object); | 607 void LoadObject(Register dst, const Object& object); |
| 608 void PushObject(const Object& object); | 608 void PushObject(const Object& object); |
| 609 void CompareObject(Register reg, const Object& object); | 609 void CompareObject(Register reg, const Object& object); |
| 610 void LoadDoubleConstant(XmmRegister dst, double value); | 610 void LoadDoubleConstant(XmmRegister dst, double value); |
| 611 | 611 |
| 612 void StoreIntoObject(Register object, // Object we are storing into. | 612 void StoreIntoObject(Register object, // Object we are storing into. |
| 613 const Address& dest, // Where we are storing into. | 613 const Address& dest, // Where we are storing into. |
| 614 Register value); // Value we are storing. | 614 Register value, // Value we are storing. |
| 615 bool can_value_be_smi = true); |
| 615 | 616 |
| 616 void StoreIntoObjectNoBarrier(Register object, | 617 void StoreIntoObjectNoBarrier(Register object, |
| 617 const Address& dest, | 618 const Address& dest, |
| 618 Register value); | 619 Register value); |
| 619 void StoreIntoObjectNoBarrier(Register object, | 620 void StoreIntoObjectNoBarrier(Register object, |
| 620 const Address& dest, | 621 const Address& dest, |
| 621 const Object& value); | 622 const Object& value); |
| 622 | 623 |
| 623 void TraceStoreIntoObject(Register object, | 624 void TraceStoreIntoObject(Register object, |
| 624 const Address& dest, | 625 const Address& dest, |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 783 void EmitComplex(int rm, const Operand& operand, const Immediate& immediate); | 784 void EmitComplex(int rm, const Operand& operand, const Immediate& immediate); |
| 784 void EmitLabel(Label* label, int instruction_size); | 785 void EmitLabel(Label* label, int instruction_size); |
| 785 void EmitLabelLink(Label* label); | 786 void EmitLabelLink(Label* label); |
| 786 void EmitNearLabelLink(Label* label); | 787 void EmitNearLabelLink(Label* label); |
| 787 | 788 |
| 788 void EmitGenericShift(int rm, Register reg, const Immediate& imm); | 789 void EmitGenericShift(int rm, Register reg, const Immediate& imm); |
| 789 void EmitGenericShift(int rm, const Operand& operand, Register shifter); | 790 void EmitGenericShift(int rm, const Operand& operand, Register shifter); |
| 790 | 791 |
| 791 void StoreIntoObjectFilter(Register object, Register value, Label* no_update); | 792 void StoreIntoObjectFilter(Register object, Register value, Label* no_update); |
| 792 | 793 |
| 794 // Shorter filtering sequence that assumes that value is not a smi. |
| 795 void StoreIntoObjectFilterNoSmi(Register object, |
| 796 Register value, |
| 797 Label* no_update); |
| 798 |
| 793 DISALLOW_ALLOCATION(); | 799 DISALLOW_ALLOCATION(); |
| 794 DISALLOW_COPY_AND_ASSIGN(Assembler); | 800 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 795 }; | 801 }; |
| 796 | 802 |
| 797 | 803 |
| 798 inline void Assembler::EmitUint8(uint8_t value) { | 804 inline void Assembler::EmitUint8(uint8_t value) { |
| 799 buffer_.Emit<uint8_t>(value); | 805 buffer_.Emit<uint8_t>(value); |
| 800 } | 806 } |
| 801 | 807 |
| 802 | 808 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 821 } | 827 } |
| 822 | 828 |
| 823 | 829 |
| 824 inline void Assembler::EmitOperandSizeOverride() { | 830 inline void Assembler::EmitOperandSizeOverride() { |
| 825 EmitUint8(0x66); | 831 EmitUint8(0x66); |
| 826 } | 832 } |
| 827 | 833 |
| 828 } // namespace dart | 834 } // namespace dart |
| 829 | 835 |
| 830 #endif // VM_ASSEMBLER_IA32_H_ | 836 #endif // VM_ASSEMBLER_IA32_H_ |
| OLD | NEW |