From 23b075d051acf16711de40cb248bf142ab297d47 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Tue, 19 Feb 2019 18:37:58 +0100 Subject: [PATCH] deps: V8: cherry-pick d3308d0 Original commit message: [api] Add `Isolate::GetArrayBufferAllocator()` This allows non-monolithic embedders to always allocate memory for ArrayBuffer instances using the right allocation method. This is based on a patch that Electron is currently using. Refs: https://github.com/electron/electron/blob/1898f9162073910c05958295c612deec6121a892/patches/common/v8/array_buffer.patch Change-Id: I39a614343118a0594aab48699a99cc2aad5b7ba9 Reviewed-on: https://chromium-review.googlesource.com/c/1462003 Reviewed-by: Yang Guo Commit-Queue: Yang Guo Cr-Commit-Position: refs/heads/master@{#59697} Refs: https://github.com/v8/v8/commit/d3308d042c9637958491333831c33335ab9fc734 PR-URL: https://github.com/nodejs/node/pull/26207 Reviewed-By: James M Snell Reviewed-By: Joyee Cheung --- deps/v8/include/v8.h | 3 +++ deps/v8/src/api.cc | 5 +++++ deps/v8/test/cctest/test-api.cc | 1 + 3 files changed, 9 insertions(+) diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index 01fb56b55db193..0f0eb2e739a981 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -7642,6 +7642,9 @@ class V8_EXPORT Isolate { */ void SetIdle(bool is_idle); + /** Returns the ArrayBuffer::Allocator used in this isolate. */ + ArrayBuffer::Allocator* GetArrayBufferAllocator(); + /** Returns true if this isolate has a current context. */ bool InContext(); diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc index 09db471982ecde..40e8b41e69cce5 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -8007,6 +8007,11 @@ void Isolate::SetIdle(bool is_idle) { isolate->SetIdle(is_idle); } +ArrayBuffer::Allocator* Isolate::GetArrayBufferAllocator() { + i::Isolate* isolate = reinterpret_cast(this); + return isolate->array_buffer_allocator(); +} + bool Isolate::InContext() { i::Isolate* isolate = reinterpret_cast(this); return isolate->context() != nullptr; diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index 3b564d9bf3eaa5..70763547ea86ae 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -20881,6 +20881,7 @@ TEST(IsolateNewDispose) { CHECK_NOT_NULL(isolate); CHECK(current_isolate != isolate); CHECK(current_isolate == CcTest::isolate()); + CHECK(isolate->GetArrayBufferAllocator() == CcTest::array_buffer_allocator()); isolate->SetFatalErrorHandler(StoringErrorCallback); last_location = last_message = nullptr;