Skip to content

Commit afc4ba4

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 PR-URL: nodejs#13263 Reviewed-By: Gibson Fahnestock <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Franziska Hinkelmann <[email protected]> Reviewed-By: Myles Borins <[email protected]>
1 parent 6a7017c commit afc4ba4

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
@@ -4104,10 +4104,12 @@ class V8_EXPORT WasmCompiledModule : public Object {
41044104
// supports move semantics, and does not support copy semantics.
41054105
class TransferrableModule final {
41064106
public:
4107-
TransferrableModule(TransferrableModule&& src) = default;
4107+
TransferrableModule(TransferrableModule&& src)
4108+
: compiled_code(std::move(src.compiled_code)),
4109+
wire_bytes(std::move(src.wire_bytes)) {}
41084110
TransferrableModule(const TransferrableModule& src) = delete;
41094111

4110-
TransferrableModule& operator=(TransferrableModule&& src) = default;
4112+
TransferrableModule& operator=(TransferrableModule&& src);
41114113
TransferrableModule& operator=(const TransferrableModule& src) = delete;
41124114

41134115
private:
@@ -4180,9 +4182,11 @@ class V8_EXPORT WasmModuleObjectBuilder final {
41804182
// Disable copy semantics *in this implementation*. We can choose to
41814183
// relax this, albeit it's not clear why.
41824184
WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
4183-
WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
4185+
WasmModuleObjectBuilder(WasmModuleObjectBuilder&& src)
4186+
: received_buffers_(std::move(src.received_buffers_)),
4187+
total_size_(src.total_size_) {}
41844188
WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
4185-
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
4189+
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&);
41864190

41874191
std::vector<Buffer> received_buffers_;
41884192
size_t total_size_ = 0;

deps/v8/src/api.cc

+15
Original file line numberDiff line numberDiff line change
@@ -7723,6 +7723,14 @@ Local<String> WasmCompiledModule::GetWasmWireBytes() {
77237723
return Local<String>::Cast(Utils::ToLocal(wire_bytes));
77247724
}
77257725

7726+
WasmCompiledModule::TransferrableModule&
7727+
WasmCompiledModule::TransferrableModule::operator=(
7728+
TransferrableModule&& src) {
7729+
compiled_code = std::move(src.compiled_code);
7730+
wire_bytes = std::move(src.wire_bytes);
7731+
return *this;
7732+
}
7733+
77267734
// Currently, wasm modules are bound, both to Isolate and to
77277735
// the Context they were created in. The currently-supported means to
77287736
// decontextualize and then re-contextualize a module is via
@@ -7836,6 +7844,13 @@ MaybeLocal<WasmCompiledModule> WasmModuleObjectBuilder::Finish() {
78367844
return WasmCompiledModule::Compile(isolate_, wire_bytes.get(), total_size_);
78377845
}
78387846

7847+
WasmModuleObjectBuilder&
7848+
WasmModuleObjectBuilder::operator=(WasmModuleObjectBuilder&& src) {
7849+
received_buffers_ = std::move(src.received_buffers_);
7850+
total_size_ = src.total_size_;
7851+
return *this;
7852+
}
7853+
78397854
// static
78407855
v8::ArrayBuffer::Allocator* v8::ArrayBuffer::Allocator::NewDefaultAllocator() {
78417856
return new ArrayBufferAllocator();

0 commit comments

Comments
 (0)