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

Side by Side Diff: test/unittests/compiler/coalesced-live-ranges-unittest.cc

Issue 1311983002: [turbofan] Separate LiveRange and TopLevelLiveRange concepts (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « src/compiler/register-allocator.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/compiler/coalesced-live-ranges.h" 5 #include "src/compiler/coalesced-live-ranges.h"
6 #include "test/unittests/test-utils.h" 6 #include "test/unittests/test-utils.h"
7 7
8 namespace v8 { 8 namespace v8 {
9 namespace internal { 9 namespace internal {
10 namespace compiler { 10 namespace compiler {
(...skipping 11 matching lines...) Expand all
22 return *this; 22 return *this;
23 } 23 }
24 TestRangeBuilder& Add(int start, int end) { 24 TestRangeBuilder& Add(int start, int end) {
25 pairs_.push_back({start, end}); 25 pairs_.push_back({start, end});
26 return *this; 26 return *this;
27 } 27 }
28 28
29 LiveRange* Build(int start, int end) { return Add(start, end).Build(); } 29 LiveRange* Build(int start, int end) { return Add(start, end).Build(); }
30 30
31 LiveRange* Build() { 31 LiveRange* Build() {
32 LiveRange* range = new (zone_) LiveRange(id_, MachineType::kRepTagged); 32 TopLevelLiveRange* range =
33 new (zone_) TopLevelLiveRange(id_, MachineType::kRepTagged);
33 // Traverse the provided interval specifications backwards, because that is 34 // Traverse the provided interval specifications backwards, because that is
34 // what LiveRange expects. 35 // what LiveRange expects.
35 for (int i = static_cast<int>(pairs_.size()) - 1; i >= 0; --i) { 36 for (int i = static_cast<int>(pairs_.size()) - 1; i >= 0; --i) {
36 Interval pair = pairs_[i]; 37 Interval pair = pairs_[i];
37 LifetimePosition start = LifetimePosition::FromInt(pair.first); 38 LifetimePosition start = LifetimePosition::FromInt(pair.first);
38 LifetimePosition end = LifetimePosition::FromInt(pair.second); 39 LifetimePosition end = LifetimePosition::FromInt(pair.second);
39 CHECK(start < end); 40 CHECK(start < end);
40 range->AddUseInterval(start, end, zone_); 41 range->AddUseInterval(start, end, zone_);
41 } 42 }
42 43
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 LiveRangeIDs set(zone()); 94 LiveRangeIDs set(zone());
94 return IsRangeConflictingWith(range, set); 95 return IsRangeConflictingWith(range, set);
95 } 96 }
96 97
97 98
98 void CoalescedLiveRangesTest::RemoveConflicts(LiveRange* range) { 99 void CoalescedLiveRangesTest::RemoveConflicts(LiveRange* range) {
99 auto conflicts = ranges().GetConflicts(range); 100 auto conflicts = ranges().GetConflicts(range);
100 LiveRangeIDs seen(zone()); 101 LiveRangeIDs seen(zone());
101 for (auto c = conflicts.Current(); c != nullptr; 102 for (auto c = conflicts.Current(); c != nullptr;
102 c = conflicts.RemoveCurrentAndGetNext()) { 103 c = conflicts.RemoveCurrentAndGetNext()) {
103 EXPECT_FALSE(seen.count(c->id()) > 0); 104 int id = c->TopLevel()->vreg();
104 seen.insert(c->id()); 105 EXPECT_FALSE(seen.count(id) > 0);
106 seen.insert(c->TopLevel()->vreg());
105 } 107 }
106 } 108 }
107 109
108 110
109 bool CoalescedLiveRangesTest::AllocationsAreValid() const { 111 bool CoalescedLiveRangesTest::AllocationsAreValid() const {
110 return ranges().VerifyAllocationsAreValidForTesting(); 112 return ranges().VerifyAllocationsAreValidForTesting();
111 } 113 }
112 114
113 115
114 bool CoalescedLiveRangesTest::IsRangeConflictingWith(const LiveRange* range, 116 bool CoalescedLiveRangesTest::IsRangeConflictingWith(const LiveRange* range,
115 const LiveRangeIDs& ids) { 117 const LiveRangeIDs& ids) {
116 LiveRangeIDs found_ids(zone()); 118 LiveRangeIDs found_ids(zone());
117 119
118 auto conflicts = ranges().GetConflicts(range); 120 auto conflicts = ranges().GetConflicts(range);
119 for (auto conflict = conflicts.Current(); conflict != nullptr; 121 for (auto conflict = conflicts.Current(); conflict != nullptr;
120 conflict = conflicts.GetNext()) { 122 conflict = conflicts.GetNext()) {
121 found_ids.insert(conflict->id()); 123 found_ids.insert(conflict->TopLevel()->vreg());
122 } 124 }
123 return found_ids == ids; 125 return found_ids == ids;
124 } 126 }
125 127
126 128
127 TEST_F(CoalescedLiveRangesTest, VisitEmptyAllocations) { 129 TEST_F(CoalescedLiveRangesTest, VisitEmptyAllocations) {
128 LiveRange* range = TestRangeBuilder(zone()).Id(1).Build(1, 5); 130 LiveRange* range = TestRangeBuilder(zone()).Id(1).Build(1, 5);
129 ASSERT_TRUE(ranges().empty()); 131 ASSERT_TRUE(ranges().empty());
130 ASSERT_TRUE(AllocationsAreValid()); 132 ASSERT_TRUE(AllocationsAreValid());
131 ASSERT_TRUE(HasNoConflicts(range)); 133 ASSERT_TRUE(HasNoConflicts(range));
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 TestRangeBuilder(zone()).Id(3).Add(1, 8).Add(22, 25).Build(); 302 TestRangeBuilder(zone()).Id(3).Add(1, 8).Add(22, 25).Build();
301 RemoveConflicts(query); 303 RemoveConflicts(query);
302 query = TestRangeBuilder(zone()).Id(4).Build(0, 60); 304 query = TestRangeBuilder(zone()).Id(4).Build(0, 60);
303 ASSERT_TRUE(ConflictsPreciselyWith(query, 2)); 305 ASSERT_TRUE(ConflictsPreciselyWith(query, 2));
304 } 306 }
305 307
306 308
307 } // namespace compiler 309 } // namespace compiler
308 } // namespace internal 310 } // namespace internal
309 } // namespace v8 311 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/register-allocator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698