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 // TODO(rmcilroy): Remove this define after this flag is turned on globally | 5 // TODO(rmcilroy): Remove this define after this flag is turned on globally |
6 #define V8_IMMINENT_DEPRECATION_WARNINGS | 6 #define V8_IMMINENT_DEPRECATION_WARNINGS |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/compiler.h" | 10 #include "src/compiler.h" |
(...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 {"var a;" | 764 {"var a;" |
765 REPEAT_256(SPACE, " a = 1.414;") | 765 REPEAT_256(SPACE, " a = 1.414;") |
766 " a = 3.14;", | 766 " a = 3.14;", |
767 1 * kPointerSize, | 767 1 * kPointerSize, |
768 1, | 768 1, |
769 1031, | 769 1031, |
770 { | 770 { |
771 REPEAT_256(COMMA, // | 771 REPEAT_256(COMMA, // |
772 B(LdaConstant), U8(wide_idx++), // | 772 B(LdaConstant), U8(wide_idx++), // |
773 B(Star), R(0)), // | 773 B(Star), R(0)), // |
774 B(LdaConstantWide), U16(wide_idx++), // | 774 B(LdaConstantWide), U16(wide_idx), // |
775 B(Star), R(0), // | 775 B(Star), R(0), // |
776 B(LdaUndefined), // | 776 B(LdaUndefined), // |
777 B(Return), // | 777 B(Return), // |
778 }, | 778 }, |
779 257, | 779 257, |
780 {REPEAT_256(COMMA, 1.414), | 780 {REPEAT_256(COMMA, 1.414), |
781 3.14}} | 781 3.14}} |
782 }; | 782 }; |
783 for (size_t i = 0; i < arraysize(snippets); i++) { | 783 for (size_t i = 0; i < arraysize(snippets); i++) { |
784 Handle<BytecodeArray> bytecode_array = | 784 Handle<BytecodeArray> bytecode_array = |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
937 REPEAT_127(SPACE, " b = a.name; ") | 937 REPEAT_127(SPACE, " b = a.name; ") |
938 " return a.name; }\n" | 938 " return a.name; }\n" |
939 "f({name : \"test\"})\n", | 939 "f({name : \"test\"})\n", |
940 1 * kPointerSize, | 940 1 * kPointerSize, |
941 2, | 941 2, |
942 769, | 942 769, |
943 { | 943 { |
944 REPEAT_127(COMMA, // | 944 REPEAT_127(COMMA, // |
945 B(LoadICSloppy), A(1, 2), U8(0), U8((wide_idx_1 += 2)), // | 945 B(LoadICSloppy), A(1, 2), U8(0), U8((wide_idx_1 += 2)), // |
946 B(Star), R(0)), // | 946 B(Star), R(0)), // |
947 B(LoadICSloppyWide), A(1, 2), U16(0), U16(wide_idx_1 += 2), // | 947 B(LoadICSloppyWide), A(1, 2), U16(0), U16(wide_idx_1 + 2), // |
948 B(Return), // | 948 B(Return), // |
949 }, | 949 }, |
950 1, | 950 1, |
951 {"name"}}, | 951 {"name"}}, |
952 { | 952 { |
953 "function f(a) {\n" | 953 "function f(a) {\n" |
954 " 'use strict'; var b;\n" | 954 " 'use strict'; var b;\n" |
955 REPEAT_127(SPACE, " b = a.name; ") | 955 REPEAT_127(SPACE, " b = a.name; ") |
956 " return a.name; }\n" | 956 " return a.name; }\n" |
957 "f({name : \"test\"})\n", | 957 "f({name : \"test\"})\n", |
958 1 * kPointerSize, | 958 1 * kPointerSize, |
959 2, | 959 2, |
960 769, | 960 769, |
961 { | 961 { |
962 REPEAT_127(COMMA, // | 962 REPEAT_127(COMMA, // |
963 B(LoadICStrict), A(1, 2), U8(0), U8((wide_idx_2 += 2)), // | 963 B(LoadICStrict), A(1, 2), U8(0), U8((wide_idx_2 += 2)), // |
964 B(Star), R(0)), // | 964 B(Star), R(0)), // |
965 B(LoadICStrictWide), A(1, 2), U16(0), U16(wide_idx_2 += 2), // | 965 B(LoadICStrictWide), A(1, 2), U16(0), U16(wide_idx_2 + 2), // |
966 B(Return), // | 966 B(Return), // |
967 }, | 967 }, |
968 1, | 968 1, |
969 {"name"}}, | 969 {"name"}}, |
970 { | 970 { |
971 "function f(a, b) {\n" | 971 "function f(a, b) {\n" |
972 " var c;\n" | 972 " var c;\n" |
973 REPEAT_127(SPACE, " c = a[b]; ") | 973 REPEAT_127(SPACE, " c = a[b]; ") |
974 " return a[b]; }\n" | 974 " return a[b]; }\n" |
975 "f({name : \"test\"}, \"name\")\n", | 975 "f({name : \"test\"}, \"name\")\n", |
976 1 * kPointerSize, | 976 1 * kPointerSize, |
977 3, | 977 3, |
978 896, | 978 896, |
979 { | 979 { |
980 REPEAT_127(COMMA, // | 980 REPEAT_127(COMMA, // |
981 B(Ldar), A(2, 3), // | 981 B(Ldar), A(2, 3), // |
982 B(KeyedLoadICSloppy), A(1, 3), U8((wide_idx_3 += 2)), // | 982 B(KeyedLoadICSloppy), A(1, 3), U8((wide_idx_3 += 2)), // |
983 B(Star), R(0)), // | 983 B(Star), R(0)), // |
984 B(Ldar), A(2, 3), // | 984 B(Ldar), A(2, 3), // |
985 B(KeyedLoadICSloppyWide), A(1, 3), U16(wide_idx_3 += 2), // | 985 B(KeyedLoadICSloppyWide), A(1, 3), U16(wide_idx_3 + 2), // |
986 B(Return), // | 986 B(Return), // |
987 }}, | 987 }}, |
988 { | 988 { |
989 "function f(a, b) {\n" | 989 "function f(a, b) {\n" |
990 " 'use strict'; var c;\n" | 990 " 'use strict'; var c;\n" |
991 REPEAT_127(SPACE, " c = a[b]; ") | 991 REPEAT_127(SPACE, " c = a[b]; ") |
992 " return a[b]; }\n" | 992 " return a[b]; }\n" |
993 "f({name : \"test\"}, \"name\")\n", | 993 "f({name : \"test\"}, \"name\")\n", |
994 1 * kPointerSize, | 994 1 * kPointerSize, |
995 3, | 995 3, |
996 896, | 996 896, |
997 { | 997 { |
998 REPEAT_127(COMMA, // | 998 REPEAT_127(COMMA, // |
999 B(Ldar), A(2, 3), // | 999 B(Ldar), A(2, 3), // |
1000 B(KeyedLoadICStrict), A(1, 3), U8((wide_idx_4 += 2)), // | 1000 B(KeyedLoadICStrict), A(1, 3), U8((wide_idx_4 += 2)), // |
1001 B(Star), R(0)), // | 1001 B(Star), R(0)), // |
1002 B(Ldar), A(2, 3), // | 1002 B(Ldar), A(2, 3), // |
1003 B(KeyedLoadICStrictWide), A(1, 3), U16(wide_idx_4 += 2), // | 1003 B(KeyedLoadICStrictWide), A(1, 3), U16(wide_idx_4 + 2), // |
1004 B(Return), // | 1004 B(Return), // |
1005 }}, | 1005 }}, |
1006 }; | 1006 }; |
1007 for (size_t i = 0; i < arraysize(snippets); i++) { | 1007 for (size_t i = 0; i < arraysize(snippets); i++) { |
1008 Handle<BytecodeArray> bytecode_array = | 1008 Handle<BytecodeArray> bytecode_array = |
1009 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); | 1009 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
1010 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1010 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
1011 } | 1011 } |
1012 } | 1012 } |
1013 | 1013 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1129 " a.name = 2; }\n" | 1129 " a.name = 2; }\n" |
1130 "f({name : \"test\"})\n", | 1130 "f({name : \"test\"})\n", |
1131 0, | 1131 0, |
1132 2, | 1132 2, |
1133 772, | 1133 772, |
1134 { | 1134 { |
1135 REPEAT_127(COMMA, // | 1135 REPEAT_127(COMMA, // |
1136 B(LdaSmi8), U8(1), // | 1136 B(LdaSmi8), U8(1), // |
1137 B(StoreICSloppy), A(1, 2), U8(0), U8((wide_idx_1 += 2))), // | 1137 B(StoreICSloppy), A(1, 2), U8(0), U8((wide_idx_1 += 2))), // |
1138 B(LdaSmi8), U8(2), // | 1138 B(LdaSmi8), U8(2), // |
1139 B(StoreICSloppyWide), A(1, 2), U16(0), U16(wide_idx_1 += 2), // | 1139 B(StoreICSloppyWide), A(1, 2), U16(0), U16(wide_idx_1 + 2), // |
1140 B(LdaUndefined), // | 1140 B(LdaUndefined), // |
1141 B(Return), // | 1141 B(Return), // |
1142 }, | 1142 }, |
1143 1, | 1143 1, |
1144 {"name"}}, | 1144 {"name"}}, |
1145 {"function f(a) {\n" | 1145 {"function f(a) {\n" |
1146 "'use strict';\n" | 1146 "'use strict';\n" |
1147 REPEAT_127(SPACE, " a.name = 1; ") | 1147 REPEAT_127(SPACE, " a.name = 1; ") |
1148 " a.name = 2; }\n" | 1148 " a.name = 2; }\n" |
1149 "f({name : \"test\"})\n", | 1149 "f({name : \"test\"})\n", |
1150 0, | 1150 0, |
1151 2, | 1151 2, |
1152 772, | 1152 772, |
1153 { | 1153 { |
1154 REPEAT_127(COMMA, // | 1154 REPEAT_127(COMMA, // |
1155 B(LdaSmi8), U8(1), // | 1155 B(LdaSmi8), U8(1), // |
1156 B(StoreICStrict), A(1, 2), U8(0), U8((wide_idx_2 += 2))), // | 1156 B(StoreICStrict), A(1, 2), U8(0), U8((wide_idx_2 += 2))), // |
1157 B(LdaSmi8), U8(2), // | 1157 B(LdaSmi8), U8(2), // |
1158 B(StoreICStrictWide), A(1, 2), U16(0), U16(wide_idx_2 += 2), // | 1158 B(StoreICStrictWide), A(1, 2), U16(0), U16(wide_idx_2 + 2), // |
1159 B(LdaUndefined), // | 1159 B(LdaUndefined), // |
1160 B(Return), // | 1160 B(Return), // |
1161 }, | 1161 }, |
1162 1, | 1162 1, |
1163 {"name"}}, | 1163 {"name"}}, |
1164 {"function f(a, b) {\n" | 1164 {"function f(a, b) {\n" |
1165 REPEAT_127(SPACE, " a[b] = 1; ") | 1165 REPEAT_127(SPACE, " a[b] = 1; ") |
1166 " a[b] = 2; }\n" | 1166 " a[b] = 2; }\n" |
1167 "f({name : \"test\"})\n", | 1167 "f({name : \"test\"})\n", |
1168 0, | 1168 0, |
1169 3, | 1169 3, |
1170 771, | 1170 771, |
1171 { | 1171 { |
1172 REPEAT_127(COMMA, // | 1172 REPEAT_127(COMMA, // |
1173 B(LdaSmi8), U8(1), // | 1173 B(LdaSmi8), U8(1), // |
1174 B(KeyedStoreICSloppy), A(1, 3), A(2, 3), // | 1174 B(KeyedStoreICSloppy), A(1, 3), A(2, 3), // |
1175 U8((wide_idx_3 += 2))), // | 1175 U8((wide_idx_3 += 2))), // |
1176 B(LdaSmi8), U8(2), // | 1176 B(LdaSmi8), U8(2), // |
1177 B(KeyedStoreICSloppyWide), A(1, 3), A(2, 3), // | 1177 B(KeyedStoreICSloppyWide), A(1, 3), A(2, 3), // |
1178 U16(wide_idx_3 += 2), // | 1178 U16(wide_idx_3 + 2), // |
1179 B(LdaUndefined), // | 1179 B(LdaUndefined), // |
1180 B(Return), // | 1180 B(Return), // |
1181 }}, | 1181 }}, |
1182 {"function f(a, b) {\n" | 1182 {"function f(a, b) {\n" |
1183 "'use strict';\n" | 1183 "'use strict';\n" |
1184 REPEAT_127(SPACE, " a[b] = 1; ") | 1184 REPEAT_127(SPACE, " a[b] = 1; ") |
1185 " a[b] = 2; }\n" | 1185 " a[b] = 2; }\n" |
1186 "f({name : \"test\"})\n", | 1186 "f({name : \"test\"})\n", |
1187 0, | 1187 0, |
1188 3, | 1188 3, |
1189 771, | 1189 771, |
1190 { | 1190 { |
1191 REPEAT_127(COMMA, // | 1191 REPEAT_127(COMMA, // |
1192 B(LdaSmi8), U8(1), // | 1192 B(LdaSmi8), U8(1), // |
1193 B(KeyedStoreICStrict), A(1, 3), A(2, 3), // | 1193 B(KeyedStoreICStrict), A(1, 3), A(2, 3), // |
1194 U8((wide_idx_4 += 2))), // | 1194 U8((wide_idx_4 += 2))), // |
1195 B(LdaSmi8), U8(2), // | 1195 B(LdaSmi8), U8(2), // |
1196 B(KeyedStoreICStrictWide), A(1, 3), A(2, 3), // | 1196 B(KeyedStoreICStrictWide), A(1, 3), A(2, 3), // |
1197 U16(wide_idx_4 += 2), // | 1197 U16(wide_idx_4 + 2), // |
1198 B(LdaUndefined), // | 1198 B(LdaUndefined), // |
1199 B(Return), // | 1199 B(Return), // |
1200 }}}; | 1200 }}}; |
1201 for (size_t i = 0; i < arraysize(snippets); i++) { | 1201 for (size_t i = 0; i < arraysize(snippets); i++) { |
1202 Handle<BytecodeArray> bytecode_array = | 1202 Handle<BytecodeArray> bytecode_array = |
1203 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); | 1203 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
1204 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1204 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
1205 } | 1205 } |
1206 } | 1206 } |
1207 | 1207 |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1340 {"a"}}, | 1340 {"a"}}, |
1341 {"a = 1; function f(b) {\n" | 1341 {"a = 1; function f(b) {\n" |
1342 REPEAT_127(SPACE, "b.name; ") | 1342 REPEAT_127(SPACE, "b.name; ") |
1343 " return a; }\nf({name: 1});", | 1343 " return a; }\nf({name: 1});", |
1344 0, | 1344 0, |
1345 2, | 1345 2, |
1346 514, | 1346 514, |
1347 { | 1347 { |
1348 REPEAT_127(COMMA, // | 1348 REPEAT_127(COMMA, // |
1349 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // | 1349 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // |
1350 B(LdaGlobalSloppyWide), U16(1), U16(wide_idx_1 += 2), // | 1350 B(LdaGlobalSloppyWide), U16(1), U16(wide_idx_1 + 2), // |
1351 B(Return), // | 1351 B(Return), // |
1352 }, | 1352 }, |
1353 2, | 1353 2, |
1354 {"name", "a"}}, | 1354 {"name", "a"}}, |
1355 {"a = 1; function f(b) {\n" | 1355 {"a = 1; function f(b) {\n" |
1356 " 'use strict';\n" | 1356 " 'use strict';\n" |
1357 REPEAT_127(SPACE, "b.name; ") | 1357 REPEAT_127(SPACE, "b.name; ") |
1358 " return a; }\nf({name: 1});", | 1358 " return a; }\nf({name: 1});", |
1359 0, | 1359 0, |
1360 2, | 1360 2, |
1361 514, | 1361 514, |
1362 { | 1362 { |
1363 REPEAT_127(COMMA, // | 1363 REPEAT_127(COMMA, // |
1364 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // | 1364 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // |
1365 B(LdaGlobalStrictWide), U16(1), U16(wide_idx_2 += 2), // | 1365 B(LdaGlobalStrictWide), U16(1), U16(wide_idx_2 + 2), // |
1366 B(Return), // | 1366 B(Return), // |
1367 }, | 1367 }, |
1368 2, | 1368 2, |
1369 {"name", "a"}}, | 1369 {"name", "a"}}, |
1370 }; | 1370 }; |
1371 | 1371 |
1372 for (size_t i = 0; i < arraysize(snippets); i++) { | 1372 for (size_t i = 0; i < arraysize(snippets); i++) { |
1373 Handle<BytecodeArray> bytecode_array = | 1373 Handle<BytecodeArray> bytecode_array = |
1374 helper.MakeBytecode(snippets[i].code_snippet, "f"); | 1374 helper.MakeBytecode(snippets[i].code_snippet, "f"); |
1375 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1375 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1444 {"a = 1; function f(b) {\n" | 1444 {"a = 1; function f(b) {\n" |
1445 REPEAT_127(SPACE, "b.name; ") | 1445 REPEAT_127(SPACE, "b.name; ") |
1446 " a = 2; }\nf({name: 1});", | 1446 " a = 2; }\nf({name: 1});", |
1447 0, | 1447 0, |
1448 2, | 1448 2, |
1449 517, | 1449 517, |
1450 { | 1450 { |
1451 REPEAT_127(COMMA, // | 1451 REPEAT_127(COMMA, // |
1452 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // | 1452 B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // |
1453 B(LdaSmi8), U8(2), // | 1453 B(LdaSmi8), U8(2), // |
1454 B(StaGlobalSloppyWide), U16(1), U16(wide_idx_1 += 2), // | 1454 B(StaGlobalSloppyWide), U16(1), U16(wide_idx_1 + 2), // |
1455 B(LdaUndefined), // | 1455 B(LdaUndefined), // |
1456 B(Return), // | 1456 B(Return), // |
1457 }, | 1457 }, |
1458 2, | 1458 2, |
1459 {"name", "a"}}, | 1459 {"name", "a"}}, |
1460 {"a = 1; function f(b) {\n" | 1460 {"a = 1; function f(b) {\n" |
1461 " 'use strict';\n" | 1461 " 'use strict';\n" |
1462 REPEAT_127(SPACE, "b.name; ") | 1462 REPEAT_127(SPACE, "b.name; ") |
1463 " a = 2; }\nf({name: 1});", | 1463 " a = 2; }\nf({name: 1});", |
1464 0, | 1464 0, |
1465 2, | 1465 2, |
1466 517, | 1466 517, |
1467 { | 1467 { |
1468 REPEAT_127(COMMA, // | 1468 REPEAT_127(COMMA, // |
1469 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // | 1469 B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // |
1470 B(LdaSmi8), U8(2), // | 1470 B(LdaSmi8), U8(2), // |
1471 B(StaGlobalStrictWide), U16(1), U16(wide_idx_2 += 2), // | 1471 B(StaGlobalStrictWide), U16(1), U16(wide_idx_2 + 2), // |
1472 B(LdaUndefined), // | 1472 B(LdaUndefined), // |
1473 B(Return), // | 1473 B(Return), // |
1474 }, | 1474 }, |
1475 2, | 1475 2, |
1476 {"name", "a"}}, | 1476 {"name", "a"}}, |
1477 }; | 1477 }; |
1478 | 1478 |
1479 for (size_t i = 0; i < arraysize(snippets); i++) { | 1479 for (size_t i = 0; i < arraysize(snippets); i++) { |
1480 Handle<BytecodeArray> bytecode_array = | 1480 Handle<BytecodeArray> bytecode_array = |
1481 helper.MakeBytecode(snippets[i].code_snippet, "f"); | 1481 helper.MakeBytecode(snippets[i].code_snippet, "f"); |
(...skipping 3661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5143 for (size_t i = 0; i < arraysize(snippets); i++) { | 5143 for (size_t i = 0; i < arraysize(snippets); i++) { |
5144 Handle<BytecodeArray> bytecode_array = | 5144 Handle<BytecodeArray> bytecode_array = |
5145 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); | 5145 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); |
5146 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 5146 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
5147 } | 5147 } |
5148 } | 5148 } |
5149 | 5149 |
5150 } // namespace interpreter | 5150 } // namespace interpreter |
5151 } // namespace internal | 5151 } // namespace internal |
5152 } // namespace v8 | 5152 } // namespace v8 |
OLD | NEW |