summaryrefslogtreecommitdiff
path: root/core/runtime.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/runtime.rs')
-rw-r--r--core/runtime.rs39
1 files changed, 16 insertions, 23 deletions
diff --git a/core/runtime.rs b/core/runtime.rs
index 918049013..5f89fbdee 100644
--- a/core/runtime.rs
+++ b/core/runtime.rs
@@ -453,17 +453,16 @@ impl JsRuntime {
match scope.get_context_data_from_snapshot_once::<v8::Object>(0) {
Ok(val) => {
let next_module_id = {
- let next_module_id_str =
- v8::String::new(&mut scope, "next_module_id").unwrap();
- let next_module_id =
- val.get(&mut scope, next_module_id_str.into()).unwrap();
- assert!(next_module_id.is_int32());
- let integer = next_module_id.to_integer(&mut scope).unwrap();
- integer.int32_value(&mut scope).unwrap()
+ let info_str = v8::String::new(&mut scope, "info").unwrap();
+ let info_data: v8::Local<v8::Array> = val
+ .get(&mut scope, info_str.into())
+ .unwrap()
+ .try_into()
+ .unwrap();
+ info_data.length()
};
- let no_of_modules = next_module_id - 1;
- for i in 1..=no_of_modules {
+ for i in 1..=next_module_id {
match scope
.get_context_data_from_snapshot_once::<v8::Module>(i as usize)
{
@@ -1411,7 +1410,7 @@ fn get_stalled_top_level_await_message_for_module(
) -> Vec<v8::Global<v8::Message>> {
let module_map = JsRuntime::module_map(scope);
let module_map = module_map.borrow();
- let module_handle = module_map.handles_by_id.get(&module_id).unwrap();
+ let module_handle = module_map.handles.get(module_id).unwrap();
let module = v8::Local::new(scope, module_handle);
let stalled = module.get_stalled_top_level_await_message(scope);
@@ -1431,7 +1430,7 @@ fn find_stalled_top_level_await(
// First check if that's root module
let root_module_id = module_map
.info
- .values()
+ .iter()
.filter(|m| m.main)
.map(|m| m.id)
.next();
@@ -1446,8 +1445,7 @@ fn find_stalled_top_level_await(
// It wasn't a top module, so iterate over all modules and try to find
// any with stalled top level await
- let module_ids = module_map.handles_by_id.keys().copied().collect::<Vec<_>>();
- for module_id in module_ids {
+ for module_id in 0..module_map.handles.len() {
let messages =
get_stalled_top_level_await_message_for_module(scope, module_id);
if !messages.is_empty() {
@@ -3570,7 +3568,7 @@ pub mod tests {
)
.unwrap()
};
- assert_eq!(i + 1, id as usize);
+ assert_eq!(i, id);
let _ = runtime.mod_evaluate(id);
futures::executor::block_on(runtime.run_event_loop(false)).unwrap();
@@ -3590,20 +3588,15 @@ pub mod tests {
fn assert_module_map(runtime: &mut JsRuntime, modules: &Vec<ModuleInfo>) {
let module_map_rc = runtime.get_module_map();
let module_map = module_map_rc.borrow();
- assert_eq!(module_map.ids_by_handle.len(), modules.len());
- assert_eq!(module_map.handles_by_id.len(), modules.len());
+ assert_eq!(module_map.handles.len(), modules.len());
assert_eq!(module_map.info.len(), modules.len());
assert_eq!(module_map.by_name.len(), modules.len());
- assert_eq!(module_map.next_module_id, (modules.len() + 1) as ModuleId);
- assert_eq!(module_map.next_load_id, (modules.len() + 1) as ModuleId);
-
- let ids_by_handle = module_map.ids_by_handle.values().collect::<Vec<_>>();
+ assert_eq!(module_map.next_load_id, (modules.len() + 1) as ModuleLoadId);
for info in modules {
- assert!(ids_by_handle.contains(&&info.id));
- assert!(module_map.handles_by_id.contains_key(&info.id));
- assert_eq!(module_map.info.get(&info.id).unwrap(), info);
+ assert!(module_map.handles.get(info.id).is_some());
+ assert_eq!(module_map.info.get(info.id).unwrap(), info);
assert_eq!(
module_map
.by_name