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

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

Issue 2481873005: clang-format runtime/vm (Closed)
Patch Set: Merge Created 4 years, 1 month 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
« no previous file with comments | « runtime/vm/assembler_arm_test.cc ('k') | runtime/vm/assembler_dbc.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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 RUNTIME_VM_ASSEMBLER_DBC_H_ 5 #ifndef RUNTIME_VM_ASSEMBLER_DBC_H_
6 #define RUNTIME_VM_ASSEMBLER_DBC_H_ 6 #define RUNTIME_VM_ASSEMBLER_DBC_H_
7 7
8 #ifndef RUNTIME_VM_ASSEMBLER_H_ 8 #ifndef RUNTIME_VM_ASSEMBLER_H_
9 #error Do not include assembler_dbc.h directly; use assembler.h instead. 9 #error Do not include assembler_dbc.h directly; use assembler.h instead.
10 #endif 10 #endif
(...skipping 11 matching lines...) Expand all
22 22
23 // Dummy declaration to make things compile. 23 // Dummy declaration to make things compile.
24 class Address : public ValueObject { 24 class Address : public ValueObject {
25 private: 25 private:
26 Address(); 26 Address();
27 }; 27 };
28 28
29 29
30 class Label : public ValueObject { 30 class Label : public ValueObject {
31 public: 31 public:
32 Label() : position_(0) { } 32 Label() : position_(0) {}
33 33
34 ~Label() { 34 ~Label() {
35 // Assert if label is being destroyed with unresolved branches pending. 35 // Assert if label is being destroyed with unresolved branches pending.
36 ASSERT(!IsLinked()); 36 ASSERT(!IsLinked());
37 } 37 }
38 38
39 // Returns the position for bound and linked labels. Cannot be used 39 // Returns the position for bound and linked labels. Cannot be used
40 // for unused labels. 40 // for unused labels.
41 intptr_t Position() const { 41 intptr_t Position() const {
42 ASSERT(!IsUnused()); 42 ASSERT(!IsUnused());
43 return IsBound() ? -position_ - kWordSize : position_ - kWordSize; 43 return IsBound() ? -position_ - kWordSize : position_ - kWordSize;
44 } 44 }
45 45
46 bool IsBound() const { return position_ < 0; } 46 bool IsBound() const { return position_ < 0; }
47 bool IsUnused() const { return position_ == 0; } 47 bool IsUnused() const { return position_ == 0; }
48 bool IsLinked() const { return position_ > 0; } 48 bool IsLinked() const { return position_ > 0; }
49 49
50 private: 50 private:
51 intptr_t position_; 51 intptr_t position_;
52 52
53 void Reinitialize() { 53 void Reinitialize() { position_ = 0; }
54 position_ = 0;
55 }
56 54
57 void BindTo(intptr_t position) { 55 void BindTo(intptr_t position) {
58 ASSERT(!IsBound()); 56 ASSERT(!IsBound());
59 position_ = -position - kWordSize; 57 position_ = -position - kWordSize;
60 ASSERT(IsBound()); 58 ASSERT(IsBound());
61 } 59 }
62 60
63 void LinkTo(intptr_t position) { 61 void LinkTo(intptr_t position) {
64 ASSERT(!IsBound()); 62 ASSERT(!IsBound());
65 position_ = position + kWordSize; 63 position_ = position + kWordSize;
66 ASSERT(IsLinked()); 64 ASSERT(IsLinked());
67 } 65 }
68 66
69 friend class Assembler; 67 friend class Assembler;
70 DISALLOW_COPY_AND_ASSIGN(Label); 68 DISALLOW_COPY_AND_ASSIGN(Label);
71 }; 69 };
72 70
73 71
74 class Assembler : public ValueObject { 72 class Assembler : public ValueObject {
75 public: 73 public:
76 explicit Assembler(bool use_far_branches = false) 74 explicit Assembler(bool use_far_branches = false) : buffer_(), comments_() {}
77 : buffer_(),
78 comments_() {
79 }
80 75
81 ~Assembler() { } 76 ~Assembler() {}
82 77
83 void Bind(Label* label); 78 void Bind(Label* label);
84 void Jump(Label* label); 79 void Jump(Label* label);
85 80
86 // Misc. functionality 81 // Misc. functionality
87 intptr_t CodeSize() const { return buffer_.Size(); } 82 intptr_t CodeSize() const { return buffer_.Size(); }
88 intptr_t prologue_offset() const { return 0; } 83 intptr_t prologue_offset() const { return 0; }
89 bool has_single_entry_point() const { return true; } 84 bool has_single_entry_point() const { return true; }
90 85
91 // Count the fixups that produce a pointer offset, without processing 86 // Count the fixups that produce a pointer offset, without processing
(...skipping 23 matching lines...) Expand all
115 110
116 static void InitializeMemoryWithBreakpoints(uword data, intptr_t length); 111 static void InitializeMemoryWithBreakpoints(uword data, intptr_t length);
117 112
118 void Comment(const char* format, ...) PRINTF_ATTRIBUTE(2, 3); 113 void Comment(const char* format, ...) PRINTF_ATTRIBUTE(2, 3);
119 static bool EmittingComments(); 114 static bool EmittingComments();
120 115
121 const Code::Comments& GetCodeComments() const; 116 const Code::Comments& GetCodeComments() const;
122 117
123 static const char* RegisterName(Register reg); 118 static const char* RegisterName(Register reg);
124 119
125 static const char* FpuRegisterName(FpuRegister reg) { 120 static const char* FpuRegisterName(FpuRegister reg) { return "?"; }
126 return "?";
127 }
128 121
129 static uword GetBreakInstructionFiller() { 122 static uword GetBreakInstructionFiller() { return Bytecode::kTrap; }
130 return Bytecode::kTrap;
131 }
132 123
133 static bool IsSafe(const Object& value) { return true; } 124 static bool IsSafe(const Object& value) { return true; }
134 static bool IsSafeSmi(const Object& value) { return false; } 125 static bool IsSafeSmi(const Object& value) { return false; }
135 126
136 // Bytecodes. 127 // Bytecodes.
137 128
138 #define DECLARE_EMIT(Name, Signature, Fmt0, Fmt1, Fmt2) \ 129 #define DECLARE_EMIT(Name, Signature, Fmt0, Fmt1, Fmt2) \
139 void Name(PARAMS_##Signature); 130 void Name(PARAMS_##Signature);
140 131
141 #define PARAMS_0 132 #define PARAMS_0
142 #define PARAMS_A_D uintptr_t ra, uintptr_t rd 133 #define PARAMS_A_D uintptr_t ra, uintptr_t rd
143 #define PARAMS_D uintptr_t rd 134 #define PARAMS_D uintptr_t rd
144 #define PARAMS_A_B_C uintptr_t ra, uintptr_t rb, uintptr_t rc 135 #define PARAMS_A_B_C uintptr_t ra, uintptr_t rb, uintptr_t rc
145 #define PARAMS_A uintptr_t ra 136 #define PARAMS_A uintptr_t ra
146 #define PARAMS_X intptr_t x 137 #define PARAMS_X intptr_t x
147 #define PARAMS_T intptr_t x 138 #define PARAMS_T intptr_t x
148 #define PARAMS_A_X uintptr_t ra, intptr_t x 139 #define PARAMS_A_X uintptr_t ra, intptr_t x
(...skipping 20 matching lines...) Expand all
169 160
170 void Nop(intptr_t d) { Nop(0, d); } 161 void Nop(intptr_t d) { Nop(0, d); }
171 162
172 private: 163 private:
173 AssemblerBuffer buffer_; // Contains position independent code. 164 AssemblerBuffer buffer_; // Contains position independent code.
174 ObjectPoolWrapper object_pool_wrapper_; 165 ObjectPoolWrapper object_pool_wrapper_;
175 166
176 class CodeComment : public ZoneAllocated { 167 class CodeComment : public ZoneAllocated {
177 public: 168 public:
178 CodeComment(intptr_t pc_offset, const String& comment) 169 CodeComment(intptr_t pc_offset, const String& comment)
179 : pc_offset_(pc_offset), comment_(comment) { } 170 : pc_offset_(pc_offset), comment_(comment) {}
180 171
181 intptr_t pc_offset() const { return pc_offset_; } 172 intptr_t pc_offset() const { return pc_offset_; }
182 const String& comment() const { return comment_; } 173 const String& comment() const { return comment_; }
183 174
184 private: 175 private:
185 intptr_t pc_offset_; 176 intptr_t pc_offset_;
186 const String& comment_; 177 const String& comment_;
187 178
188 DISALLOW_COPY_AND_ASSIGN(CodeComment); 179 DISALLOW_COPY_AND_ASSIGN(CodeComment);
189 }; 180 };
190 181
191 GrowableArray<CodeComment*> comments_; 182 GrowableArray<CodeComment*> comments_;
192 183
193 DISALLOW_ALLOCATION(); 184 DISALLOW_ALLOCATION();
194 DISALLOW_COPY_AND_ASSIGN(Assembler); 185 DISALLOW_COPY_AND_ASSIGN(Assembler);
195 }; 186 };
196 187
197 188
198 } // namespace dart 189 } // namespace dart
199 190
200 #endif // RUNTIME_VM_ASSEMBLER_DBC_H_ 191 #endif // RUNTIME_VM_ASSEMBLER_DBC_H_
OLDNEW
« no previous file with comments | « runtime/vm/assembler_arm_test.cc ('k') | runtime/vm/assembler_dbc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698