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

Side by Side Diff: runtime/vm/locations.cc

Issue 252333002: Use GPRs for mints (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 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
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 #include "vm/locations.h" 5 #include "vm/locations.h"
6 6
7 #include "vm/assembler.h" 7 #include "vm/assembler.h"
8 #include "vm/il_printer.h" 8 #include "vm/il_printer.h"
9 #include "vm/intermediate_language.h" 9 #include "vm/intermediate_language.h"
10 #include "vm/flow_graph_compiler.h" 10 #include "vm/flow_graph_compiler.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 } 203 }
204 204
205 205
206 void Location::PrintTo(BufferFormatter* f) const { 206 void Location::PrintTo(BufferFormatter* f) const {
207 if (kind() == kStackSlot) { 207 if (kind() == kStackSlot) {
208 f->Print("S%+" Pd "", stack_index()); 208 f->Print("S%+" Pd "", stack_index());
209 } else if (kind() == kDoubleStackSlot) { 209 } else if (kind() == kDoubleStackSlot) {
210 f->Print("DS%+" Pd "", stack_index()); 210 f->Print("DS%+" Pd "", stack_index());
211 } else if (kind() == kQuadStackSlot) { 211 } else if (kind() == kQuadStackSlot) {
212 f->Print("QS%+" Pd "", stack_index()); 212 f->Print("QS%+" Pd "", stack_index());
213 } else if (IsPairLocation()) {
214 f->Print("(");
215 AsPairLocation()->At(0).PrintTo(f);
216 f->Print(", ");
217 AsPairLocation()->At(1).PrintTo(f);
218 f->Print(")");
213 } else { 219 } else {
214 f->Print("%s", Name()); 220 f->Print("%s", Name());
215 } 221 }
216 } 222 }
217 223
218 224
219 const char* Location::ToCString() const { 225 const char* Location::ToCString() const {
220 char buffer[1024]; 226 char buffer[1024];
221 BufferFormatter bf(buffer, 1024); 227 BufferFormatter bf(buffer, 1024);
222 PrintTo(&bf); 228 PrintTo(&bf);
223 return Isolate::Current()->current_zone()->MakeCopyOfString(buffer); 229 return Isolate::Current()->current_zone()->MakeCopyOfString(buffer);
224 } 230 }
225 231
226 232
227 void Location::Print() const { 233 void Location::Print() const {
228 if (kind() == kStackSlot) { 234 if (kind() == kStackSlot) {
229 OS::Print("S%+" Pd "", stack_index()); 235 OS::Print("S%+" Pd "", stack_index());
230 } else { 236 } else {
231 OS::Print("%s", Name()); 237 OS::Print("%s", Name());
232 } 238 }
233 } 239 }
234 240
235 241
242 Location Location::Copy() const {
243 if (IsPairLocation()) {
244 PairLocation* pair = AsPairLocation();
245 ASSERT(!pair->At(0).IsPairLocation());
246 ASSERT(!pair->At(1).IsPairLocation());
247 return Location::Pair(pair->At(0).Copy(), pair->At(1).Copy());
248 } else {
249 // Copy by value.
250 return *this;
251 }
252 }
253
254
236 void LocationSummary::PrintTo(BufferFormatter* f) const { 255 void LocationSummary::PrintTo(BufferFormatter* f) const {
237 if (input_count() > 0) { 256 if (input_count() > 0) {
238 f->Print(" ("); 257 f->Print(" (");
239 for (intptr_t i = 0; i < input_count(); i++) { 258 for (intptr_t i = 0; i < input_count(); i++) {
240 if (i != 0) f->Print(", "); 259 if (i != 0) f->Print(", ");
241 in(i).PrintTo(f); 260 in(i).PrintTo(f);
242 } 261 }
243 f->Print(")"); 262 f->Print(")");
244 } 263 }
245 264
246 if (temp_count() > 0) { 265 if (temp_count() > 0) {
247 f->Print(" ["); 266 f->Print(" [");
248 for (intptr_t i = 0; i < temp_count(); i++) { 267 for (intptr_t i = 0; i < temp_count(); i++) {
249 if (i != 0) f->Print(", "); 268 if (i != 0) f->Print(", ");
250 temp(i).PrintTo(f); 269 temp(i).PrintTo(f);
251 } 270 }
252 f->Print("]"); 271 f->Print("]");
253 } 272 }
254 273
255 if (!out(0).IsInvalid()) { 274 if (!out(0).IsInvalid()) {
256 f->Print(" => "); 275 f->Print(" => ");
257 out(0).PrintTo(f); 276 out(0).PrintTo(f);
258 } 277 }
259 278
260 if (always_calls()) f->Print(" C"); 279 if (always_calls()) f->Print(" C");
261 } 280 }
262 281
263 } // namespace dart 282 } // namespace dart
OLDNEW
« runtime/vm/flow_graph_compiler_arm.cc ('K') | « runtime/vm/locations.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698