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

Side by Side Diff: test/unittests/compiler/graph-unittest.cc

Issue 634473002: Revert "[turbofan] Fix lowering of typed loads/stores." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 | Annotate | Revision Log
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 "test/unittests/compiler/graph-unittest.h" 5 #include "test/unittests/compiler/graph-unittest.h"
6 6
7 #include <ostream> // NOLINT(readability/streams) 7 #include <ostream> // NOLINT(readability/streams)
8 8
9 #include "src/compiler/node-properties-inl.h" 9 #include "src/compiler/node-properties-inl.h"
10 #include "src/compiler/simplified-operator.h"
11 10
12 using testing::_; 11 using testing::_;
13 using testing::MakeMatcher; 12 using testing::MakeMatcher;
14 using testing::MatcherInterface; 13 using testing::MatcherInterface;
15 using testing::MatchResultListener; 14 using testing::MatchResultListener;
16 using testing::StringMatchResultListener; 15 using testing::StringMatchResultListener;
17 16
18 namespace v8 { 17 namespace v8 {
19 namespace internal { 18 namespace internal {
20 19
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 Node* GraphTest::Int64Constant(int64_t value) { 61 Node* GraphTest::Int64Constant(int64_t value) {
63 return graph()->NewNode(common()->Int64Constant(value)); 62 return graph()->NewNode(common()->Int64Constant(value));
64 } 63 }
65 64
66 65
67 Node* GraphTest::NumberConstant(volatile double value) { 66 Node* GraphTest::NumberConstant(volatile double value) {
68 return graph()->NewNode(common()->NumberConstant(value)); 67 return graph()->NewNode(common()->NumberConstant(value));
69 } 68 }
70 69
71 70
72 Node* GraphTest::HeapConstant(const Handle<HeapObject>& value) {
73 return HeapConstant(Unique<HeapObject>::CreateUninitialized(value));
74 }
75
76
77 Node* GraphTest::HeapConstant(const Unique<HeapObject>& value) { 71 Node* GraphTest::HeapConstant(const Unique<HeapObject>& value) {
78 Node* node = graph()->NewNode(common()->HeapConstant(value)); 72 return graph()->NewNode(common()->HeapConstant(value));
79 Type* type = Type::Constant(value.handle(), zone());
80 NodeProperties::SetBounds(node, Bounds(type));
81 return node;
82 } 73 }
83 74
84 75
85 Node* GraphTest::FalseConstant() { 76 Node* GraphTest::FalseConstant() {
86 return HeapConstant( 77 return HeapConstant(
87 Unique<HeapObject>::CreateImmovable(factory()->false_value())); 78 Unique<HeapObject>::CreateImmovable(factory()->false_value()));
88 } 79 }
89 80
90 81
91 Node* GraphTest::TrueConstant() { 82 Node* GraphTest::TrueConstant() {
92 return HeapConstant( 83 return HeapConstant(
93 Unique<HeapObject>::CreateImmovable(factory()->true_value())); 84 Unique<HeapObject>::CreateImmovable(factory()->true_value()));
94 } 85 }
95 86
96 87
97 Node* GraphTest::UndefinedConstant() {
98 return HeapConstant(
99 Unique<HeapObject>::CreateImmovable(factory()->undefined_value()));
100 }
101
102
103 Matcher<Node*> GraphTest::IsFalseConstant() { 88 Matcher<Node*> GraphTest::IsFalseConstant() {
104 return IsHeapConstant( 89 return IsHeapConstant(
105 Unique<HeapObject>::CreateImmovable(factory()->false_value())); 90 Unique<HeapObject>::CreateImmovable(factory()->false_value()));
106 } 91 }
107 92
108 93
109 Matcher<Node*> GraphTest::IsTrueConstant() { 94 Matcher<Node*> GraphTest::IsTrueConstant() {
110 return IsHeapConstant( 95 return IsHeapConstant(
111 Unique<HeapObject>::CreateImmovable(factory()->true_value())); 96 Unique<HeapObject>::CreateImmovable(factory()->true_value()));
112 } 97 }
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 const Matcher<CallDescriptor*> descriptor_matcher_; 423 const Matcher<CallDescriptor*> descriptor_matcher_;
439 const Matcher<Node*> value0_matcher_; 424 const Matcher<Node*> value0_matcher_;
440 const Matcher<Node*> value1_matcher_; 425 const Matcher<Node*> value1_matcher_;
441 const Matcher<Node*> value2_matcher_; 426 const Matcher<Node*> value2_matcher_;
442 const Matcher<Node*> value3_matcher_; 427 const Matcher<Node*> value3_matcher_;
443 const Matcher<Node*> effect_matcher_; 428 const Matcher<Node*> effect_matcher_;
444 const Matcher<Node*> control_matcher_; 429 const Matcher<Node*> control_matcher_;
445 }; 430 };
446 431
447 432
448 class IsLoadFieldMatcher FINAL : public NodeMatcher {
449 public:
450 IsLoadFieldMatcher(const Matcher<FieldAccess>& access_matcher,
451 const Matcher<Node*>& base_matcher,
452 const Matcher<Node*>& effect_matcher)
453 : NodeMatcher(IrOpcode::kLoadField),
454 access_matcher_(access_matcher),
455 base_matcher_(base_matcher),
456 effect_matcher_(effect_matcher) {}
457
458 virtual void DescribeTo(std::ostream* os) const OVERRIDE {
459 NodeMatcher::DescribeTo(os);
460 *os << " whose access (";
461 access_matcher_.DescribeTo(os);
462 *os << "), base (";
463 base_matcher_.DescribeTo(os);
464 *os << ") and effect (";
465 effect_matcher_.DescribeTo(os);
466 *os << ")";
467 }
468
469 virtual bool MatchAndExplain(Node* node,
470 MatchResultListener* listener) const OVERRIDE {
471 return (NodeMatcher::MatchAndExplain(node, listener) &&
472 PrintMatchAndExplain(OpParameter<FieldAccess>(node), "access",
473 access_matcher_, listener) &&
474 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
475 base_matcher_, listener) &&
476 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
477 effect_matcher_, listener));
478 }
479
480 private:
481 const Matcher<FieldAccess> access_matcher_;
482 const Matcher<Node*> base_matcher_;
483 const Matcher<Node*> effect_matcher_;
484 };
485
486
487 class IsLoadElementMatcher FINAL : public NodeMatcher {
488 public:
489 IsLoadElementMatcher(const Matcher<ElementAccess>& access_matcher,
490 const Matcher<Node*>& base_matcher,
491 const Matcher<Node*>& index_matcher,
492 const Matcher<Node*>& length_matcher,
493 const Matcher<Node*>& effect_matcher,
494 const Matcher<Node*>& control_matcher)
495 : NodeMatcher(IrOpcode::kLoadElement),
496 access_matcher_(access_matcher),
497 base_matcher_(base_matcher),
498 index_matcher_(index_matcher),
499 length_matcher_(length_matcher),
500 effect_matcher_(effect_matcher),
501 control_matcher_(control_matcher) {}
502
503 virtual void DescribeTo(std::ostream* os) const OVERRIDE {
504 NodeMatcher::DescribeTo(os);
505 *os << " whose access (";
506 access_matcher_.DescribeTo(os);
507 *os << "), base (";
508 base_matcher_.DescribeTo(os);
509 *os << "), index (";
510 index_matcher_.DescribeTo(os);
511 *os << "), length (";
512 length_matcher_.DescribeTo(os);
513 *os << "), effect (";
514 effect_matcher_.DescribeTo(os);
515 *os << ") and control (";
516 control_matcher_.DescribeTo(os);
517 *os << ")";
518 }
519
520 virtual bool MatchAndExplain(Node* node,
521 MatchResultListener* listener) const OVERRIDE {
522 return (NodeMatcher::MatchAndExplain(node, listener) &&
523 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access",
524 access_matcher_, listener) &&
525 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
526 base_matcher_, listener) &&
527 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
528 "index", index_matcher_, listener) &&
529 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
530 "length", length_matcher_, listener) &&
531 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
532 effect_matcher_, listener) &&
533 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
534 "control", control_matcher_, listener));
535 }
536
537 private:
538 const Matcher<ElementAccess> access_matcher_;
539 const Matcher<Node*> base_matcher_;
540 const Matcher<Node*> index_matcher_;
541 const Matcher<Node*> length_matcher_;
542 const Matcher<Node*> effect_matcher_;
543 const Matcher<Node*> control_matcher_;
544 };
545
546
547 class IsStoreElementMatcher FINAL : public NodeMatcher {
548 public:
549 IsStoreElementMatcher(const Matcher<ElementAccess>& access_matcher,
550 const Matcher<Node*>& base_matcher,
551 const Matcher<Node*>& index_matcher,
552 const Matcher<Node*>& length_matcher,
553 const Matcher<Node*>& value_matcher,
554 const Matcher<Node*>& effect_matcher,
555 const Matcher<Node*>& control_matcher)
556 : NodeMatcher(IrOpcode::kStoreElement),
557 access_matcher_(access_matcher),
558 base_matcher_(base_matcher),
559 index_matcher_(index_matcher),
560 length_matcher_(length_matcher),
561 value_matcher_(value_matcher),
562 effect_matcher_(effect_matcher),
563 control_matcher_(control_matcher) {}
564
565 virtual void DescribeTo(std::ostream* os) const OVERRIDE {
566 NodeMatcher::DescribeTo(os);
567 *os << " whose access (";
568 access_matcher_.DescribeTo(os);
569 *os << "), base (";
570 base_matcher_.DescribeTo(os);
571 *os << "), index (";
572 index_matcher_.DescribeTo(os);
573 *os << "), length (";
574 length_matcher_.DescribeTo(os);
575 *os << "), value (";
576 value_matcher_.DescribeTo(os);
577 *os << "), effect (";
578 effect_matcher_.DescribeTo(os);
579 *os << ") and control (";
580 control_matcher_.DescribeTo(os);
581 *os << ")";
582 }
583
584 virtual bool MatchAndExplain(Node* node,
585 MatchResultListener* listener) const OVERRIDE {
586 return (NodeMatcher::MatchAndExplain(node, listener) &&
587 PrintMatchAndExplain(OpParameter<ElementAccess>(node), "access",
588 access_matcher_, listener) &&
589 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 0), "base",
590 base_matcher_, listener) &&
591 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 1),
592 "index", index_matcher_, listener) &&
593 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 2),
594 "length", length_matcher_, listener) &&
595 PrintMatchAndExplain(NodeProperties::GetValueInput(node, 3),
596 "value", value_matcher_, listener) &&
597 PrintMatchAndExplain(NodeProperties::GetEffectInput(node), "effect",
598 effect_matcher_, listener) &&
599 PrintMatchAndExplain(NodeProperties::GetControlInput(node),
600 "control", control_matcher_, listener));
601 }
602
603 private:
604 const Matcher<ElementAccess> access_matcher_;
605 const Matcher<Node*> base_matcher_;
606 const Matcher<Node*> index_matcher_;
607 const Matcher<Node*> length_matcher_;
608 const Matcher<Node*> value_matcher_;
609 const Matcher<Node*> effect_matcher_;
610 const Matcher<Node*> control_matcher_;
611 };
612
613
614 class IsLoadMatcher FINAL : public NodeMatcher { 433 class IsLoadMatcher FINAL : public NodeMatcher {
615 public: 434 public:
616 IsLoadMatcher(const Matcher<LoadRepresentation>& rep_matcher, 435 IsLoadMatcher(const Matcher<LoadRepresentation>& rep_matcher,
617 const Matcher<Node*>& base_matcher, 436 const Matcher<Node*>& base_matcher,
618 const Matcher<Node*>& index_matcher, 437 const Matcher<Node*>& index_matcher,
619 const Matcher<Node*>& effect_matcher, 438 const Matcher<Node*>& effect_matcher,
620 const Matcher<Node*>& control_matcher) 439 const Matcher<Node*>& control_matcher)
621 : NodeMatcher(IrOpcode::kLoad), 440 : NodeMatcher(IrOpcode::kLoad),
622 rep_matcher_(rep_matcher), 441 rep_matcher_(rep_matcher),
623 base_matcher_(base_matcher), 442 base_matcher_(base_matcher),
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 const Matcher<Node*>& value2_matcher, 708 const Matcher<Node*>& value2_matcher,
890 const Matcher<Node*>& value3_matcher, 709 const Matcher<Node*>& value3_matcher,
891 const Matcher<Node*>& effect_matcher, 710 const Matcher<Node*>& effect_matcher,
892 const Matcher<Node*>& control_matcher) { 711 const Matcher<Node*>& control_matcher) {
893 return MakeMatcher(new IsCallMatcher( 712 return MakeMatcher(new IsCallMatcher(
894 descriptor_matcher, value0_matcher, value1_matcher, value2_matcher, 713 descriptor_matcher, value0_matcher, value1_matcher, value2_matcher,
895 value3_matcher, effect_matcher, control_matcher)); 714 value3_matcher, effect_matcher, control_matcher));
896 } 715 }
897 716
898 717
899 Matcher<Node*> IsLoadField(const Matcher<FieldAccess>& access_matcher,
900 const Matcher<Node*>& base_matcher,
901 const Matcher<Node*>& effect_matcher) {
902 return MakeMatcher(
903 new IsLoadFieldMatcher(access_matcher, base_matcher, effect_matcher));
904 }
905
906
907 Matcher<Node*> IsLoadElement(const Matcher<ElementAccess>& access_matcher,
908 const Matcher<Node*>& base_matcher,
909 const Matcher<Node*>& index_matcher,
910 const Matcher<Node*>& length_matcher,
911 const Matcher<Node*>& effect_matcher,
912 const Matcher<Node*>& control_matcher) {
913 return MakeMatcher(new IsLoadElementMatcher(access_matcher, base_matcher,
914 index_matcher, length_matcher,
915 effect_matcher, control_matcher));
916 }
917
918
919 Matcher<Node*> IsStoreElement(const Matcher<ElementAccess>& access_matcher,
920 const Matcher<Node*>& base_matcher,
921 const Matcher<Node*>& index_matcher,
922 const Matcher<Node*>& length_matcher,
923 const Matcher<Node*>& value_matcher,
924 const Matcher<Node*>& effect_matcher,
925 const Matcher<Node*>& control_matcher) {
926 return MakeMatcher(new IsStoreElementMatcher(
927 access_matcher, base_matcher, index_matcher, length_matcher,
928 value_matcher, effect_matcher, control_matcher));
929 }
930
931
932 Matcher<Node*> IsLoad(const Matcher<LoadRepresentation>& rep_matcher, 718 Matcher<Node*> IsLoad(const Matcher<LoadRepresentation>& rep_matcher,
933 const Matcher<Node*>& base_matcher, 719 const Matcher<Node*>& base_matcher,
934 const Matcher<Node*>& index_matcher, 720 const Matcher<Node*>& index_matcher,
935 const Matcher<Node*>& effect_matcher, 721 const Matcher<Node*>& effect_matcher,
936 const Matcher<Node*>& control_matcher) { 722 const Matcher<Node*>& control_matcher) {
937 return MakeMatcher(new IsLoadMatcher(rep_matcher, base_matcher, index_matcher, 723 return MakeMatcher(new IsLoadMatcher(rep_matcher, base_matcher, index_matcher,
938 effect_matcher, control_matcher)); 724 effect_matcher, control_matcher));
939 } 725 }
940 726
941 727
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 IS_UNOP_MATCHER(ChangeUint32ToUint64) 773 IS_UNOP_MATCHER(ChangeUint32ToUint64)
988 IS_UNOP_MATCHER(TruncateFloat64ToFloat32) 774 IS_UNOP_MATCHER(TruncateFloat64ToFloat32)
989 IS_UNOP_MATCHER(TruncateFloat64ToInt32) 775 IS_UNOP_MATCHER(TruncateFloat64ToInt32)
990 IS_UNOP_MATCHER(TruncateInt64ToInt32) 776 IS_UNOP_MATCHER(TruncateInt64ToInt32)
991 IS_UNOP_MATCHER(Float64Sqrt) 777 IS_UNOP_MATCHER(Float64Sqrt)
992 #undef IS_UNOP_MATCHER 778 #undef IS_UNOP_MATCHER
993 779
994 } // namespace compiler 780 } // namespace compiler
995 } // namespace internal 781 } // namespace internal
996 } // namespace v8 782 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/compiler/graph-unittest.h ('k') | test/unittests/compiler/js-builtin-reducer-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698