diff options
| author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-01-08 15:06:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-08 15:06:04 +0100 |
| commit | cbdf9c50095b86e72a8e0e715a02f6eb327f7c53 (patch) | |
| tree | e663acae0cbb3410090b2ac087a28ce57987a606 /core/bindings.rs | |
| parent | 8466460311ce3522d598def7155144b082b2b9ad (diff) | |
refactor: module loading in EsIsolate (#3615)
* refactored RecursiveLoad - it was renamed to RecursiveModuleLoad, it does not take ownership of isolate anymore - a struct implementing Stream that yields SourceCodeInfo
* untangled module loading logic between RecursiveLoad and isolate - that logic is encapsulated in EsIsolate and RecursiveModuleLoad, where isolate just consumes modules as they become available - does not require to pass Arc<Mutex<Isolate>> around anymore
* removed EsIsolate.mods_ in favor of Modules and moved them inside EsIsolate
* EsIsolate now requires "loader" argument during construction - struct that implements Loader trait
* rewrite first methods on isolate as async
Diffstat (limited to 'core/bindings.rs')
| -rw-r--r-- | core/bindings.rs | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/core/bindings.rs b/core/bindings.rs index ee78cf01d..72b51814a 100644 --- a/core/bindings.rs +++ b/core/bindings.rs @@ -1,7 +1,6 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. use crate::es_isolate::EsIsolate; -use crate::es_isolate::ResolveContext; use crate::isolate::DenoBuf; use crate::isolate::Isolate; use crate::isolate::PinnedBuf; @@ -283,7 +282,7 @@ pub extern "C" fn host_initialize_import_meta_object_callback( let id = module.get_identity_hash(); assert_ne!(id, 0); - let info = deno_isolate.get_module_info(id).expect("Module not found"); + let info = deno_isolate.modules.get_info(id).expect("Module not found"); meta.create_data_property( context, @@ -713,9 +712,12 @@ pub fn module_resolve_callback( let scope = hs.enter(); let referrer_id = referrer.get_identity_hash(); - let referrer_info = deno_isolate - .get_module_info(referrer_id) - .expect("ModuleInfo not found"); + let referrer_name = deno_isolate + .modules + .get_info(referrer_id) + .expect("ModuleInfo not found") + .name + .to_string(); let len_ = referrer.get_module_requests_length(); let specifier_str = specifier.to_rust_string_lossy(scope); @@ -725,15 +727,13 @@ pub fn module_resolve_callback( let req_str = req.to_rust_string_lossy(scope); if req_str == specifier_str { - let ResolveContext { resolve_fn } = - unsafe { ResolveContext::from_raw_ptr(deno_isolate.resolve_context) }; - let id = resolve_fn(&req_str, referrer_id); - let maybe_info = deno_isolate.get_module_info(id); + let id = deno_isolate.module_resolve_cb(&req_str, referrer_id); + let maybe_info = deno_isolate.modules.get_info(id); if maybe_info.is_none() { let msg = format!( "Cannot resolve module \"{}\" from \"{}\"", - req_str, referrer_info.name + req_str, referrer_name ); let msg = v8::String::new(scope, &msg).unwrap(); isolate.throw_exception(msg.into()); |
