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

Side by Side Diff: src/compiler/register-allocator.cc

Issue 1957393004: Allow Turbofan optimization of Ignition generators (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 7 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
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698