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 /ops | |
| 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 'ops')
| -rw-r--r-- | ops/lib.rs | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/ops/lib.rs b/ops/lib.rs index 0794bdf33..8cd85f4f3 100644 --- a/ops/lib.rs +++ b/ops/lib.rs @@ -249,17 +249,15 @@ fn codegen_v8_async( #arg_decls - let state = ctx.state.clone(); - // Track async call & get copy of get_error_class_fn let get_class = { - let state = state.borrow(); + let state = ::std::cell::RefCell::borrow(&ctx.state); state.tracker.track_async(op_id); state.get_error_class_fn }; #pre_result - #core::_ops::queue_async_op(state, scope, #deferred, async move { + #core::_ops::queue_async_op(ctx, scope, #deferred, async move { let result = #result_fut #result_wrapper (promise_id, op_id, #core::_ops::to_op_result(get_class, result)) |
