| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/compiler/linkage.h" | 5 #include "src/compiler/linkage.h" |
| 6 #include "src/compiler/register-allocator.h" | 6 #include "src/compiler/register-allocator.h" |
| 7 #include "src/string-stream.h" | 7 #include "src/string-stream.h" |
| 8 | 8 |
| 9 namespace v8 { | 9 namespace v8 { |
| 10 namespace internal { | 10 namespace internal { |
| (...skipping 947 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 958 SpillRange* RegisterAllocator::AssignSpillRangeToLiveRange(LiveRange* range) { | 958 SpillRange* RegisterAllocator::AssignSpillRangeToLiveRange(LiveRange* range) { |
| 959 DCHECK(FLAG_turbo_reuse_spill_slots); | 959 DCHECK(FLAG_turbo_reuse_spill_slots); |
| 960 auto spill_range = new (local_zone()) SpillRange(range, local_zone()); | 960 auto spill_range = new (local_zone()) SpillRange(range, local_zone()); |
| 961 spill_ranges().push_back(spill_range); | 961 spill_ranges().push_back(spill_range); |
| 962 return spill_range; | 962 return spill_range; |
| 963 } | 963 } |
| 964 | 964 |
| 965 | 965 |
| 966 bool RegisterAllocator::TryReuseSpillForPhi(LiveRange* range) { | 966 bool RegisterAllocator::TryReuseSpillForPhi(LiveRange* range) { |
| 967 DCHECK(FLAG_turbo_reuse_spill_slots); | 967 DCHECK(FLAG_turbo_reuse_spill_slots); |
| 968 if (range->IsChild() || !range->is_phi()) return false; |
| 968 DCHECK(range->HasNoSpillType()); | 969 DCHECK(range->HasNoSpillType()); |
| 969 if (range->IsChild() || !range->is_phi()) return false; | |
| 970 | 970 |
| 971 auto lookup = phi_map_.find(range->id()); | 971 auto lookup = phi_map_.find(range->id()); |
| 972 DCHECK(lookup != phi_map_.end()); | 972 DCHECK(lookup != phi_map_.end()); |
| 973 auto phi = lookup->second.phi; | 973 auto phi = lookup->second.phi; |
| 974 auto block = lookup->second.block; | 974 auto block = lookup->second.block; |
| 975 // Count the number of spilled operands. | 975 // Count the number of spilled operands. |
| 976 size_t spilled_count = 0; | 976 size_t spilled_count = 0; |
| 977 LiveRange* first_op = nullptr; | 977 LiveRange* first_op = nullptr; |
| 978 for (size_t i = 0; i < phi->operands().size(); i++) { | 978 for (size_t i = 0; i < phi->operands().size(); i++) { |
| 979 int op = phi->operands()[i]; | 979 int op = phi->operands()[i]; |
| (...skipping 1567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2547 } else { | 2547 } else { |
| 2548 DCHECK(range->Kind() == GENERAL_REGISTERS); | 2548 DCHECK(range->Kind() == GENERAL_REGISTERS); |
| 2549 assigned_registers_->Add(reg); | 2549 assigned_registers_->Add(reg); |
| 2550 } | 2550 } |
| 2551 range->set_assigned_register(reg, code_zone()); | 2551 range->set_assigned_register(reg, code_zone()); |
| 2552 } | 2552 } |
| 2553 | 2553 |
| 2554 } // namespace compiler | 2554 } // namespace compiler |
| 2555 } // namespace internal | 2555 } // namespace internal |
| 2556 } // namespace v8 | 2556 } // namespace v8 |
| OLD | NEW |