Skip to content

Commit efd297a

Browse files
bzozaddaleax
authored andcommitted
deps: fix addons compilation with VS2013
VS2013 does not support defaulting move constructor and assignment operator. This adds explicit definitions of those methods for two classes. This fix is required because we still support building addons with VS2013 and the incompatibility is in v8.h. Fixes: nodejs/node-v8#4 Refs: #13263 Backport-PR-URL: #14574 Backport-Reviewed-By: Anna Henningsen <[email protected]> Backport-Reviewed-By: Refael Ackermann <[email protected]> PR-URL: #14004 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Colin Ihrig <[email protected]>
1 parent 357873d commit efd297a

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

deps/v8/include/v8.h

+8-4
Original file line numberDiff line numberDiff line change
@@ -4063,10 +4063,12 @@ class V8_EXPORT WasmCompiledModule : public Object {
40634063
// supports move semantics, and does not support copy semantics.
40644064
class TransferrableModule final {
40654065
public:
4066-
TransferrableModule(TransferrableModule&& src) = default;
4066+
TransferrableModule(TransferrableModule&& src)
4067+
: compiled_code(std::move(src.compiled_code)),
4068+
wire_bytes(std::move(src.wire_bytes)) {}
40674069
TransferrableModule(const TransferrableModule& src) = delete;
40684070

4069-
TransferrableModule& operator=(TransferrableModule&& src) = default;
4071+
TransferrableModule& operator=(TransferrableModule&& src);
40704072
TransferrableModule& operator=(const TransferrableModule& src) = delete;
40714073

40724074
private:
@@ -4139,9 +4141,11 @@ class V8_EXPORT WasmModuleObjectBuilder final {
41394141
// Disable copy semantics *in this implementation*. We can choose to
41404142
// relax this, albeit it's not clear why.
41414143
WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
4142-
WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
4144+
WasmModuleObjectBuilder(WasmModuleObjectBuilder&& src)
4145+
: received_buffers_(std::move(src.received_buffers_)),
4146+
total_size_(src.total_size_) {}
41434147
WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
4144-
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
4148+
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&);
41454149

41464150
std::vector<Buffer> received_buffers_;
41474151
size_t total_size_ = 0;

deps/v8/src/api.cc

+15
Original file line numberDiff line numberDiff line change
@@ -7647,6 +7647,14 @@ Local<String> WasmCompiledModule::GetWasmWireBytes() {
76477647
return Local<String>::Cast(Utils::ToLocal(wire_bytes));
76487648
}
76497649

7650+
WasmCompiledModule::TransferrableModule&
7651+
WasmCompiledModule::TransferrableModule::operator=(
7652+
TransferrableModule&& src) {
7653+
compiled_code = std::move(src.compiled_code);
7654+
wire_bytes = std::move(src.wire_bytes);
7655+
return *this;
7656+
}
7657+
76507658
// Currently, wasm modules are bound, both to Isolate and to
76517659
// the Context they were created in. The currently-supported means to
76527660
// decontextualize and then re-contextualize a module is via
@@ -7760,6 +7768,13 @@ MaybeLocal<WasmCompiledModule> WasmModuleObjectBuilder::Finish() {
77607768
return WasmCompiledModule::Compile(isolate_, wire_bytes.get(), total_size_);
77617769
}
77627770

7771+
WasmModuleObjectBuilder&
7772+
WasmModuleObjectBuilder::operator=(WasmModuleObjectBuilder&& src) {
7773+
received_buffers_ = std::move(src.received_buffers_);
7774+
total_size_ = src.total_size_;
7775+
return *this;
7776+
}
7777+
77637778
// static
77647779
v8::ArrayBuffer::Allocator* v8::ArrayBuffer::Allocator::NewDefaultAllocator() {
77657780
return new ArrayBufferAllocator();

0 commit comments

Comments
 (0)