| OLD | NEW |
| 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 907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 918 0, | 918 0, |
| 919 3, | 919 3, |
| 920 6, | 920 6, |
| 921 { | 921 { |
| 922 B(Ldar), A(2, 3), // | 922 B(Ldar), A(2, 3), // |
| 923 B(KeyedLoadICStrict), A(1, 3), U8(vector->GetIndex(slot1)), // | 923 B(KeyedLoadICStrict), A(1, 3), U8(vector->GetIndex(slot1)), // |
| 924 B(Return), // | 924 B(Return), // |
| 925 }, | 925 }, |
| 926 0}, | 926 0}, |
| 927 {"function f(a) {\n" | 927 {"function f(a) {\n" |
| 928 " var b;\n" REPEAT_127(SPACE, " b = a.name; ") " return a.name; }\n" | 928 " var b;\n" |
| 929 "f({name : \"test\"})\n", | 929 "b = a.name;" |
| 930 REPEAT_127(SPACE, " b = a.name; ") |
| 931 " return a.name; }\n" |
| 932 "f({name : \"test\"})\n", |
| 930 1 * kPointerSize, | 933 1 * kPointerSize, |
| 931 2, | 934 2, |
| 932 767, | 935 775, |
| 933 { | 936 { |
| 934 REPEAT_127(COMMA, // | 937 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2), // |
| 935 B(LoadICSloppy), A(1, 2), U8(0), | 938 B(Star), R(0), // |
| 936 U8((wide_idx_1 += 2)), // | 939 REPEAT_127(COMMA, // |
| 937 B(Star), R(0)), // | 940 B(LoadICSloppy), A(1, 2), U8(0), // |
| 938 B(LoadICSloppy), | 941 U8((wide_idx_1 += 2)), // |
| 939 A(1, 2), U8(0), U8(wide_idx_1 + 2), // | 942 B(Star), R(0)), // |
| 940 B(Return), // | 943 B(LoadICSloppyWide), A(1, 2), U16(0), U16(wide_idx_1 + 2), // |
| 944 B(Return), // |
| 941 }, | 945 }, |
| 942 1, | 946 1, |
| 943 {"name"}}, | 947 {"name"}}, |
| 944 {"function f(a) {\n" | 948 {"function f(a) {\n" |
| 945 " 'use strict'; var b;\n" REPEAT_127( | 949 " 'use strict'; var b;\n" |
| 946 SPACE, " b = a.name; ") " return a.name; }\n" | 950 " b = a.name;\n" |
| 947 "f({name : \"test\"})\n", | 951 REPEAT_127(SPACE, " b = a.name; ") |
| 952 " return a.name; }\n" |
| 953 "f({name : \"test\"})\n", |
| 948 1 * kPointerSize, | 954 1 * kPointerSize, |
| 949 2, | 955 2, |
| 950 767, | 956 775, |
| 951 { | 957 { |
| 952 REPEAT_127(COMMA, // | 958 B(LoadICStrict), A(1, 2), U8(0), U8((wide_idx_2 += 2)), // |
| 953 B(LoadICStrict), A(1, 2), U8(0), | 959 B(Star), R(0), // |
| 954 U8((wide_idx_2 += 2)), // | 960 REPEAT_127(COMMA, // |
| 955 B(Star), R(0)), // | 961 B(LoadICStrict), A(1, 2), U8(0), // |
| 956 B(LoadICStrict), | 962 U8((wide_idx_2 += 2)), // |
| 957 A(1, 2), U8(0), U8(wide_idx_2 + 2), // | 963 B(Star), R(0)), // |
| 958 B(Return), // | 964 B(LoadICStrictWide), A(1, 2), U16(0), U16(wide_idx_2 + 2), // |
| 965 B(Return), // |
| 959 }, | 966 }, |
| 960 1, | 967 1, |
| 961 {"name"}}, | 968 {"name"}}, |
| 962 {"function f(a, b) {\n" | 969 {"function f(a, b) {\n" |
| 963 " var c;\n" REPEAT_127(SPACE, | 970 " var c;\n" |
| 964 " c = a[b]; ") " return a[b]; }\n" | 971 " c = a[b];" |
| 965 "f({name : \"test\"}, \"name\")\n", | 972 REPEAT_127(SPACE, " c = a[b]; ") |
| 973 " return a[b]; }\n" |
| 974 "f({name : \"test\"}, \"name\")\n", |
| 966 1 * kPointerSize, | 975 1 * kPointerSize, |
| 967 3, | 976 3, |
| 968 895, | 977 903, |
| 969 { | 978 { |
| 979 B(Ldar), A(2, 3), // |
| 980 B(KeyedLoadICSloppy), A(1, 3), U8((wide_idx_3 += 2)), // |
| 981 B(Star), R(0), // |
| 970 REPEAT_127(COMMA, // | 982 REPEAT_127(COMMA, // |
| 971 B(Ldar), A(2, 3), // | 983 B(Ldar), A(2, 3), // |
| 972 B(KeyedLoadICSloppy), A(1, 3), U8((wide_idx_3 += 2)), // | 984 B(KeyedLoadICSloppy), A(1, 3), U8((wide_idx_3 += 2)), // |
| 973 B(Star), R(0)), // | 985 B(Star), R(0)), // |
| 974 B(Ldar), | 986 B(Ldar), A(2, 3), // |
| 975 A(2, 3), // | 987 B(KeyedLoadICSloppyWide), A(1, 3), U16(wide_idx_3 + 2), // |
| 976 B(KeyedLoadICSloppy), A(1, 3), U8(wide_idx_3 + 2), // | 988 B(Return), // |
| 977 B(Return), // | |
| 978 }}, | 989 }}, |
| 979 {"function f(a, b) {\n" | 990 {"function f(a, b) {\n" |
| 980 " 'use strict'; var c;\n" REPEAT_127( | 991 " 'use strict'; var c;\n" |
| 981 SPACE, " c = a[b]; ") " return a[b]; }\n" | 992 " c = a[b];" |
| 982 "f({name : \"test\"}, \"name\")\n", | 993 REPEAT_127(SPACE, " c = a[b]; ") |
| 994 " return a[b]; }\n" |
| 995 "f({name : \"test\"}, \"name\")\n", |
| 983 1 * kPointerSize, | 996 1 * kPointerSize, |
| 984 3, | 997 3, |
| 985 895, | 998 903, |
| 986 { | 999 { |
| 1000 B(Ldar), A(2, 3), // |
| 1001 B(KeyedLoadICStrict), A(1, 3), U8((wide_idx_4 += 2)), // |
| 1002 B(Star), R(0), // |
| 987 REPEAT_127(COMMA, // | 1003 REPEAT_127(COMMA, // |
| 988 B(Ldar), A(2, 3), // | 1004 B(Ldar), A(2, 3), // |
| 989 B(KeyedLoadICStrict), A(1, 3), U8((wide_idx_4 += 2)), // | 1005 B(KeyedLoadICStrict), A(1, 3), U8((wide_idx_4 += 2)), // |
| 990 B(Star), R(0)), // | 1006 B(Star), R(0)), // |
| 991 B(Ldar), | 1007 B(Ldar), A(2, 3), // |
| 992 A(2, 3), // | 1008 B(KeyedLoadICStrictWide), A(1, 3), U16(wide_idx_4 + 2), // |
| 993 B(KeyedLoadICStrict), A(1, 3), U8(wide_idx_4 + 2), // | 1009 B(Return), // |
| 994 B(Return), // | |
| 995 }}, | 1010 }}, |
| 996 }; | 1011 }; |
| 997 for (size_t i = 0; i < arraysize(snippets); i++) { | 1012 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 998 Handle<BytecodeArray> bytecode_array = | 1013 Handle<BytecodeArray> bytecode_array = |
| 999 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); | 1014 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
| 1000 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1015 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 1001 } | 1016 } |
| 1002 } | 1017 } |
| 1003 | 1018 |
| 1004 | 1019 |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1107 8, | 1122 8, |
| 1108 { | 1123 { |
| 1109 B(LdaConstant), U8(0), // | 1124 B(LdaConstant), U8(0), // |
| 1110 B(KeyedStoreICStrict), A(1, 3), A(2, 3), // | 1125 B(KeyedStoreICStrict), A(1, 3), A(2, 3), // |
| 1111 U8(vector->GetIndex(slot1)), // | 1126 U8(vector->GetIndex(slot1)), // |
| 1112 B(LdaUndefined), // | 1127 B(LdaUndefined), // |
| 1113 B(Return), // | 1128 B(Return), // |
| 1114 }, | 1129 }, |
| 1115 1, | 1130 1, |
| 1116 {"val"}}, | 1131 {"val"}}, |
| 1117 {"function f(a) {\n" REPEAT_127(SPACE, | 1132 {"function f(a) {\n" |
| 1118 " a.name = 1; ") " a.name = 2; }\n" | 1133 "a.name = 1;" |
| 1119 "f({name : \"test\"})\n", | 1134 REPEAT_127(SPACE, " a.name = 1; ") |
| 1135 " a.name = 2; }\n" |
| 1136 "f({name : \"test\"})\n", |
| 1120 0, | 1137 0, |
| 1121 2, | 1138 2, |
| 1122 770, | 1139 778, |
| 1123 { | 1140 { |
| 1124 REPEAT_127(COMMA, // | 1141 B(LdaSmi8), U8(1), // |
| 1125 B(LdaSmi8), U8(1), // | 1142 B(StoreICSloppy), A(1, 2), U8(0), U8((wide_idx_1 += 2)), // |
| 1126 B(StoreICSloppy), A(1, 2), U8(0), | 1143 REPEAT_127(COMMA, // |
| 1127 U8((wide_idx_1 += 2))), // | 1144 B(LdaSmi8), U8(1), // |
| 1128 B(LdaSmi8), | 1145 B(StoreICSloppy), A(1, 2), U8(0), // |
| 1129 U8(2), // | 1146 U8((wide_idx_1 += 2))), // |
| 1130 B(StoreICSloppy), A(1, 2), U8(0), U8(wide_idx_1 + 2), // | 1147 B(LdaSmi8), U8(2), // |
| 1131 B(LdaUndefined), // | 1148 B(StoreICSloppyWide), A(1, 2), U16(0), U16(wide_idx_1 + 2), // |
| 1132 B(Return), // | 1149 B(LdaUndefined), // |
| 1150 B(Return), // |
| 1133 }, | 1151 }, |
| 1134 1, | 1152 1, |
| 1135 {"name"}}, | 1153 {"name"}}, |
| 1136 {"function f(a) {\n" | 1154 {"function f(a) {\n" |
| 1137 "'use strict';\n" REPEAT_127(SPACE, | 1155 " 'use strict';\n" |
| 1138 " a.name = 1; ") " a.name = 2; }\n" | 1156 " a.name = 1;" |
| 1139 "f({name : \"test\"})\n", | 1157 REPEAT_127(SPACE, " a.name = 1; ") |
| 1158 " a.name = 2; }\n" |
| 1159 "f({name : \"test\"})\n", |
| 1140 0, | 1160 0, |
| 1141 2, | 1161 2, |
| 1142 770, | 1162 778, |
| 1143 { | 1163 { |
| 1144 REPEAT_127(COMMA, // | 1164 B(LdaSmi8), U8(1), // |
| 1145 B(LdaSmi8), U8(1), // | 1165 B(StoreICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2), // |
| 1146 B(StoreICStrict), A(1, 2), U8(0), | 1166 REPEAT_127(COMMA, // |
| 1147 U8((wide_idx_2 += 2))), // | 1167 B(LdaSmi8), U8(1), // |
| 1148 B(LdaSmi8), | 1168 B(StoreICStrict), A(1, 2), U8(0), // |
| 1149 U8(2), // | 1169 U8((wide_idx_2 += 2))), // |
| 1150 B(StoreICStrict), A(1, 2), U8(0), U8(wide_idx_2 + 2), // | 1170 B(LdaSmi8), U8(2), // |
| 1151 B(LdaUndefined), // | 1171 B(StoreICStrictWide), A(1, 2), U16(0), U16(wide_idx_2 + 2), // |
| 1152 B(Return), // | 1172 B(LdaUndefined), // |
| 1173 B(Return), // |
| 1153 }, | 1174 }, |
| 1154 1, | 1175 1, |
| 1155 {"name"}}, | 1176 {"name"}}, |
| 1156 {"function f(a, b) {\n" REPEAT_127( | 1177 {"function f(a, b) {\n" |
| 1157 SPACE, " a[b] = 1; ") " a[b] = 2; }\n" | 1178 " a[b] = 1;" |
| 1158 "f({name : \"test\"})\n", | 1179 REPEAT_127(SPACE, " a[b] = 1; ") |
| 1180 " a[b] = 2; }\n" |
| 1181 "f({name : \"test\"})\n", |
| 1159 0, | 1182 0, |
| 1160 3, | 1183 3, |
| 1161 770, | 1184 777, |
| 1162 { | 1185 { |
| 1163 REPEAT_127(COMMA, // | 1186 B(LdaSmi8), U8(1), // |
| 1164 B(LdaSmi8), U8(1), // | 1187 B(KeyedStoreICSloppy), A(1, 3), A(2, 3), U8(wide_idx_3 += 2), // |
| 1165 B(KeyedStoreICSloppy), A(1, 3), A(2, 3), // | 1188 REPEAT_127(COMMA, // |
| 1166 U8((wide_idx_3 += 2))), // | 1189 B(LdaSmi8), U8(1), // |
| 1167 B(LdaSmi8), | 1190 B(KeyedStoreICSloppy), A(1, 3), A(2, 3), // |
| 1168 U8(2), // | 1191 U8((wide_idx_3 += 2))), // |
| 1169 B(KeyedStoreICSloppy), A(1, 3), A(2, 3), // | 1192 B(LdaSmi8), U8(2), // |
| 1170 U8(wide_idx_3 + 2), // | 1193 B(KeyedStoreICSloppyWide), A(1, 3), A(2, 3), U16(wide_idx_3 + 2), // |
| 1171 B(LdaUndefined), // | 1194 B(LdaUndefined), // |
| 1172 B(Return), // | 1195 B(Return), // |
| 1173 }}, | 1196 }}, |
| 1174 {"function f(a, b) {\n" | 1197 {"function f(a, b) {\n" |
| 1175 "'use strict';\n" REPEAT_127(SPACE, | 1198 " 'use strict';\n" |
| 1176 " a[b] = 1; ") " a[b] = 2; }\n" | 1199 " a[b] = 1;" |
| 1177 "f({name : \"test\"})\n", | 1200 REPEAT_127(SPACE, " a[b] = 1; ") |
| 1201 " a[b] = 2; }\n" |
| 1202 "f({name : \"test\"})\n", |
| 1178 0, | 1203 0, |
| 1179 3, | 1204 3, |
| 1180 770, | 1205 777, |
| 1181 { | 1206 { |
| 1182 REPEAT_127(COMMA, // | 1207 B(LdaSmi8), U8(1), // |
| 1183 B(LdaSmi8), U8(1), // | 1208 B(KeyedStoreICStrict), A(1, 3), A(2, 3), U8(wide_idx_4 += 2), // |
| 1184 B(KeyedStoreICStrict), A(1, 3), A(2, 3), // | 1209 REPEAT_127(COMMA, // |
| 1185 U8((wide_idx_4 += 2))), // | 1210 B(LdaSmi8), U8(1), // |
| 1186 B(LdaSmi8), | 1211 B(KeyedStoreICStrict), A(1, 3), A(2, 3), // |
| 1187 U8(2), // | 1212 U8((wide_idx_4 += 2))), // |
| 1188 B(KeyedStoreICStrict), A(1, 3), A(2, 3), // | 1213 B(LdaSmi8), U8(2), // |
| 1189 U8(wide_idx_4 + 2), // | 1214 B(KeyedStoreICStrictWide), A(1, 3), A(2, 3), U16(wide_idx_4 + 2), // |
| 1190 B(LdaUndefined), // | 1215 B(LdaUndefined), // |
| 1191 B(Return), // | 1216 B(Return), // |
| 1192 }}}; | 1217 }}}; |
| 1193 for (size_t i = 0; i < arraysize(snippets); i++) { | 1218 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 1194 Handle<BytecodeArray> bytecode_array = | 1219 Handle<BytecodeArray> bytecode_array = |
| 1195 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); | 1220 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
| 1196 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1221 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 1197 } | 1222 } |
| 1198 } | 1223 } |
| 1199 | 1224 |
| 1200 | 1225 |
| 1201 #define FUNC_ARG "new (function Obj() { this.func = function() { return; }})()" | 1226 #define FUNC_ARG "new (function Obj() { this.func = function() { return; }})()" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1262 B(Ldar), A(2, 3), // | 1287 B(Ldar), A(2, 3), // |
| 1263 B(Add), A(2, 3), // | 1288 B(Add), A(2, 3), // |
| 1264 B(Star), R(2), // | 1289 B(Star), R(2), // |
| 1265 B(Ldar), A(2, 3), // | 1290 B(Ldar), A(2, 3), // |
| 1266 B(Star), R(3), // | 1291 B(Star), R(3), // |
| 1267 B(Call), R(0), R(1), U8(2), U8(vector->GetIndex(slot1)), // | 1292 B(Call), R(0), R(1), U8(2), U8(vector->GetIndex(slot1)), // |
| 1268 B(Return), // | 1293 B(Return), // |
| 1269 }, | 1294 }, |
| 1270 1, | 1295 1, |
| 1271 {"func"}}, | 1296 {"func"}}, |
| 1272 {"function f(a) {\n" REPEAT_127( | 1297 {"function f(a) {\n" |
| 1273 SPACE, " a.func;\n") " return a.func(); }\nf(" FUNC_ARG ")", | 1298 " a.func;\n" |
| 1299 REPEAT_127(SPACE, " a.func;\n") |
| 1300 " return a.func(); }\nf(" FUNC_ARG ")", |
| 1274 2 * kPointerSize, | 1301 2 * kPointerSize, |
| 1275 2, | 1302 2, |
| 1276 526, | 1303 532, |
| 1277 { | 1304 { |
| 1305 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx += 2), // |
| 1278 REPEAT_127(COMMA, // | 1306 REPEAT_127(COMMA, // |
| 1279 B(LoadICSloppy), A(1, 2), U8(0), U8((wide_idx += 2))), // | 1307 B(LoadICSloppy), A(1, 2), U8(0), U8((wide_idx += 2))), // |
| 1280 B(Ldar), | 1308 B(Ldar), A(1, 2), // |
| 1281 A(1, 2), // | 1309 B(Star), R(1), // |
| 1282 B(Star), R(1), // | 1310 B(LoadICSloppyWide), R(1), U16(0), U16(wide_idx + 4), // |
| 1283 B(LoadICSloppyWide), R(1), U16(0), U16(wide_idx + 4), // | 1311 B(Star), R(0), // |
| 1284 B(Star), R(0), // | 1312 B(CallWide), R(0), R(1), U16(0), U16(wide_idx + 2), // |
| 1285 B(Call), R(0), R(1), U8(0), U8(wide_idx + 2), // | 1313 B(Return), // |
| 1286 B(Return), // | |
| 1287 }, | 1314 }, |
| 1288 1, | 1315 1, |
| 1289 {"func"}}, | 1316 {"func"}}, |
| 1290 }; | 1317 }; |
| 1291 for (size_t i = 0; i < arraysize(snippets); i++) { | 1318 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 1292 Handle<BytecodeArray> bytecode_array = | 1319 Handle<BytecodeArray> bytecode_array = |
| 1293 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); | 1320 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
| 1294 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1321 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 1295 } | 1322 } |
| 1296 } | 1323 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1345 {"a = 1;\nfunction f() { return a; }\nf()", | 1372 {"a = 1;\nfunction f() { return a; }\nf()", |
| 1346 0, | 1373 0, |
| 1347 1, | 1374 1, |
| 1348 4, | 1375 4, |
| 1349 { | 1376 { |
| 1350 B(LdaGlobalSloppy), U8(0), U8(vector->GetIndex(slot)), // | 1377 B(LdaGlobalSloppy), U8(0), U8(vector->GetIndex(slot)), // |
| 1351 B(Return) // | 1378 B(Return) // |
| 1352 }, | 1379 }, |
| 1353 1, | 1380 1, |
| 1354 {"a"}}, | 1381 {"a"}}, |
| 1355 {"a = 1; function f(b) {\n" REPEAT_127( | 1382 {"a = 1;" |
| 1356 SPACE, "b.name; ") " return a; }\nf({name: 1});", | 1383 "function f(b) {\n" |
| 1384 " b.name;\n" |
| 1385 REPEAT_127(SPACE, "b.name; ") |
| 1386 " return a;" |
| 1387 "}\nf({name: 1});", |
| 1357 0, | 1388 0, |
| 1358 2, | 1389 2, |
| 1359 512, | 1390 518, |
| 1360 { | 1391 { |
| 1392 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2), // |
| 1361 REPEAT_127(COMMA, // | 1393 REPEAT_127(COMMA, // |
| 1362 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // | 1394 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // |
| 1363 B(LdaGlobalSloppy), | 1395 B(LdaGlobalSloppyWide), U16(1), U16(wide_idx_1 + 2), // |
| 1364 U8(1), U8(wide_idx_1 + 2), // | 1396 B(Return), // |
| 1365 B(Return), // | |
| 1366 }, | 1397 }, |
| 1367 2, | 1398 2, |
| 1368 {"name", "a"}}, | 1399 {"name", "a"}}, |
| 1369 {"a = 1; function f(b) {\n" | 1400 {"a = 1;" |
| 1370 " 'use strict';\n" REPEAT_127(SPACE, | 1401 "function f(b) {\n" |
| 1371 "b.name; ") " return a; }\nf({name: 1});", | 1402 " 'use strict';\n" |
| 1403 " b.name\n" |
| 1404 REPEAT_127(SPACE, "b.name; ") |
| 1405 " return a;" |
| 1406 "}\nf({name: 1});", |
| 1372 0, | 1407 0, |
| 1373 2, | 1408 2, |
| 1374 512, | 1409 518, |
| 1375 { | 1410 { |
| 1411 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2), // |
| 1376 REPEAT_127(COMMA, // | 1412 REPEAT_127(COMMA, // |
| 1377 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // | 1413 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // |
| 1378 B(LdaGlobalStrict), | 1414 B(LdaGlobalStrictWide), U16(1), U16(wide_idx_2 + 2), // |
| 1379 U8(1), U8(wide_idx_2 + 2), // | 1415 B(Return), // |
| 1380 B(Return), // | |
| 1381 }, | 1416 }, |
| 1382 2, | 1417 2, |
| 1383 {"name", "a"}}, | 1418 {"name", "a"}}, |
| 1384 }; | 1419 }; |
| 1385 | 1420 |
| 1386 for (size_t i = 0; i < arraysize(snippets); i++) { | 1421 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 1387 Handle<BytecodeArray> bytecode_array = | 1422 Handle<BytecodeArray> bytecode_array = |
| 1388 helper.MakeBytecode(snippets[i].code_snippet, "f"); | 1423 helper.MakeBytecode(snippets[i].code_snippet, "f"); |
| 1389 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1424 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 1390 } | 1425 } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1448 1, | 1483 1, |
| 1449 7, | 1484 7, |
| 1450 { | 1485 { |
| 1451 B(LdaSmi8), U8(2), // | 1486 B(LdaSmi8), U8(2), // |
| 1452 B(StaGlobalSloppy), U8(0), U8(vector->GetIndex(slot)), // | 1487 B(StaGlobalSloppy), U8(0), U8(vector->GetIndex(slot)), // |
| 1453 B(LdaUndefined), // | 1488 B(LdaUndefined), // |
| 1454 B(Return) // | 1489 B(Return) // |
| 1455 }, | 1490 }, |
| 1456 1, | 1491 1, |
| 1457 {"a"}}, | 1492 {"a"}}, |
| 1458 {"a = 1; function f(b) {\n" REPEAT_127( | 1493 {"a = 1;" |
| 1459 SPACE, "b.name; ") " a = 2; }\nf({name: 1});", | 1494 "function f(b) {" |
| 1495 " b.name;\n" |
| 1496 REPEAT_127(SPACE, "b.name; ") |
| 1497 " a = 2; }\n" |
| 1498 "f({name: 1});", |
| 1460 0, | 1499 0, |
| 1461 2, | 1500 2, |
| 1462 515, | 1501 521, |
| 1463 { | 1502 { |
| 1503 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2), // |
| 1464 REPEAT_127(COMMA, // | 1504 REPEAT_127(COMMA, // |
| 1465 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // | 1505 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // |
| 1466 B(LdaSmi8), | 1506 B(LdaSmi8), U8(2), // |
| 1467 U8(2), // | 1507 B(StaGlobalSloppyWide), U16(1), U16(wide_idx_1 + 2), // |
| 1468 B(StaGlobalSloppy), U8(1), U8(wide_idx_1 + 2), // | 1508 B(LdaUndefined), // |
| 1469 B(LdaUndefined), // | 1509 B(Return), // |
| 1470 B(Return), // | |
| 1471 }, | 1510 }, |
| 1472 2, | 1511 2, |
| 1473 {"name", "a"}}, | 1512 {"name", "a"}}, |
| 1474 {"a = 1; function f(b) {\n" | 1513 {"a = 1;" |
| 1475 " 'use strict';\n" REPEAT_127(SPACE, | 1514 "function f(b) {\n" |
| 1476 "b.name; ") " a = 2; }\nf({name: 1});", | 1515 " 'use strict';\n" |
| 1516 " b.name;\n" |
| 1517 REPEAT_127(SPACE, "b.name; ") |
| 1518 " a = 2; }\n" |
| 1519 "f({name: 1});", |
| 1477 0, | 1520 0, |
| 1478 2, | 1521 2, |
| 1479 515, | 1522 521, |
| 1480 { | 1523 { |
| 1524 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2), // |
| 1481 REPEAT_127(COMMA, // | 1525 REPEAT_127(COMMA, // |
| 1482 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // | 1526 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // |
| 1483 B(LdaSmi8), | 1527 B(LdaSmi8), U8(2), // |
| 1484 U8(2), // | 1528 B(StaGlobalStrictWide), U16(1), U16(wide_idx_2 + 2), // |
| 1485 B(StaGlobalStrict), U8(1), U8(wide_idx_2 + 2), // | 1529 B(LdaUndefined), // |
| 1486 B(LdaUndefined), // | 1530 B(Return), // |
| 1487 B(Return), // | |
| 1488 }, | 1531 }, |
| 1489 2, | 1532 2, |
| 1490 {"name", "a"}}, | 1533 {"name", "a"}}, |
| 1491 }; | 1534 }; |
| 1492 | 1535 |
| 1493 for (size_t i = 0; i < arraysize(snippets); i++) { | 1536 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 1494 Handle<BytecodeArray> bytecode_array = | 1537 Handle<BytecodeArray> bytecode_array = |
| 1495 helper.MakeBytecode(snippets[i].code_snippet, "f"); | 1538 helper.MakeBytecode(snippets[i].code_snippet, "f"); |
| 1496 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1539 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 1497 } | 1540 } |
| (...skipping 4292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5790 // inside eval. | 5833 // inside eval. |
| 5791 Handle<BytecodeArray> bytecode_array = | 5834 Handle<BytecodeArray> bytecode_array = |
| 5792 helper.MakeBytecode(script.c_str(), "t", "f"); | 5835 helper.MakeBytecode(script.c_str(), "t", "f"); |
| 5793 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 5836 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 5794 } | 5837 } |
| 5795 } | 5838 } |
| 5796 | 5839 |
| 5797 } // namespace interpreter | 5840 } // namespace interpreter |
| 5798 } // namespace internal | 5841 } // namespace internal |
| 5799 } // namespace v8 | 5842 } // namespace v8 |
| OLD | NEW |