Skip to content

Commit 27fb4bb

Browse files
committed
deps: fix v8 compilation with vs2013
VS2013 does not support defaulting move constructor and assignment operator. This adds explicit definitions of those methods for two classes. Fixes: nodejs/node-v8#4
1 parent 2f8c37b commit 27fb4bb

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
@@ -4057,10 +4057,12 @@ class V8_EXPORT WasmCompiledModule : public Object {
40574057
// supports move semantics, and does not support copy semantics.
40584058
class TransferrableModule final {
40594059
public:
4060-
TransferrableModule(TransferrableModule&& src) = default;
4060+
TransferrableModule(TransferrableModule&& src)
4061+
: compiled_code(std::move(src.compiled_code)),
4062+
wire_bytes(std::move(src.wire_bytes)) {}
40614063
TransferrableModule(const TransferrableModule& src) = delete;
40624064

4063-
TransferrableModule& operator=(TransferrableModule&& src) = default;
4065+
TransferrableModule& operator=(TransferrableModule&& src);
40644066
TransferrableModule& operator=(const TransferrableModule& src) = delete;
40654067

40664068
private:
@@ -4133,9 +4135,11 @@ class V8_EXPORT WasmModuleObjectBuilder final {
41334135
// Disable copy semantics *in this implementation*. We can choose to
41344136
// relax this, albeit it's not clear why.
41354137
WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
4136-
WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
4138+
WasmModuleObjectBuilder(WasmModuleObjectBuilder&& src)
4139+
: received_buffers_(std::move(src.received_buffers_)),
4140+
total_size_(src.total_size_) {}
41374141
WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
4138-
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
4142+
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&);
41394143

41404144
std::vector<Buffer> received_buffers_;
41414145
size_t total_size_ = 0;

deps/v8/src/api.cc

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7650,6 +7650,14 @@ Local<String> WasmCompiledModule::GetWasmWireBytes() {
76507650
return Local<String>::Cast(Utils::ToLocal(wire_bytes));
76517651
}
76527652

7653+
WasmCompiledModule::TransferrableModule&
7654+
WasmCompiledModule::TransferrableModule::operator=(
7655+
TransferrableModule&& src) {
7656+
compiled_code = std::move(src.compiled_code);
7657+
wire_bytes = std::move(src.wire_bytes);
7658+
return *this;
7659+
}
7660+
76537661
// Currently, wasm modules are bound, both to Isolate and to
76547662
// the Context they were created in. The currently-supported means to
76557663
// decontextualize and then re-contextualize a module is via
@@ -7763,6 +7771,13 @@ MaybeLocal<WasmCompiledModule> WasmModuleObjectBuilder::Finish() {
77637771
return WasmCompiledModule::Compile(isolate_, wire_bytes.get(), total_size_);
77647772
}
77657773

7774+
WasmModuleObjectBuilder&
7775+
WasmModuleObjectBuilder::operator=(WasmModuleObjectBuilder&& src) {
7776+
received_buffers_ = std::move(src.received_buffers_);
7777+
total_size_ = src.total_size_;
7778+
return *this;
7779+
}
7780+
77667781
// static
77677782
v8::ArrayBuffer::Allocator* v8::ArrayBuffer::Allocator::NewDefaultAllocator() {
77687783
return new ArrayBufferAllocator();

0 commit comments

Comments
 (0)