Skip to content

Commit 2a2c881

Browse files
bnoordhuisgibfahn
authored andcommitted
v8: make building addons with VS2013 work again
Work around some C++11 shortcomings in Visual Studio 2013: 1. Replace `constexpr` with `const`, and 2. Remove default move constructors and assignment operators. PR-URL: #16413
1 parent fed8d30 commit 2a2c881

File tree

3 files changed

+48
-14
lines changed

3 files changed

+48
-14
lines changed

deps/v8/include/v8-version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#define V8_MAJOR_VERSION 6
1212
#define V8_MINOR_VERSION 2
1313
#define V8_BUILD_NUMBER 414
14-
#define V8_PATCH_LEVEL 49
14+
#define V8_PATCH_LEVEL 50
1515

1616
// Use 1 for candidates and 0 otherwise.
1717
// (Boolean macro values are not supported by all preprocessors.)

deps/v8/include/v8.h

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2452,7 +2452,7 @@ enum class NewStringType {
24522452
*/
24532453
class V8_EXPORT String : public Name {
24542454
public:
2455-
static constexpr int kMaxLength =
2455+
static const int kMaxLength =
24562456
sizeof(void*) == 4 ? (1 << 28) - 16 : (1 << 30) - 1 - 24;
24572457

24582458
enum Encoding {
@@ -4122,10 +4122,10 @@ class V8_EXPORT WasmCompiledModule : public Object {
41224122
// supports move semantics, and does not support copy semantics.
41234123
class TransferrableModule final {
41244124
public:
4125-
TransferrableModule(TransferrableModule&& src) = default;
4125+
TransferrableModule(TransferrableModule&& src);
41264126
TransferrableModule(const TransferrableModule& src) = delete;
41274127

4128-
TransferrableModule& operator=(TransferrableModule&& src) = default;
4128+
TransferrableModule& operator=(TransferrableModule&& src);
41294129
TransferrableModule& operator=(const TransferrableModule& src) = delete;
41304130

41314131
private:
@@ -4200,24 +4200,19 @@ class V8_EXPORT WasmModuleObjectBuilderStreaming final {
42004200

42014201
WasmModuleObjectBuilderStreaming(const WasmModuleObjectBuilderStreaming&) =
42024202
delete;
4203-
WasmModuleObjectBuilderStreaming(WasmModuleObjectBuilderStreaming&&) =
4204-
default;
4203+
WasmModuleObjectBuilderStreaming(WasmModuleObjectBuilderStreaming&&);
42054204
WasmModuleObjectBuilderStreaming& operator=(
42064205
const WasmModuleObjectBuilderStreaming&) = delete;
42074206
WasmModuleObjectBuilderStreaming& operator=(
4208-
WasmModuleObjectBuilderStreaming&&) = default;
4207+
WasmModuleObjectBuilderStreaming&&);
42094208
Isolate* isolate_ = nullptr;
42104209

4211-
#if V8_CC_MSVC
42124210
// We don't need the static Copy API, so the default
42134211
// NonCopyablePersistentTraits would be sufficient, however,
42144212
// MSVC eagerly instantiates the Copy.
42154213
// We ensure we don't use Copy, however, by compiling with the
42164214
// defaults everywhere else.
42174215
Persistent<Promise, CopyablePersistentTraits<Promise>> promise_;
4218-
#else
4219-
Persistent<Promise> promise_;
4220-
#endif
42214216
std::vector<Buffer> received_buffers_;
42224217
size_t total_size_ = 0;
42234218
};
@@ -4238,9 +4233,9 @@ class V8_EXPORT WasmModuleObjectBuilder final {
42384233
// Disable copy semantics *in this implementation*. We can choose to
42394234
// relax this, albeit it's not clear why.
42404235
WasmModuleObjectBuilder(const WasmModuleObjectBuilder&) = delete;
4241-
WasmModuleObjectBuilder(WasmModuleObjectBuilder&&) = default;
4236+
WasmModuleObjectBuilder(WasmModuleObjectBuilder&&);
42424237
WasmModuleObjectBuilder& operator=(const WasmModuleObjectBuilder&) = delete;
4243-
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&) = default;
4238+
WasmModuleObjectBuilder& operator=(WasmModuleObjectBuilder&&);
42444239

42454240
std::vector<Buffer> received_buffers_;
42464241
size_t total_size_ = 0;
@@ -4502,7 +4497,7 @@ class V8_EXPORT TypedArray : public ArrayBufferView {
45024497
/*
45034498
* The largest typed array size that can be constructed using New.
45044499
*/
4505-
static constexpr size_t kMaxLength =
4500+
static const size_t kMaxLength =
45064501
sizeof(void*) == 4 ? (1u << 30) - 1 : (1u << 31) - 1;
45074502

45084503
/**

deps/v8/src/api.cc

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7714,6 +7714,18 @@ MaybeLocal<Proxy> Proxy::New(Local<Context> context, Local<Object> local_target,
77147714
RETURN_ESCAPED(result);
77157715
}
77167716

7717+
WasmCompiledModule::TransferrableModule::TransferrableModule(
7718+
TransferrableModule&& src)
7719+
: compiled_code(std::move(src.compiled_code))
7720+
, wire_bytes(std::move(src.wire_bytes)) {}
7721+
7722+
WasmCompiledModule::TransferrableModule&
7723+
WasmCompiledModule::TransferrableModule::operator=(TransferrableModule&& src) {
7724+
compiled_code = std::move(src.compiled_code);
7725+
wire_bytes = std::move(src.wire_bytes);
7726+
return *this;
7727+
}
7728+
77177729
Local<String> WasmCompiledModule::GetWasmWireBytes() {
77187730
i::Handle<i::WasmModuleObject> obj =
77197731
i::Handle<i::WasmModuleObject>::cast(Utils::OpenHandle(this));
@@ -7826,6 +7838,22 @@ WasmModuleObjectBuilderStreaming::WasmModuleObjectBuilderStreaming(
78267838
}
78277839
}
78287840

7841+
WasmModuleObjectBuilderStreaming::WasmModuleObjectBuilderStreaming(
7842+
WasmModuleObjectBuilderStreaming&& src)
7843+
: isolate_(std::move(src.isolate_))
7844+
, promise_(std::move(src.promise_))
7845+
, received_buffers_(std::move(src.received_buffers_))
7846+
, total_size_(std::move(src.total_size_)) {}
7847+
7848+
WasmModuleObjectBuilderStreaming& WasmModuleObjectBuilderStreaming::operator=(
7849+
WasmModuleObjectBuilderStreaming&& src) {
7850+
isolate_ = std::move(src.isolate_);
7851+
promise_ = std::move(src.promise_);
7852+
received_buffers_ = std::move(src.received_buffers_);
7853+
total_size_ = std::move(src.total_size_);
7854+
return *this;
7855+
}
7856+
78297857
Local<Promise> WasmModuleObjectBuilderStreaming::GetPromise() {
78307858
return promise_.Get(isolate_);
78317859
}
@@ -7871,6 +7899,17 @@ WasmModuleObjectBuilderStreaming::~WasmModuleObjectBuilderStreaming() {
78717899
promise_.Reset();
78727900
}
78737901

7902+
WasmModuleObjectBuilder::WasmModuleObjectBuilder(WasmModuleObjectBuilder&& src)
7903+
: received_buffers_(std::move(src.received_buffers_))
7904+
, total_size_(std::move(src.total_size_)) {}
7905+
7906+
WasmModuleObjectBuilder&
7907+
WasmModuleObjectBuilder::operator=(WasmModuleObjectBuilder&& src) {
7908+
received_buffers_ = std::move(src.received_buffers_);
7909+
total_size_ = std::move(src.total_size_);
7910+
return *this;
7911+
}
7912+
78747913
void WasmModuleObjectBuilder::OnBytesReceived(const uint8_t* bytes,
78757914
size_t size) {
78767915
std::unique_ptr<uint8_t[]> cloned_bytes(new uint8_t[size]);

0 commit comments

Comments
 (0)