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

Side by Side Diff: test/unittests/compiler/js-typed-lowering-unittest.cc

Issue 1106613003: [turbofan] Unify frame state inputs. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Address comment. Created 5 years, 8 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
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/access-builder.h" 5 #include "src/compiler/access-builder.h"
6 #include "src/compiler/js-graph.h" 6 #include "src/compiler/js-graph.h"
7 #include "src/compiler/js-operator.h" 7 #include "src/compiler/js-operator.h"
8 #include "src/compiler/js-typed-lowering.h" 8 #include "src/compiler/js-typed-lowering.h"
9 #include "src/compiler/machine-operator.h" 9 #include "src/compiler/machine-operator.h"
10 #include "src/compiler/node-properties.h" 10 #include "src/compiler/node-properties.h"
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 // ----------------------------------------------------------------------------- 410 // -----------------------------------------------------------------------------
411 // JSToNumber 411 // JSToNumber
412 412
413 413
414 TEST_F(JSTypedLoweringTest, JSToNumberWithPlainPrimitive) { 414 TEST_F(JSTypedLoweringTest, JSToNumberWithPlainPrimitive) {
415 Node* const input = Parameter(Type::PlainPrimitive(), 0); 415 Node* const input = Parameter(Type::PlainPrimitive(), 0);
416 Node* const context = Parameter(Type::Any(), 1); 416 Node* const context = Parameter(Type::Any(), 1);
417 Node* const effect = graph()->start(); 417 Node* const effect = graph()->start();
418 Node* const control = graph()->start(); 418 Node* const control = graph()->start();
419 Reduction r = 419 Reduction r =
420 FLAG_turbo_deoptimization 420 Reduce(graph()->NewNode(javascript()->ToNumber(), input, context,
421 ? Reduce(graph()->NewNode(javascript()->ToNumber(), input, context, 421 EmptyFrameState(), effect, control));
422 EmptyFrameState(), effect, control))
423 : Reduce(graph()->NewNode(javascript()->ToNumber(), input, context,
424 effect, control));
425 ASSERT_TRUE(r.Changed()); 422 ASSERT_TRUE(r.Changed());
426 EXPECT_THAT(r.replacement(), IsToNumber(input, IsNumberConstant(BitEq(0.0)), 423 EXPECT_THAT(r.replacement(), IsToNumber(input, IsNumberConstant(BitEq(0.0)),
427 graph()->start(), control)); 424 graph()->start(), control));
428 } 425 }
429 426
430 427
431 // ----------------------------------------------------------------------------- 428 // -----------------------------------------------------------------------------
432 // JSStrictEqual 429 // JSStrictEqual
433 430
434 431
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 Handle<JSTypedArray> array = 629 Handle<JSTypedArray> array =
633 factory()->NewJSTypedArray(type, buffer, 0, kLength); 630 factory()->NewJSTypedArray(type, buffer, 0, kLength);
634 int const element_size = static_cast<int>(array->element_size()); 631 int const element_size = static_cast<int>(array->element_size());
635 632
636 Node* key = Parameter( 633 Node* key = Parameter(
637 Type::Range(kMinInt / element_size, kMaxInt / element_size, zone())); 634 Type::Range(kMinInt / element_size, kMaxInt / element_size, zone()));
638 Node* base = HeapConstant(array); 635 Node* base = HeapConstant(array);
639 Node* context = UndefinedConstant(); 636 Node* context = UndefinedConstant();
640 Node* effect = graph()->start(); 637 Node* effect = graph()->start();
641 Node* control = graph()->start(); 638 Node* control = graph()->start();
642 Node* node = graph()->NewNode(javascript()->LoadProperty(feedback), base, 639 Reduction r =
643 key, context); 640 Reduce(graph()->NewNode(javascript()->LoadProperty(feedback), base, key,
644 if (FLAG_turbo_deoptimization) { 641 context, EmptyFrameState(), effect, control));
645 node->AppendInput(zone(), UndefinedConstant());
646 }
647 node->AppendInput(zone(), effect);
648 node->AppendInput(zone(), control);
649 Reduction r = Reduce(node);
650 642
651 Matcher<Node*> offset_matcher = 643 Matcher<Node*> offset_matcher =
652 element_size == 1 644 element_size == 1
653 ? key 645 ? key
654 : IsWord32Shl(key, IsInt32Constant(WhichPowerOf2(element_size))); 646 : IsWord32Shl(key, IsInt32Constant(WhichPowerOf2(element_size)));
655 647
656 ASSERT_TRUE(r.Changed()); 648 ASSERT_TRUE(r.Changed());
657 EXPECT_THAT( 649 EXPECT_THAT(
658 r.replacement(), 650 r.replacement(),
659 IsLoadBuffer(BufferAccess(type), 651 IsLoadBuffer(BufferAccess(type),
(...skipping 18 matching lines...) Expand all
678 ElementAccess access = AccessBuilder::ForTypedArrayElement(type, true); 670 ElementAccess access = AccessBuilder::ForTypedArrayElement(type, true);
679 671
680 int min = random_number_generator()->NextInt(static_cast<int>(kLength)); 672 int min = random_number_generator()->NextInt(static_cast<int>(kLength));
681 int max = random_number_generator()->NextInt(static_cast<int>(kLength)); 673 int max = random_number_generator()->NextInt(static_cast<int>(kLength));
682 if (min > max) std::swap(min, max); 674 if (min > max) std::swap(min, max);
683 Node* key = Parameter(Type::Range(min, max, zone())); 675 Node* key = Parameter(Type::Range(min, max, zone()));
684 Node* base = HeapConstant(array); 676 Node* base = HeapConstant(array);
685 Node* context = UndefinedConstant(); 677 Node* context = UndefinedConstant();
686 Node* effect = graph()->start(); 678 Node* effect = graph()->start();
687 Node* control = graph()->start(); 679 Node* control = graph()->start();
688 Node* node = graph()->NewNode(javascript()->LoadProperty(feedback), base, 680 Reduction r =
689 key, context); 681 Reduce(graph()->NewNode(javascript()->LoadProperty(feedback), base, key,
690 if (FLAG_turbo_deoptimization) { 682 context, EmptyFrameState(), effect, control));
691 node->AppendInput(zone(), UndefinedConstant());
692 }
693 node->AppendInput(zone(), effect);
694 node->AppendInput(zone(), control);
695 Reduction r = Reduce(node);
696 683
697 ASSERT_TRUE(r.Changed()); 684 ASSERT_TRUE(r.Changed());
698 EXPECT_THAT( 685 EXPECT_THAT(
699 r.replacement(), 686 r.replacement(),
700 IsLoadElement(access, 687 IsLoadElement(access,
701 IsIntPtrConstant(bit_cast<intptr_t>(&backing_store[0])), 688 IsIntPtrConstant(bit_cast<intptr_t>(&backing_store[0])),
702 key, effect, control)); 689 key, effect, control));
703 } 690 }
704 } 691 }
705 692
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 855
869 VectorSlotPair feedback(Handle<TypeFeedbackVector>::null(), 856 VectorSlotPair feedback(Handle<TypeFeedbackVector>::null(),
870 FeedbackVectorICSlot::Invalid()); 857 FeedbackVectorICSlot::Invalid());
871 Node* global = Parameter(Type::GlobalObject()); 858 Node* global = Parameter(Type::GlobalObject());
872 Node* context = UndefinedConstant(); 859 Node* context = UndefinedConstant();
873 Node* effect = graph()->start(); 860 Node* effect = graph()->start();
874 Node* control = graph()->start(); 861 Node* control = graph()->start();
875 862
876 for (size_t i = 0; i < arraysize(names); i++) { 863 for (size_t i = 0; i < arraysize(names); i++) {
877 Unique<Name> name = Unique<Name>::CreateImmovable(names[i]); 864 Unique<Name> name = Unique<Name>::CreateImmovable(names[i]);
878 Node* node = graph()->NewNode(javascript()->LoadNamed(name, feedback), 865 Reduction r =
879 global, context); 866 Reduce(graph()->NewNode(javascript()->LoadNamed(name, feedback), global,
880 if (FLAG_turbo_deoptimization) { 867 context, EmptyFrameState(), effect, control));
881 node->AppendInput(zone(), EmptyFrameState());
882 }
883 node->AppendInput(zone(), effect);
884 node->AppendInput(zone(), control);
885 868
886 Reduction r = Reduce(node); 869 ASSERT_TRUE(r.Changed());
887
888 EXPECT_THAT(r.replacement(), matches[i]); 870 EXPECT_THAT(r.replacement(), matches[i]);
889 } 871 }
890 } 872 }
891 873
892 } // namespace compiler 874 } // namespace compiler
893 } // namespace internal 875 } // namespace internal
894 } // namespace v8 876 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/compiler/js-operator-unittest.cc ('k') | test/unittests/compiler/node-test-utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698