Chromium Code Reviews| 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 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 586 void ReserveAlignedFrameSpace(intptr_t frame_space); | 586 void ReserveAlignedFrameSpace(intptr_t frame_space); |
| 587 | 587 |
| 588 // Create a frame for calling into runtime that preserves all volatile | 588 // Create a frame for calling into runtime that preserves all volatile |
| 589 // registers. Frame's SP is guaranteed to be correctly aligned and | 589 // registers. Frame's SP is guaranteed to be correctly aligned and |
| 590 // frame_space bytes are reserved under it. | 590 // frame_space bytes are reserved under it. |
| 591 void EnterCallRuntimeFrame(intptr_t frame_space); | 591 void EnterCallRuntimeFrame(intptr_t frame_space); |
| 592 void LeaveCallRuntimeFrame(); | 592 void LeaveCallRuntimeFrame(); |
| 593 | 593 |
| 594 void CallRuntime(const RuntimeEntry& entry); | 594 void CallRuntime(const RuntimeEntry& entry); |
| 595 | 595 |
| 596 // Set up a dart frame on entry with a frame pointer and PC information to | |
|
srdjan
2013/03/04 23:46:43
s/dart/Dart/
regis
2013/03/04 23:51:24
Done.
| |
| 597 // enable easy access to the RawInstruction object of code corresponding | |
| 598 // to this frame. | |
| 599 void EnterDartFrame(intptr_t frame_size); | |
| 600 void LeaveDartFrame(); | |
| 601 | |
| 602 // Set up a stub frame so that the stack traversal code can easily identify | |
| 603 // a stub frame. | |
| 604 void EnterStubFrame(); | |
| 605 void LeaveStubFrame(); | |
| 606 | |
| 607 // Instruction pattern from entrypoint is used in dart frame prologs | |
|
srdjan
2013/03/04 23:46:43
ditto
regis
2013/03/04 23:51:24
Done.
| |
| 608 // to set up the frame and save a PC which can be used to figure out the | |
| 609 // RawInstruction object corresponding to the code running in the frame. | |
| 610 static const intptr_t kOffsetOfSavedPCfromEntrypoint = Instr::kPCReadOffset; | |
| 611 | |
| 612 // Inlined allocation of an instance of class 'cls', code has no runtime | |
| 613 // calls. Jump to 'failure' if the instance cannot be allocated here. | |
| 614 // Allocated instance is returned in 'instance_reg'. | |
| 615 // Only the tags field of the object is initialized. | |
| 616 void TryAllocate(const Class& cls, | |
| 617 Label* failure, | |
| 618 bool near_jump, | |
| 619 Register instance_reg); | |
| 620 | |
| 596 // Emit data (e.g encoded instruction or immediate) in instruction stream. | 621 // Emit data (e.g encoded instruction or immediate) in instruction stream. |
| 597 void Emit(int32_t value); | 622 void Emit(int32_t value); |
| 598 | 623 |
| 599 private: | 624 private: |
| 600 AssemblerBuffer buffer_; // Contains position independent code. | 625 AssemblerBuffer buffer_; // Contains position independent code. |
| 601 GrowableObjectArray& object_pool_; // Objects and patchable jump targets. | 626 GrowableObjectArray& object_pool_; // Objects and patchable jump targets. |
| 602 int32_t prologue_offset_; | 627 int32_t prologue_offset_; |
| 603 | 628 |
| 604 int32_t AddObject(const Object& obj); | 629 int32_t AddObject(const Object& obj); |
| 605 int32_t AddExternalLabel(const ExternalLabel* label); | 630 int32_t AddExternalLabel(const ExternalLabel* label); |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 714 return *reg1 - *reg2; | 739 return *reg1 - *reg2; |
| 715 } | 740 } |
| 716 | 741 |
| 717 DISALLOW_ALLOCATION(); | 742 DISALLOW_ALLOCATION(); |
| 718 DISALLOW_COPY_AND_ASSIGN(Assembler); | 743 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 719 }; | 744 }; |
| 720 | 745 |
| 721 } // namespace dart | 746 } // namespace dart |
| 722 | 747 |
| 723 #endif // VM_ASSEMBLER_ARM_H_ | 748 #endif // VM_ASSEMBLER_ARM_H_ |
| OLD | NEW |