summaryrefslogtreecommitdiff
path: root/src/node_perf.cc
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2019-01-22 23:07:04 +0100
committerAnna Henningsen <anna@addaleax.net>2019-01-28 01:45:12 +0100
commitacc5a86efe241b52a2e0bf8c6b1ba886213cf9f0 (patch)
tree668750b4809acb224c611c88da7b4aa2b5df69a8 /src/node_perf.cc
parente3e404858d5fb1ae0b50a45f0d1678235f200de0 (diff)
downloadandroid-node-v8-acc5a86efe241b52a2e0bf8c6b1ba886213cf9f0.tar.gz
android-node-v8-acc5a86efe241b52a2e0bf8c6b1ba886213cf9f0.tar.bz2
android-node-v8-acc5a86efe241b52a2e0bf8c6b1ba886213cf9f0.zip
perf_hooks: clean up GC listeners
Add Environment cleanup hooks to remove GC listeners when the `Environment` is torn down. PR-URL: https://github.com/nodejs/node/pull/25647 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src/node_perf.cc')
-rw-r--r--src/node_perf.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/node_perf.cc b/src/node_perf.cc
index 45d66ad591..b3bbc16a3e 100644
--- a/src/node_perf.cc
+++ b/src/node_perf.cc
@@ -296,6 +296,11 @@ inline void SetupGarbageCollectionTracking(Environment* env) {
static_cast<void*>(env));
env->isolate()->AddGCEpilogueCallback(MarkGarbageCollectionEnd,
static_cast<void*>(env));
+ env->AddCleanupHook([](void* data) {
+ Environment* env = static_cast<Environment*>(data);
+ env->isolate()->RemoveGCPrologueCallback(MarkGarbageCollectionStart, data);
+ env->isolate()->RemoveGCEpilogueCallback(MarkGarbageCollectionEnd, data);
+ }, env);
}
// Gets the name of a function