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 4a457027c9f76b5d75f8f693ebe31fd616134849..16548d3053563d2a5891fb8967a2b63a1f920f95 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 { CppHeapCreateParams( std::vector<std::unique_ptr<cppgc::CustomSpaceBase>> custom_spaces, @@ -100,6 +106,7 @@ struct V8_EXPORT CppHeapCreateParams { */ cppgc::Heap::SweepingType sweeping_support = cppgc::Heap::SweepingType::kIncrementalAndConcurrent; + NonCopyable non_copyable_; }; /**