OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 <stdlib.h> | 5 #include <stdlib.h> |
6 | 6 |
7 #include "src/ast/context-slot-cache.h" | 7 #include "src/ast/context-slot-cache.h" |
8 #include "src/ast/scopes.h" | 8 #include "src/ast/scopes.h" |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 | 10 |
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 } | 412 } |
413 | 413 |
414 | 414 |
415 String* ScopeInfo::FunctionName() { | 415 String* ScopeInfo::FunctionName() { |
416 DCHECK(HasFunctionName()); | 416 DCHECK(HasFunctionName()); |
417 return String::cast(get(FunctionNameEntryIndex())); | 417 return String::cast(get(FunctionNameEntryIndex())); |
418 } | 418 } |
419 | 419 |
420 ModuleInfo* ScopeInfo::ModuleDescriptorInfo() { | 420 ModuleInfo* ScopeInfo::ModuleDescriptorInfo() { |
421 DCHECK(scope_type() == MODULE_SCOPE); | 421 DCHECK(scope_type() == MODULE_SCOPE); |
422 return static_cast<ModuleInfo*>(get(ModuleInfoEntryIndex())); | 422 return ModuleInfo::cast(get(ModuleInfoEntryIndex())); |
423 } | 423 } |
424 | 424 |
425 String* ScopeInfo::ParameterName(int var) { | 425 String* ScopeInfo::ParameterName(int var) { |
426 DCHECK_LE(0, var); | 426 DCHECK_LE(0, var); |
427 DCHECK_LT(var, ParameterCount()); | 427 DCHECK_LT(var, ParameterCount()); |
428 int info_index = ParameterEntriesIndex() + var; | 428 int info_index = ParameterEntriesIndex() + var; |
429 return String::cast(get(info_index)); | 429 return String::cast(get(info_index)); |
430 } | 430 } |
431 | 431 |
432 | 432 |
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
711 if (length() > 0) { | 711 if (length() > 0) { |
712 PrintList("parameters", 0, ParameterEntriesIndex(), | 712 PrintList("parameters", 0, ParameterEntriesIndex(), |
713 ParameterEntriesIndex() + ParameterCount(), this); | 713 ParameterEntriesIndex() + ParameterCount(), this); |
714 PrintList("stack slots", 0, StackLocalEntriesIndex(), | 714 PrintList("stack slots", 0, StackLocalEntriesIndex(), |
715 StackLocalEntriesIndex() + StackLocalCount(), this); | 715 StackLocalEntriesIndex() + StackLocalCount(), this); |
716 PrintList("context slots", Context::MIN_CONTEXT_SLOTS, | 716 PrintList("context slots", Context::MIN_CONTEXT_SLOTS, |
717 ContextLocalNameEntriesIndex(), | 717 ContextLocalNameEntriesIndex(), |
718 ContextLocalNameEntriesIndex() + ContextLocalCount(), this); | 718 ContextLocalNameEntriesIndex() + ContextLocalCount(), this); |
719 } | 719 } |
720 | 720 |
| 721 // XXX never called for module scopes |
| 722 |
721 PrintF("}\n"); | 723 PrintF("}\n"); |
722 } | 724 } |
723 #endif // DEBUG | 725 #endif // DEBUG |
724 | 726 |
| 727 Handle<ModuleInfoEntry> ModuleInfoEntry::New(Isolate* isolate, |
| 728 Handle<Object> export_name, |
| 729 Handle<Object> local_name, |
| 730 Handle<Object> import_name, |
| 731 Handle<Object> module_request) { |
| 732 Handle<ModuleInfoEntry> result = isolate->factory()->NewModuleInfoEntry(); |
| 733 result->set(kExportNameIndex, *export_name); |
| 734 result->set(kLocalNameIndex, *local_name); |
| 735 result->set(kImportNameIndex, *import_name); |
| 736 result->set(kModuleRequestIndex, *module_request); |
| 737 return result; |
| 738 } |
| 739 |
725 Handle<ModuleInfo> ModuleInfo::New(Isolate* isolate, ModuleDescriptor* descr) { | 740 Handle<ModuleInfo> ModuleInfo::New(Isolate* isolate, ModuleDescriptor* descr) { |
726 // Serialize special exports. | 741 // Serialize special exports. |
727 Handle<FixedArray> special_exports = | 742 Handle<FixedArray> special_exports = |
728 isolate->factory()->NewFixedArray(descr->special_exports().length()); | 743 isolate->factory()->NewFixedArray(descr->special_exports().length()); |
729 { | 744 { |
730 int i = 0; | 745 int i = 0; |
731 for (auto entry : descr->special_exports()) { | 746 for (auto entry : descr->special_exports()) { |
732 special_exports->set(i++, *entry->Serialize(isolate)); | 747 special_exports->set(i++, *entry->Serialize(isolate)); |
733 } | 748 } |
734 } | 749 } |
735 | 750 |
736 // Serialize regular exports. | 751 // Serialize regular exports. |
737 Handle<FixedArray> regular_exports = isolate->factory()->NewFixedArray( | 752 Handle<FixedArray> regular_exports = isolate->factory()->NewFixedArray( |
738 static_cast<int>(descr->regular_exports().size())); | 753 static_cast<int>(descr->regular_exports().size())); |
739 { | 754 { |
740 int i = 0; | 755 int i = 0; |
741 for (const auto& it : descr->regular_exports()) { | 756 for (const auto& it : descr->regular_exports()) { |
742 regular_exports->set(i++, *it.second->Serialize(isolate)); | 757 regular_exports->set(i++, *it.second->Serialize(isolate)); |
743 } | 758 } |
744 } | 759 } |
745 | 760 |
746 Handle<ModuleInfo> result = isolate->factory()->NewModuleInfo(); | 761 Handle<ModuleInfo> result = isolate->factory()->NewModuleInfo(); |
747 result->set(kSpecialExportsIndex, *special_exports); | 762 result->set(kSpecialExportsIndex, *special_exports); |
748 result->set(kRegularExportsIndex, *regular_exports); | 763 result->set(kRegularExportsIndex, *regular_exports); |
749 return result; | 764 return result; |
750 } | 765 } |
751 | 766 |
752 } // namespace internal | 767 } // namespace internal |
753 } // namespace v8 | 768 } // namespace v8 |
OLD | NEW |