OLD | NEW |
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/api.h" | 5 #include "src/api.h" |
6 | 6 |
7 #include <string.h> // For memcpy, strlen. | 7 #include <string.h> // For memcpy, strlen. |
8 #ifdef V8_USE_ADDRESS_SANITIZER | 8 #ifdef V8_USE_ADDRESS_SANITIZER |
9 #include <sanitizer/asan_interface.h> | 9 #include <sanitizer/asan_interface.h> |
10 #endif // V8_USE_ADDRESS_SANITIZER | 10 #endif // V8_USE_ADDRESS_SANITIZER |
(...skipping 2030 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2041 | 2041 |
2042 MaybeLocal<Module> ScriptCompiler::CompileModule(Isolate* isolate, | 2042 MaybeLocal<Module> ScriptCompiler::CompileModule(Isolate* isolate, |
2043 Source* source) { | 2043 Source* source) { |
2044 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); | 2044 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
2045 | 2045 |
2046 auto maybe = CompileUnboundInternal(isolate, source, kNoCompileOptions, true); | 2046 auto maybe = CompileUnboundInternal(isolate, source, kNoCompileOptions, true); |
2047 Local<UnboundScript> unbound; | 2047 Local<UnboundScript> unbound; |
2048 if (!maybe.ToLocal(&unbound)) return MaybeLocal<Module>(); | 2048 if (!maybe.ToLocal(&unbound)) return MaybeLocal<Module>(); |
2049 | 2049 |
2050 i::Handle<i::SharedFunctionInfo> shared = Utils::OpenHandle(*unbound); | 2050 i::Handle<i::SharedFunctionInfo> shared = Utils::OpenHandle(*unbound); |
2051 i::Handle<i::FixedArray> regular_exports = | 2051 i::Handle<i::Module> module = i_isolate->factory()->NewModule(shared); |
2052 i::handle(shared->scope_info()->ModuleDescriptorInfo()->regular_exports(), | |
2053 i_isolate); | |
2054 int regular_exports_length = regular_exports->length(); | |
2055 | |
2056 i::Handle<i::Module> module = | |
2057 i_isolate->factory()->NewModule(shared, regular_exports_length); | |
2058 | 2052 |
2059 // TODO(neis): This will create multiple cells for the same local variable if | 2053 // TODO(neis): This will create multiple cells for the same local variable if |
2060 // exported under multiple names, which is wrong but cannot be observed at the | 2054 // exported under multiple names, which is wrong but cannot be observed at the |
2061 // moment. This will be fixed by doing the full-fledged linking here once we | 2055 // moment. This will be fixed by doing the full-fledged linking here once we |
2062 // get there. | 2056 // get there. |
2063 for (int i = 0; i < regular_exports_length; ++i) { | 2057 i::Handle<i::FixedArray> regular_exports = |
| 2058 i::handle(shared->scope_info()->ModuleDescriptorInfo()->regular_exports(), |
| 2059 i_isolate); |
| 2060 for (int i = 0, length = regular_exports->length(); i < length; ++i) { |
2064 i::Handle<i::ModuleInfoEntry> entry = | 2061 i::Handle<i::ModuleInfoEntry> entry = |
2065 i::handle(i::ModuleInfoEntry::cast(regular_exports->get(i)), i_isolate); | 2062 i::handle(i::ModuleInfoEntry::cast(regular_exports->get(i)), i_isolate); |
2066 DCHECK(entry->import_name()->IsUndefined(i_isolate)); | 2063 DCHECK(entry->import_name()->IsUndefined(i_isolate)); |
2067 i::Handle<i::String> export_name = | 2064 i::Handle<i::String> export_name = |
2068 handle(i::String::cast(entry->export_name()), i_isolate); | 2065 handle(i::String::cast(entry->export_name()), i_isolate); |
2069 i::Module::CreateExport(module, export_name); | 2066 i::Module::CreateExport(module, export_name); |
2070 } | 2067 } |
2071 | 2068 |
2072 return ToApiHandle<Module>(module); | 2069 return ToApiHandle<Module>(module); |
2073 } | 2070 } |
(...skipping 7298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9372 Address callback_address = | 9369 Address callback_address = |
9373 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 9370 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
9374 VMState<EXTERNAL> state(isolate); | 9371 VMState<EXTERNAL> state(isolate); |
9375 ExternalCallbackScope call_scope(isolate, callback_address); | 9372 ExternalCallbackScope call_scope(isolate, callback_address); |
9376 callback(info); | 9373 callback(info); |
9377 } | 9374 } |
9378 | 9375 |
9379 | 9376 |
9380 } // namespace internal | 9377 } // namespace internal |
9381 } // namespace v8 | 9378 } // namespace v8 |
OLD | NEW |