summaryrefslogtreecommitdiff
path: root/core/runtime.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/runtime.rs')
-rw-r--r--core/runtime.rs56
1 files changed, 27 insertions, 29 deletions
diff --git a/core/runtime.rs b/core/runtime.rs
index 7ce9d3d09..5e76879e5 100644
--- a/core/runtime.rs
+++ b/core/runtime.rs
@@ -1242,40 +1242,21 @@ impl JsRuntime {
}
fn event_loop_pending_state(&mut self) -> EventLoopPendingState {
- let isolate = self.v8_isolate.as_mut().unwrap();
- let state = self.state.borrow_mut();
- let module_map = self.module_map.as_mut().unwrap().borrow();
-
- EventLoopPendingState {
- has_pending_refed_ops: state.pending_ops.len() > state.unrefed_ops.len(),
- has_pending_dyn_imports: module_map.has_pending_dynamic_imports(),
- has_pending_dyn_module_evaluation: !state
- .pending_dyn_mod_evaluate
- .is_empty(),
- has_pending_module_evaluation: state.pending_mod_evaluate.is_some(),
- has_pending_background_tasks: isolate.has_pending_background_tasks(),
- has_tick_scheduled: state.has_tick_scheduled,
- }
+ EventLoopPendingState::new(
+ self.v8_isolate.as_mut().unwrap(),
+ &mut self.state.borrow_mut(),
+ &self.module_map.as_ref().unwrap().borrow(),
+ )
}
pub(crate) fn event_loop_pending_state_from_isolate(
isolate: &mut v8::Isolate,
) -> EventLoopPendingState {
- let state_rc = Self::state(isolate);
- let module_map_rc = Self::module_map(isolate);
- let state = state_rc.borrow_mut();
- let module_map = module_map_rc.borrow();
-
- EventLoopPendingState {
- has_pending_refed_ops: state.pending_ops.len() > state.unrefed_ops.len(),
- has_pending_dyn_imports: module_map.has_pending_dynamic_imports(),
- has_pending_dyn_module_evaluation: !state
- .pending_dyn_mod_evaluate
- .is_empty(),
- has_pending_module_evaluation: state.pending_mod_evaluate.is_some(),
- has_pending_background_tasks: isolate.has_pending_background_tasks(),
- has_tick_scheduled: state.has_tick_scheduled,
- }
+ EventLoopPendingState::new(
+ isolate,
+ &mut Self::state(isolate).borrow_mut(),
+ &Self::module_map(isolate).borrow(),
+ )
}
}
@@ -1342,6 +1323,23 @@ pub(crate) struct EventLoopPendingState {
has_tick_scheduled: bool,
}
impl EventLoopPendingState {
+ pub fn new(
+ isolate: &mut v8::Isolate,
+ state: &mut JsRuntimeState,
+ module_map: &ModuleMap,
+ ) -> EventLoopPendingState {
+ EventLoopPendingState {
+ has_pending_refed_ops: state.pending_ops.len() > state.unrefed_ops.len(),
+ has_pending_dyn_imports: module_map.has_pending_dynamic_imports(),
+ has_pending_dyn_module_evaluation: !state
+ .pending_dyn_mod_evaluate
+ .is_empty(),
+ has_pending_module_evaluation: state.pending_mod_evaluate.is_some(),
+ has_pending_background_tasks: isolate.has_pending_background_tasks(),
+ has_tick_scheduled: state.has_tick_scheduled,
+ }
+ }
+
pub fn is_pending(&self) -> bool {
self.has_pending_refed_ops
|| self.has_pending_dyn_imports