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 |