From d461a784b2696141a6a0f336b26d9dc2f17fb3b7 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Fri, 21 Oct 2022 19:43:42 +0530 Subject: 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 ``` --- ops/lib.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'ops/lib.rs') 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)) -- cgit v1.2.3