electron/patches/common/v8/add_realloc.patch
Jeremy Apthorp 6555be2636 chore: bump chromium to 74.0.3729.27 (master) (#17345)
* chore: bump chromium to 74.0.3729.5 (master)

* Remove ScopedBlockingCall constructor without location

https://chromium-review.googlesource.com/c/chromium/src/+/1496560

* Use XCode 9.4.1 for Mac SDK 10.13

* chore: roll chromium 74.0.3729.27
2019-03-21 11:45:22 -04:00

46 lines
1.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Mon, 22 Oct 2018 10:47:11 -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.
diff --git a/include/v8.h b/include/v8.h
index 6ecc48af33288c1d5b8a8d847581c1edd8c173f9..ea203a23a945a03e4494a1b3d615381dd5699e2c 100644
--- a/include/v8.h
+++ b/include/v8.h
@@ -4695,6 +4695,13 @@ class V8_EXPORT ArrayBuffer : public Object {
*/
virtual void* AllocateUninitialized(size_t length) = 0;
+ /**
+ * Free the memory block of size |length|, pointed to by |data|.
+ * That memory must be previously allocated by |Allocate| and not yet freed
+ * with a call to |Free| or |Realloc|
+ */
+ virtual void* Realloc(void* data, size_t length);
+
/**
* Free the memory block of size |length|, pointed to by |data|.
* That memory is guaranteed to be previously allocated by |Allocate|.
diff --git a/src/api.cc b/src/api.cc
index 168522f8c36b4385479ebba7f06f8a5261ab7a85..b87dfac21d26177128f7c434bc2577e18ab905c6 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -516,6 +516,10 @@ void V8::SetSnapshotDataBlob(StartupData* snapshot_blob) {
i::V8::SetSnapshotBlob(snapshot_blob);
}
+void* v8::ArrayBuffer::Allocator::Realloc(void* data, size_t length) {
+ UNIMPLEMENTED();
+}
+
namespace {
class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {