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

Side by Side Diff: test/cctest/interpreter/test-source-positions.cc

Issue 2038323002: [interpreter] Filter expression positions at source. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@oth-0060-source-position-testing
Patch Set: Fix expression positions on StackCheck that this CL broke. Created 4 years, 6 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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/compiler/pipeline.h" 7 #include "src/compiler/pipeline.h"
8 #include "src/handles.h" 8 #include "src/handles.h"
9 #include "src/interpreter/bytecode-generator.h" 9 #include "src/interpreter/bytecode-generator.h"
10 #include "src/interpreter/interpreter.h" 10 #include "src/interpreter/interpreter.h"
11 #include "src/isolate.h" 11 #include "src/isolate.h"
12 #include "src/parsing/parser.h" 12 #include "src/parsing/parser.h"
13 #include "test/cctest/cctest.h" 13 #include "test/cctest/cctest.h"
14 #include "test/cctest/interpreter/source-position-matcher.h" 14 #include "test/cctest/interpreter/source-position-matcher.h"
15 15
16 namespace v8 { 16 namespace v8 {
17 namespace internal { 17 namespace internal {
18 namespace interpreter { 18 namespace interpreter {
19 19
20 // Flags enabling optimizations that change generated bytecode array. 20 // Flags enabling optimizations that change generated bytecode array.
21 // Format is <command-line flag> <flag name> <bit index> 21 // Format is <command-line flag> <flag name> <bit index>
22 #define OPTIMIZATION_FLAGS(V) \ 22 #define OPTIMIZATION_FLAGS(V) \
23 V(FLAG_ignition_reo, kUseReo, 0) \ 23 V(FLAG_ignition_reo, kUseReo, 0) \
24 V(FLAG_ignition_peephole, kUsePeephole, 1) 24 V(FLAG_ignition_peephole, kUsePeephole, 1) \
25 V(FLAG_ignition_filter_positions, kUsePositionFiltering, 2)
25 26
26 #define DECLARE_BIT(_, Name, BitIndex) static const int Name = 1 << BitIndex; 27 #define DECLARE_BIT(_, Name, BitIndex) static const int Name = 1 << BitIndex;
27 OPTIMIZATION_FLAGS(DECLARE_BIT) 28 OPTIMIZATION_FLAGS(DECLARE_BIT)
28 #undef DECLARE_BIT 29 #undef DECLARE_BIT
29 30
30 // Test cases source positions are checked for. Please ensure all 31 // Test cases source positions are checked for. Please ensure all
31 // combinations of flags are present here. This is done manually 32 // combinations of flags are present here. This is done manually
32 // because it provides easier to comprehend failure case for humans. 33 // because it provides easier to comprehend failure case for humans.
33 #define TEST_CASES(V) \ 34 #define TEST_CASES(V) \
34 V(UsingReo, kUseReo) \ 35 V(UsingReo, kUseReo) \
35 V(UsingReoAndPeephole, kUseReo | kUsePeephole) \ 36 V(UsingPeephole, kUsePeephole) \
36 V(UsingPeephole, kUsePeephole) 37 V(UsingReoAndPeephole, kUseReo | kUsePeephole) \
38 V(UsingPositionFiltering, kUsePositionFiltering) \
39 V(UsingReoAndPositionFiltering, kUseReo | kUsePositionFiltering) \
40 V(UsingPeepholeAndPositionFiltering, kUsePeephole | kUsePositionFiltering) \
41 V(UsingAllOptimizations, kUseReo | kUsePeephole | kUsePositionFiltering)
37 42
38 static const char* kTestScripts[] = { 43 static const char* kTestScripts[] = {
39 "var x = (y = 3) + (x = y); return x + y;", 44 "var x = (y = 3) + (x = y); return x + y;",
40 45
41 "var x = 55;\n" 46 "var x = 55;\n"
42 "var y = x + (x = 1) + (x = 2) + (x = 3);\n" 47 "var y = x + (x = 1) + (x = 2) + (x = 3);\n"
43 "return y;", 48 "return y;",
44 49
45 "var x = 10; return x >>> 3;", 50 "var x = 10; return x >>> 3;",
46 51
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 221
217 void TestSourcePositionsEquivalent(int optimization_bitmap) { 222 void TestSourcePositionsEquivalent(int optimization_bitmap) {
218 HandleAndZoneScope handles; 223 HandleAndZoneScope handles;
219 // Ensure handler table is generated. 224 // Ensure handler table is generated.
220 handles.main_isolate()->interpreter()->Initialize(); 225 handles.main_isolate()->interpreter()->Initialize();
221 226
222 OptimizedBytecodeSourcePositionTester tester(handles.main_isolate()); 227 OptimizedBytecodeSourcePositionTester tester(handles.main_isolate());
223 for (auto test_script : kTestScripts) { 228 for (auto test_script : kTestScripts) {
224 CHECK(tester.SourcePositionsMatch(optimization_bitmap, test_script)); 229 CHECK(tester.SourcePositionsMatch(optimization_bitmap, test_script));
225 } 230 }
231
232 CHECK(tester.SourcePositionsMatch(
233 optimization_bitmap, "return some_global[name];", "name", "'a'"));
rmcilroy 2016/06/08 13:45:11 Can this just be added to kTestScripts ?
oth 2016/06/08 15:04:21 Done.
226 } 234 }
227 235
228 #define MAKE_TEST(Name, Bitmap) \ 236 #define MAKE_TEST(Name, Bitmap) \
229 TEST(TestSourcePositionsEquivalent##Name) { \ 237 TEST(TestSourcePositionsEquivalent##Name) { \
230 TestSourcePositionsEquivalent(Bitmap); \ 238 TestSourcePositionsEquivalent(Bitmap); \
231 } 239 }
232 TEST_CASES(MAKE_TEST) 240 TEST_CASES(MAKE_TEST)
233 #undef MAKE_TEST 241 #undef MAKE_TEST
234 242
235 } // namespace interpreter 243 } // namespace interpreter
236 } // namespace internal 244 } // namespace internal
237 } // namespace v8 245 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698