summaryrefslogtreecommitdiff
path: root/core/ops.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2022-10-21 19:43:42 +0530
committerGitHub <noreply@github.com>2022-10-21 19:43:42 +0530
commitd461a784b2696141a6a0f336b26d9dc2f17fb3b7 (patch)
tree32084623c2d6ac9254177a1551b7b2e944c2b700 /core/ops.rs
parent0f27b84a5caa10d9056b7a4f9eace3771f8ea114 (diff)
perf(core): don't access isolate slots for JsRuntimeState (#16376)
example writeFile benchmark: ``` # before time 188 ms rate 53191 time 168 ms rate 59523 time 167 ms rate 59880 time 166 ms rate 60240 time 168 ms rate 59523 time 173 ms rate 57803 time 183 ms rate 54644 # after time 157 ms rate 63694 time 152 ms rate 65789 time 151 ms rate 66225 time 151 ms rate 66225 time 152 ms rate 65789 ```
Diffstat (limited to 'core/ops.rs')
-rw-r--r--core/ops.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/core/ops.rs b/core/ops.rs
index 59c55957b..b339b7d01 100644
--- a/core/ops.rs
+++ b/core/ops.rs
@@ -4,6 +4,7 @@ use crate::error::AnyError;
use crate::gotham_state::GothamState;
use crate::resources::ResourceTable;
use crate::runtime::GetErrorClassFn;
+use crate::runtime::JsRuntimeState;
use crate::OpDecl;
use crate::OpsTracker;
use anyhow::Error;
@@ -19,6 +20,7 @@ use std::ops::Deref;
use std::ops::DerefMut;
use std::pin::Pin;
use std::rc::Rc;
+use std::rc::Weak;
use std::task::Context;
use std::task::Poll;
@@ -152,6 +154,7 @@ pub struct OpCtx {
pub id: OpId,
pub state: Rc<RefCell<OpState>>,
pub decl: OpDecl,
+ pub runtime_state: Weak<RefCell<JsRuntimeState>>,
}
/// Maintains the resources and ops inside a JS runtime.