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 557 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
568 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]); | 568 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]); |
569 for (size_t i = 0; i < num_snippets; i++) { | 569 for (size_t i = 0; i < num_snippets; i++) { |
570 BytecodeGraphTester tester(isolate, zone, snippets[i].code_snippet); | 570 BytecodeGraphTester tester(isolate, zone, snippets[i].code_snippet); |
571 auto callable = tester.GetCallable<>(); | 571 auto callable = tester.GetCallable<>(); |
572 Handle<Object> return_value = callable().ToHandleChecked(); | 572 Handle<Object> return_value = callable().ToHandleChecked(); |
573 CHECK(return_value->SameValue(*snippets[i].return_value())); | 573 CHECK(return_value->SameValue(*snippets[i].return_value())); |
574 } | 574 } |
575 } | 575 } |
576 | 576 |
577 | 577 |
578 TEST(BytecodeGraphBuilderCreateClosure) { | |
579 HandleAndZoneScope scope; | |
580 Isolate* isolate = scope.main_isolate(); | |
581 Zone* zone = scope.main_zone(); | |
582 Factory* factory = isolate->factory(); | |
583 | |
584 ExpectedSnippet<0> snippets[] = { | |
585 {"function f() {\n" | |
586 " function counter() { this.count = 20; }\n" | |
587 " var c = new counter();\n" | |
588 " return c.count;\n" | |
589 "}; f()", | |
590 {factory->NewNumberFromInt(20)}}, | |
591 {"function f() {\n" | |
592 " function counter(arg0) { this.count = 17; this.x = arg0; }\n" | |
593 " var c = new counter(6);\n" | |
594 " return c.count + c.x;\n" | |
595 "}; f()", | |
596 {factory->NewNumberFromInt(23)}}, | |
597 {"function f() {\n" | |
598 " function counter(arg0, arg1) {\n" | |
599 " this.count = 17; this.x = arg0; this.y = arg1;\n" | |
600 " }\n" | |
601 " var c = new counter(3, 5);\n" | |
602 " return c.count + c.x + c.y;\n" | |
603 "}; f()", | |
604 {factory->NewNumberFromInt(25)}}, | |
605 }; | |
606 | |
607 size_t num_snippets = sizeof(snippets) / sizeof(snippets[0]); | |
608 for (size_t i = 0; i < num_snippets; i++) { | |
609 BytecodeGraphTester tester(isolate, zone, snippets[i].code_snippet); | |
610 auto callable = tester.GetCallable<>(); | |
611 Handle<Object> return_value = callable().ToHandleChecked(); | |
612 CHECK(return_value->SameValue(*snippets[i].return_value())); | |
613 } | |
614 } | |
615 | |
616 | |
617 TEST(BytecodeGraphBuilderCallRuntime) { | 578 TEST(BytecodeGraphBuilderCallRuntime) { |
618 HandleAndZoneScope scope; | 579 HandleAndZoneScope scope; |
619 Isolate* isolate = scope.main_isolate(); | 580 Isolate* isolate = scope.main_isolate(); |
620 Zone* zone = scope.main_zone(); | 581 Zone* zone = scope.main_zone(); |
621 Factory* factory = isolate->factory(); | 582 Factory* factory = isolate->factory(); |
622 | 583 |
623 ExpectedSnippet<1> snippets[] = { | 584 ExpectedSnippet<1> snippets[] = { |
624 {"function f(arg0) { return %MaxSmi(); }\nf()", | 585 {"function f(arg0) { return %MaxSmi(); }\nf()", |
625 {factory->NewNumberFromInt(Smi::kMaxValue), factory->undefined_value()}}, | 586 {factory->NewNumberFromInt(Smi::kMaxValue), factory->undefined_value()}}, |
626 {"function f(arg0) { return %IsArray(arg0) }\nf(undefined)", | 587 {"function f(arg0) { return %IsArray(arg0) }\nf(undefined)", |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
797 auto callable = tester.GetCallable<Handle<Object>>(); | 758 auto callable = tester.GetCallable<Handle<Object>>(); |
798 Handle<Object> return_value = | 759 Handle<Object> return_value = |
799 callable(snippets[i].parameter(0)).ToHandleChecked(); | 760 callable(snippets[i].parameter(0)).ToHandleChecked(); |
800 CHECK(return_value->SameValue(*snippets[i].return_value())); | 761 CHECK(return_value->SameValue(*snippets[i].return_value())); |
801 } | 762 } |
802 } | 763 } |
803 | 764 |
804 } // namespace compiler | 765 } // namespace compiler |
805 } // namespace internal | 766 } // namespace internal |
806 } // namespace v8 | 767 } // namespace v8 |
OLD | NEW |