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

Side by Side Diff: src/compiler/instruction-selector.cc

Issue 2428443002: [wasm] Trim graph before scheduling. (Closed)
Patch Set: Use proper temp registers if Projection(1) does not exist. Created 4 years, 2 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/instruction-selector.h ('k') | src/compiler/mips/code-generator-mips.cc » ('j') | 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/instruction-selector.h" 5 #include "src/compiler/instruction-selector.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/adapters.h" 9 #include "src/base/adapters.h"
10 #include "src/compiler/instruction-selector-impl.h" 10 #include "src/compiler/instruction-selector-impl.h"
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 // Exit block doesn't have control. 926 // Exit block doesn't have control.
927 DCHECK_NULL(input); 927 DCHECK_NULL(input);
928 break; 928 break;
929 } 929 }
930 default: 930 default:
931 UNREACHABLE(); 931 UNREACHABLE();
932 break; 932 break;
933 } 933 }
934 } 934 }
935 935
936 void InstructionSelector::MarkPairProjectionsAsWord32(Node* node) {
937 Node* projection0 = NodeProperties::FindProjection(node, 0);
938 if (projection0) {
939 MarkAsWord32(projection0);
940 }
941 Node* projection1 = NodeProperties::FindProjection(node, 1);
942 if (projection1) {
943 MarkAsWord32(projection1);
944 }
945 }
936 946
937 void InstructionSelector::VisitNode(Node* node) { 947 void InstructionSelector::VisitNode(Node* node) {
938 DCHECK_NOT_NULL(schedule()->block(node)); // should only use scheduled nodes. 948 DCHECK_NOT_NULL(schedule()->block(node)); // should only use scheduled nodes.
939 switch (node->opcode()) { 949 switch (node->opcode()) {
940 case IrOpcode::kStart: 950 case IrOpcode::kStart:
941 case IrOpcode::kLoop: 951 case IrOpcode::kLoop:
942 case IrOpcode::kEnd: 952 case IrOpcode::kEnd:
943 case IrOpcode::kBranch: 953 case IrOpcode::kBranch:
944 case IrOpcode::kIfTrue: 954 case IrOpcode::kIfTrue:
945 case IrOpcode::kIfFalse: 955 case IrOpcode::kIfFalse:
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1333 return VisitUnalignedStore(node); 1343 return VisitUnalignedStore(node);
1334 case IrOpcode::kCheckedLoad: { 1344 case IrOpcode::kCheckedLoad: {
1335 MachineRepresentation rep = 1345 MachineRepresentation rep =
1336 CheckedLoadRepresentationOf(node->op()).representation(); 1346 CheckedLoadRepresentationOf(node->op()).representation();
1337 MarkAsRepresentation(rep, node); 1347 MarkAsRepresentation(rep, node);
1338 return VisitCheckedLoad(node); 1348 return VisitCheckedLoad(node);
1339 } 1349 }
1340 case IrOpcode::kCheckedStore: 1350 case IrOpcode::kCheckedStore:
1341 return VisitCheckedStore(node); 1351 return VisitCheckedStore(node);
1342 case IrOpcode::kInt32PairAdd: 1352 case IrOpcode::kInt32PairAdd:
1343 MarkAsWord32(NodeProperties::FindProjection(node, 0)); 1353 MarkAsWord32(node);
1344 MarkAsWord32(NodeProperties::FindProjection(node, 1)); 1354 MarkPairProjectionsAsWord32(node);
1345 return VisitInt32PairAdd(node); 1355 return VisitInt32PairAdd(node);
1346 case IrOpcode::kInt32PairSub: 1356 case IrOpcode::kInt32PairSub:
1347 MarkAsWord32(NodeProperties::FindProjection(node, 0)); 1357 MarkAsWord32(node);
1348 MarkAsWord32(NodeProperties::FindProjection(node, 1)); 1358 MarkPairProjectionsAsWord32(node);
1349 return VisitInt32PairSub(node); 1359 return VisitInt32PairSub(node);
1350 case IrOpcode::kInt32PairMul: 1360 case IrOpcode::kInt32PairMul:
1351 MarkAsWord32(NodeProperties::FindProjection(node, 0)); 1361 MarkAsWord32(node);
1352 MarkAsWord32(NodeProperties::FindProjection(node, 1)); 1362 MarkPairProjectionsAsWord32(node);
1353 return VisitInt32PairMul(node); 1363 return VisitInt32PairMul(node);
1354 case IrOpcode::kWord32PairShl: 1364 case IrOpcode::kWord32PairShl:
1355 MarkAsWord32(NodeProperties::FindProjection(node, 0)); 1365 MarkAsWord32(node);
1356 MarkAsWord32(NodeProperties::FindProjection(node, 1)); 1366 MarkPairProjectionsAsWord32(node);
1357 return VisitWord32PairShl(node); 1367 return VisitWord32PairShl(node);
1358 case IrOpcode::kWord32PairShr: 1368 case IrOpcode::kWord32PairShr:
1359 MarkAsWord32(NodeProperties::FindProjection(node, 0)); 1369 MarkAsWord32(node);
1360 MarkAsWord32(NodeProperties::FindProjection(node, 1)); 1370 MarkPairProjectionsAsWord32(node);
1361 return VisitWord32PairShr(node); 1371 return VisitWord32PairShr(node);
1362 case IrOpcode::kWord32PairSar: 1372 case IrOpcode::kWord32PairSar:
1363 MarkAsWord32(NodeProperties::FindProjection(node, 0)); 1373 MarkAsWord32(node);
1364 MarkAsWord32(NodeProperties::FindProjection(node, 1)); 1374 MarkPairProjectionsAsWord32(node);
1365 return VisitWord32PairSar(node); 1375 return VisitWord32PairSar(node);
1366 case IrOpcode::kAtomicLoad: { 1376 case IrOpcode::kAtomicLoad: {
1367 LoadRepresentation type = LoadRepresentationOf(node->op()); 1377 LoadRepresentation type = LoadRepresentationOf(node->op());
1368 MarkAsRepresentation(type.representation(), node); 1378 MarkAsRepresentation(type.representation(), node);
1369 return VisitAtomicLoad(node); 1379 return VisitAtomicLoad(node);
1370 } 1380 }
1371 case IrOpcode::kAtomicStore: 1381 case IrOpcode::kAtomicStore:
1372 return VisitAtomicStore(node); 1382 return VisitAtomicStore(node);
1373 case IrOpcode::kProtectedLoad: 1383 case IrOpcode::kProtectedLoad:
1374 return VisitProtectedLoad(node); 1384 return VisitProtectedLoad(node);
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after
2125 return new (instruction_zone()) FrameStateDescriptor( 2135 return new (instruction_zone()) FrameStateDescriptor(
2126 instruction_zone(), state_info.type(), state_info.bailout_id(), 2136 instruction_zone(), state_info.type(), state_info.bailout_id(),
2127 state_info.state_combine(), parameters, locals, stack, 2137 state_info.state_combine(), parameters, locals, stack,
2128 state_info.shared_info(), outer_state); 2138 state_info.shared_info(), outer_state);
2129 } 2139 }
2130 2140
2131 2141
2132 } // namespace compiler 2142 } // namespace compiler
2133 } // namespace internal 2143 } // namespace internal
2134 } // namespace v8 2144 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector.h ('k') | src/compiler/mips/code-generator-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698