summaryrefslogtreecommitdiff
path: root/ext/node/lib.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-06-12 22:32:54 +0530
committerGitHub <noreply@github.com>2024-06-12 22:32:54 +0530
commit1d290ccc2a39d355aa0e43e86f5f4ce09a0bd655 (patch)
tree3d7e22728380f690135d5c3921b2828c0862b59b /ext/node/lib.rs
parent85e9a790c9873a042d22eb4cea24d195fd27334f (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.rs63
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 {