| 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/base/adapters.h" | 5 #include "src/base/adapters.h" |
| 6 #include "src/compiler/linkage.h" | 6 #include "src/compiler/linkage.h" |
| 7 #include "src/compiler/register-allocator.h" | 7 #include "src/compiler/register-allocator.h" |
| 8 #include "src/string-stream.h" | 8 #include "src/string-stream.h" |
| 9 | 9 |
| 10 namespace v8 { | 10 namespace v8 { |
| (...skipping 3070 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3081 // spill range. | 3081 // spill range. |
| 3082 LifetimePosition next_pos = range->Start(); | 3082 LifetimePosition next_pos = range->Start(); |
| 3083 if (next_pos.IsGapPosition()) next_pos = next_pos.NextStart(); | 3083 if (next_pos.IsGapPosition()) next_pos = next_pos.NextStart(); |
| 3084 UsePosition* pos = range->NextUsePositionRegisterIsBeneficial(next_pos); | 3084 UsePosition* pos = range->NextUsePositionRegisterIsBeneficial(next_pos); |
| 3085 if (pos == nullptr) { | 3085 if (pos == nullptr) { |
| 3086 SpillRange* spill_range = | 3086 SpillRange* spill_range = |
| 3087 range->TopLevel()->HasSpillRange() | 3087 range->TopLevel()->HasSpillRange() |
| 3088 ? range->TopLevel()->GetSpillRange() | 3088 ? range->TopLevel()->GetSpillRange() |
| 3089 : data()->AssignSpillRangeToLiveRange(range->TopLevel()); | 3089 : data()->AssignSpillRangeToLiveRange(range->TopLevel()); |
| 3090 bool merged = first_op_spill->TryMerge(spill_range); | 3090 bool merged = first_op_spill->TryMerge(spill_range); |
| 3091 CHECK(merged); | 3091 if (!merged) return false; |
| 3092 Spill(range); | 3092 Spill(range); |
| 3093 return true; | 3093 return true; |
| 3094 } else if (pos->pos() > range->Start().NextStart()) { | 3094 } else if (pos->pos() > range->Start().NextStart()) { |
| 3095 SpillRange* spill_range = | 3095 SpillRange* spill_range = |
| 3096 range->TopLevel()->HasSpillRange() | 3096 range->TopLevel()->HasSpillRange() |
| 3097 ? range->TopLevel()->GetSpillRange() | 3097 ? range->TopLevel()->GetSpillRange() |
| 3098 : data()->AssignSpillRangeToLiveRange(range->TopLevel()); | 3098 : data()->AssignSpillRangeToLiveRange(range->TopLevel()); |
| 3099 bool merged = first_op_spill->TryMerge(spill_range); | 3099 bool merged = first_op_spill->TryMerge(spill_range); |
| 3100 CHECK(merged); | 3100 if (!merged) return false; |
| 3101 SpillBetween(range, range->Start(), pos->pos()); | 3101 SpillBetween(range, range->Start(), pos->pos()); |
| 3102 DCHECK(UnhandledIsSorted()); | 3102 DCHECK(UnhandledIsSorted()); |
| 3103 return true; | 3103 return true; |
| 3104 } | 3104 } |
| 3105 return false; | 3105 return false; |
| 3106 } | 3106 } |
| 3107 | 3107 |
| 3108 | 3108 |
| 3109 void LinearScanAllocator::SpillAfter(LiveRange* range, LifetimePosition pos) { | 3109 void LinearScanAllocator::SpillAfter(LiveRange* range, LifetimePosition pos) { |
| 3110 LiveRange* second_part = SplitRangeAt(range, pos); | 3110 LiveRange* second_part = SplitRangeAt(range, pos); |
| (...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3657 } | 3657 } |
| 3658 } | 3658 } |
| 3659 } | 3659 } |
| 3660 } | 3660 } |
| 3661 } | 3661 } |
| 3662 | 3662 |
| 3663 | 3663 |
| 3664 } // namespace compiler | 3664 } // namespace compiler |
| 3665 } // namespace internal | 3665 } // namespace internal |
| 3666 } // namespace v8 | 3666 } // namespace v8 |
| OLD | NEW |