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

Side by Side Diff: src/lithium.h

Issue 9836108: Rollback of r11015, r11014, r11011, r11010 in trunk branch. (Closed) Base URL: https://v8.googlecode.com/svn/trunk
Patch Set: Finish file upload Created 8 years, 9 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 | « src/lazy-instance.h ('k') | src/lithium.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 bool IsIgnored() const { return kind() == INVALID; } 62 bool IsIgnored() const { return kind() == INVALID; }
63 bool Equals(LOperand* other) const { return value_ == other->value_; } 63 bool Equals(LOperand* other) const { return value_ == other->value_; }
64 64
65 void PrintTo(StringStream* stream); 65 void PrintTo(StringStream* stream);
66 void ConvertTo(Kind kind, int index) { 66 void ConvertTo(Kind kind, int index) {
67 value_ = KindField::encode(kind); 67 value_ = KindField::encode(kind);
68 value_ |= index << kKindFieldWidth; 68 value_ |= index << kKindFieldWidth;
69 ASSERT(this->index() == index); 69 ASSERT(this->index() == index);
70 } 70 }
71 71
72 // Calls SetUpCache() for each subclass. Don't forget to update this method
73 // if you add a new LOperand subclass.
74 static void SetUpCaches();
75
76 protected: 72 protected:
77 static const int kKindFieldWidth = 3; 73 static const int kKindFieldWidth = 3;
78 class KindField : public BitField<Kind, 0, kKindFieldWidth> { }; 74 class KindField : public BitField<Kind, 0, kKindFieldWidth> { };
79 75
80 LOperand(Kind kind, int index) { ConvertTo(kind, index); } 76 LOperand(Kind kind, int index) { ConvertTo(kind, index); }
81 77
82 unsigned value_; 78 unsigned value_;
83 }; 79 };
84 80
85 81
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 257
262 static LConstantOperand* cast(LOperand* op) { 258 static LConstantOperand* cast(LOperand* op) {
263 ASSERT(op->IsConstantOperand()); 259 ASSERT(op->IsConstantOperand());
264 return reinterpret_cast<LConstantOperand*>(op); 260 return reinterpret_cast<LConstantOperand*>(op);
265 } 261 }
266 262
267 static void SetUpCache(); 263 static void SetUpCache();
268 264
269 private: 265 private:
270 static const int kNumCachedOperands = 128; 266 static const int kNumCachedOperands = 128;
271 static LConstantOperand* cache; 267 static LConstantOperand cache[];
272 268
273 LConstantOperand() : LOperand() { } 269 LConstantOperand() : LOperand() { }
274 explicit LConstantOperand(int index) : LOperand(CONSTANT_OPERAND, index) { } 270 explicit LConstantOperand(int index) : LOperand(CONSTANT_OPERAND, index) { }
275 }; 271 };
276 272
277 273
278 class LArgument: public LOperand { 274 class LArgument: public LOperand {
279 public: 275 public:
280 explicit LArgument(int index) : LOperand(ARGUMENT, index) { } 276 explicit LArgument(int index) : LOperand(ARGUMENT, index) { }
281 277
(...skipping 14 matching lines...) Expand all
296 292
297 static LStackSlot* cast(LOperand* op) { 293 static LStackSlot* cast(LOperand* op) {
298 ASSERT(op->IsStackSlot()); 294 ASSERT(op->IsStackSlot());
299 return reinterpret_cast<LStackSlot*>(op); 295 return reinterpret_cast<LStackSlot*>(op);
300 } 296 }
301 297
302 static void SetUpCache(); 298 static void SetUpCache();
303 299
304 private: 300 private:
305 static const int kNumCachedOperands = 128; 301 static const int kNumCachedOperands = 128;
306 static LStackSlot* cache; 302 static LStackSlot cache[];
307 303
308 LStackSlot() : LOperand() { } 304 LStackSlot() : LOperand() { }
309 explicit LStackSlot(int index) : LOperand(STACK_SLOT, index) { } 305 explicit LStackSlot(int index) : LOperand(STACK_SLOT, index) { }
310 }; 306 };
311 307
312 308
313 class LDoubleStackSlot: public LOperand { 309 class LDoubleStackSlot: public LOperand {
314 public: 310 public:
315 static LDoubleStackSlot* Create(int index) { 311 static LDoubleStackSlot* Create(int index) {
316 ASSERT(index >= 0); 312 ASSERT(index >= 0);
317 if (index < kNumCachedOperands) return &cache[index]; 313 if (index < kNumCachedOperands) return &cache[index];
318 return new LDoubleStackSlot(index); 314 return new LDoubleStackSlot(index);
319 } 315 }
320 316
321 static LDoubleStackSlot* cast(LOperand* op) { 317 static LDoubleStackSlot* cast(LOperand* op) {
322 ASSERT(op->IsStackSlot()); 318 ASSERT(op->IsStackSlot());
323 return reinterpret_cast<LDoubleStackSlot*>(op); 319 return reinterpret_cast<LDoubleStackSlot*>(op);
324 } 320 }
325 321
326 static void SetUpCache(); 322 static void SetUpCache();
327 323
328 private: 324 private:
329 static const int kNumCachedOperands = 128; 325 static const int kNumCachedOperands = 128;
330 static LDoubleStackSlot* cache; 326 static LDoubleStackSlot cache[];
331 327
332 LDoubleStackSlot() : LOperand() { } 328 LDoubleStackSlot() : LOperand() { }
333 explicit LDoubleStackSlot(int index) : LOperand(DOUBLE_STACK_SLOT, index) { } 329 explicit LDoubleStackSlot(int index) : LOperand(DOUBLE_STACK_SLOT, index) { }
334 }; 330 };
335 331
336 332
337 class LRegister: public LOperand { 333 class LRegister: public LOperand {
338 public: 334 public:
339 static LRegister* Create(int index) { 335 static LRegister* Create(int index) {
340 ASSERT(index >= 0); 336 ASSERT(index >= 0);
341 if (index < kNumCachedOperands) return &cache[index]; 337 if (index < kNumCachedOperands) return &cache[index];
342 return new LRegister(index); 338 return new LRegister(index);
343 } 339 }
344 340
345 static LRegister* cast(LOperand* op) { 341 static LRegister* cast(LOperand* op) {
346 ASSERT(op->IsRegister()); 342 ASSERT(op->IsRegister());
347 return reinterpret_cast<LRegister*>(op); 343 return reinterpret_cast<LRegister*>(op);
348 } 344 }
349 345
350 static void SetUpCache(); 346 static void SetUpCache();
351 347
352 private: 348 private:
353 static const int kNumCachedOperands = 16; 349 static const int kNumCachedOperands = 16;
354 static LRegister* cache; 350 static LRegister cache[];
355 351
356 LRegister() : LOperand() { } 352 LRegister() : LOperand() { }
357 explicit LRegister(int index) : LOperand(REGISTER, index) { } 353 explicit LRegister(int index) : LOperand(REGISTER, index) { }
358 }; 354 };
359 355
360 356
361 class LDoubleRegister: public LOperand { 357 class LDoubleRegister: public LOperand {
362 public: 358 public:
363 static LDoubleRegister* Create(int index) { 359 static LDoubleRegister* Create(int index) {
364 ASSERT(index >= 0); 360 ASSERT(index >= 0);
365 if (index < kNumCachedOperands) return &cache[index]; 361 if (index < kNumCachedOperands) return &cache[index];
366 return new LDoubleRegister(index); 362 return new LDoubleRegister(index);
367 } 363 }
368 364
369 static LDoubleRegister* cast(LOperand* op) { 365 static LDoubleRegister* cast(LOperand* op) {
370 ASSERT(op->IsDoubleRegister()); 366 ASSERT(op->IsDoubleRegister());
371 return reinterpret_cast<LDoubleRegister*>(op); 367 return reinterpret_cast<LDoubleRegister*>(op);
372 } 368 }
373 369
374 static void SetUpCache(); 370 static void SetUpCache();
375 371
376 private: 372 private:
377 static const int kNumCachedOperands = 16; 373 static const int kNumCachedOperands = 16;
378 static LDoubleRegister* cache; 374 static LDoubleRegister cache[];
379 375
380 LDoubleRegister() : LOperand() { } 376 LDoubleRegister() : LOperand() { }
381 explicit LDoubleRegister(int index) : LOperand(DOUBLE_REGISTER, index) { } 377 explicit LDoubleRegister(int index) : LOperand(DOUBLE_REGISTER, index) { }
382 }; 378 };
383 379
384 380
385 class LParallelMove : public ZoneObject { 381 class LParallelMove : public ZoneObject {
386 public: 382 public:
387 LParallelMove() : move_operands_(4) { } 383 LParallelMove() : move_operands_(4) { }
388 384
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 ShallowIterator current_iterator_; 599 ShallowIterator current_iterator_;
604 }; 600 };
605 601
606 602
607 int ElementsKindToShiftSize(ElementsKind elements_kind); 603 int ElementsKindToShiftSize(ElementsKind elements_kind);
608 604
609 605
610 } } // namespace v8::internal 606 } } // namespace v8::internal
611 607
612 #endif // V8_LITHIUM_H_ 608 #endif // V8_LITHIUM_H_
OLDNEW
« no previous file with comments | « src/lazy-instance.h ('k') | src/lithium.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698