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

Side by Side Diff: test/cctest/interpreter/test-bytecode-generator.cc

Issue 1595103006: [Interpreter] Preparation for wide registers. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase. Created 4 years, 11 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/interpreter/interpreter.cc ('k') | test/cctest/interpreter/test-interpreter.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 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.h" 7 #include "src/compiler.h"
8 #include "src/interpreter/bytecode-array-iterator.h" 8 #include "src/interpreter/bytecode-array-iterator.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"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 SNPrintF(program, "%s\n%s();", function, kFunctionName); 87 SNPrintF(program, "%s\n%s();", function, kFunctionName);
88 return MakeBytecode(program.start(), "*", kFunctionName); 88 return MakeBytecode(program.start(), "*", kFunctionName);
89 } 89 }
90 }; 90 };
91 91
92 92
93 // Helper macros for handcrafting bytecode sequences. 93 // Helper macros for handcrafting bytecode sequences.
94 #define B(x) static_cast<uint8_t>(Bytecode::k##x) 94 #define B(x) static_cast<uint8_t>(Bytecode::k##x)
95 #define U8(x) static_cast<uint8_t>((x) & 0xff) 95 #define U8(x) static_cast<uint8_t>((x) & 0xff)
96 #define R(x) static_cast<uint8_t>(-(x) & 0xff) 96 #define R(x) static_cast<uint8_t>(-(x) & 0xff)
97 #define R16(x) U16(-(x))
97 #define A(x, n) R(helper.kLastParamIndex - (n) + 1 + (x)) 98 #define A(x, n) R(helper.kLastParamIndex - (n) + 1 + (x))
98 #define THIS(n) A(0, n) 99 #define THIS(n) A(0, n)
99 #if defined(V8_TARGET_LITTLE_ENDIAN) 100 #if defined(V8_TARGET_LITTLE_ENDIAN)
100 #define U16(x) static_cast<uint8_t>((x) & 0xff), \ 101 #define U16(x) static_cast<uint8_t>((x) & 0xff), \
101 static_cast<uint8_t>(((x) >> kBitsPerByte) & 0xff) 102 static_cast<uint8_t>(((x) >> kBitsPerByte) & 0xff)
102 #define U16I(x) static_cast<uint8_t>((x) & 0xff), \ 103 #define U16I(x) static_cast<uint8_t>((x) & 0xff), \
103 static_cast<uint8_t>(((x++) >> kBitsPerByte) & 0xff) 104 static_cast<uint8_t>(((x++) >> kBitsPerByte) & 0xff)
104 #elif defined(V8_TARGET_BIG_ENDIAN) 105 #elif defined(V8_TARGET_BIG_ENDIAN)
105 #define U16(x) static_cast<uint8_t>(((x) >> kBitsPerByte) & 0xff), \ 106 #define U16(x) static_cast<uint8_t>(((x) >> kBitsPerByte) & 0xff), \
106 static_cast<uint8_t>((x) & 0xff) 107 static_cast<uint8_t>((x) & 0xff)
(...skipping 1326 matching lines...) Expand 10 before | Expand all | Expand 10 after
1433 B(Return), // 1434 B(Return), //
1434 }, 1435 },
1435 1, 1436 1,
1436 {"func"}}, 1437 {"func"}},
1437 {"function f(a) {\n" 1438 {"function f(a) {\n"
1438 " a.func;\n" 1439 " a.func;\n"
1439 REPEAT_127(SPACE, " a.func;\n") 1440 REPEAT_127(SPACE, " a.func;\n")
1440 " return a.func(); }\nf(" FUNC_ARG ")", 1441 " return a.func(); }\nf(" FUNC_ARG ")",
1441 2 * kPointerSize, 1442 2 * kPointerSize,
1442 2, 1443 2,
1443 1044, 1444 1046,
1444 { 1445 {
1445 B(Ldar), A(1, 2), // 1446 B(Ldar), A(1, 2), //
1446 B(Star), R(0), // 1447 B(Star), R(0), //
1447 B(LoadICSloppy), R(0), U8(0), U8(wide_idx += 2), // 1448 B(LoadICSloppy), R(0), U8(0), U8(wide_idx += 2), //
1448 REPEAT_127(COMMA, // 1449 REPEAT_127(COMMA, //
1449 B(Ldar), A(1, 2), // 1450 B(Ldar), A(1, 2), //
1450 B(Star), R(0), // 1451 B(Star), R(0), //
1451 B(LoadICSloppy), R(0), U8(0), U8((wide_idx += 2))), // 1452 B(LoadICSloppy), R(0), U8(0), U8((wide_idx += 2))), //
1452 B(Ldar), A(1, 2), // 1453 B(Ldar), A(1, 2), //
1453 B(Star), R(1), // 1454 B(Star), R(1), //
1454 B(LoadICSloppyWide), R(1), U16(0), U16(wide_idx + 4), // 1455 B(LoadICSloppyWide), R(1), U16(0), U16(wide_idx + 4), //
1455 B(Star), R(0), // 1456 B(Star), R(0), //
1456 B(CallWide), R(0), R(1), U16(0), U16(wide_idx + 2), // 1457 B(CallWide), R16(0), R16(1), U16(0), U16(wide_idx + 2), //
1457 B(Return), // 1458 B(Return), //
1458 }, 1459 },
1459 1, 1460 1,
1460 {"func"}}, 1461 {"func"}},
1461 }; 1462 };
1462 for (size_t i = 0; i < arraysize(snippets); i++) { 1463 for (size_t i = 0; i < arraysize(snippets); i++) {
1463 Handle<BytecodeArray> bytecode_array = 1464 Handle<BytecodeArray> bytecode_array =
1464 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); 1465 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName);
1465 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 1466 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
1466 } 1467 }
(...skipping 5260 matching lines...) Expand 10 before | Expand all | Expand 10 after
6727 std::string(function_epilogue); 6728 std::string(function_epilogue);
6728 Handle<BytecodeArray> bytecode_array = 6729 Handle<BytecodeArray> bytecode_array =
6729 helper.MakeBytecode(script.c_str(), "*", "f"); 6730 helper.MakeBytecode(script.c_str(), "*", "f");
6730 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 6731 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
6731 } 6732 }
6732 } 6733 }
6733 6734
6734 } // namespace interpreter 6735 } // namespace interpreter
6735 } // namespace internal 6736 } // namespace internal
6736 } // namespace v8 6737 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/interpreter.cc ('k') | test/cctest/interpreter/test-interpreter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698