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

Side by Side Diff: test/cctest/compiler/test-simplified-lowering.cc

Issue 1514863002: [turbofan] Make FieldAccess::name usable in practice. Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix comment. Created 5 years 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 <limits> 5 #include <limits>
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/compiler/access-builder.h" 8 #include "src/compiler/access-builder.h"
9 #include "src/compiler/change-lowering.h" 9 #include "src/compiler/change-lowering.h"
10 #include "src/compiler/control-builders.h" 10 #include "src/compiler/control-builders.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 }; 92 };
93 93
94 94
95 // TODO(titzer): factor these tests out to test-run-simplifiedops.cc. 95 // TODO(titzer): factor these tests out to test-run-simplifiedops.cc.
96 // TODO(titzer): test tagged representation for input to NumberToInt32. 96 // TODO(titzer): test tagged representation for input to NumberToInt32.
97 TEST(RunNumberToInt32_float64) { 97 TEST(RunNumberToInt32_float64) {
98 // TODO(titzer): explicit load/stores here are only because of representations 98 // TODO(titzer): explicit load/stores here are only because of representations
99 double input; 99 double input;
100 int32_t result; 100 int32_t result;
101 SimplifiedLoweringTester<Object*> t; 101 SimplifiedLoweringTester<Object*> t;
102 FieldAccess load = {kUntaggedBase, 0, Handle<Name>(), Type::Number(), 102 FieldAccess load = {kUntaggedBase, 0, nullptr, Type::Number(),
103 MachineType::Float64()}; 103 MachineType::Float64()};
104 Node* loaded = t.LoadField(load, t.PointerConstant(&input)); 104 Node* loaded = t.LoadField(load, t.PointerConstant(&input));
105 NodeProperties::SetType(loaded, Type::Number()); 105 NodeProperties::SetType(loaded, Type::Number());
106 Node* convert = t.NumberToInt32(loaded); 106 Node* convert = t.NumberToInt32(loaded);
107 FieldAccess store = {kUntaggedBase, 0, Handle<Name>(), Type::Signed32(), 107 FieldAccess store = {kUntaggedBase, 0, nullptr, Type::Signed32(),
108 MachineType::Int32()}; 108 MachineType::Int32()};
109 t.StoreField(store, t.PointerConstant(&result), convert); 109 t.StoreField(store, t.PointerConstant(&result), convert);
110 t.Return(t.jsgraph.TrueConstant()); 110 t.Return(t.jsgraph.TrueConstant());
111 t.LowerAllNodesAndLowerChanges(); 111 t.LowerAllNodesAndLowerChanges();
112 t.GenerateCode(); 112 t.GenerateCode();
113 113
114 FOR_FLOAT64_INPUTS(i) { 114 FOR_FLOAT64_INPUTS(i) {
115 input = *i; 115 input = *i;
116 int32_t expected = DoubleToInt32(*i); 116 int32_t expected = DoubleToInt32(*i);
117 t.Call(); 117 t.Call();
118 CHECK_EQ(expected, result); 118 CHECK_EQ(expected, result);
119 } 119 }
120 } 120 }
121 121
122 122
123 // TODO(titzer): test tagged representation for input to NumberToUint32. 123 // TODO(titzer): test tagged representation for input to NumberToUint32.
124 TEST(RunNumberToUint32_float64) { 124 TEST(RunNumberToUint32_float64) {
125 // TODO(titzer): explicit load/stores here are only because of representations 125 // TODO(titzer): explicit load/stores here are only because of representations
126 double input; 126 double input;
127 uint32_t result; 127 uint32_t result;
128 SimplifiedLoweringTester<Object*> t; 128 SimplifiedLoweringTester<Object*> t;
129 FieldAccess load = {kUntaggedBase, 0, Handle<Name>(), Type::Number(), 129 FieldAccess load = {kUntaggedBase, 0, nullptr, Type::Number(),
130 MachineType::Float64()}; 130 MachineType::Float64()};
131 Node* loaded = t.LoadField(load, t.PointerConstant(&input)); 131 Node* loaded = t.LoadField(load, t.PointerConstant(&input));
132 NodeProperties::SetType(loaded, Type::Number()); 132 NodeProperties::SetType(loaded, Type::Number());
133 Node* convert = t.NumberToUint32(loaded); 133 Node* convert = t.NumberToUint32(loaded);
134 FieldAccess store = {kUntaggedBase, 0, Handle<Name>(), Type::Unsigned32(), 134 FieldAccess store = {kUntaggedBase, 0, nullptr, Type::Unsigned32(),
135 MachineType::Uint32()}; 135 MachineType::Uint32()};
136 t.StoreField(store, t.PointerConstant(&result), convert); 136 t.StoreField(store, t.PointerConstant(&result), convert);
137 t.Return(t.jsgraph.TrueConstant()); 137 t.Return(t.jsgraph.TrueConstant());
138 t.LowerAllNodesAndLowerChanges(); 138 t.LowerAllNodesAndLowerChanges();
139 t.GenerateCode(); 139 t.GenerateCode();
140 140
141 FOR_FLOAT64_INPUTS(i) { 141 FOR_FLOAT64_INPUTS(i) {
142 input = *i; 142 input = *i;
143 uint32_t expected = DoubleToUint32(*i); 143 uint32_t expected = DoubleToUint32(*i);
144 t.Call(); 144 t.Call();
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 CHECK_EQ(data[i], expected); 284 CHECK_EQ(data[i], expected);
285 } 285 }
286 } 286 }
287 287
288 288
289 TEST(RunLoadFieldFromUntaggedBase) { 289 TEST(RunLoadFieldFromUntaggedBase) {
290 Smi* smis[] = {Smi::FromInt(1), Smi::FromInt(2), Smi::FromInt(3)}; 290 Smi* smis[] = {Smi::FromInt(1), Smi::FromInt(2), Smi::FromInt(3)};
291 291
292 for (size_t i = 0; i < arraysize(smis); i++) { 292 for (size_t i = 0; i < arraysize(smis); i++) {
293 int offset = static_cast<int>(i * sizeof(Smi*)); 293 int offset = static_cast<int>(i * sizeof(Smi*));
294 FieldAccess access = {kUntaggedBase, offset, Handle<Name>(), 294 FieldAccess access = {kUntaggedBase, offset, nullptr, Type::Integral32(),
295 Type::Integral32(), MachineType::AnyTagged()}; 295 MachineType::AnyTagged()};
296 296
297 SimplifiedLoweringTester<Object*> t; 297 SimplifiedLoweringTester<Object*> t;
298 Node* load = t.LoadField(access, t.PointerConstant(smis)); 298 Node* load = t.LoadField(access, t.PointerConstant(smis));
299 t.Return(load); 299 t.Return(load);
300 t.LowerAllNodesAndLowerChanges(); 300 t.LowerAllNodesAndLowerChanges();
301 301
302 for (int j = -5; j <= 5; j++) { 302 for (int j = -5; j <= 5; j++) {
303 Smi* expected = Smi::FromInt(j); 303 Smi* expected = Smi::FromInt(j);
304 smis[i] = expected; 304 smis[i] = expected;
305 CHECK_EQ(expected, t.Call()); 305 CHECK_EQ(expected, t.Call());
306 } 306 }
307 } 307 }
308 } 308 }
309 309
310 310
311 TEST(RunStoreFieldToUntaggedBase) { 311 TEST(RunStoreFieldToUntaggedBase) {
312 Smi* smis[] = {Smi::FromInt(1), Smi::FromInt(2), Smi::FromInt(3)}; 312 Smi* smis[] = {Smi::FromInt(1), Smi::FromInt(2), Smi::FromInt(3)};
313 313
314 for (size_t i = 0; i < arraysize(smis); i++) { 314 for (size_t i = 0; i < arraysize(smis); i++) {
315 int offset = static_cast<int>(i * sizeof(Smi*)); 315 int offset = static_cast<int>(i * sizeof(Smi*));
316 FieldAccess access = {kUntaggedBase, offset, Handle<Name>(), 316 FieldAccess access = {kUntaggedBase, offset, nullptr, Type::Integral32(),
317 Type::Integral32(), MachineType::AnyTagged()}; 317 MachineType::AnyTagged()};
318 318
319 SimplifiedLoweringTester<Object*> t(MachineType::AnyTagged()); 319 SimplifiedLoweringTester<Object*> t(MachineType::AnyTagged());
320 Node* p0 = t.Parameter(0); 320 Node* p0 = t.Parameter(0);
321 t.StoreField(access, t.PointerConstant(smis), p0); 321 t.StoreField(access, t.PointerConstant(smis), p0);
322 t.Return(p0); 322 t.Return(p0);
323 t.LowerAllNodesAndLowerChanges(); 323 t.LowerAllNodesAndLowerChanges();
324 324
325 for (int j = -5; j <= 5; j++) { 325 for (int j = -5; j <= 5; j++) {
326 Smi* expected = Smi::FromInt(j); 326 Smi* expected = Smi::FromInt(j);
327 smis[i] = Smi::FromInt(-100); 327 smis[i] = Smi::FromInt(-100);
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 ElementAccess access = {tagged ? kTaggedBase : kUntaggedBase, 519 ElementAccess access = {tagged ? kTaggedBase : kUntaggedBase,
520 tagged ? FixedArrayBase::kHeaderSize : 0, 520 tagged ? FixedArrayBase::kHeaderSize : 0,
521 Type::Any(), rep}; 521 Type::Any(), rep};
522 return access; 522 return access;
523 } 523 }
524 524
525 FieldAccess GetFieldAccess(int field) { 525 FieldAccess GetFieldAccess(int field) {
526 int offset = field * sizeof(E); 526 int offset = field * sizeof(E);
527 FieldAccess access = {tagged ? kTaggedBase : kUntaggedBase, 527 FieldAccess access = {tagged ? kTaggedBase : kUntaggedBase,
528 offset + (tagged ? FixedArrayBase::kHeaderSize : 0), 528 offset + (tagged ? FixedArrayBase::kHeaderSize : 0),
529 Handle<Name>(), Type::Any(), rep}; 529 nullptr, Type::Any(), rep};
530 return access; 530 return access;
531 } 531 }
532 532
533 template <typename T> 533 template <typename T>
534 Node* GetBaseNode(SimplifiedLoweringTester<T>* t) { 534 Node* GetBaseNode(SimplifiedLoweringTester<T>* t) {
535 return tagged ? t->HeapConstant(tagged_array) 535 return tagged ? t->HeapConstant(tagged_array)
536 : t->PointerConstant(untagged_array); 536 : t->PointerConstant(untagged_array);
537 } 537 }
538 538
539 void BoundsCheck(int index) { 539 void BoundsCheck(int index) {
(...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 MachineType::Uint32(), MachineType::Int64(), MachineType::Float64(), 1328 MachineType::Uint32(), MachineType::Int64(), MachineType::Float64(),
1329 MachineType::AnyTagged()}; 1329 MachineType::AnyTagged()};
1330 1330
1331 } // namespace 1331 } // namespace
1332 1332
1333 1333
1334 TEST(LowerLoadField_to_load) { 1334 TEST(LowerLoadField_to_load) {
1335 TestingGraph t(Type::Any(), Type::Signed32()); 1335 TestingGraph t(Type::Any(), Type::Signed32());
1336 1336
1337 for (size_t i = 0; i < arraysize(kMachineReps); i++) { 1337 for (size_t i = 0; i < arraysize(kMachineReps); i++) {
1338 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, 1338 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, nullptr,
1339 Handle<Name>::null(), Type::Any(), kMachineReps[i]}; 1339 Type::Any(), kMachineReps[i]};
1340 1340
1341 Node* load = t.graph()->NewNode(t.simplified()->LoadField(access), t.p0, 1341 Node* load = t.graph()->NewNode(t.simplified()->LoadField(access), t.p0,
1342 t.start, t.start); 1342 t.start, t.start);
1343 Node* use = t.Use(load, kMachineReps[i]); 1343 Node* use = t.Use(load, kMachineReps[i]);
1344 t.Return(use); 1344 t.Return(use);
1345 t.LowerAllNodesAndLowerChanges(); 1345 t.LowerAllNodesAndLowerChanges();
1346 CHECK_EQ(IrOpcode::kLoad, load->opcode()); 1346 CHECK_EQ(IrOpcode::kLoad, load->opcode());
1347 CHECK_EQ(t.p0, load->InputAt(0)); 1347 CHECK_EQ(t.p0, load->InputAt(0));
1348 CheckFieldAccessArithmetic(access, load); 1348 CheckFieldAccessArithmetic(access, load);
1349 1349
1350 MachineType rep = LoadRepresentationOf(load->op()); 1350 MachineType rep = LoadRepresentationOf(load->op());
1351 CHECK_EQ(kMachineReps[i], rep); 1351 CHECK_EQ(kMachineReps[i], rep);
1352 } 1352 }
1353 } 1353 }
1354 1354
1355 1355
1356 TEST(LowerStoreField_to_store) { 1356 TEST(LowerStoreField_to_store) {
1357 { 1357 {
1358 TestingGraph t(Type::Any(), Type::Signed32()); 1358 TestingGraph t(Type::Any(), Type::Signed32());
1359 1359
1360 for (size_t i = 0; i < arraysize(kMachineReps); i++) { 1360 for (size_t i = 0; i < arraysize(kMachineReps); i++) {
1361 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, 1361 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, nullptr,
1362 Handle<Name>::null(), Type::Any(), kMachineReps[i]}; 1362 Type::Any(), kMachineReps[i]};
1363 1363
1364 1364
1365 Node* val = t.ExampleWithOutput(kMachineReps[i]); 1365 Node* val = t.ExampleWithOutput(kMachineReps[i]);
1366 Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0, 1366 Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0,
1367 val, t.start, t.start); 1367 val, t.start, t.start);
1368 t.Effect(store); 1368 t.Effect(store);
1369 t.LowerAllNodesAndLowerChanges(); 1369 t.LowerAllNodesAndLowerChanges();
1370 CHECK_EQ(IrOpcode::kStore, store->opcode()); 1370 CHECK_EQ(IrOpcode::kStore, store->opcode());
1371 CHECK_EQ(val, store->InputAt(2)); 1371 CHECK_EQ(val, store->InputAt(2));
1372 CheckFieldAccessArithmetic(access, store); 1372 CheckFieldAccessArithmetic(access, store);
1373 1373
1374 StoreRepresentation rep = OpParameter<StoreRepresentation>(store); 1374 StoreRepresentation rep = OpParameter<StoreRepresentation>(store);
1375 if (kMachineReps[i].representation() == MachineRepresentation::kTagged) { 1375 if (kMachineReps[i].representation() == MachineRepresentation::kTagged) {
1376 CHECK_EQ(kFullWriteBarrier, rep.write_barrier_kind()); 1376 CHECK_EQ(kFullWriteBarrier, rep.write_barrier_kind());
1377 } 1377 }
1378 CHECK_EQ(kMachineReps[i], rep.machine_type()); 1378 CHECK_EQ(kMachineReps[i], rep.machine_type());
1379 } 1379 }
1380 } 1380 }
1381 { 1381 {
1382 HandleAndZoneScope scope; 1382 HandleAndZoneScope scope;
1383 Zone* z = scope.main_zone(); 1383 Zone* z = scope.main_zone();
1384 TestingGraph t(Type::Any(), Type::Intersect(Type::SignedSmall(), 1384 TestingGraph t(Type::Any(), Type::Intersect(Type::SignedSmall(),
1385 Type::TaggedSigned(), z)); 1385 Type::TaggedSigned(), z));
1386 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, 1386 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, nullptr,
1387 Handle<Name>::null(), Type::Any(), 1387 Type::Any(), MachineType::AnyTagged()};
1388 MachineType::AnyTagged()};
1389 Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0, 1388 Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0,
1390 t.p1, t.start, t.start); 1389 t.p1, t.start, t.start);
1391 t.Effect(store); 1390 t.Effect(store);
1392 t.LowerAllNodesAndLowerChanges(); 1391 t.LowerAllNodesAndLowerChanges();
1393 CHECK_EQ(IrOpcode::kStore, store->opcode()); 1392 CHECK_EQ(IrOpcode::kStore, store->opcode());
1394 CHECK_EQ(t.p1, store->InputAt(2)); 1393 CHECK_EQ(t.p1, store->InputAt(2));
1395 StoreRepresentation rep = OpParameter<StoreRepresentation>(store); 1394 StoreRepresentation rep = OpParameter<StoreRepresentation>(store);
1396 CHECK_EQ(kNoWriteBarrier, rep.write_barrier_kind()); 1395 CHECK_EQ(kNoWriteBarrier, rep.write_barrier_kind());
1397 } 1396 }
1398 } 1397 }
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
1511 t.Lower(); 1510 t.Lower();
1512 CHECK_EQ(IrOpcode::kLoadElement, load->opcode()); 1511 CHECK_EQ(IrOpcode::kLoadElement, load->opcode());
1513 CHECK_EQ(t.p0, load->InputAt(0)); 1512 CHECK_EQ(t.p0, load->InputAt(0));
1514 CheckChangeOf(IrOpcode::kChangeFloat64ToTagged, load, t.ret->InputAt(0)); 1513 CheckChangeOf(IrOpcode::kChangeFloat64ToTagged, load, t.ret->InputAt(0));
1515 } 1514 }
1516 1515
1517 1516
1518 TEST(InsertChangeForLoadField) { 1517 TEST(InsertChangeForLoadField) {
1519 // TODO(titzer): test all load/store representation change insertions. 1518 // TODO(titzer): test all load/store representation change insertions.
1520 TestingGraph t(Type::Any(), Type::Signed32()); 1519 TestingGraph t(Type::Any(), Type::Signed32());
1521 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, 1520 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, nullptr,
1522 Handle<Name>::null(), Type::Any(), 1521 Type::Any(), MachineType::Float64()};
1523 MachineType::Float64()};
1524 1522
1525 Node* load = t.graph()->NewNode(t.simplified()->LoadField(access), t.p0, 1523 Node* load = t.graph()->NewNode(t.simplified()->LoadField(access), t.p0,
1526 t.start, t.start); 1524 t.start, t.start);
1527 t.Return(load); 1525 t.Return(load);
1528 t.Lower(); 1526 t.Lower();
1529 CHECK_EQ(IrOpcode::kLoadField, load->opcode()); 1527 CHECK_EQ(IrOpcode::kLoadField, load->opcode());
1530 CHECK_EQ(t.p0, load->InputAt(0)); 1528 CHECK_EQ(t.p0, load->InputAt(0));
1531 CheckChangeOf(IrOpcode::kChangeFloat64ToTagged, load, t.ret->InputAt(0)); 1529 CheckChangeOf(IrOpcode::kChangeFloat64ToTagged, load, t.ret->InputAt(0));
1532 } 1530 }
1533 1531
(...skipping 12 matching lines...) Expand all
1546 1544
1547 CHECK_EQ(IrOpcode::kStoreElement, store->opcode()); 1545 CHECK_EQ(IrOpcode::kStoreElement, store->opcode());
1548 CHECK_EQ(t.p0, store->InputAt(0)); 1546 CHECK_EQ(t.p0, store->InputAt(0));
1549 CheckChangeOf(IrOpcode::kChangeTaggedToFloat64, t.p1, store->InputAt(2)); 1547 CheckChangeOf(IrOpcode::kChangeTaggedToFloat64, t.p1, store->InputAt(2));
1550 } 1548 }
1551 1549
1552 1550
1553 TEST(InsertChangeForStoreField) { 1551 TEST(InsertChangeForStoreField) {
1554 // TODO(titzer): test all load/store representation change insertions. 1552 // TODO(titzer): test all load/store representation change insertions.
1555 TestingGraph t(Type::Any(), Type::Signed32()); 1553 TestingGraph t(Type::Any(), Type::Signed32());
1556 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, 1554 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, nullptr,
1557 Handle<Name>::null(), Type::Any(), 1555 Type::Any(), MachineType::Float64()};
1558 MachineType::Float64()};
1559 1556
1560 Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0, 1557 Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0,
1561 t.p1, t.start, t.start); 1558 t.p1, t.start, t.start);
1562 t.Effect(store); 1559 t.Effect(store);
1563 t.Lower(); 1560 t.Lower();
1564 1561
1565 CHECK_EQ(IrOpcode::kStoreField, store->opcode()); 1562 CHECK_EQ(IrOpcode::kStoreField, store->opcode());
1566 CHECK_EQ(t.p0, store->InputAt(0)); 1563 CHECK_EQ(t.p0, store->InputAt(0));
1567 CheckChangeOf(IrOpcode::kChangeTaggedToFloat64, t.p1, store->InputAt(1)); 1564 CheckChangeOf(IrOpcode::kChangeTaggedToFloat64, t.p1, store->InputAt(1));
1568 } 1565 }
1569 1566
1570 1567
1571 TEST(UpdatePhi) { 1568 TEST(UpdatePhi) {
1572 TestingGraph t(Type::Any(), Type::Signed32()); 1569 TestingGraph t(Type::Any(), Type::Signed32());
1573 static const MachineType kMachineTypes[] = { 1570 static const MachineType kMachineTypes[] = {
1574 MachineType::Int32(), MachineType::Uint32(), MachineType::Float64()}; 1571 MachineType::Int32(), MachineType::Uint32(), MachineType::Float64()};
1575 Type* kTypes[] = {Type::Signed32(), Type::Unsigned32(), Type::Number()}; 1572 Type* kTypes[] = {Type::Signed32(), Type::Unsigned32(), Type::Number()};
1576 1573
1577 for (size_t i = 0; i < arraysize(kMachineTypes); i++) { 1574 for (size_t i = 0; i < arraysize(kMachineTypes); i++) {
1578 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, 1575 FieldAccess access = {kTaggedBase, FixedArrayBase::kHeaderSize, nullptr,
1579 Handle<Name>::null(), kTypes[i], kMachineTypes[i]}; 1576 kTypes[i], kMachineTypes[i]};
1580 1577
1581 Node* load0 = t.graph()->NewNode(t.simplified()->LoadField(access), t.p0, 1578 Node* load0 = t.graph()->NewNode(t.simplified()->LoadField(access), t.p0,
1582 t.start, t.start); 1579 t.start, t.start);
1583 Node* load1 = t.graph()->NewNode(t.simplified()->LoadField(access), t.p1, 1580 Node* load1 = t.graph()->NewNode(t.simplified()->LoadField(access), t.p1,
1584 t.start, t.start); 1581 t.start, t.start);
1585 Node* phi = 1582 Node* phi =
1586 t.graph()->NewNode(t.common()->Phi(MachineRepresentation::kTagged, 2), 1583 t.graph()->NewNode(t.common()->Phi(MachineRepresentation::kTagged, 2),
1587 load0, load1, t.start); 1584 load0, load1, t.start);
1588 t.Return(t.Use(phi, kMachineTypes[i])); 1585 t.Return(t.Use(phi, kMachineTypes[i]));
1589 t.Lower(); 1586 t.Lower();
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
1963 t.Return(use); 1960 t.Return(use);
1964 t.Lower(); 1961 t.Lower();
1965 1962
1966 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op())); 1963 CHECK_EQ(d.expected, PhiRepresentationOf(phi->op()));
1967 } 1964 }
1968 } 1965 }
1969 1966
1970 } // namespace compiler 1967 } // namespace compiler
1971 } // namespace internal 1968 } // namespace internal
1972 } // namespace v8 1969 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/simplified-operator.cc ('k') | test/unittests/compiler/change-lowering-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698