Skip to content

Commit 6e46eb1

Browse files
joyeecheungtargos
authored andcommitted
bootstrap: support perf hooks in snapshot
PR-URL: #38971 Refs: #35711 Reviewed-By: James M Snell <[email protected]>
1 parent 7ea98fb commit 6e46eb1

File tree

5 files changed

+66
-5
lines changed

5 files changed

+66
-5
lines changed

Diff for: src/histogram.cc

+32-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#include "histogram.h" // NOLINT(build/include_inline)
2-
#include "histogram-inl.h"
32
#include "base_object-inl.h"
3+
#include "histogram-inl.h"
44
#include "memory_tracker-inl.h"
55
#include "node_errors.h"
6+
#include "node_external_reference.h"
7+
68
namespace node {
79

810
using v8::BigInt;
@@ -197,6 +199,21 @@ Local<FunctionTemplate> HistogramBase::GetConstructorTemplate(
197199
return tmpl;
198200
}
199201

202+
void HistogramBase::RegisterExternalReferences(
203+
ExternalReferenceRegistry* registry) {
204+
registry->Register(New);
205+
registry->Register(GetExceeds);
206+
registry->Register(GetMin);
207+
registry->Register(GetMax);
208+
registry->Register(GetMean);
209+
registry->Register(GetStddev);
210+
registry->Register(GetPercentile);
211+
registry->Register(GetPercentiles);
212+
registry->Register(DoReset);
213+
registry->Register(Record);
214+
registry->Register(RecordDelta);
215+
}
216+
200217
void HistogramBase::Initialize(Environment* env, Local<Object> target) {
201218
env->SetConstructorFunction(target, "Histogram", GetConstructorTemplate(env));
202219
}
@@ -240,6 +257,20 @@ Local<FunctionTemplate> IntervalHistogram::GetConstructorTemplate(
240257
return tmpl;
241258
}
242259

260+
void IntervalHistogram::RegisterExternalReferences(
261+
ExternalReferenceRegistry* registry) {
262+
registry->Register(GetExceeds);
263+
registry->Register(GetMin);
264+
registry->Register(GetMax);
265+
registry->Register(GetMean);
266+
registry->Register(GetStddev);
267+
registry->Register(GetPercentile);
268+
registry->Register(GetPercentiles);
269+
registry->Register(DoReset);
270+
registry->Register(Start);
271+
registry->Register(Stop);
272+
}
273+
243274
IntervalHistogram::IntervalHistogram(
244275
Environment* env,
245276
Local<Object> wrap,

Diff for: src/histogram.h

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
namespace node {
2020

21+
class ExternalReferenceRegistry;
22+
2123
constexpr int kDefaultHistogramFigures = 3;
2224

2325
class Histogram : public MemoryRetainer {
@@ -78,6 +80,7 @@ class HistogramBase : public BaseObject, public HistogramImpl {
7880
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
7981
Environment* env);
8082
static void Initialize(Environment* env, v8::Local<v8::Object> target);
83+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
8184

8285
static BaseObjectPtr<HistogramBase> Create(
8386
Environment* env,
@@ -154,6 +157,8 @@ class IntervalHistogram : public HandleWrap, public HistogramImpl {
154157
RESET
155158
};
156159

160+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
161+
157162
static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
158163
Environment* env);
159164

Diff for: src/node_external_reference.h

+1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ class ExternalReferenceRegistry {
6161
V(heap_utils) \
6262
V(messaging) \
6363
V(native_module) \
64+
V(performance) \
6465
V(process_methods) \
6566
V(process_object) \
6667
V(task_queue) \

Diff for: src/node_perf.cc

+23-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
#include "node_perf.h"
12
#include "aliased_buffer.h"
23
#include "env-inl.h"
34
#include "histogram-inl.h"
45
#include "memory_tracker-inl.h"
5-
#include "node_internals.h"
6-
#include "node_perf.h"
76
#include "node_buffer.h"
7+
#include "node_external_reference.h"
8+
#include "node_internals.h"
89
#include "node_process-inl.h"
910
#include "util-inl.h"
1011

@@ -250,6 +251,12 @@ void ELDHistogram::Initialize(Environment* env, Local<Object> target) {
250251
env->SetConstructorFunction(target, "ELDHistogram", tmpl);
251252
}
252253

254+
void ELDHistogram::RegisterExternalReferences(
255+
ExternalReferenceRegistry* registry) {
256+
registry->Register(New);
257+
IntervalHistogram::RegisterExternalReferences(registry);
258+
}
259+
253260
ELDHistogram::ELDHistogram(
254261
Environment* env,
255262
Local<Object> wrap,
@@ -364,7 +371,21 @@ void Initialize(Local<Object> target,
364371
ELDHistogram::Initialize(env, target);
365372
}
366373

374+
void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
375+
registry->Register(MarkMilestone);
376+
registry->Register(SetupPerformanceObservers);
377+
registry->Register(InstallGarbageCollectionTracking);
378+
registry->Register(RemoveGarbageCollectionTracking);
379+
registry->Register(Notify);
380+
registry->Register(LoopIdleTime);
381+
registry->Register(GetTimeOrigin);
382+
registry->Register(GetTimeOriginTimeStamp);
383+
HistogramBase::RegisterExternalReferences(registry);
384+
ELDHistogram::RegisterExternalReferences(registry);
385+
}
367386
} // namespace performance
368387
} // namespace node
369388

370389
NODE_MODULE_CONTEXT_AWARE_INTERNAL(performance, node::performance::Initialize)
390+
NODE_MODULE_EXTERNAL_REFERENCE(performance,
391+
node::performance::RegisterExternalReferences)

Diff for: src/node_perf.h

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33

44
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
55

6-
#include "node.h"
7-
#include "node_perf_common.h"
86
#include "base_object-inl.h"
97
#include "histogram.h"
8+
#include "node.h"
9+
#include "node_internals.h"
10+
#include "node_perf_common.h"
1011

1112
#include "v8.h"
1213
#include "uv.h"
@@ -16,6 +17,7 @@
1617
namespace node {
1718

1819
class Environment;
20+
class ExternalReferenceRegistry;
1921

2022
namespace performance {
2123

@@ -160,6 +162,7 @@ using GCPerformanceEntry = PerformanceEntry<GCPerformanceEntryTraits>;
160162

161163
class ELDHistogram : public IntervalHistogram {
162164
public:
165+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
163166
static void Initialize(Environment* env, v8::Local<v8::Object> target);
164167
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
165168

0 commit comments

Comments
 (0)