diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-06-12 22:32:54 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-12 22:32:54 +0530 |
commit | 1d290ccc2a39d355aa0e43e86f5f4ce09a0bd655 (patch) | |
tree | 3d7e22728380f690135d5c3921b2828c0862b59b /ext/node/lib.rs | |
parent | 85e9a790c9873a042d22eb4cea24d195fd27334f (diff) |
fix(ext/node): fix vm memory usage and context initialization (#23976)
Fixes https://github.com/denoland/deno/issues/22441
Fixes https://github.com/denoland/deno/issues/23913
Fixes https://github.com/denoland/deno/issues/23852
Fixes https://github.com/denoland/deno/issues/23917
Diffstat (limited to 'ext/node/lib.rs')
-rw-r--r-- | ext/node/lib.rs | 63 |
1 files changed, 62 insertions, 1 deletions
diff --git a/ext/node/lib.rs b/ext/node/lib.rs index 094bea3ae..8a20b3109 100644 --- a/ext/node/lib.rs +++ b/ext/node/lib.rs @@ -35,6 +35,10 @@ mod resolution; pub use ops::ipc::ChildPipeFd; pub use ops::ipc::IpcJsonStreamResource; pub use ops::v8::VM_CONTEXT_INDEX; +use ops::vm; +pub use ops::vm::create_v8_context; +pub use ops::vm::init_global_template; +pub use ops::vm::ContextInitMode; pub use package_json::PackageJson; pub use path::PathClean; pub use polyfill::is_builtin_node_module; @@ -641,7 +645,64 @@ deno_core::extension!(deno_node, global_template_middleware = global_template_middleware, global_object_middleware = global_object_middleware, customizer = |ext: &mut deno_core::Extension| { - let mut external_references = Vec::with_capacity(7); + let mut external_references = Vec::with_capacity(14); + + vm::GETTER_MAP_FN.with(|getter| { + external_references.push(ExternalReference { + named_getter: *getter, + }); + }); + vm::SETTER_MAP_FN.with(|setter| { + external_references.push(ExternalReference { + named_setter: *setter, + }); + }); + vm::DELETER_MAP_FN.with(|deleter| { + external_references.push(ExternalReference { + named_getter: *deleter, + },); + }); + vm::ENUMERATOR_MAP_FN.with(|enumerator| { + external_references.push(ExternalReference { + enumerator: *enumerator, + }); + }); + vm::DEFINER_MAP_FN.with(|definer| { + external_references.push(ExternalReference { + named_definer: *definer, + }); + }); + vm::DESCRIPTOR_MAP_FN.with(|descriptor| { + external_references.push(ExternalReference { + named_getter: *descriptor, + }); + }); + + vm::INDEXED_GETTER_MAP_FN.with(|getter| { + external_references.push(ExternalReference { + indexed_getter: *getter, + }); + }); + vm::INDEXED_SETTER_MAP_FN.with(|setter| { + external_references.push(ExternalReference { + indexed_setter: *setter, + }); + }); + vm::INDEXED_DELETER_MAP_FN.with(|deleter| { + external_references.push(ExternalReference { + indexed_getter: *deleter, + }); + }); + vm::INDEXED_DEFINER_MAP_FN.with(|definer| { + external_references.push(ExternalReference { + indexed_definer: *definer, + }); + }); + vm::INDEXED_DESCRIPTOR_MAP_FN.with(|descriptor| { + external_references.push(ExternalReference { + indexed_getter: *descriptor, + }); + }); global::GETTER_MAP_FN.with(|getter| { external_references.push(ExternalReference { |