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

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

Issue 513213002: Generate some intrinsics using our IR. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: addressed Slava's feedback Created 6 years, 3 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 | « runtime/vm/assembler_mips.cc ('k') | runtime/vm/assembler_x64.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) 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_X64_H_ 5 #ifndef VM_ASSEMBLER_X64_H_
6 #define VM_ASSEMBLER_X64_H_ 6 #define VM_ASSEMBLER_X64_H_
7 7
8 #ifndef VM_ASSEMBLER_H_ 8 #ifndef VM_ASSEMBLER_H_
9 #error Do not include assembler_x64.h directly; use assembler.h instead. 9 #error Do not include assembler_x64.h directly; use assembler.h instead.
10 #endif 10 #endif
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 void SubImmediate(Register reg, const Immediate& imm, Register pp); 681 void SubImmediate(Register reg, const Immediate& imm, Register pp);
682 void SubImmediate(const Address& address, const Immediate& imm, Register pp); 682 void SubImmediate(const Address& address, const Immediate& imm, Register pp);
683 683
684 void Drop(intptr_t stack_elements); 684 void Drop(intptr_t stack_elements);
685 685
686 enum Patchability { 686 enum Patchability {
687 kPatchable, 687 kPatchable,
688 kNotPatchable, 688 kNotPatchable,
689 }; 689 };
690 690
691 bool allow_constant_pool() const {
692 return allow_constant_pool_;
693 }
694 void set_allow_constant_pool(bool b) {
695 allow_constant_pool_ = b;
696 }
697
691 bool CanLoadImmediateFromPool(const Immediate& imm, Register pp); 698 bool CanLoadImmediateFromPool(const Immediate& imm, Register pp);
692 void LoadImmediate(Register reg, const Immediate& imm, Register pp); 699 void LoadImmediate(Register reg, const Immediate& imm, Register pp);
693 void LoadImmediate(const Address& dst, const Immediate& imm, Register pp); 700 void LoadImmediate(const Address& dst, const Immediate& imm, Register pp);
694 void LoadObject(Register dst, const Object& obj, Register pp); 701 void LoadObject(Register dst, const Object& obj, Register pp);
695 void JmpPatchable(const ExternalLabel* label, Register pp); 702 void JmpPatchable(const ExternalLabel* label, Register pp);
696 void Jmp(const ExternalLabel* label, Register pp); 703 void Jmp(const ExternalLabel* label, Register pp);
697 void J(Condition condition, const ExternalLabel* label, Register pp); 704 void J(Condition condition, const ExternalLabel* label, Register pp);
698 void CallPatchable(const ExternalLabel* label); 705 void CallPatchable(const ExternalLabel* label);
699 void Call(const ExternalLabel* label, Register pp); 706 void Call(const ExternalLabel* label, Register pp);
700 void StoreObject(const Address& dst, const Object& obj, Register pp); 707 void StoreObject(const Address& dst, const Object& obj, Register pp);
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 const String& comment() const { return comment_; } 983 const String& comment() const { return comment_; }
977 984
978 private: 985 private:
979 intptr_t pc_offset_; 986 intptr_t pc_offset_;
980 const String& comment_; 987 const String& comment_;
981 988
982 DISALLOW_COPY_AND_ASSIGN(CodeComment); 989 DISALLOW_COPY_AND_ASSIGN(CodeComment);
983 }; 990 };
984 991
985 GrowableArray<CodeComment*> comments_; 992 GrowableArray<CodeComment*> comments_;
993 bool allow_constant_pool_;
986 994
987 intptr_t FindObject(const Object& obj, Patchability patchable); 995 intptr_t FindObject(const Object& obj, Patchability patchable);
988 intptr_t FindExternalLabel(const ExternalLabel* label, 996 intptr_t FindExternalLabel(const ExternalLabel* label,
989 Patchability patchable); 997 Patchability patchable);
990 intptr_t FindImmediate(int64_t imm); 998 intptr_t FindImmediate(int64_t imm);
991 void LoadExternalLabel(Register dst, 999 void LoadExternalLabel(Register dst,
992 const ExternalLabel* label, 1000 const ExternalLabel* label,
993 Patchability patchable, 1001 Patchability patchable,
994 Register pp); 1002 Register pp);
995 bool CanLoadFromObjectPool(const Object& object); 1003 bool CanLoadFromObjectPool(const Object& object);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1114 } 1122 }
1115 1123
1116 1124
1117 inline void Assembler::EmitOperandSizeOverride() { 1125 inline void Assembler::EmitOperandSizeOverride() {
1118 EmitUint8(0x66); 1126 EmitUint8(0x66);
1119 } 1127 }
1120 1128
1121 } // namespace dart 1129 } // namespace dart
1122 1130
1123 #endif // VM_ASSEMBLER_X64_H_ 1131 #endif // VM_ASSEMBLER_X64_H_
OLDNEW
« no previous file with comments | « runtime/vm/assembler_mips.cc ('k') | runtime/vm/assembler_x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698