summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorBartosz Sosnowski <bartosz@janeasystems.com>2017-05-23 18:25:03 +0200
committerMyles Borins <mylesborins@google.com>2017-08-01 15:23:16 -0500
commited30842440267d8b8c66cd5a315344dc9de855ee (patch)
tree9c50b204d793432a161f089216c493ecee64ba1f /deps
parent28aa7d0066362faa165fd16bb33dd7ffa24aa76b (diff)
downloadandroid-node-v8-ed30842440267d8b8c66cd5a315344dc9de855ee.tar.gz
android-node-v8-ed30842440267d8b8c66cd5a315344dc9de855ee.tar.bz2
android-node-v8-ed30842440267d8b8c66cd5a315344dc9de855ee.zip
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: https://github.com/nodejs/node-v8/issues/4 Refs: https://github.com/nodejs/node/pull/13263 PR-URL: https://github.com/nodejs/node/pull/14004 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps')
-rw-r--r--deps/v8/include/v8.h12
-rw-r--r--deps/v8/src/api.cc15
2 files changed, 23 insertions, 4 deletions
diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h
index da3cdfdcbd..1b3117ef34 100644
--- a/deps/v8/include/v8.h
+++ b/deps/v8/include/v8.h
@@ -4063,10 +4063,12 @@ class V8_EXPORT WasmCompiledModule : public Object {
// supports move semantics, and does not support copy semantics.
class TransferrableModule final {
public:
- TransferrableModule(TransferrableModule&& src) = default;
+ TransferrableModule(TransferrableModule&& src)
+ : compiled_code(std::move(src.compiled_code)),
+ wire_bytes(std::move(src.wire_bytes)) {}
TransferrableModule(const TransferrableModule& src) = delete;
- TransferrableModule& operator=(TransferrableModule&& src) = default;
+ TransferrableModule& operator=(TransferrableModule&& src);
TransferrableModule& operator=(const TransferrableModule& src) = delete;
private:
@@ -4139,9 +4141,11 @@ class V8_EXPORT WasmModuleObjectBuilder final {
// Disable copy semantics *in this implementation*. We can choose to
// relax this, albeit it's not clear why.
WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
- WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
+ WasmModuleObjectBuilder(WasmModuleObjectBuilder&& src)
+ : received_buffers_(std::move(src.received_buffers_)),
+ total_size_(src.total_size_) {}
WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
- WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
+ WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&);
std::vector<Buffer> received_buffers_;
size_t total_size_ = 0;
diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc
index 7699bc87ec..79008219a7 100644
--- a/deps/v8/src/api.cc
+++ b/deps/v8/src/api.cc
@@ -7647,6 +7647,14 @@ Local<String> WasmCompiledModule::GetWasmWireBytes() {
return Local<String>::Cast(Utils::ToLocal(wire_bytes));
}
+WasmCompiledModule::TransferrableModule&
+WasmCompiledModule::TransferrableModule::operator=(
+ TransferrableModule&& src) {
+ compiled_code = std::move(src.compiled_code);
+ wire_bytes = std::move(src.wire_bytes);
+ return *this;
+}
+
// Currently, wasm modules are bound, both to Isolate and to
// the Context they were created in. The currently-supported means to
// decontextualize and then re-contextualize a module is via
@@ -7760,6 +7768,13 @@ MaybeLocal<WasmCompiledModule> WasmModuleObjectBuilder::Finish() {
return WasmCompiledModule::Compile(isolate_, wire_bytes.get(), total_size_);
}
+WasmModuleObjectBuilder&
+WasmModuleObjectBuilder::operator=(WasmModuleObjectBuilder&& src) {
+ received_buffers_ = std::move(src.received_buffers_);
+ total_size_ = src.total_size_;
+ return *this;
+}
+
// static
v8::ArrayBuffer::Allocator* v8::ArrayBuffer::Allocator::NewDefaultAllocator() {
return new ArrayBufferAllocator();