Skip to content

Commit 1d34c3d

Browse files
bzoznodejs-ci
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: #4 PR-URL: nodejs/node#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 3295b39 commit 1d34c3d

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
@@ -4101,10 +4101,12 @@ class V8_EXPORT WasmCompiledModule : public Object {
41014101
// supports move semantics, and does not support copy semantics.
41024102
class TransferrableModule final {
41034103
public:
4104-
TransferrableModule(TransferrableModule&& src) = default;
4104+
TransferrableModule(TransferrableModule&& src)
4105+
: compiled_code(std::move(src.compiled_code)),
4106+
wire_bytes(std::move(src.wire_bytes)) {}
41054107
TransferrableModule(const TransferrableModule& src) = delete;
41064108

4107-
TransferrableModule& operator=(TransferrableModule&& src) = default;
4109+
TransferrableModule& operator=(TransferrableModule&& src);
41084110
TransferrableModule& operator=(const TransferrableModule& src) = delete;
41094111

41104112
private:
@@ -4217,9 +4219,11 @@ class V8_EXPORT WasmModuleObjectBuilder final {
42174219
// Disable copy semantics *in this implementation*. We can choose to
42184220
// relax this, albeit it's not clear why.
42194221
WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
4220-
WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
4222+
WasmModuleObjectBuilder(WasmModuleObjectBuilder&& src)
4223+
: received_buffers_(std::move(src.received_buffers_)),
4224+
total_size_(src.total_size_) {}
42214225
WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
4222-
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
4226+
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&);
42234227

42244228
std::vector<Buffer> received_buffers_;
42254229
size_t total_size_ = 0;

deps/v8/src/api.cc

+15
Original file line numberDiff line numberDiff line change
@@ -7715,6 +7715,14 @@ Local<String> WasmCompiledModule::GetWasmWireBytes() {
77157715
return Local<String>::Cast(Utils::ToLocal(wire_bytes));
77167716
}
77177717

7718+
WasmCompiledModule::TransferrableModule&
7719+
WasmCompiledModule::TransferrableModule::operator=(
7720+
TransferrableModule&& src) {
7721+
compiled_code = std::move(src.compiled_code);
7722+
wire_bytes = std::move(src.wire_bytes);
7723+
return *this;
7724+
}
7725+
77187726
// Currently, wasm modules are bound, both to Isolate and to
77197727
// the Context they were created in. The currently-supported means to
77207728
// decontextualize and then re-contextualize a module is via
@@ -7886,6 +7894,13 @@ MaybeLocal<WasmCompiledModule> WasmModuleObjectBuilder::Finish() {
78867894
return WasmCompiledModule::Compile(isolate_, wire_bytes.get(), total_size_);
78877895
}
78887896

7897+
WasmModuleObjectBuilder&
7898+
WasmModuleObjectBuilder::operator=(WasmModuleObjectBuilder&& src) {
7899+
received_buffers_ = std::move(src.received_buffers_);
7900+
total_size_ = src.total_size_;
7901+
return *this;
7902+
}
7903+
78897904
// static
78907905
v8::ArrayBuffer::Allocator* v8::ArrayBuffer::Allocator::NewDefaultAllocator() {
78917906
return new ArrayBufferAllocator();

0 commit comments

Comments
 (0)