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

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

Issue 1403353002: [Interpreter] Move globals to use idx16 operand for slot id. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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
« no previous file with comments | « src/interpreter/interpreter.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 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 1025 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 1036
1037 TEST(LoadGlobal) { 1037 TEST(LoadGlobal) {
1038 InitializedHandleScope handle_scope; 1038 InitializedHandleScope handle_scope;
1039 BytecodeGeneratorHelper helper; 1039 BytecodeGeneratorHelper helper;
1040 1040
1041 ExpectedSnippet<int> snippets[] = { 1041 ExpectedSnippet<int> snippets[] = {
1042 { 1042 {
1043 "var a = 1;\nfunction f() { return a; }\nf()", 1043 "var a = 1;\nfunction f() { return a; }\nf()",
1044 0, 1044 0,
1045 1, 1045 1,
1046 3, 1046 4,
1047 { 1047 {
1048 B(LdaGlobal), _, // 1048 B(LdaGlobal), _, _, //
1049 B(Return) // 1049 B(Return) //
1050 }, 1050 },
1051 }, 1051 },
1052 { 1052 {
1053 "function t() { }\nfunction f() { return t; }\nf()", 1053 "function t() { }\nfunction f() { return t; }\nf()",
1054 0, 1054 0,
1055 1, 1055 1,
1056 3, 1056 4,
1057 { 1057 {
1058 B(LdaGlobal), _, // 1058 B(LdaGlobal), _, _, //
1059 B(Return) // 1059 B(Return) //
1060 }, 1060 },
1061 }, 1061 },
1062 }; 1062 };
1063 1063
1064 for (size_t i = 0; i < arraysize(snippets); i++) { 1064 for (size_t i = 0; i < arraysize(snippets); i++) {
1065 Handle<BytecodeArray> bytecode_array = 1065 Handle<BytecodeArray> bytecode_array =
1066 helper.MakeBytecode(snippets[i].code_snippet, "f"); 1066 helper.MakeBytecode(snippets[i].code_snippet, "f");
1067 CheckBytecodeArrayEqual(snippets[i], bytecode_array, true); 1067 CheckBytecodeArrayEqual(snippets[i], bytecode_array, true);
1068 } 1068 }
1069 } 1069 }
1070 1070
1071 1071
1072 TEST(StoreGlobal) { 1072 TEST(StoreGlobal) {
1073 InitializedHandleScope handle_scope; 1073 InitializedHandleScope handle_scope;
1074 BytecodeGeneratorHelper helper; 1074 BytecodeGeneratorHelper helper;
1075 1075
1076 ExpectedSnippet<InstanceType> snippets[] = { 1076 ExpectedSnippet<InstanceType> snippets[] = {
1077 { 1077 {
1078 "var a = 1;\nfunction f() { a = 2; }\nf()", 1078 "var a = 1;\nfunction f() { a = 2; }\nf()",
1079 0, 1079 0,
1080 1, 1080 1,
1081 6, 1081 7,
1082 { 1082 {
1083 B(LdaSmi8), U8(2), // 1083 B(LdaSmi8), U8(2), //
1084 B(StaGlobalSloppy), _, // 1084 B(StaGlobalSloppy), _, _, //
1085 B(LdaUndefined), // 1085 B(LdaUndefined), //
1086 B(Return) // 1086 B(Return) //
1087 }, 1087 },
1088 }, 1088 },
1089 { 1089 {
1090 "var a = \"test\"; function f(b) { a = b; }\nf(\"global\")", 1090 "var a = \"test\"; function f(b) { a = b; }\nf(\"global\")",
1091 0, 1091 0,
1092 2, 1092 2,
1093 6, 1093 7,
1094 { 1094 {
1095 B(Ldar), R(helper.kLastParamIndex), // 1095 B(Ldar), R(helper.kLastParamIndex), //
1096 B(StaGlobalSloppy), _, // 1096 B(StaGlobalSloppy), _, _, //
1097 B(LdaUndefined), // 1097 B(LdaUndefined), //
1098 B(Return) // 1098 B(Return) //
1099 }, 1099 },
1100 }, 1100 },
1101 { 1101 {
1102 "'use strict'; var a = 1;\nfunction f() { a = 2; }\nf()", 1102 "'use strict'; var a = 1;\nfunction f() { a = 2; }\nf()",
1103 0, 1103 0,
1104 1, 1104 1,
1105 6, 1105 7,
1106 { 1106 {
1107 B(LdaSmi8), U8(2), // 1107 B(LdaSmi8), U8(2), //
1108 B(StaGlobalStrict), _, // 1108 B(StaGlobalStrict), _, _, //
1109 B(LdaUndefined), // 1109 B(LdaUndefined), //
1110 B(Return) // 1110 B(Return) //
1111 }, 1111 },
1112 }, 1112 },
1113 }; 1113 };
1114 1114
1115 for (size_t i = 0; i < arraysize(snippets); i++) { 1115 for (size_t i = 0; i < arraysize(snippets); i++) {
1116 Handle<BytecodeArray> bytecode_array = 1116 Handle<BytecodeArray> bytecode_array =
1117 helper.MakeBytecode(snippets[i].code_snippet, "f"); 1117 helper.MakeBytecode(snippets[i].code_snippet, "f");
1118 CheckBytecodeArrayEqual(snippets[i], bytecode_array, true); 1118 CheckBytecodeArrayEqual(snippets[i], bytecode_array, true);
1119 } 1119 }
1120 } 1120 }
1121 1121
1122 1122
1123 TEST(CallGlobal) { 1123 TEST(CallGlobal) {
1124 InitializedHandleScope handle_scope; 1124 InitializedHandleScope handle_scope;
1125 BytecodeGeneratorHelper helper; 1125 BytecodeGeneratorHelper helper;
1126 1126
1127 ExpectedSnippet<int> snippets[] = { 1127 ExpectedSnippet<int> snippets[] = {
1128 { 1128 {
1129 "function t() { }\nfunction f() { return t(); }\nf()", 1129 "function t() { }\nfunction f() { return t(); }\nf()",
1130 2 * kPointerSize, 1130 2 * kPointerSize,
1131 1, 1131 1,
1132 12, 1132 13,
1133 { 1133 {
1134 B(LdaUndefined), // 1134 B(LdaUndefined), //
1135 B(Star), R(1), // 1135 B(Star), R(1), //
1136 B(LdaGlobal), _, // 1136 B(LdaGlobal), _, _, //
1137 B(Star), R(0), // 1137 B(Star), R(0), //
1138 B(Call), R(0), R(1), U8(0), // 1138 B(Call), R(0), R(1), U8(0), //
1139 B(Return) // 1139 B(Return) //
1140 }, 1140 },
1141 }, 1141 },
1142 { 1142 {
1143 "function t(a, b, c) { }\nfunction f() { return t(1, 2, 3); }\nf()", 1143 "function t(a, b, c) { }\nfunction f() { return t(1, 2, 3); }\nf()",
1144 5 * kPointerSize, 1144 5 * kPointerSize,
1145 1, 1145 1,
1146 24, 1146 25,
1147 { 1147 {
1148 B(LdaUndefined), // 1148 B(LdaUndefined), //
1149 B(Star), R(1), // 1149 B(Star), R(1), //
1150 B(LdaGlobal), _, // 1150 B(LdaGlobal), _, _, //
1151 B(Star), R(0), // 1151 B(Star), R(0), //
1152 B(LdaSmi8), U8(1), // 1152 B(LdaSmi8), U8(1), //
1153 B(Star), R(2), // 1153 B(Star), R(2), //
1154 B(LdaSmi8), U8(2), // 1154 B(LdaSmi8), U8(2), //
1155 B(Star), R(3), // 1155 B(Star), R(3), //
1156 B(LdaSmi8), U8(3), // 1156 B(LdaSmi8), U8(3), //
1157 B(Star), R(4), // 1157 B(Star), R(4), //
1158 B(Call), R(0), R(1), U8(3), // 1158 B(Call), R(0), R(1), U8(3), //
1159 B(Return) // 1159 B(Return) //
1160 }, 1160 },
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
1549 B(LdaZero), // 1549 B(LdaZero), //
1550 B(Star), R(2), // 1550 B(Star), R(2), //
1551 B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2), // 1551 B(CallRuntime), U16(Runtime::kDeclareGlobals), R(1), U8(2), //
1552 B(LdaUndefined), // 1552 B(LdaUndefined), //
1553 B(Return) // 1553 B(Return) //
1554 }, 1554 },
1555 -1}, 1555 -1},
1556 {"var a = 1;\na=2;", 1556 {"var a = 1;\na=2;",
1557 5 * kPointerSize, 1557 5 * kPointerSize,
1558 1, 1558 1,
1559 52, 1559 53,
1560 { 1560 {
1561 B(Ldar), R(Register::function_closure().index()), // 1561 B(Ldar), R(Register::function_closure().index()), //
1562 B(Star), R(2), // 1562 B(Star), R(2), //
1563 B(LdaConstant), U8(0), // 1563 B(LdaConstant), U8(0), //
1564 B(Star), R(3), // 1564 B(Star), R(3), //
1565 B(CallRuntime), U16(Runtime::kNewScriptContext), R(2), U8(2), // 1565 B(CallRuntime), U16(Runtime::kNewScriptContext), R(2), U8(2), //
1566 B(PushContext), R(1), // 1566 B(PushContext), R(1), //
1567 B(LdaConstant), U8(1), // 1567 B(LdaConstant), U8(1), //
1568 B(Star), R(2), // 1568 B(Star), R(2), //
1569 B(LdaZero), // 1569 B(LdaZero), //
1570 B(Star), R(3), // 1570 B(Star), R(3), //
1571 B(CallRuntime), U16(Runtime::kDeclareGlobals), R(2), U8(2), // 1571 B(CallRuntime), U16(Runtime::kDeclareGlobals), R(2), U8(2), //
1572 B(LdaConstant), U8(2), // 1572 B(LdaConstant), U8(2), //
1573 B(Star), R(2), // 1573 B(Star), R(2), //
1574 B(LdaZero), // 1574 B(LdaZero), //
1575 B(Star), R(3), // 1575 B(Star), R(3), //
1576 B(LdaSmi8), U8(1), // 1576 B(LdaSmi8), U8(1), //
1577 B(Star), R(4), // 1577 B(Star), R(4), //
1578 B(CallRuntime), U16(Runtime::kInitializeVarGlobal), R(2), // 1578 B(CallRuntime), U16(Runtime::kInitializeVarGlobal), R(2), //
1579 U8(3), // 1579 U8(3), //
1580 B(LdaSmi8), U8(2), // 1580 B(LdaSmi8), U8(2), //
1581 B(StaGlobalSloppy), _, // 1581 B(StaGlobalSloppy), _, _, //
1582 B(Star), R(0), // 1582 B(Star), R(0), //
1583 B(Ldar), R(0), // 1583 B(Ldar), R(0), //
1584 B(Return) // 1584 B(Return) //
1585 }, 1585 },
1586 -1}, 1586 -1},
1587 {"function f() {}\nf();", 1587 {"function f() {}\nf();",
1588 4 * kPointerSize, 1588 4 * kPointerSize,
1589 1, 1589 1,
1590 43, 1590 44,
1591 { 1591 {
1592 B(Ldar), R(Register::function_closure().index()), // 1592 B(Ldar), R(Register::function_closure().index()), //
1593 B(Star), R(2), // 1593 B(Star), R(2), //
1594 B(LdaConstant), U8(0), // 1594 B(LdaConstant), U8(0), //
1595 B(Star), R(3), // 1595 B(Star), R(3), //
1596 B(CallRuntime), U16(Runtime::kNewScriptContext), R(2), U8(2), // 1596 B(CallRuntime), U16(Runtime::kNewScriptContext), R(2), U8(2), //
1597 B(PushContext), R(1), // 1597 B(PushContext), R(1), //
1598 B(LdaConstant), U8(1), // 1598 B(LdaConstant), U8(1), //
1599 B(Star), R(2), // 1599 B(Star), R(2), //
1600 B(LdaZero), // 1600 B(LdaZero), //
1601 B(Star), R(3), // 1601 B(Star), R(3), //
1602 B(CallRuntime), U16(Runtime::kDeclareGlobals), R(2), U8(2), // 1602 B(CallRuntime), U16(Runtime::kDeclareGlobals), R(2), U8(2), //
1603 B(LdaUndefined), // 1603 B(LdaUndefined), //
1604 B(Star), R(3), // 1604 B(Star), R(3), //
1605 B(LdaGlobal), _, // 1605 B(LdaGlobal), _, _, //
1606 B(Star), R(2), // 1606 B(Star), R(2), //
1607 B(Call), R(2), R(3), U8(0), // 1607 B(Call), R(2), R(3), U8(0), //
1608 B(Star), R(0), // 1608 B(Star), R(0), //
1609 B(Ldar), R(0), // 1609 B(Ldar), R(0), //
1610 B(Return) // 1610 B(Return) //
1611 }, 1611 },
1612 -1}, 1612 -1},
1613 }; 1613 };
1614 1614
1615 for (size_t i = 0; i < arraysize(snippets); i++) { 1615 for (size_t i = 0; i < arraysize(snippets); i++) {
(...skipping 1062 matching lines...) Expand 10 before | Expand all | Expand 10 after
2678 for (size_t i = 0; i < arraysize(snippets); i++) { 2678 for (size_t i = 0; i < arraysize(snippets); i++) {
2679 Handle<BytecodeArray> bytecode_array = 2679 Handle<BytecodeArray> bytecode_array =
2680 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); 2680 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
2681 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 2681 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
2682 } 2682 }
2683 } 2683 }
2684 2684
2685 } // namespace interpreter 2685 } // namespace interpreter
2686 } // namespace internal 2686 } // namespace internal
2687 } // namespace v8 2687 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/interpreter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698