Index: test/cctest/interpreter/test-bytecode-generator.cc |
diff --git a/test/cctest/interpreter/test-bytecode-generator.cc b/test/cctest/interpreter/test-bytecode-generator.cc |
index 0ecd59b36840ea13c5cfa690af3696b263116474..fcf537b0b0ead401aee9faaddda2aab3eee7ffd6 100644 |
--- a/test/cctest/interpreter/test-bytecode-generator.cc |
+++ b/test/cctest/interpreter/test-bytecode-generator.cc |
@@ -925,73 +925,88 @@ TEST(PropertyLoads) { |
}, |
0}, |
{"function f(a) {\n" |
- " var b;\n" REPEAT_127(SPACE, " b = a.name; ") " return a.name; }\n" |
- "f({name : \"test\"})\n", |
+ " var b;\n" |
+ "b = a.name;" |
+ REPEAT_127(SPACE, " b = a.name; ") |
+ " return a.name; }\n" |
+ "f({name : \"test\"})\n", |
1 * kPointerSize, |
2, |
- 767, |
+ 775, |
{ |
- REPEAT_127(COMMA, // |
- B(LoadICSloppy), A(1, 2), U8(0), |
- U8((wide_idx_1 += 2)), // |
- B(Star), R(0)), // |
- B(LoadICSloppy), |
- A(1, 2), U8(0), U8(wide_idx_1 + 2), // |
- B(Return), // |
+ B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2), // |
+ B(Star), R(0), // |
+ REPEAT_127(COMMA, // |
+ B(LoadICSloppy), A(1, 2), U8(0), // |
+ U8((wide_idx_1 += 2)), // |
+ B(Star), R(0)), // |
+ B(LoadICSloppyWide), A(1, 2), U16(0), U16(wide_idx_1 + 2), // |
+ B(Return), // |
}, |
1, |
{"name"}}, |
{"function f(a) {\n" |
- " 'use strict'; var b;\n" REPEAT_127( |
- SPACE, " b = a.name; ") " return a.name; }\n" |
- "f({name : \"test\"})\n", |
+ " 'use strict'; var b;\n" |
+ " b = a.name;\n" |
+ REPEAT_127(SPACE, " b = a.name; ") |
+ " return a.name; }\n" |
+ "f({name : \"test\"})\n", |
1 * kPointerSize, |
2, |
- 767, |
+ 775, |
{ |
- REPEAT_127(COMMA, // |
- B(LoadICStrict), A(1, 2), U8(0), |
- U8((wide_idx_2 += 2)), // |
- B(Star), R(0)), // |
- B(LoadICStrict), |
- A(1, 2), U8(0), U8(wide_idx_2 + 2), // |
- B(Return), // |
+ B(LoadICStrict), A(1, 2), U8(0), U8((wide_idx_2 += 2)), // |
+ B(Star), R(0), // |
+ REPEAT_127(COMMA, // |
+ B(LoadICStrict), A(1, 2), U8(0), // |
+ U8((wide_idx_2 += 2)), // |
+ B(Star), R(0)), // |
+ B(LoadICStrictWide), A(1, 2), U16(0), U16(wide_idx_2 + 2), // |
+ B(Return), // |
}, |
1, |
{"name"}}, |
{"function f(a, b) {\n" |
- " var c;\n" REPEAT_127(SPACE, |
- " c = a[b]; ") " return a[b]; }\n" |
- "f({name : \"test\"}, \"name\")\n", |
+ " var c;\n" |
+ " c = a[b];" |
+ REPEAT_127(SPACE, " c = a[b]; ") |
+ " return a[b]; }\n" |
+ "f({name : \"test\"}, \"name\")\n", |
1 * kPointerSize, |
3, |
- 895, |
+ 903, |
{ |
+ B(Ldar), A(2, 3), // |
+ B(KeyedLoadICSloppy), A(1, 3), U8((wide_idx_3 += 2)), // |
+ B(Star), R(0), // |
REPEAT_127(COMMA, // |
B(Ldar), A(2, 3), // |
B(KeyedLoadICSloppy), A(1, 3), U8((wide_idx_3 += 2)), // |
B(Star), R(0)), // |
- B(Ldar), |
- A(2, 3), // |
- B(KeyedLoadICSloppy), A(1, 3), U8(wide_idx_3 + 2), // |
- B(Return), // |
+ B(Ldar), A(2, 3), // |
+ B(KeyedLoadICSloppyWide), A(1, 3), U16(wide_idx_3 + 2), // |
+ B(Return), // |
}}, |
{"function f(a, b) {\n" |
- " 'use strict'; var c;\n" REPEAT_127( |
- SPACE, " c = a[b]; ") " return a[b]; }\n" |
- "f({name : \"test\"}, \"name\")\n", |
+ " 'use strict'; var c;\n" |
+ " c = a[b];" |
+ REPEAT_127(SPACE, " c = a[b]; ") |
+ " return a[b]; }\n" |
+ "f({name : \"test\"}, \"name\")\n", |
1 * kPointerSize, |
3, |
- 895, |
+ 903, |
{ |
+ B(Ldar), A(2, 3), // |
+ B(KeyedLoadICStrict), A(1, 3), U8((wide_idx_4 += 2)), // |
+ B(Star), R(0), // |
REPEAT_127(COMMA, // |
B(Ldar), A(2, 3), // |
B(KeyedLoadICStrict), A(1, 3), U8((wide_idx_4 += 2)), // |
B(Star), R(0)), // |
- B(Ldar), |
- A(2, 3), // |
- B(KeyedLoadICStrict), A(1, 3), U8(wide_idx_4 + 2), // |
- B(Return), // |
+ B(Ldar), A(2, 3), // |
+ B(KeyedLoadICStrictWide), A(1, 3), U16(wide_idx_4 + 2), // |
+ B(Return), // |
}}, |
}; |
for (size_t i = 0; i < arraysize(snippets); i++) { |
@@ -1114,81 +1129,91 @@ TEST(PropertyStores) { |
}, |
1, |
{"val"}}, |
- {"function f(a) {\n" REPEAT_127(SPACE, |
- " a.name = 1; ") " a.name = 2; }\n" |
- "f({name : \"test\"})\n", |
+ {"function f(a) {\n" |
+ "a.name = 1;" |
+ REPEAT_127(SPACE, " a.name = 1; ") |
+ " a.name = 2; }\n" |
+ "f({name : \"test\"})\n", |
0, |
2, |
- 770, |
- { |
- REPEAT_127(COMMA, // |
- B(LdaSmi8), U8(1), // |
- B(StoreICSloppy), A(1, 2), U8(0), |
- U8((wide_idx_1 += 2))), // |
- B(LdaSmi8), |
- U8(2), // |
- B(StoreICSloppy), A(1, 2), U8(0), U8(wide_idx_1 + 2), // |
- B(LdaUndefined), // |
- B(Return), // |
+ 778, |
+ { |
+ B(LdaSmi8), U8(1), // |
+ B(StoreICSloppy), A(1, 2), U8(0), U8((wide_idx_1 += 2)), // |
+ REPEAT_127(COMMA, // |
+ B(LdaSmi8), U8(1), // |
+ B(StoreICSloppy), A(1, 2), U8(0), // |
+ U8((wide_idx_1 += 2))), // |
+ B(LdaSmi8), U8(2), // |
+ B(StoreICSloppyWide), A(1, 2), U16(0), U16(wide_idx_1 + 2), // |
+ B(LdaUndefined), // |
+ B(Return), // |
}, |
1, |
{"name"}}, |
{"function f(a) {\n" |
- "'use strict';\n" REPEAT_127(SPACE, |
- " a.name = 1; ") " a.name = 2; }\n" |
- "f({name : \"test\"})\n", |
+ " 'use strict';\n" |
+ " a.name = 1;" |
+ REPEAT_127(SPACE, " a.name = 1; ") |
+ " a.name = 2; }\n" |
+ "f({name : \"test\"})\n", |
0, |
2, |
- 770, |
- { |
- REPEAT_127(COMMA, // |
- B(LdaSmi8), U8(1), // |
- B(StoreICStrict), A(1, 2), U8(0), |
- U8((wide_idx_2 += 2))), // |
- B(LdaSmi8), |
- U8(2), // |
- B(StoreICStrict), A(1, 2), U8(0), U8(wide_idx_2 + 2), // |
- B(LdaUndefined), // |
- B(Return), // |
+ 778, |
+ { |
+ B(LdaSmi8), U8(1), // |
+ B(StoreICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2), // |
+ REPEAT_127(COMMA, // |
+ B(LdaSmi8), U8(1), // |
+ B(StoreICStrict), A(1, 2), U8(0), // |
+ U8((wide_idx_2 += 2))), // |
+ B(LdaSmi8), U8(2), // |
+ B(StoreICStrictWide), A(1, 2), U16(0), U16(wide_idx_2 + 2), // |
+ B(LdaUndefined), // |
+ B(Return), // |
}, |
1, |
{"name"}}, |
- {"function f(a, b) {\n" REPEAT_127( |
- SPACE, " a[b] = 1; ") " a[b] = 2; }\n" |
- "f({name : \"test\"})\n", |
+ {"function f(a, b) {\n" |
+ " a[b] = 1;" |
+ REPEAT_127(SPACE, " a[b] = 1; ") |
+ " a[b] = 2; }\n" |
+ "f({name : \"test\"})\n", |
0, |
3, |
- 770, |
- { |
- REPEAT_127(COMMA, // |
- B(LdaSmi8), U8(1), // |
- B(KeyedStoreICSloppy), A(1, 3), A(2, 3), // |
- U8((wide_idx_3 += 2))), // |
- B(LdaSmi8), |
- U8(2), // |
- B(KeyedStoreICSloppy), A(1, 3), A(2, 3), // |
- U8(wide_idx_3 + 2), // |
- B(LdaUndefined), // |
- B(Return), // |
+ 777, |
+ { |
+ B(LdaSmi8), U8(1), // |
+ B(KeyedStoreICSloppy), A(1, 3), A(2, 3), U8(wide_idx_3 += 2), // |
+ REPEAT_127(COMMA, // |
+ B(LdaSmi8), U8(1), // |
+ B(KeyedStoreICSloppy), A(1, 3), A(2, 3), // |
+ U8((wide_idx_3 += 2))), // |
+ B(LdaSmi8), U8(2), // |
+ B(KeyedStoreICSloppyWide), A(1, 3), A(2, 3), U16(wide_idx_3 + 2), // |
+ B(LdaUndefined), // |
+ B(Return), // |
}}, |
{"function f(a, b) {\n" |
- "'use strict';\n" REPEAT_127(SPACE, |
- " a[b] = 1; ") " a[b] = 2; }\n" |
- "f({name : \"test\"})\n", |
+ " 'use strict';\n" |
+ " a[b] = 1;" |
+ REPEAT_127(SPACE, " a[b] = 1; ") |
+ " a[b] = 2; }\n" |
+ "f({name : \"test\"})\n", |
0, |
3, |
- 770, |
- { |
- REPEAT_127(COMMA, // |
- B(LdaSmi8), U8(1), // |
- B(KeyedStoreICStrict), A(1, 3), A(2, 3), // |
- U8((wide_idx_4 += 2))), // |
- B(LdaSmi8), |
- U8(2), // |
- B(KeyedStoreICStrict), A(1, 3), A(2, 3), // |
- U8(wide_idx_4 + 2), // |
- B(LdaUndefined), // |
- B(Return), // |
+ 777, |
+ { |
+ B(LdaSmi8), U8(1), // |
+ B(KeyedStoreICStrict), A(1, 3), A(2, 3), U8(wide_idx_4 += 2), // |
+ REPEAT_127(COMMA, // |
+ B(LdaSmi8), U8(1), // |
+ B(KeyedStoreICStrict), A(1, 3), A(2, 3), // |
+ U8((wide_idx_4 += 2))), // |
+ B(LdaSmi8), U8(2), // |
+ B(KeyedStoreICStrictWide), A(1, 3), A(2, 3), U16(wide_idx_4 + 2), // |
+ B(LdaUndefined), // |
+ B(Return), // |
}}}; |
for (size_t i = 0; i < arraysize(snippets); i++) { |
Handle<BytecodeArray> bytecode_array = |
@@ -1269,21 +1294,23 @@ TEST(PropertyCall) { |
}, |
1, |
{"func"}}, |
- {"function f(a) {\n" REPEAT_127( |
- SPACE, " a.func;\n") " return a.func(); }\nf(" FUNC_ARG ")", |
+ {"function f(a) {\n" |
+ " a.func;\n" |
+ REPEAT_127(SPACE, " a.func;\n") |
+ " return a.func(); }\nf(" FUNC_ARG ")", |
2 * kPointerSize, |
2, |
- 526, |
+ 532, |
{ |
+ B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx += 2), // |
REPEAT_127(COMMA, // |
B(LoadICSloppy), A(1, 2), U8(0), U8((wide_idx += 2))), // |
- B(Ldar), |
- A(1, 2), // |
- B(Star), R(1), // |
- B(LoadICSloppyWide), R(1), U16(0), U16(wide_idx + 4), // |
- B(Star), R(0), // |
- B(Call), R(0), R(1), U8(0), U8(wide_idx + 2), // |
- B(Return), // |
+ B(Ldar), A(1, 2), // |
+ B(Star), R(1), // |
+ B(LoadICSloppyWide), R(1), U16(0), U16(wide_idx + 4), // |
+ B(Star), R(0), // |
+ B(CallWide), R(0), R(1), U16(0), U16(wide_idx + 2), // |
+ B(Return), // |
}, |
1, |
{"func"}}, |
@@ -1352,32 +1379,40 @@ TEST(LoadGlobal) { |
}, |
1, |
{"a"}}, |
- {"a = 1; function f(b) {\n" REPEAT_127( |
- SPACE, "b.name; ") " return a; }\nf({name: 1});", |
+ {"a = 1;" |
+ "function f(b) {\n" |
+ " b.name;\n" |
+ REPEAT_127(SPACE, "b.name; ") |
+ " return a;" |
+ "}\nf({name: 1});", |
0, |
2, |
- 512, |
+ 518, |
{ |
+ B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2), // |
REPEAT_127(COMMA, // |
B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // |
- B(LdaGlobalSloppy), |
- U8(1), U8(wide_idx_1 + 2), // |
- B(Return), // |
+ B(LdaGlobalSloppyWide), U16(1), U16(wide_idx_1 + 2), // |
+ B(Return), // |
}, |
2, |
{"name", "a"}}, |
- {"a = 1; function f(b) {\n" |
- " 'use strict';\n" REPEAT_127(SPACE, |
- "b.name; ") " return a; }\nf({name: 1});", |
+ {"a = 1;" |
+ "function f(b) {\n" |
+ " 'use strict';\n" |
+ " b.name\n" |
+ REPEAT_127(SPACE, "b.name; ") |
+ " return a;" |
+ "}\nf({name: 1});", |
0, |
2, |
- 512, |
+ 518, |
{ |
+ B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2), // |
REPEAT_127(COMMA, // |
B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // |
- B(LdaGlobalStrict), |
- U8(1), U8(wide_idx_2 + 2), // |
- B(Return), // |
+ B(LdaGlobalStrictWide), U16(1), U16(wide_idx_2 + 2), // |
+ B(Return), // |
}, |
2, |
{"name", "a"}}, |
@@ -1455,36 +1490,44 @@ TEST(StoreGlobal) { |
}, |
1, |
{"a"}}, |
- {"a = 1; function f(b) {\n" REPEAT_127( |
- SPACE, "b.name; ") " a = 2; }\nf({name: 1});", |
+ {"a = 1;" |
+ "function f(b) {" |
+ " b.name;\n" |
+ REPEAT_127(SPACE, "b.name; ") |
+ " a = 2; }\n" |
+ "f({name: 1});", |
0, |
2, |
- 515, |
+ 521, |
{ |
+ B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2), // |
REPEAT_127(COMMA, // |
B(LoadICSloppy), A(1, 2), U8(0), U8(wide_idx_1 += 2)), // |
- B(LdaSmi8), |
- U8(2), // |
- B(StaGlobalSloppy), U8(1), U8(wide_idx_1 + 2), // |
- B(LdaUndefined), // |
- B(Return), // |
+ B(LdaSmi8), U8(2), // |
+ B(StaGlobalSloppyWide), U16(1), U16(wide_idx_1 + 2), // |
+ B(LdaUndefined), // |
+ B(Return), // |
}, |
2, |
{"name", "a"}}, |
- {"a = 1; function f(b) {\n" |
- " 'use strict';\n" REPEAT_127(SPACE, |
- "b.name; ") " a = 2; }\nf({name: 1});", |
+ {"a = 1;" |
+ "function f(b) {\n" |
+ " 'use strict';\n" |
+ " b.name;\n" |
+ REPEAT_127(SPACE, "b.name; ") |
+ " a = 2; }\n" |
+ "f({name: 1});", |
0, |
2, |
- 515, |
+ 521, |
{ |
+ B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2), // |
REPEAT_127(COMMA, // |
B(LoadICStrict), A(1, 2), U8(0), U8(wide_idx_2 += 2)), // |
- B(LdaSmi8), |
- U8(2), // |
- B(StaGlobalStrict), U8(1), U8(wide_idx_2 + 2), // |
- B(LdaUndefined), // |
- B(Return), // |
+ B(LdaSmi8), U8(2), // |
+ B(StaGlobalStrictWide), U16(1), U16(wide_idx_2 + 2), // |
+ B(LdaUndefined), // |
+ B(Return), // |
}, |
2, |
{"name", "a"}}, |