Skip to content

Commit 52de4cb

Browse files
committed
src: minor updates to FastHrtime
- Don’t use 12 as a magic number for the buffer size - Mark the object as weak (which is conceptually the right thing to do, even if there is little practical impact) - Keep a reference to the `ArrayBuffer` in question for memory tracking PR-URL: #33851 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 2899588 commit 52de4cb

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

src/node_process_methods.cc

+15-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "base_object-inl.h"
22
#include "debug_utils-inl.h"
33
#include "env-inl.h"
4+
#include "memory_tracker-inl.h"
45
#include "node.h"
56
#include "node_errors.h"
67
#include "node_internals.h"
@@ -451,8 +452,10 @@ class FastHrtime : public BaseObject {
451452

452453
Local<Object> obj = otmpl->NewInstance(env->context()).ToLocalChecked();
453454

454-
Local<ArrayBuffer> ab = ArrayBuffer::New(env->isolate(), 12);
455-
new FastHrtime(env, obj, ab->GetBackingStore());
455+
Local<ArrayBuffer> ab =
456+
ArrayBuffer::New(env->isolate(),
457+
std::max(sizeof(uint64_t), sizeof(uint32_t) * 3));
458+
new FastHrtime(env, obj, ab);
456459
obj->Set(
457460
env->context(), FIXED_ONE_BYTE_STRING(env->isolate(), "buffer"), ab)
458461
.ToChecked();
@@ -463,11 +466,16 @@ class FastHrtime : public BaseObject {
463466
private:
464467
FastHrtime(Environment* env,
465468
Local<Object> object,
466-
std::shared_ptr<v8::BackingStore> backing_store)
467-
: BaseObject(env, object), backing_store_(backing_store) {}
468-
469-
void MemoryInfo(MemoryTracker* tracker) const override {}
469+
Local<ArrayBuffer> ab)
470+
: BaseObject(env, object),
471+
array_buffer_(env->isolate(), ab),
472+
backing_store_(ab->GetBackingStore()) {
473+
MakeWeak();
474+
}
470475

476+
void MemoryInfo(MemoryTracker* tracker) const override {
477+
tracker->TrackField("array_buffer", array_buffer_);
478+
}
471479
SET_MEMORY_INFO_NAME(FastHrtime)
472480
SET_SELF_SIZE(FastHrtime)
473481

@@ -502,6 +510,7 @@ class FastHrtime : public BaseObject {
502510
FastBigInt(FromJSObject<FastHrtime>(args.Holder()));
503511
}
504512

513+
v8::Global<ArrayBuffer> array_buffer_;
505514
std::shared_ptr<BackingStore> backing_store_;
506515
};
507516

0 commit comments

Comments
 (0)