Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: runtime/vm/assembler_arm64.h

Issue 259903002: Enables all codegen tests for arm64. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | runtime/vm/assembler_arm64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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_ARM64_H_ 5 #ifndef VM_ASSEMBLER_ARM64_H_
6 #define VM_ASSEMBLER_ARM64_H_ 6 #define VM_ASSEMBLER_ARM64_H_
7 7
8 #ifndef VM_ASSEMBLER_H_ 8 #ifndef VM_ASSEMBLER_H_
9 #error Do not include assembler_arm64.h directly; use assembler.h instead. 9 #error Do not include assembler_arm64.h directly; use assembler.h instead.
10 #endif 10 #endif
(...skipping 681 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 void BranchLinkPatchable(const ExternalLabel* label) { 692 void BranchLinkPatchable(const ExternalLabel* label) {
693 LoadExternalLabel(TMP, label, kPatchable, PP); 693 LoadExternalLabel(TMP, label, kPatchable, PP);
694 blr(TMP); 694 blr(TMP);
695 } 695 }
696 696
697 // Macros accepting a pp Register argument may attempt to load values from 697 // Macros accepting a pp Register argument may attempt to load values from
698 // the object pool when possible. Unless you are sure that the untagged object 698 // the object pool when possible. Unless you are sure that the untagged object
699 // pool pointer is in another register, or that it is not available at all, 699 // pool pointer is in another register, or that it is not available at all,
700 // PP should be passed for pp. 700 // PP should be passed for pp.
701 void AddImmediate(Register dest, Register rn, int64_t imm, Register pp); 701 void AddImmediate(Register dest, Register rn, int64_t imm, Register pp);
702 void TestImmediate(Register rn, int64_t imm, Register pp);
702 void CompareImmediate(Register rn, int64_t imm, Register pp); 703 void CompareImmediate(Register rn, int64_t imm, Register pp);
703 704
704 void LoadFromOffset(Register dest, Register base, int32_t offset, 705 void LoadFromOffset(Register dest, Register base, int32_t offset,
705 OperandSize sz = kDoubleWord); 706 OperandSize sz = kDoubleWord);
706 void LoadFieldFromOffset(Register dest, Register base, int32_t offset) { 707 void LoadFieldFromOffset(Register dest, Register base, int32_t offset) {
707 LoadFromOffset(dest, base, offset - kHeapObjectTag); 708 LoadFromOffset(dest, base, offset - kHeapObjectTag);
708 } 709 }
709 710
710 void StoreToOffset(Register dest, Register base, int32_t offset, 711 void StoreToOffset(Register dest, Register base, int32_t offset,
711 OperandSize sz = kDoubleWord); 712 OperandSize sz = kDoubleWord);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
747 Patchability patchable, Register pp); 748 Patchability patchable, Register pp);
748 void LoadObject(Register dst, const Object& obj, Register pp); 749 void LoadObject(Register dst, const Object& obj, Register pp);
749 void LoadDecodableImmediate(Register reg, int64_t imm, Register pp); 750 void LoadDecodableImmediate(Register reg, int64_t imm, Register pp);
750 void LoadImmediateFixed(Register reg, int64_t imm); 751 void LoadImmediateFixed(Register reg, int64_t imm);
751 void LoadImmediate(Register reg, int64_t imm, Register pp); 752 void LoadImmediate(Register reg, int64_t imm, Register pp);
752 753
753 void PushObject(const Object& object, Register pp) { 754 void PushObject(const Object& object, Register pp) {
754 LoadObject(TMP, object, pp); 755 LoadObject(TMP, object, pp);
755 Push(TMP); 756 Push(TMP);
756 } 757 }
758 void CompareObject(Register reg, const Object& object, Register pp);
757 759
758 void LoadClassId(Register result, Register object); 760 void LoadClassId(Register result, Register object);
759 void LoadClassById(Register result, Register class_id); 761 void LoadClassById(Register result, Register class_id);
760 void LoadClass(Register result, Register object); 762 void LoadClass(Register result, Register object);
761 void CompareClassId(Register object, intptr_t class_id); 763 void CompareClassId(Register object, intptr_t class_id);
762 764
763 void EnterFrame(intptr_t frame_size); 765 void EnterFrame(intptr_t frame_size);
764 void LeaveFrame(); 766 void LeaveFrame();
765 767
766 void EnterDartFrame(intptr_t frame_size); 768 void EnterDartFrame(intptr_t frame_size);
767 void EnterDartFrameWithInfo(intptr_t frame_size, Register new_pp); 769 void EnterDartFrameWithInfo(intptr_t frame_size, Register new_pp);
768 void EnterOsrFrame(intptr_t extra_size, Register new_pp); 770 void EnterOsrFrame(intptr_t extra_size, Register new_pp);
769 void LeaveDartFrame(); 771 void LeaveDartFrame();
770 772
771 void EnterCallRuntimeFrame(intptr_t frame_size); 773 void EnterCallRuntimeFrame(intptr_t frame_size);
772 void LeaveCallRuntimeFrame(); 774 void LeaveCallRuntimeFrame();
773 void CallRuntime(const RuntimeEntry& entry, intptr_t argument_count); 775 void CallRuntime(const RuntimeEntry& entry, intptr_t argument_count);
774 776
775 // Set up a stub frame so that the stack traversal code can easily identify 777 // Set up a stub frame so that the stack traversal code can easily identify
776 // a stub frame. 778 // a stub frame.
777 void EnterStubFrame(bool load_pp = false); 779 void EnterStubFrame(bool load_pp = false);
778 void LeaveStubFrame(); 780 void LeaveStubFrame();
779 781
782 void UpdateAllocationStats(intptr_t cid,
783 Register temp_reg,
784 Heap::Space space = Heap::kNew);
785
780 private: 786 private:
781 AssemblerBuffer buffer_; // Contains position independent code. 787 AssemblerBuffer buffer_; // Contains position independent code.
782 788
783 // Objects and patchable jump targets. 789 // Objects and patchable jump targets.
784 GrowableObjectArray& object_pool_; 790 GrowableObjectArray& object_pool_;
785 791
786 // Patchability of pool entries. 792 // Patchability of pool entries.
787 GrowableArray<Patchability> patchable_pool_entries_; 793 GrowableArray<Patchability> patchable_pool_entries_;
788 794
789 // Pair type parameter for DirectChainedHashMap. 795 // Pair type parameter for DirectChainedHashMap.
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
1108 Register value, 1114 Register value,
1109 Label* no_update); 1115 Label* no_update);
1110 1116
1111 DISALLOW_ALLOCATION(); 1117 DISALLOW_ALLOCATION();
1112 DISALLOW_COPY_AND_ASSIGN(Assembler); 1118 DISALLOW_COPY_AND_ASSIGN(Assembler);
1113 }; 1119 };
1114 1120
1115 } // namespace dart 1121 } // namespace dart
1116 1122
1117 #endif // VM_ASSEMBLER_ARM64_H_ 1123 #endif // VM_ASSEMBLER_ARM64_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/assembler_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698