summaryrefslogtreecommitdiff
path: root/core/bindings.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-01-08 15:06:04 +0100
committerGitHub <noreply@github.com>2020-01-08 15:06:04 +0100
commitcbdf9c50095b86e72a8e0e715a02f6eb327f7c53 (patch)
treee663acae0cbb3410090b2ac087a28ce57987a606 /core/bindings.rs
parent8466460311ce3522d598def7155144b082b2b9ad (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.rs20
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());