From ce5da3f87d39d9a397df34eda3b7e7ba7705862c 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 e1951ec270597d..325d3b0988314c 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -7717,6 +7717,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 8163b9061f3813..3f0cad545f5cee 100644 --- a/deps/v8/src/api.cc +++ b/deps/v8/src/api.cc @@ -8084,6 +8084,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 ae8b133b2dd5de..7aa54a00f838a6 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -20773,6 +20773,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;