OLD | NEW |
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 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 // All uses following the given position will be moved from this | 322 // All uses following the given position will be moved from this |
323 // live range to the result live range. | 323 // live range to the result live range. |
324 void SplitAt(LifetimePosition position, LiveRange* result, Zone* zone); | 324 void SplitAt(LifetimePosition position, LiveRange* result, Zone* zone); |
325 | 325 |
326 bool IsDouble() const { return is_double_; } | 326 bool IsDouble() const { return is_double_; } |
327 bool HasRegisterAssigned() const { | 327 bool HasRegisterAssigned() const { |
328 return assigned_register_ != kInvalidAssignment; | 328 return assigned_register_ != kInvalidAssignment; |
329 } | 329 } |
330 bool IsSpilled() const { return spilled_; } | 330 bool IsSpilled() const { return spilled_; } |
331 | 331 |
| 332 LOperand* current_hint_operand() const { |
| 333 ASSERT(current_hint_operand_ == FirstHint()); |
| 334 return current_hint_operand_; |
| 335 } |
332 LOperand* FirstHint() const { | 336 LOperand* FirstHint() const { |
333 UsePosition* pos = first_pos_; | 337 UsePosition* pos = first_pos_; |
334 while (pos != NULL && !pos->HasHint()) pos = pos->next(); | 338 while (pos != NULL && !pos->HasHint()) pos = pos->next(); |
335 if (pos != NULL) return pos->hint(); | 339 if (pos != NULL) return pos->hint(); |
336 return NULL; | 340 return NULL; |
337 } | 341 } |
338 | 342 |
339 LifetimePosition Start() const { | 343 LifetimePosition Start() const { |
340 ASSERT(!IsEmpty()); | 344 ASSERT(!IsEmpty()); |
341 return first_interval()->start(); | 345 return first_interval()->start(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 bool is_double_; | 395 bool is_double_; |
392 int assigned_register_; | 396 int assigned_register_; |
393 UseInterval* last_interval_; | 397 UseInterval* last_interval_; |
394 UseInterval* first_interval_; | 398 UseInterval* first_interval_; |
395 UsePosition* first_pos_; | 399 UsePosition* first_pos_; |
396 LiveRange* parent_; | 400 LiveRange* parent_; |
397 LiveRange* next_; | 401 LiveRange* next_; |
398 // This is used as a cache, it doesn't affect correctness. | 402 // This is used as a cache, it doesn't affect correctness. |
399 mutable UseInterval* current_interval_; | 403 mutable UseInterval* current_interval_; |
400 UsePosition* last_processed_use_; | 404 UsePosition* last_processed_use_; |
| 405 // This is used as a cache, it's invalid outside of BuildLiveRanges. |
| 406 LOperand* current_hint_operand_; |
401 LOperand* spill_operand_; | 407 LOperand* spill_operand_; |
402 int spill_start_index_; | 408 int spill_start_index_; |
403 }; | 409 }; |
404 | 410 |
405 | 411 |
406 class LAllocator BASE_EMBEDDED { | 412 class LAllocator BASE_EMBEDDED { |
407 public: | 413 public: |
408 LAllocator(int first_virtual_register, HGraph* graph); | 414 LAllocator(int first_virtual_register, HGraph* graph); |
409 | 415 |
410 static void TraceAlloc(const char* msg, ...); | 416 static void TraceAlloc(const char* msg, ...); |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
636 LifetimePosition allocation_finger_; | 642 LifetimePosition allocation_finger_; |
637 #endif | 643 #endif |
638 | 644 |
639 DISALLOW_COPY_AND_ASSIGN(LAllocator); | 645 DISALLOW_COPY_AND_ASSIGN(LAllocator); |
640 }; | 646 }; |
641 | 647 |
642 | 648 |
643 } } // namespace v8::internal | 649 } } // namespace v8::internal |
644 | 650 |
645 #endif // V8_LITHIUM_ALLOCATOR_H_ | 651 #endif // V8_LITHIUM_ALLOCATOR_H_ |
OLD | NEW |