electron/patches/v8/force_cppheapcreateparams_to_be_noncopyable.patch
electron-roller[bot] 16f459228b
chore: bump chromium to 108.0.5329.0 (main) (#35628)
Co-authored-by: Samuel Attard <sattard@salesforce.com>
Co-authored-by: VerteDinde <vertedinde@electronjs.org>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2022-10-03 13:21:00 -07:00

40 lines
1.3 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jeremy Rose <jeremy.rose@salesforce.com>
Date: Wed, 28 Sep 2022 14:44:32 -0700
Subject: force CppHeapCreateParams to be noncopyable
Ref https://chromium-review.googlesource.com/c/v8/v8/+/3348007
Without this change, clang on windows for some reason thinks that
CppHeapCreateParams is copyable and tries to generate copy
constructors for it, which doesn't work because vector<unique_ptr>
isn't copyable.
If Electron compiles on Windows without this patch then it's no longer
needed.
diff --git a/include/v8-cppgc.h b/include/v8-cppgc.h
index f96709c783a0b13a3c09925a930d59c8ba48e01f..d91253f16ee9775986d699ebfed77b7389c71a13 100644
--- a/include/v8-cppgc.h
+++ b/include/v8-cppgc.h
@@ -76,6 +76,12 @@ struct WrapperDescriptor final {
uint16_t embedder_id_for_garbage_collected;
};
+struct NonCopyable {
+ NonCopyable() = default;
+ NonCopyable(const NonCopyable&) = delete;
+ NonCopyable(NonCopyable&&) = default;
+};
+
struct V8_EXPORT CppHeapCreateParams {
std::vector<std::unique_ptr<cppgc::CustomSpaceBase>> custom_spaces;
WrapperDescriptor wrapper_descriptor;
@@ -91,6 +97,7 @@ struct V8_EXPORT CppHeapCreateParams {
*/
cppgc::Heap::SweepingType sweeping_support =
cppgc::Heap::SweepingType::kIncrementalAndConcurrent;
+ NonCopyable non_copyable_;
};
/**