Skip to content

Commit 1be5b02

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 0d40150 commit 1be5b02

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

deps/v8/include/v8.h

Lines changed: 8 additions & 4 deletions
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:
@@ -4214,9 +4216,11 @@ class V8_EXPORT WasmModuleObjectBuilder final {
42144216
// Disable copy semantics *in this implementation*. We can choose to
42154217
// relax this, albeit it's not clear why.
42164218
WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
4217-
WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
4219+
WasmModuleObjectBuilder(WasmModuleObjectBuilder&& src)
4220+
: received_buffers_(std::move(src.received_buffers_)),
4221+
total_size_(src.total_size_) {}
42184222
WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
4219-
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
4223+
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&);
42204224

42214225
std::vector<Buffer> received_buffers_;
42224226
size_t total_size_ = 0;

deps/v8/src/api.cc

Lines changed: 15 additions & 0 deletions
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
@@ -7879,6 +7887,13 @@ MaybeLocal<WasmCompiledModule> WasmModuleObjectBuilder::Finish() {
78797887
return WasmCompiledModule::Compile(isolate_, wire_bytes.get(), total_size_);
78807888
}
78817889

7890+
WasmModuleObjectBuilder&
7891+
WasmModuleObjectBuilder::operator=(WasmModuleObjectBuilder&& src) {
7892+
received_buffers_ = std::move(src.received_buffers_);
7893+
total_size_ = src.total_size_;
7894+
return *this;
7895+
}
7896+
78827897
// static
78837898
v8::ArrayBuffer::Allocator* v8::ArrayBuffer::Allocator::NewDefaultAllocator() {
78847899
return new ArrayBufferAllocator();

0 commit comments

Comments
 (0)