summaryrefslogtreecommitdiff
path: root/src/env.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/env.cc')
-rw-r--r--src/env.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/env.cc b/src/env.cc
index 257bf78519..2400785ea8 100644
--- a/src/env.cc
+++ b/src/env.cc
@@ -1036,6 +1036,21 @@ char* Environment::Reallocate(char* data, size_t old_size, size_t size) {
return new_data;
}
+void Environment::AddArrayBufferAllocatorToKeepAliveUntilIsolateDispose(
+ std::shared_ptr<v8::ArrayBuffer::Allocator> allocator) {
+ if (keep_alive_allocators_ == nullptr) {
+ MultiIsolatePlatform* platform = isolate_data()->platform();
+ CHECK_NOT_NULL(platform);
+
+ keep_alive_allocators_ = new ArrayBufferAllocatorList();
+ platform->AddIsolateFinishedCallback(isolate(), [](void* data) {
+ delete static_cast<ArrayBufferAllocatorList*>(data);
+ }, static_cast<void*>(keep_alive_allocators_));
+ }
+
+ keep_alive_allocators_->insert(allocator);
+}
+
void AsyncRequest::Install(Environment* env, void* data, uv_async_cb target) {
CHECK_NULL(async_);
env_ = env;