1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Shelley Vohr <[email protected]>
- Date: Thu, 20 Sep 2018 17:44:26 -0700
- Subject: add_realloc.patch
- Blink overrides ArrayBuffer's allocator with its own one, while Node simply
- uses malloc and free, so we need to use v8's allocator in Node. As part of the
- 10.6.0 upgrade, we needed to make SerializerDelegate accept an allocator
- argument in its constructor, and override ReallocateBufferMemory and
- FreeBufferMemory to use the allocator. We cannot simply allocate and then memcpy
- when we override ReallocateBufferMemory, so we therefore need to implement
- Realloc on the v8 side and correspondingly in gin.
- diff --git a/gin/array_buffer.cc b/gin/array_buffer.cc
- index 124c2f72a5cbc2abe8c7686c32b61718d4c95d4b..fa4a478450cc97d231496ab82c74c1a94d1f3557 100644
- --- a/gin/array_buffer.cc
- +++ b/gin/array_buffer.cc
- @@ -43,6 +43,10 @@ void* ArrayBufferAllocator::AllocateUninitialized(size_t length) {
- return malloc(length);
- }
-
- +void* ArrayBufferAllocator::Realloc(void* data, size_t length) {
- + return realloc(data, length);
- +}
- +
- void ArrayBufferAllocator::Free(void* data, size_t length) {
- free(data);
- }
- diff --git a/gin/array_buffer.h b/gin/array_buffer.h
- index 2aef366ac8194aa261cbca6abc051f7da8a988d3..3c7d66c81032636abcca4f1538ce9b7f4ddb2de2 100644
- --- a/gin/array_buffer.h
- +++ b/gin/array_buffer.h
- @@ -21,6 +21,7 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
- public:
- void* Allocate(size_t length) override;
- void* AllocateUninitialized(size_t length) override;
- + void* Realloc(void* data, size_t length) override;
- void Free(void* data, size_t length) override;
-
- GIN_EXPORT static ArrayBufferAllocator* SharedInstance();
- diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
- index 3c7a7a5675fce7ba4065f8b2f52e29dc083551a6..85ac9d5d95856470707d320d382743673cd1451a 100644
- --- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
- +++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
- @@ -685,6 +685,10 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
- return result;
- }
-
- + void* Realloc(void* data, size_t size) override {
- + return ArrayBufferContents::Realloc(data, size);
- + }
- +
- void Free(void* data, size_t size) override {
- if (max_allocation_ != 0 && data)
- total_allocation_.fetch_sub(size, std::memory_order_relaxed);
- diff --git a/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.cc b/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.cc
- index 686806bcafa0939d29bbc6775748a115130feb96..20f7a9a594cf379b2dac6970bc8c02aebc3be360 100644
- --- a/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.cc
- +++ b/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.cc
- @@ -127,6 +127,11 @@ void* ArrayBufferContents::AllocateMemoryOrNull(size_t size,
- return AllocateMemoryWithFlags(size, policy, base::PartitionAllocReturnNull);
- }
-
- +void* ArrayBufferContents::Realloc(void* data, size_t size) {
- + return WTF::Partitions::ArrayBufferPartition()->Realloc(data, size,
- + WTF_HEAP_PROFILER_TYPE_NAME(ArrayBufferContents));
- +}
- +
- void ArrayBufferContents::FreeMemory(void* data) {
- InstanceCounters::DecrementCounter(
- InstanceCounters::kArrayBufferContentsCounter);
- diff --git a/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h b/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h
- index cce802e4fc94c258607bc943d9902e6d18173c44..4f7f4eaf005aac701360e567e6faca7f2e0ff3da 100644
- --- a/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h
- +++ b/third_party/blink/renderer/core/typed_arrays/array_buffer/array_buffer_contents.h
- @@ -108,6 +108,7 @@ class CORE_EXPORT ArrayBufferContents {
- void CopyTo(ArrayBufferContents& other);
-
- static void* AllocateMemoryOrNull(size_t, InitializationPolicy);
- + static void* Realloc(void* data, size_t);
- static void FreeMemory(void*);
-
- private:
|