diff options
Diffstat (limited to 'deps/v8/test/cctest/interpreter/test-bytecode-generator.cc')
-rw-r--r-- | deps/v8/test/cctest/interpreter/test-bytecode-generator.cc | 83 |
1 files changed, 61 insertions, 22 deletions
diff --git a/deps/v8/test/cctest/interpreter/test-bytecode-generator.cc b/deps/v8/test/cctest/interpreter/test-bytecode-generator.cc index e81b0cf981..fb56d5d98a 100644 --- a/deps/v8/test/cctest/interpreter/test-bytecode-generator.cc +++ b/deps/v8/test/cctest/interpreter/test-bytecode-generator.cc @@ -157,13 +157,14 @@ bool CompareTexts(const std::string& generated, const std::string& expected) { std::string expected_line; // Line number does not include golden file header. int line_number = 0; + bool strings_match = true; do { std::getline(generated_stream, generated_line); std::getline(expected_stream, expected_line); if (!generated_stream.good() && !expected_stream.good()) { - return true; + return strings_match; } if (!generated_stream.good()) { @@ -182,7 +183,7 @@ bool CompareTexts(const std::string& generated, const std::string& expected) { std::cerr << "Inputs differ at line " << line_number << "\n"; std::cerr << " Generated: '" << generated_line << "'\n"; std::cerr << " Expected: '" << expected_line << "'\n"; - return false; + strings_match = false; } line_number++; } while (true); @@ -663,6 +664,7 @@ TEST(IIFEWithOneshotOpt) { return arguments.callee; })(); )", + // TODO(rmcilroy): Make this function produce one-shot code. R"( var t = 0; function f2() {}; @@ -690,6 +692,34 @@ TEST(IIFEWithOneshotOpt) { } f(); )", + R"( + var f = function(l) { l.a = 3; return l; }; + f({}); + f; + )", + // No one-shot opt for top-level functions enclosed in parentheses + R"( + var f = (function(l) { l.a = 3; return l; }); + f; + )", + R"( + var f = (function foo(l) { l.a = 3; return l; }); + f; + )", + R"( + var f = function foo(l) { l.a = 3; return l; }; + f({}); + f; + )", + R"( + l = {}; + var f = (function foo(l) { l.a = 3; return arguments.callee; })(l); + f; + )", + R"( + var f = (function foo(l) { l.a = 3; return arguments.callee; })({}); + f; + )", }; CHECK(CompareTexts(BuildActual(printer, snippets), LoadGolden("IIFEWithOneshotOpt.golden"))); @@ -1469,6 +1499,8 @@ TEST(Delete) { "return delete a[1];\n", "return delete 'test';\n", + + "return delete this;\n", }; CHECK(CompareTexts(BuildActual(printer, snippets), @@ -2242,6 +2274,33 @@ TEST(AssignmentsInBinaryExpression) { LoadGolden("AssignmentsInBinaryExpression.golden"))); } +TEST(DestructuringAssignment) { + InitializedIgnitionHandleScope scope; + BytecodeExpectationsPrinter printer(CcTest::isolate()); + const char* snippets[] = { + "var x, a = [0,1,2,3];\n" + "[x] = a;\n", + + "var x, y, a = [0,1,2,3];\n" + "[,x,...y] = a;\n", + + "var x={}, y, a = [0];\n" + "[x.foo,y=4] = a;\n", + + "var x, a = {x:1};\n" + "({x} = a);\n", + + "var x={}, a = {y:1};\n" + "({y:x.foo} = a);\n", + + "var x, a = {y:1, w:2, v:3};\n" + "({x=0,...y} = a);\n", + }; + + CHECK(CompareTexts(BuildActual(printer, snippets), + LoadGolden("DestructuringAssignment.golden"))); +} + TEST(Eval) { InitializedIgnitionHandleScope scope; BytecodeExpectationsPrinter printer(CcTest::isolate()); @@ -2476,26 +2535,6 @@ TEST(LetVariableContextSlot) { LoadGolden("LetVariableContextSlot.golden"))); } -TEST(DoExpression) { - bool old_flag = FLAG_harmony_do_expressions; - FLAG_harmony_do_expressions = true; - - InitializedIgnitionHandleScope scope; - BytecodeExpectationsPrinter printer(CcTest::isolate()); - const char* snippets[] = { - "var a = do { }; return a;\n", - - "var a = do { var x = 100; }; return a;\n", - - "while(true) { var a = 10; a = do { ++a; break; }; a = 20; }\n", - }; - - CHECK(CompareTexts(BuildActual(printer, snippets), - LoadGolden("DoExpression.golden"))); - - FLAG_harmony_do_expressions = old_flag; -} - TEST(WithStatement) { InitializedIgnitionHandleScope scope; BytecodeExpectationsPrinter printer(CcTest::isolate()); |