OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/factory.h" | 5 #include "src/factory.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/allocation-site-scopes.h" | 8 #include "src/allocation-site-scopes.h" |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 1741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1752 Handle<Module> Factory::NewModule(Handle<SharedFunctionInfo> code) { | 1752 Handle<Module> Factory::NewModule(Handle<SharedFunctionInfo> code) { |
1753 Handle<ModuleInfo> module_info(code->scope_info()->ModuleDescriptorInfo(), | 1753 Handle<ModuleInfo> module_info(code->scope_info()->ModuleDescriptorInfo(), |
1754 isolate()); | 1754 isolate()); |
1755 Handle<ObjectHashTable> exports = | 1755 Handle<ObjectHashTable> exports = |
1756 ObjectHashTable::New(isolate(), module_info->regular_exports()->length()); | 1756 ObjectHashTable::New(isolate(), module_info->regular_exports()->length()); |
1757 int requested_modules_length = module_info->module_requests()->length(); | 1757 int requested_modules_length = module_info->module_requests()->length(); |
1758 Handle<FixedArray> requested_modules = | 1758 Handle<FixedArray> requested_modules = |
1759 requested_modules_length > 0 ? NewFixedArray(requested_modules_length) | 1759 requested_modules_length > 0 ? NewFixedArray(requested_modules_length) |
1760 : empty_fixed_array(); | 1760 : empty_fixed_array(); |
1761 | 1761 |
| 1762 // To make it easy to hash Modules, we set a new symbol as the name of |
| 1763 // SharedFunctionInfo representing this Module. |
| 1764 Handle<Symbol> name_symbol = NewSymbol(); |
| 1765 code->set_name(*name_symbol); |
| 1766 |
1762 Handle<Module> module = Handle<Module>::cast(NewStruct(MODULE_TYPE)); | 1767 Handle<Module> module = Handle<Module>::cast(NewStruct(MODULE_TYPE)); |
1763 module->set_code(*code); | 1768 module->set_code(*code); |
1764 module->set_exports(*exports); | 1769 module->set_exports(*exports); |
1765 module->set_requested_modules(*requested_modules); | 1770 module->set_requested_modules(*requested_modules); |
1766 module->set_flags(0); | 1771 module->set_flags(0); |
1767 module->set_embedder_data(isolate()->heap()->undefined_value()); | 1772 module->set_embedder_data(isolate()->heap()->undefined_value()); |
1768 return module; | 1773 return module; |
1769 } | 1774 } |
1770 | 1775 |
1771 Handle<JSArrayBuffer> Factory::NewJSArrayBuffer(SharedFlag shared, | 1776 Handle<JSArrayBuffer> Factory::NewJSArrayBuffer(SharedFlag shared, |
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2599 Handle<AccessorInfo> prototype = | 2604 Handle<AccessorInfo> prototype = |
2600 Accessors::FunctionPrototypeInfo(isolate(), attribs); | 2605 Accessors::FunctionPrototypeInfo(isolate(), attribs); |
2601 AccessorConstantDescriptor d(Handle<Name>(Name::cast(prototype->name())), | 2606 AccessorConstantDescriptor d(Handle<Name>(Name::cast(prototype->name())), |
2602 prototype, attribs); | 2607 prototype, attribs); |
2603 map->AppendDescriptor(&d); | 2608 map->AppendDescriptor(&d); |
2604 } | 2609 } |
2605 } | 2610 } |
2606 | 2611 |
2607 } // namespace internal | 2612 } // namespace internal |
2608 } // namespace v8 | 2613 } // namespace v8 |
OLD | NEW |