Skip to content

Commit 34f2801

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 8d4efb6 commit 34f2801

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
@@ -4092,10 +4092,12 @@ class V8_EXPORT WasmCompiledModule : public Object {
40924092
// supports move semantics, and does not support copy semantics.
40934093
class TransferrableModule final {
40944094
public:
4095-
TransferrableModule(TransferrableModule&& src) = default;
4095+
TransferrableModule(TransferrableModule&& src)
4096+
: compiled_code(std::move(src.compiled_code)),
4097+
wire_bytes(std::move(src.wire_bytes)) {}
40964098
TransferrableModule(const TransferrableModule& src) = delete;
40974099

4098-
TransferrableModule& operator=(TransferrableModule&& src) = default;
4100+
TransferrableModule& operator=(TransferrableModule&& src);
40994101
TransferrableModule& operator=(const TransferrableModule& src) = delete;
41004102

41014103
private:
@@ -4168,9 +4170,11 @@ class V8_EXPORT WasmModuleObjectBuilder final {
41684170
// Disable copy semantics *in this implementation*. We can choose to
41694171
// relax this, albeit it's not clear why.
41704172
WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
4171-
WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
4173+
WasmModuleObjectBuilder(WasmModuleObjectBuilder&& src)
4174+
: received_buffers_(std::move(src.received_buffers_)),
4175+
total_size_(src.total_size_) {}
41724176
WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
4173-
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
4177+
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&);
41744178

41754179
std::vector<Buffer> received_buffers_;
41764180
size_t total_size_ = 0;

deps/v8/src/api.cc

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

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

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

0 commit comments

Comments
 (0)