diff options
author | Matt Mastracci <matthew@mastracci.com> | 2023-03-17 16:15:27 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-17 22:15:27 +0000 |
commit | 3487fde236d0852a8b0672c293fa41a741f471e8 (patch) | |
tree | af466368147a08b787080446319a3a46a60ee37d /runtime/ops/worker_host.rs | |
parent | e55b448730160a6e4df9815a268d4049ac89deab (diff) |
perf(core) Reduce copying and cloning in extension initialization (#18252)
Follow-up to #18210:
* we are passing the generated `cfg` object into the state function
rather than passing individual config fields
* reduce cloning dramatically by making the state_fn `FnOnce`
* `take` for `ExtensionBuilder` to avoid more unnecessary copies
* renamed `config` to `options`
Diffstat (limited to 'runtime/ops/worker_host.rs')
-rw-r--r-- | runtime/ops/worker_host.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/runtime/ops/worker_host.rs b/runtime/ops/worker_host.rs index de7e02e18..26c99efab 100644 --- a/runtime/ops/worker_host.rs +++ b/runtime/ops/worker_host.rs @@ -96,27 +96,27 @@ deno_core::extension!( op_host_recv_ctrl, op_host_recv_message, ], - config = { + options = { create_web_worker_cb: Arc<CreateWebWorkerCb>, preload_module_cb: Arc<WorkerEventCb>, pre_execute_module_cb: Arc<WorkerEventCb>, format_js_error_fn: Option<Arc<FormatJsErrorFn>>, }, - state = |state, create_web_worker_cb, preload_module_cb, pre_execute_module_cb, format_js_error_fn| { + state = |state, options| { state.put::<WorkersTable>(WorkersTable::default()); state.put::<WorkerId>(WorkerId::default()); let create_web_worker_cb_holder = - CreateWebWorkerCbHolder(create_web_worker_cb.clone()); + CreateWebWorkerCbHolder(options.create_web_worker_cb); state.put::<CreateWebWorkerCbHolder>(create_web_worker_cb_holder); let preload_module_cb_holder = - PreloadModuleCbHolder(preload_module_cb.clone()); + PreloadModuleCbHolder(options.preload_module_cb); state.put::<PreloadModuleCbHolder>(preload_module_cb_holder); let pre_execute_module_cb_holder = - PreExecuteModuleCbHolder(pre_execute_module_cb.clone()); + PreExecuteModuleCbHolder(options.pre_execute_module_cb); state.put::<PreExecuteModuleCbHolder>(pre_execute_module_cb_holder); let format_js_error_fn_holder = - FormatJsErrorFnHolder(format_js_error_fn.clone()); + FormatJsErrorFnHolder(options.format_js_error_fn); state.put::<FormatJsErrorFnHolder>(format_js_error_fn_holder); } ); |