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

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

Issue 1424943008: [turbofan] Desugar lookup slot optimization in graph builder. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comment. Created 5 years, 1 month 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/verifier.cc ('k') | no next file » | 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/code-factory.h" 5 #include "src/code-factory.h"
6 #include "src/compiler/access-builder.h" 6 #include "src/compiler/access-builder.h"
7 #include "src/compiler/js-graph.h" 7 #include "src/compiler/js-graph.h"
8 #include "src/compiler/js-operator.h" 8 #include "src/compiler/js-operator.h"
9 #include "src/compiler/js-typed-lowering.h" 9 #include "src/compiler/js-typed-lowering.h"
10 #include "src/compiler/machine-operator.h" 10 #include "src/compiler/machine-operator.h"
(...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 receiver, vector, context, EmptyFrameState(), 922 receiver, vector, context, EmptyFrameState(),
923 EmptyFrameState(), effect, control)); 923 EmptyFrameState(), effect, control));
924 ASSERT_TRUE(r.Changed()); 924 ASSERT_TRUE(r.Changed());
925 EXPECT_THAT(r.replacement(), IsLoadField(AccessBuilder::ForStringLength(), 925 EXPECT_THAT(r.replacement(), IsLoadField(AccessBuilder::ForStringLength(),
926 receiver, effect, control)); 926 receiver, effect, control));
927 } 927 }
928 } 928 }
929 929
930 930
931 // ----------------------------------------------------------------------------- 931 // -----------------------------------------------------------------------------
932 // JSLoadDynamicGlobal
933
934
935 TEST_F(JSTypedLoweringTest, JSLoadDynamicGlobal) {
936 Node* const context = Parameter(Type::Any());
937 Node* const vector = UndefinedConstant();
938 Node* const frame_state = EmptyFrameState();
939 Node* const effect = graph()->start();
940 Node* const control = graph()->start();
941 Handle<String> name = factory()->object_string();
942 VectorSlotPair feedback;
943 for (int i = 0; i < DynamicGlobalAccess::kMaxCheckDepth; ++i) {
944 uint32_t bitset = 1 << i; // Only single check.
945 Reduction r = Reduce(graph()->NewNode(
946 javascript()->LoadDynamicGlobal(name, bitset, feedback,
947 NOT_INSIDE_TYPEOF),
948 vector, context, context, frame_state, frame_state, effect, control));
949 ASSERT_TRUE(r.Changed());
950 EXPECT_THAT(
951 r.replacement(),
952 IsPhi(kMachAnyTagged, _, _,
953 IsMerge(
954 IsIfTrue(IsBranch(
955 IsReferenceEqual(
956 Type::Tagged(),
957 IsLoadContext(
958 ContextAccess(i, Context::EXTENSION_INDEX, false),
959 context),
960 IsNumberConstant(BitEq(0.0))),
961 control)),
962 _)));
963 }
964 }
965
966
967 // -----------------------------------------------------------------------------
968 // JSLoadDynamicContext
969
970
971 TEST_F(JSTypedLoweringTest, JSLoadDynamicContext) {
972 Node* const context = Parameter(Type::Any());
973 Node* const frame_state = EmptyFrameState();
974 Node* const effect = graph()->start();
975 Node* const control = graph()->start();
976 Handle<String> name = factory()->object_string();
977 for (int i = 0; i < DynamicContextAccess::kMaxCheckDepth; ++i) {
978 uint32_t bitset = 1 << i; // Only single check.
979 Reduction r = Reduce(
980 graph()->NewNode(javascript()->LoadDynamicContext(name, bitset, 23, 42),
981 context, context, frame_state, effect, control));
982 ASSERT_TRUE(r.Changed());
983 EXPECT_THAT(
984 r.replacement(),
985 IsPhi(kMachAnyTagged,
986 IsLoadContext(ContextAccess(23, 42, false), context), _,
987 IsMerge(
988 IsIfTrue(IsBranch(
989 IsReferenceEqual(
990 Type::Tagged(),
991 IsLoadContext(
992 ContextAccess(i, Context::EXTENSION_INDEX, false),
993 context),
994 IsNumberConstant(BitEq(0.0))),
995 control)),
996 _)));
997 }
998 }
999
1000
1001 // -----------------------------------------------------------------------------
1002 // JSAdd 932 // JSAdd
1003 933
1004 934
1005 TEST_F(JSTypedLoweringTest, JSAddWithString) { 935 TEST_F(JSTypedLoweringTest, JSAddWithString) {
1006 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) { 936 TRACED_FOREACH(LanguageMode, language_mode, kLanguageModes) {
1007 Node* lhs = Parameter(Type::String(), 0); 937 Node* lhs = Parameter(Type::String(), 0);
1008 Node* rhs = Parameter(Type::String(), 1); 938 Node* rhs = Parameter(Type::String(), 1);
1009 Node* context = Parameter(Type::Any(), 2); 939 Node* context = Parameter(Type::Any(), 2);
1010 Node* frame_state0 = EmptyFrameState(); 940 Node* frame_state0 = EmptyFrameState();
1011 Node* frame_state1 = EmptyFrameState(); 941 Node* frame_state1 = EmptyFrameState();
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1214 EXPECT_THAT(r.replacement(), 1144 EXPECT_THAT(r.replacement(),
1215 IsFinishRegion(IsAllocate(IsNumberConstant(Context::SizeFor( 1145 IsFinishRegion(IsAllocate(IsNumberConstant(Context::SizeFor(
1216 Context::MIN_CONTEXT_SLOTS)), 1146 Context::MIN_CONTEXT_SLOTS)),
1217 IsBeginRegion(effect), control), 1147 IsBeginRegion(effect), control),
1218 _)); 1148 _));
1219 } 1149 }
1220 1150
1221 } // namespace compiler 1151 } // namespace compiler
1222 } // namespace internal 1152 } // namespace internal
1223 } // namespace v8 1153 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/verifier.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698