diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-10-21 19:43:42 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-21 19:43:42 +0530 |
commit | d461a784b2696141a6a0f336b26d9dc2f17fb3b7 (patch) | |
tree | 32084623c2d6ac9254177a1551b7b2e944c2b700 /core/ops.rs | |
parent | 0f27b84a5caa10d9056b7a4f9eace3771f8ea114 (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.rs | 3 |
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. |