| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/interpreter/bytecode-register-optimizer.h" | 5 #include "src/interpreter/bytecode-register-optimizer.h" |
| 6 | 6 |
| 7 namespace v8 { | 7 namespace v8 { |
| 8 namespace internal { | 8 namespace internal { |
| 9 namespace interpreter { | 9 namespace interpreter { |
| 10 | 10 |
| 11 const uint32_t BytecodeRegisterOptimizer::kInvalidEquivalenceId; |
| 12 |
| 11 // A class for tracking the state of a register. This class tracks | 13 // A class for tracking the state of a register. This class tracks |
| 12 // which equivalence set a register is a member of and also whether a | 14 // which equivalence set a register is a member of and also whether a |
| 13 // register is materialized in the bytecode stream. | 15 // register is materialized in the bytecode stream. |
| 14 class BytecodeRegisterOptimizer::RegisterInfo final : public ZoneObject { | 16 class BytecodeRegisterOptimizer::RegisterInfo final : public ZoneObject { |
| 15 public: | 17 public: |
| 16 RegisterInfo(Register reg, uint32_t equivalence_id, bool materialized) | 18 RegisterInfo(Register reg, uint32_t equivalence_id, bool materialized) |
| 17 : register_(reg), | 19 : register_(reg), |
| 18 equivalence_id_(equivalence_id), | 20 equivalence_id_(equivalence_id), |
| 19 materialized_(materialized), | 21 materialized_(materialized), |
| 20 next_(this), | 22 next_(this), |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 | 63 |
| 62 // Equivalence set pointers. | 64 // Equivalence set pointers. |
| 63 RegisterInfo* next_; | 65 RegisterInfo* next_; |
| 64 RegisterInfo* prev_; | 66 RegisterInfo* prev_; |
| 65 | 67 |
| 66 DISALLOW_COPY_AND_ASSIGN(RegisterInfo); | 68 DISALLOW_COPY_AND_ASSIGN(RegisterInfo); |
| 67 }; | 69 }; |
| 68 | 70 |
| 69 void BytecodeRegisterOptimizer::RegisterInfo::AddToEquivalenceSetOf( | 71 void BytecodeRegisterOptimizer::RegisterInfo::AddToEquivalenceSetOf( |
| 70 RegisterInfo* info) { | 72 RegisterInfo* info) { |
| 73 DCHECK_NE(kInvalidEquivalenceId, info->equivalence_id()); |
| 71 // Fix old list | 74 // Fix old list |
| 72 next_->prev_ = prev_; | 75 next_->prev_ = prev_; |
| 73 prev_->next_ = next_; | 76 prev_->next_ = next_; |
| 74 // Add to new list. | 77 // Add to new list. |
| 75 next_ = info->next_; | 78 next_ = info->next_; |
| 76 prev_ = info; | 79 prev_ = info; |
| 77 prev_->next_ = this; | 80 prev_->next_ = this; |
| 78 next_->prev_ = this; | 81 next_->prev_ = this; |
| 79 set_equivalence_id(info->equivalence_id()); | 82 set_equivalence_id(info->equivalence_id()); |
| 80 set_materialized(false); | 83 set_materialized(false); |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 594 if (info->materialized()) { | 597 if (info->materialized()) { |
| 595 CreateMaterializedEquivalent(info); | 598 CreateMaterializedEquivalent(info); |
| 596 } | 599 } |
| 597 info->MoveToNewEquivalenceSet(kInvalidEquivalenceId, false); | 600 info->MoveToNewEquivalenceSet(kInvalidEquivalenceId, false); |
| 598 } | 601 } |
| 599 } | 602 } |
| 600 | 603 |
| 601 } // namespace interpreter | 604 } // namespace interpreter |
| 602 } // namespace internal | 605 } // namespace internal |
| 603 } // namespace v8 | 606 } // namespace v8 |
| OLD | NEW |