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

Side by Side Diff: src/compiler/simplified-lowering.cc

Issue 2280613002: Revert of [turbofan] Insert dummy values when changing from None type. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 3 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/s390/code-generator-s390.cc ('k') | src/compiler/typer.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/simplified-lowering.h" 5 #include "src/compiler/simplified-lowering.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/address-map.h" 9 #include "src/address-map.h"
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 if (pushed_unvisited) continue; 304 if (pushed_unvisited) continue;
305 305
306 // Process the top of the stack. 306 // Process the top of the stack.
307 Node* node = current.node; 307 Node* node = current.node;
308 typing_stack_.pop(); 308 typing_stack_.pop();
309 NodeInfo* info = GetInfo(node); 309 NodeInfo* info = GetInfo(node);
310 info->set_visited(); 310 info->set_visited();
311 bool updated = UpdateFeedbackType(node); 311 bool updated = UpdateFeedbackType(node);
312 TRACE(" visit #%d: %s\n", node->id(), node->op()->mnemonic()); 312 TRACE(" visit #%d: %s\n", node->id(), node->op()->mnemonic());
313 VisitNode(node, info->truncation(), nullptr); 313 VisitNode(node, info->truncation(), nullptr);
314 TRACE(" ==> output ");
315 PrintOutputInfo(info);
316 TRACE("\n");
317 if (updated) { 314 if (updated) {
318 for (Node* const user : node->uses()) { 315 for (Node* const user : node->uses()) {
319 if (GetInfo(user)->visited()) { 316 if (GetInfo(user)->visited()) {
320 GetInfo(user)->set_queued(); 317 GetInfo(user)->set_queued();
321 queue_.push(user); 318 queue_.push(user);
322 } 319 }
323 } 320 }
324 } 321 }
325 } 322 }
326 323
327 // Process the revisit queue. 324 // Process the revisit queue.
328 while (!queue_.empty()) { 325 while (!queue_.empty()) {
329 Node* node = queue_.front(); 326 Node* node = queue_.front();
330 queue_.pop(); 327 queue_.pop();
331 NodeInfo* info = GetInfo(node); 328 NodeInfo* info = GetInfo(node);
332 info->set_visited(); 329 info->set_visited();
333 bool updated = UpdateFeedbackType(node); 330 bool updated = UpdateFeedbackType(node);
334 TRACE(" visit #%d: %s\n", node->id(), node->op()->mnemonic()); 331 TRACE(" visit #%d: %s\n", node->id(), node->op()->mnemonic());
335 VisitNode(node, info->truncation(), nullptr); 332 VisitNode(node, info->truncation(), nullptr);
336 TRACE(" ==> output ");
337 PrintOutputInfo(info);
338 TRACE("\n");
339 if (updated) { 333 if (updated) {
340 for (Node* const user : node->uses()) { 334 for (Node* const user : node->uses()) {
341 if (GetInfo(user)->visited()) { 335 if (GetInfo(user)->visited()) {
342 GetInfo(user)->set_queued(); 336 GetInfo(user)->set_queued();
343 queue_.push(user); 337 queue_.push(user);
344 } 338 }
345 } 339 }
346 } 340 }
347 } 341 }
348 } 342 }
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 EnqueueInitial(jsgraph_->graph()->end()); 527 EnqueueInitial(jsgraph_->graph()->end());
534 // Process nodes from the queue until it is empty. 528 // Process nodes from the queue until it is empty.
535 while (!queue_.empty()) { 529 while (!queue_.empty()) {
536 Node* node = queue_.front(); 530 Node* node = queue_.front();
537 NodeInfo* info = GetInfo(node); 531 NodeInfo* info = GetInfo(node);
538 queue_.pop(); 532 queue_.pop();
539 info->set_visited(); 533 info->set_visited();
540 TRACE(" visit #%d: %s (trunc: %s)\n", node->id(), node->op()->mnemonic(), 534 TRACE(" visit #%d: %s (trunc: %s)\n", node->id(), node->op()->mnemonic(),
541 info->truncation().description()); 535 info->truncation().description());
542 VisitNode(node, info->truncation(), nullptr); 536 VisitNode(node, info->truncation(), nullptr);
537 TRACE(" ==> output ");
538 PrintOutputInfo(info);
539 TRACE("\n");
543 } 540 }
544 } 541 }
545 542
546 void Run(SimplifiedLowering* lowering) { 543 void Run(SimplifiedLowering* lowering) {
547 RunTruncationPropagationPhase(); 544 RunTruncationPropagationPhase();
548 545
549 RunTypePropagationPhase(); 546 RunTypePropagationPhase();
550 547
551 // Run lowering and change insertion phase. 548 // Run lowering and change insertion phase.
552 TRACE("--{Simplified lowering phase}--\n"); 549 TRACE("--{Simplified lowering phase}--\n");
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
982 EnqueueInput(node, i, UseInfo::Any()); 979 EnqueueInput(node, i, UseInfo::Any());
983 } 980 }
984 } else if (lower()) { 981 } else if (lower()) {
985 Zone* zone = jsgraph_->zone(); 982 Zone* zone = jsgraph_->zone();
986 ZoneVector<MachineType>* types = 983 ZoneVector<MachineType>* types =
987 new (zone->New(sizeof(ZoneVector<MachineType>))) 984 new (zone->New(sizeof(ZoneVector<MachineType>)))
988 ZoneVector<MachineType>(node->InputCount(), zone); 985 ZoneVector<MachineType>(node->InputCount(), zone);
989 for (int i = 0; i < node->InputCount(); i++) { 986 for (int i = 0; i < node->InputCount(); i++) {
990 Node* input = node->InputAt(i); 987 Node* input = node->InputAt(i);
991 NodeInfo* input_info = GetInfo(input); 988 NodeInfo* input_info = GetInfo(input);
992 Type* input_type = TypeOf(input); 989 MachineType machine_type(input_info->representation(),
993 MachineRepresentation rep = input_type->IsInhabited() 990 DeoptValueSemanticOf(TypeOf(input)));
994 ? input_info->representation()
995 : MachineRepresentation::kNone;
996 MachineType machine_type(rep, DeoptValueSemanticOf(input_type));
997 DCHECK(machine_type.representation() != 991 DCHECK(machine_type.representation() !=
998 MachineRepresentation::kWord32 || 992 MachineRepresentation::kWord32 ||
999 machine_type.semantic() == MachineSemantic::kInt32 || 993 machine_type.semantic() == MachineSemantic::kInt32 ||
1000 machine_type.semantic() == MachineSemantic::kUint32); 994 machine_type.semantic() == MachineSemantic::kUint32);
1001 (*types)[i] = machine_type; 995 (*types)[i] = machine_type;
1002 } 996 }
1003 NodeProperties::ChangeOp(node, 997 NodeProperties::ChangeOp(node,
1004 jsgraph_->common()->TypedStateValues(types)); 998 jsgraph_->common()->TypedStateValues(types));
1005 } 999 }
1006 SetOutput(node, MachineRepresentation::kTagged); 1000 SetOutput(node, MachineRepresentation::kTagged);
(...skipping 2322 matching lines...) Expand 10 before | Expand all | Expand 10 after
3329 isolate(), graph()->zone(), callable.descriptor(), 0, flags, 3323 isolate(), graph()->zone(), callable.descriptor(), 0, flags,
3330 Operator::kNoProperties); 3324 Operator::kNoProperties);
3331 to_number_operator_.set(common()->Call(desc)); 3325 to_number_operator_.set(common()->Call(desc));
3332 } 3326 }
3333 return to_number_operator_.get(); 3327 return to_number_operator_.get();
3334 } 3328 }
3335 3329
3336 } // namespace compiler 3330 } // namespace compiler
3337 } // namespace internal 3331 } // namespace internal
3338 } // namespace v8 3332 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/s390/code-generator-s390.cc ('k') | src/compiler/typer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698