summaryrefslogtreecommitdiff
path: root/src/node_wasi.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/node_wasi.cc')
-rw-r--r--src/node_wasi.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/node_wasi.cc b/src/node_wasi.cc
index e9bcb42ad6..39669df490 100644
--- a/src/node_wasi.cc
+++ b/src/node_wasi.cc
@@ -1,6 +1,8 @@
#include "env-inl.h"
#include "base_object-inl.h"
#include "debug_utils.h"
+#include "memory_tracker-inl.h"
+#include "node_mem-inl.h"
#include "util-inl.h"
#include "node.h"
#include "uv.h"
@@ -85,14 +87,33 @@ WASI::WASI(Environment* env,
Local<Object> object,
uvwasi_options_t* options) : BaseObject(env, object) {
MakeWeak();
+ alloc_info_ = MakeAllocator();
+ options->allocator = &alloc_info_;
CHECK_EQ(uvwasi_init(&uvw_, options), UVWASI_ESUCCESS);
}
WASI::~WASI() {
uvwasi_destroy(&uvw_);
+ CHECK_EQ(current_uvwasi_memory_, 0);
}
+void WASI::MemoryInfo(MemoryTracker* tracker) const {
+ tracker->TrackField("memory", memory_);
+ tracker->TrackFieldWithSize("uvwasi_memory", current_uvwasi_memory_);
+}
+
+void WASI::CheckAllocatedSize(size_t previous_size) const {
+ CHECK_GE(current_uvwasi_memory_, previous_size);
+}
+
+void WASI::IncreaseAllocatedSize(size_t size) {
+ current_uvwasi_memory_ += size;
+}
+
+void WASI::DecreaseAllocatedSize(size_t size) {
+ current_uvwasi_memory_ -= size;
+}
void WASI::New(const FunctionCallbackInfo<Value>& args) {
CHECK(args.IsConstructCall());