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

Side by Side Diff: test/cctest/compiler/test-osr.cc

Issue 930003003: [turbofan] Transfer types from loop phis to OSR values. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 10 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/typer.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/codegen.h" 5 #include "src/codegen.h"
6 #include "src/compiler/all-nodes.h" 6 #include "src/compiler/all-nodes.h"
7 #include "src/compiler/common-operator.h" 7 #include "src/compiler/common-operator.h"
8 #include "src/compiler/diamond.h" 8 #include "src/compiler/diamond.h"
9 #include "src/compiler/graph.h" 9 #include "src/compiler/graph.h"
10 #include "src/compiler/js-graph.h" 10 #include "src/compiler/js-graph.h"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 T.graph.SetEnd(ret); 151 T.graph.SetEnd(ret);
152 152
153 T.DeconstructOsr(); 153 T.DeconstructOsr();
154 154
155 CheckInputs(loop, T.start, loop); 155 CheckInputs(loop, T.start, loop);
156 CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.ZeroConstant(), loop); 156 CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.ZeroConstant(), loop);
157 CheckInputs(ret, osr_phi, T.start, loop); 157 CheckInputs(ret, osr_phi, T.start, loop);
158 } 158 }
159 159
160 160
161 TEST(Deconstruct_osr1_type) {
162 OsrDeconstructorTester T(1);
163
164 Node* loop = T.NewOsrLoop(1);
165 Node* osr_phi =
166 T.NewOsrPhi(loop, T.jsgraph.OneConstant(), 0, T.jsgraph.ZeroConstant());
167 Type* type = Type::Signed32();
168 NodeProperties::SetBounds(osr_phi, Bounds(type, type));
169
170 Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, loop);
171 T.graph.SetEnd(ret);
172
173 OsrHelper helper(0, 0);
174 helper.Deconstruct(&T.jsgraph, &T.common, T.main_zone());
175
176 CHECK_EQ(type, NodeProperties::GetBounds(T.osr_values[0]).lower);
177 CHECK_EQ(type, NodeProperties::GetBounds(T.osr_values[0]).upper);
178
179 CheckInputs(loop, T.start, loop);
180 CheckInputs(osr_phi, T.osr_values[0], T.jsgraph.ZeroConstant(), loop);
181 CheckInputs(ret, osr_phi, T.start, loop);
182 }
183
184
161 TEST(Deconstruct_osr_remove_prologue) { 185 TEST(Deconstruct_osr_remove_prologue) {
162 OsrDeconstructorTester T(1); 186 OsrDeconstructorTester T(1);
163 Diamond d(&T.graph, &T.common, T.p0); 187 Diamond d(&T.graph, &T.common, T.p0);
164 d.Chain(T.osr_normal_entry); 188 d.Chain(T.osr_normal_entry);
165 189
166 Node* loop = T.NewOsrLoop(1, d.merge); 190 Node* loop = T.NewOsrLoop(1, d.merge);
167 Node* osr_phi = 191 Node* osr_phi =
168 T.NewOsrPhi(loop, T.jsgraph.OneConstant(), 0, T.jsgraph.ZeroConstant()); 192 T.NewOsrPhi(loop, T.jsgraph.OneConstant(), 0, T.jsgraph.ZeroConstant());
169 193
170 Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, loop); 194 Node* ret = T.graph.NewNode(T.common.Return(), osr_phi, T.start, loop);
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 477
454 // Check structure of inner loop. 478 // Check structure of inner loop.
455 Node* new_inner_loop = FindSuccessor(new_outer_if_true, IrOpcode::kLoop); 479 Node* new_inner_loop = FindSuccessor(new_outer_if_true, IrOpcode::kLoop);
456 Node* new_inner_phi = FindSuccessor(new_inner_loop, IrOpcode::kPhi); 480 Node* new_inner_phi = FindSuccessor(new_inner_loop, IrOpcode::kPhi);
457 481
458 CheckInputs(new_inner_phi, T.jsgraph.OneConstant(), T.jsgraph.ZeroConstant(), 482 CheckInputs(new_inner_phi, T.jsgraph.OneConstant(), T.jsgraph.ZeroConstant(),
459 new_inner_loop); 483 new_inner_loop);
460 CheckInputs(new_outer_phi, new_entry_phi, new_inner_phi, 484 CheckInputs(new_outer_phi, new_entry_phi, new_inner_phi,
461 T.jsgraph.ZeroConstant(), new_outer_loop); 485 T.jsgraph.ZeroConstant(), new_outer_loop);
462 } 486 }
OLDNEW
« no previous file with comments | « src/compiler/typer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698