electron/patches/common/v8/add_realloc.patch

47 lines
1.8 KiB
Diff
Raw Normal View History

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
2019-05-23 17:39:06 +00:00
index 29c32d5ab77db52e4e02f140ac38ef46ff7bfc41..0b517b7a469451952723e10ad834d94c2f17e3e3 100644
--- a/include/v8.h
+++ b/include/v8.h
2019-05-13 18:49:01 +00:00
@@ -4624,6 +4624,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|.
2019-05-21 17:05:21 +00:00
diff --git a/src/api/api.cc b/src/api/api.cc
2019-05-23 17:39:06 +00:00
index 3eb1db63bec192fd2f397f3c4951eaca896ea81c..dcd2a79adf1f1b685f7384208786a18d9f593384 100644
2019-05-21 17:05:21 +00:00
--- a/src/api/api.cc
+++ b/src/api/api.cc
2019-05-23 17:39:06 +00:00
@@ -515,6 +515,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 {