summaryrefslogtreecommitdiff
path: root/core/es_isolate.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-04-26 19:00:10 +0200
committerGitHub <noreply@github.com>2020-04-26 19:00:10 +0200
commitf7d1f82796ac49c43d5a0075f86cfd8f83d83889 (patch)
tree1a5dc3366aaf862f17ae33f3d68d1fdb23948eff /core/es_isolate.rs
parentfe6a6704541563bcc3b7cff03359356bb88a560c (diff)
core: add id field to RecursiveModuleLoad (#4905)
This commit unifies handling of ids for main module/dynamic import loads in EsIsolate.
Diffstat (limited to 'core/es_isolate.rs')
-rw-r--r--core/es_isolate.rs16
1 files changed, 7 insertions, 9 deletions
diff --git a/core/es_isolate.rs b/core/es_isolate.rs
index 8b6f6fb30..4b5fd58ba 100644
--- a/core/es_isolate.rs
+++ b/core/es_isolate.rs
@@ -37,7 +37,7 @@ use crate::modules::Modules;
use crate::modules::RecursiveModuleLoad;
pub type ModuleId = i32;
-pub type DynImportId = i32;
+pub type ModuleLoadId = i32;
/// More specialized version of `CoreIsolate` that provides loading
/// and execution of ES Modules.
@@ -49,9 +49,8 @@ pub struct EsIsolate {
core_isolate: Box<CoreIsolate>,
loader: Rc<dyn ModuleLoader>,
pub modules: Modules,
- pub(crate) next_dyn_import_id: DynImportId,
pub(crate) dyn_import_map:
- HashMap<DynImportId, v8::Global<v8::PromiseResolver>>,
+ HashMap<ModuleLoadId, v8::Global<v8::PromiseResolver>>,
pending_dyn_imports: FuturesUnordered<StreamFuture<RecursiveModuleLoad>>,
waker: AtomicWaker,
@@ -92,7 +91,6 @@ impl EsIsolate {
modules: Modules::new(),
loader,
core_isolate,
- next_dyn_import_id: 0,
dyn_import_map: HashMap::new(),
pending_dyn_imports: FuturesUnordered::new(),
waker: AtomicWaker::new(),
@@ -278,25 +276,25 @@ impl EsIsolate {
// Called by V8 during `Isolate::mod_instantiate`.
pub fn dyn_import_cb(
&mut self,
+ resolver_handle: v8::Global<v8::PromiseResolver>,
specifier: &str,
referrer: &str,
- id: DynImportId,
) {
debug!("dyn_import specifier {} referrer {} ", specifier, referrer);
let load = RecursiveModuleLoad::dynamic_import(
- id,
specifier,
referrer,
self.loader.clone(),
);
+ self.dyn_import_map.insert(load.id, resolver_handle);
self.waker.wake();
self.pending_dyn_imports.push(load.into_future());
}
fn dyn_import_error(
&mut self,
- id: DynImportId,
+ id: ModuleLoadId,
err: ErrBox,
) -> Result<(), ErrBox> {
let core_isolate = &mut self.core_isolate;
@@ -331,7 +329,7 @@ impl EsIsolate {
fn dyn_import_done(
&mut self,
- id: DynImportId,
+ id: ModuleLoadId,
mod_id: ModuleId,
) -> Result<(), ErrBox> {
debug!("dyn_import_done {} {:?}", id, mod_id);
@@ -373,7 +371,7 @@ impl EsIsolate {
Poll::Ready(Some(load_stream_poll)) => {
let maybe_result = load_stream_poll.0;
let mut load = load_stream_poll.1;
- let dyn_import_id = load.dyn_import_id.unwrap();
+ let dyn_import_id = load.id;
if let Some(load_stream_result) = maybe_result {
match load_stream_result {