Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: src/full-codegen.cc

Issue 918373002: Strip Interface class of most of its logic, make it all about Module exports (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Merged to trunk Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/contexts.cc ('k') | src/globals.h » ('j') | src/globals.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/ast.h" 7 #include "src/ast.h"
8 #include "src/ast-numbering.h" 8 #include "src/ast-numbering.h"
9 #include "src/code-factory.h" 9 #include "src/code-factory.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 void BreakableStatementChecker::VisitExportDeclaration( 54 void BreakableStatementChecker::VisitExportDeclaration(
55 ExportDeclaration* decl) { 55 ExportDeclaration* decl) {
56 } 56 }
57 57
58 58
59 void BreakableStatementChecker::VisitModuleLiteral(ModuleLiteral* module) { 59 void BreakableStatementChecker::VisitModuleLiteral(ModuleLiteral* module) {
60 } 60 }
61 61
62 62
63 void BreakableStatementChecker::VisitModuleVariable(ModuleVariable* module) {
64 }
65
66
67 void BreakableStatementChecker::VisitModulePath(ModulePath* module) { 63 void BreakableStatementChecker::VisitModulePath(ModulePath* module) {
68 } 64 }
69 65
70 66
71 void BreakableStatementChecker::VisitModuleUrl(ModuleUrl* module) { 67 void BreakableStatementChecker::VisitModuleUrl(ModuleUrl* module) {
72 } 68 }
73 69
74 70
75 void BreakableStatementChecker::VisitModuleStatement(ModuleStatement* stmt) { 71 void BreakableStatementChecker::VisitModuleStatement(ModuleStatement* stmt) {
76 } 72 }
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 DCHECK(scope_->is_script_scope()); 604 DCHECK(scope_->is_script_scope());
609 605
610 for (int i = 0; i < declarations->length(); i++) { 606 for (int i = 0; i < declarations->length(); i++) {
611 ModuleDeclaration* declaration = declarations->at(i)->AsModuleDeclaration(); 607 ModuleDeclaration* declaration = declarations->at(i)->AsModuleDeclaration();
612 if (declaration != NULL) { 608 if (declaration != NULL) {
613 ModuleLiteral* module = declaration->module()->AsModuleLiteral(); 609 ModuleLiteral* module = declaration->module()->AsModuleLiteral();
614 if (module != NULL) { 610 if (module != NULL) {
615 Comment cmnt(masm_, "[ Link nested modules"); 611 Comment cmnt(masm_, "[ Link nested modules");
616 Scope* scope = module->body()->scope(); 612 Scope* scope = module->body()->scope();
617 Interface* interface = scope->interface(); 613 Interface* interface = scope->interface();
618 DCHECK(interface->IsModule() && interface->IsFrozen()); 614 DCHECK(interface->IsFrozen());
619 615
620 interface->Allocate(scope->module_var()->index()); 616 interface->Allocate(scope->module_var()->index());
621 617
622 // Set up module context. 618 // Set up module context.
623 DCHECK(scope->interface()->Index() >= 0); 619 DCHECK(scope->interface()->Index() >= 0);
624 __ Push(Smi::FromInt(scope->interface()->Index())); 620 __ Push(Smi::FromInt(scope->interface()->Index()));
625 __ Push(scope->GetScopeInfo(isolate())); 621 __ Push(scope->GetScopeInfo(isolate()));
626 __ CallRuntime(Runtime::kPushModuleContext, 2); 622 __ CallRuntime(Runtime::kPushModuleContext, 2);
627 StoreToFrameField(StandardFrameConstants::kContextOffset, 623 StoreToFrameField(StandardFrameConstants::kContextOffset,
628 context_register()); 624 context_register());
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 modules_->set(index, *description); 778 modules_->set(index, *description);
783 779
784 scope_ = saved_scope; 780 scope_ = saved_scope;
785 // Pop module context. 781 // Pop module context.
786 LoadContextField(context_register(), Context::PREVIOUS_INDEX); 782 LoadContextField(context_register(), Context::PREVIOUS_INDEX);
787 // Update local stack frame context field. 783 // Update local stack frame context field.
788 StoreToFrameField(StandardFrameConstants::kContextOffset, context_register()); 784 StoreToFrameField(StandardFrameConstants::kContextOffset, context_register());
789 } 785 }
790 786
791 787
792 void FullCodeGenerator::VisitModuleVariable(ModuleVariable* module) {
793 // Nothing to do.
794 // The instance object is resolved statically through the module's interface.
795 }
796
797
798 void FullCodeGenerator::VisitModulePath(ModulePath* module) { 788 void FullCodeGenerator::VisitModulePath(ModulePath* module) {
799 // Nothing to do. 789 // Nothing to do.
800 // The instance object is resolved statically through the module's interface. 790 // The instance object is resolved statically through the module's interface.
801 } 791 }
802 792
803 793
804 void FullCodeGenerator::VisitModuleUrl(ModuleUrl* module) { 794 void FullCodeGenerator::VisitModuleUrl(ModuleUrl* module) {
805 // TODO(rossberg): dummy allocation for now. 795 // TODO(rossberg): dummy allocation for now.
806 Scope* scope = module->body()->scope(); 796 Scope* scope = module->body()->scope();
807 Interface* interface = scope_->interface(); 797 Interface* interface = scope_->interface();
808 798
809 DCHECK(interface->IsModule() && interface->IsFrozen()); 799 DCHECK(interface->IsFrozen());
810 DCHECK(!modules_.is_null()); 800 DCHECK(!modules_.is_null());
811 DCHECK(module_index_ < modules_->length()); 801 DCHECK(module_index_ < modules_->length());
812 interface->Allocate(scope->module_var()->index()); 802 interface->Allocate(scope->module_var()->index());
813 int index = module_index_++; 803 int index = module_index_++;
814 804
815 Handle<ModuleInfo> description = 805 Handle<ModuleInfo> description =
816 ModuleInfo::Create(isolate(), interface, scope_); 806 ModuleInfo::Create(isolate(), interface, scope_);
817 modules_->set(index, *description); 807 modules_->set(index, *description);
818 } 808 }
819 809
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 this, stmt->scope(), stmt->EntryId(), stmt->DeclsId(), stmt->ExitId()); 1086 this, stmt->scope(), stmt->EntryId(), stmt->DeclsId(), stmt->ExitId());
1097 VisitStatements(stmt->statements()); 1087 VisitStatements(stmt->statements());
1098 __ bind(nested_block.break_label()); 1088 __ bind(nested_block.break_label());
1099 } 1089 }
1100 } 1090 }
1101 1091
1102 1092
1103 void FullCodeGenerator::VisitModuleStatement(ModuleStatement* stmt) { 1093 void FullCodeGenerator::VisitModuleStatement(ModuleStatement* stmt) {
1104 Comment cmnt(masm_, "[ Module context"); 1094 Comment cmnt(masm_, "[ Module context");
1105 1095
1106 __ Push(Smi::FromInt(stmt->proxy()->interface()->Index())); 1096 DCHECK(stmt->body()->scope()->is_module_scope());
1097
1098 __ Push(Smi::FromInt(stmt->body()->scope()->interface()->Index()));
1107 __ Push(Smi::FromInt(0)); 1099 __ Push(Smi::FromInt(0));
1108 __ CallRuntime(Runtime::kPushModuleContext, 2); 1100 __ CallRuntime(Runtime::kPushModuleContext, 2);
1109 StoreToFrameField( 1101 StoreToFrameField(
1110 StandardFrameConstants::kContextOffset, context_register()); 1102 StandardFrameConstants::kContextOffset, context_register());
1111 1103
1112 Scope* saved_scope = scope_; 1104 Scope* saved_scope = scope_;
1113 scope_ = stmt->body()->scope(); 1105 scope_ = stmt->body()->scope();
1114 VisitStatements(stmt->body()->statements()); 1106 VisitStatements(stmt->body()->statements());
1115 scope_ = saved_scope; 1107 scope_ = saved_scope;
1116 LoadContextField(context_register(), Context::PREVIOUS_INDEX); 1108 LoadContextField(context_register(), Context::PREVIOUS_INDEX);
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after
1845 } 1837 }
1846 codegen_->PrepareForBailoutForId(exit_id_, NO_REGISTERS); 1838 codegen_->PrepareForBailoutForId(exit_id_, NO_REGISTERS);
1847 codegen_->scope_ = saved_scope_; 1839 codegen_->scope_ = saved_scope_;
1848 } 1840 }
1849 1841
1850 1842
1851 #undef __ 1843 #undef __
1852 1844
1853 1845
1854 } } // namespace v8::internal 1846 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/contexts.cc ('k') | src/globals.h » ('j') | src/globals.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698