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(jochen): Remove this after the setting is turned on globally. | 5 // TODO(jochen): Remove this after the setting is turned on globally. |
6 #define V8_IMMINENT_DEPRECATION_WARNINGS | 6 #define V8_IMMINENT_DEPRECATION_WARNINGS |
7 | 7 |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "src/compiler/pipeline.h" | 10 #include "src/compiler/pipeline.h" |
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
575 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]); | 575 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]); |
576 for (size_t i = 0; i < num_snippets; i++) { | 576 for (size_t i = 0; i < num_snippets; i++) { |
577 BytecodeGraphTester tester(isolate, zone, snippets[i].code_snippet); | 577 BytecodeGraphTester tester(isolate, zone, snippets[i].code_snippet); |
578 auto callable = tester.GetCallable<>(); | 578 auto callable = tester.GetCallable<>(); |
579 Handle<Object> return_value = callable().ToHandleChecked(); | 579 Handle<Object> return_value = callable().ToHandleChecked(); |
580 CHECK(return_value->SameValue(*snippets[i].return_value())); | 580 CHECK(return_value->SameValue(*snippets[i].return_value())); |
581 } | 581 } |
582 } | 582 } |
583 | 583 |
584 | 584 |
| 585 TEST(BytecodeGraphBuilderCreateClosure) { |
| 586 HandleAndZoneScope scope; |
| 587 Isolate* isolate = scope.main_isolate(); |
| 588 Zone* zone = scope.main_zone(); |
| 589 Factory* factory = isolate->factory(); |
| 590 |
| 591 ExpectedSnippet<0> snippets[] = { |
| 592 {"function f() {\n" |
| 593 " function counter() { this.count = 20; }\n" |
| 594 " var c = new counter();\n" |
| 595 " return c.count;\n" |
| 596 "}; f()", |
| 597 {factory->NewNumberFromInt(20)}}, |
| 598 {"function f() {\n" |
| 599 " function counter(arg0) { this.count = 17; this.x = arg0; }\n" |
| 600 " var c = new counter(6);\n" |
| 601 " return c.count + c.x;\n" |
| 602 "}; f()", |
| 603 {factory->NewNumberFromInt(23)}}, |
| 604 {"function f() {\n" |
| 605 " function counter(arg0, arg1) {\n" |
| 606 " this.count = 17; this.x = arg0; this.y = arg1;\n" |
| 607 " }\n" |
| 608 " var c = new counter(3, 5);\n" |
| 609 " return c.count + c.x + c.y;\n" |
| 610 "}; f()", |
| 611 {factory->NewNumberFromInt(25)}}, |
| 612 }; |
| 613 |
| 614 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]); |
| 615 for (size_t i = 0; i < num_snippets; i++) { |
| 616 BytecodeGraphTester tester(isolate, zone, snippets[i].code_snippet); |
| 617 auto callable = tester.GetCallable<>(); |
| 618 Handle<Object> return_value = callable().ToHandleChecked(); |
| 619 CHECK(return_value->SameValue(*snippets[i].return_value())); |
| 620 } |
| 621 } |
| 622 |
| 623 |
585 TEST(BytecodeGraphBuilderCallRuntime) { | 624 TEST(BytecodeGraphBuilderCallRuntime) { |
586 HandleAndZoneScope scope; | 625 HandleAndZoneScope scope; |
587 Isolate* isolate = scope.main_isolate(); | 626 Isolate* isolate = scope.main_isolate(); |
588 Zone* zone = scope.main_zone(); | 627 Zone* zone = scope.main_zone(); |
589 Factory* factory = isolate->factory(); | 628 Factory* factory = isolate->factory(); |
590 | 629 |
591 ExpectedSnippet<1> snippets[] = { | 630 ExpectedSnippet<1> snippets[] = { |
592 {"function f(arg0) { return %MaxSmi(); }\nf()", | 631 {"function f(arg0) { return %MaxSmi(); }\nf()", |
593 {factory->NewNumberFromInt(Smi::kMaxValue), factory->undefined_value()}}, | 632 {factory->NewNumberFromInt(Smi::kMaxValue), factory->undefined_value()}}, |
594 {"function f(arg0) { return %IsArray(arg0) }\nf(undefined)", | 633 {"function f(arg0) { return %IsArray(arg0) }\nf(undefined)", |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
908 } | 947 } |
909 | 948 |
910 | 949 |
911 TEST(BytecodeGraphBuilderTestInstanceOf) { | 950 TEST(BytecodeGraphBuilderTestInstanceOf) { |
912 // TODO(mythria): Add tests when CreateLiterals/CreateClousre are supported. | 951 // TODO(mythria): Add tests when CreateLiterals/CreateClousre are supported. |
913 } | 952 } |
914 | 953 |
915 } // namespace compiler | 954 } // namespace compiler |
916 } // namespace internal | 955 } // namespace internal |
917 } // namespace v8 | 956 } // namespace v8 |
OLD | NEW |