summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2018-10-02 11:09:02 +0200
committerAnna Henningsen <anna@addaleax.net>2018-10-05 16:51:45 -0700
commit3f77720b63aebcaa1cae5ca30a172b0d122ac862 (patch)
tree97e285e5be687913c327e4273761c4ce067ec304 /deps
parent2ba19ff2b8a6253c6fb7795f35d4fb1c30ec6c30 (diff)
downloadandroid-node-v8-3f77720b63aebcaa1cae5ca30a172b0d122ac862.tar.gz
android-node-v8-3f77720b63aebcaa1cae5ca30a172b0d122ac862.tar.bz2
android-node-v8-3f77720b63aebcaa1cae5ca30a172b0d122ac862.zip
deps: patch V8 to 7.0.276.24
Refs: https://github.com/v8/v8/compare/7.0.276.22...7.0.276.24 PR-URL: https://github.com/nodejs/node/pull/23158 Refs: https://github.com/nodejs/node/issues/23122 Reviewed-By: Yang Guo <yangguo@chromium.org> Reviewed-By: Michaël Zasso <targos@protonmail.com>
Diffstat (limited to 'deps')
-rw-r--r--deps/v8/include/v8-version.h2
-rw-r--r--deps/v8/include/v8.h55
-rw-r--r--deps/v8/src/api.cc120
-rw-r--r--deps/v8/src/wasm/module-compiler.cc6
-rw-r--r--deps/v8/src/wasm/streaming-decoder.h9
5 files changed, 188 insertions, 4 deletions
diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h
index a93cd9be0c..06038eca3b 100644
--- a/deps/v8/include/v8-version.h
+++ b/deps/v8/include/v8-version.h
@@ -11,7 +11,7 @@
#define V8_MAJOR_VERSION 7
#define V8_MINOR_VERSION 0
#define V8_BUILD_NUMBER 276
-#define V8_PATCH_LEVEL 22
+#define V8_PATCH_LEVEL 24
// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h
index 63edc67edf..a83305560c 100644
--- a/deps/v8/include/v8.h
+++ b/deps/v8/include/v8.h
@@ -1125,6 +1125,10 @@ class V8_EXPORT PrimitiveArray {
int Length() const;
void Set(Isolate* isolate, int index, Local<Primitive> item);
Local<Primitive> Get(Isolate* isolate, int index);
+
+ V8_DEPRECATED("Use Isolate version",
+ void Set(int index, Local<Primitive> item));
+ V8_DEPRECATED("Use Isolate version", Local<Primitive> Get(int index));
};
/**
@@ -1829,6 +1833,8 @@ class V8_EXPORT StackTrace {
/**
* Returns a StackFrame at a particular index.
*/
+ V8_DEPRECATED("Use Isolate version",
+ Local<StackFrame> GetFrame(uint32_t index) const);
Local<StackFrame> GetFrame(Isolate* isolate, uint32_t index) const;
/**
@@ -2537,6 +2543,11 @@ class V8_EXPORT Value : public Data {
V8_DEPRECATE_SOON("Use maybe version",
Local<Int32> ToInt32(Isolate* isolate) const);
+ inline V8_DEPRECATED("Use maybe version", Local<Boolean> ToBoolean() const);
+ inline V8_DEPRECATED("Use maybe version", Local<String> ToString() const);
+ inline V8_DEPRECATED("Use maybe version", Local<Object> ToObject() const);
+ inline V8_DEPRECATED("Use maybe version", Local<Integer> ToInteger() const);
+
/**
* Attempts to convert a string to an array index.
* Returns an empty handle if the conversion fails.
@@ -2552,7 +2563,14 @@ class V8_EXPORT Value : public Data {
Local<Context> context) const;
V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
+ V8_DEPRECATED("Use maybe version", bool BooleanValue() const);
+ V8_DEPRECATED("Use maybe version", double NumberValue() const);
+ V8_DEPRECATED("Use maybe version", int64_t IntegerValue() const);
+ V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
+ V8_DEPRECATED("Use maybe version", int32_t Int32Value() const);
+
/** JS == */
+ V8_DEPRECATED("Use maybe version", bool Equals(Local<Value> that) const);
V8_WARN_UNUSED_RESULT Maybe<bool> Equals(Local<Context> context,
Local<Value> that) const;
bool StrictEquals(Local<Value> that) const;
@@ -2659,6 +2677,8 @@ class V8_EXPORT String : public Name {
* Returns the number of bytes in the UTF-8 encoded
* representation of this string.
*/
+ V8_DEPRECATED("Use Isolate version instead", int Utf8Length() const);
+
int Utf8Length(Isolate* isolate) const;
/**
@@ -2715,12 +2735,23 @@ class V8_EXPORT String : public Name {
// 16-bit character codes.
int Write(Isolate* isolate, uint16_t* buffer, int start = 0, int length = -1,
int options = NO_OPTIONS) const;
+ V8_DEPRECATED("Use Isolate* version",
+ int Write(uint16_t* buffer, int start = 0, int length = -1,
+ int options = NO_OPTIONS) const);
// One byte characters.
int WriteOneByte(Isolate* isolate, uint8_t* buffer, int start = 0,
int length = -1, int options = NO_OPTIONS) const;
+ V8_DEPRECATED("Use Isolate* version",
+ int WriteOneByte(uint8_t* buffer, int start = 0,
+ int length = -1, int options = NO_OPTIONS)
+ const);
// UTF-8 encoded characters.
int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
int* nchars_ref = NULL, int options = NO_OPTIONS) const;
+ V8_DEPRECATED("Use Isolate* version",
+ int WriteUtf8(char* buffer, int length = -1,
+ int* nchars_ref = NULL, int options = NO_OPTIONS)
+ const);
/**
* A zero length string.
@@ -2884,6 +2915,9 @@ class V8_EXPORT String : public Name {
*/
static Local<String> Concat(Isolate* isolate, Local<String> left,
Local<String> right);
+ static V8_DEPRECATED("Use Isolate* version",
+ Local<String> Concat(Local<String> left,
+ Local<String> right));
/**
* Creates a new external string using the data defined in the given
@@ -5217,6 +5251,8 @@ class V8_EXPORT BooleanObject : public Object {
class V8_EXPORT StringObject : public Object {
public:
static Local<Value> New(Isolate* isolate, Local<String> value);
+ static V8_DEPRECATED("Use Isolate* version",
+ Local<Value> New(Local<String> value));
Local<String> ValueOf() const;
@@ -10215,6 +10251,25 @@ template <class T> Value* Value::Cast(T* value) {
return static_cast<Value*>(value);
}
+Local<Boolean> Value::ToBoolean() const {
+ return ToBoolean(Isolate::GetCurrent()->GetCurrentContext())
+ .FromMaybe(Local<Boolean>());
+}
+
+Local<String> Value::ToString() const {
+ return ToString(Isolate::GetCurrent()->GetCurrentContext())
+ .FromMaybe(Local<String>());
+}
+
+Local<Object> Value::ToObject() const {
+ return ToObject(Isolate::GetCurrent()->GetCurrentContext())
+ .FromMaybe(Local<Object>());
+}
+
+Local<Integer> Value::ToInteger() const {
+ return ToInteger(Isolate::GetCurrent()->GetCurrentContext())
+ .FromMaybe(Local<Integer>());
+}
Boolean* Boolean::Cast(v8::Value* value) {
#ifdef V8_ENABLE_CHECKS
diff --git a/deps/v8/src/api.cc b/deps/v8/src/api.cc
index d141496c57..4eb31a447c 100644
--- a/deps/v8/src/api.cc
+++ b/deps/v8/src/api.cc
@@ -219,6 +219,28 @@ Local<Context> ContextFromNeverReadOnlySpaceObject(
return reinterpret_cast<v8::Isolate*>(obj->GetIsolate())->GetCurrentContext();
}
+// TODO(delphick): Remove this completely when the deprecated functions that use
+// it are removed.
+// DO NOT USE THIS IN NEW CODE!
+i::Isolate* UnsafeIsolateFromHeapObject(i::Handle<i::HeapObject> obj) {
+ // Use MemoryChunk directly instead of Isolate::FromWritableHeapObject to
+ // temporarily allow isolate access from read-only space objects.
+ i::MemoryChunk* chunk = i::MemoryChunk::FromHeapObject(*obj);
+ return chunk->heap()->isolate();
+}
+
+// TODO(delphick): Remove this completely when the deprecated functions that use
+// it are removed.
+// DO NOT USE THIS IN NEW CODE!
+Local<Context> UnsafeContextFromHeapObject(i::Handle<i::Object> obj) {
+ // Use MemoryChunk directly instead of Isolate::FromWritableHeapObject to
+ // temporarily allow isolate access from read-only space objects.
+ i::MemoryChunk* chunk =
+ i::MemoryChunk::FromHeapObject(i::HeapObject::cast(*obj));
+ return reinterpret_cast<Isolate*>(chunk->heap()->isolate())
+ ->GetCurrentContext();
+}
+
class InternalEscapableScope : public v8::EscapableHandleScope {
public:
explicit inline InternalEscapableScope(i::Isolate* isolate)
@@ -2170,6 +2192,12 @@ void PrimitiveArray::Set(Isolate* v8_isolate, int index,
array->set(index, *i_item);
}
+void PrimitiveArray::Set(int index, Local<Primitive> item) {
+ i::Handle<i::FixedArray> array = Utils::OpenHandle(this);
+ i::Isolate* isolate = UnsafeIsolateFromHeapObject(array);
+ Set(reinterpret_cast<Isolate*>(isolate), index, item);
+}
+
Local<Primitive> PrimitiveArray::Get(Isolate* v8_isolate, int index) {
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
i::Handle<i::FixedArray> array = Utils::OpenHandle(this);
@@ -2182,6 +2210,12 @@ Local<Primitive> PrimitiveArray::Get(Isolate* v8_isolate, int index) {
return ToApiHandle<Primitive>(i_item);
}
+Local<Primitive> PrimitiveArray::Get(int index) {
+ i::Handle<i::FixedArray> array = Utils::OpenHandle(this);
+ i::Isolate* isolate = UnsafeIsolateFromHeapObject(array);
+ return Get(reinterpret_cast<Isolate*>(isolate), index);
+}
+
Module::Status Module::GetStatus() const {
i::Handle<i::Module> self = Utils::OpenHandle(this);
switch (self->status()) {
@@ -2910,6 +2944,11 @@ Local<StackFrame> StackTrace::GetFrame(Isolate* v8_isolate,
return scope.Escape(Utils::StackFrameToLocal(info));
}
+Local<StackFrame> StackTrace::GetFrame(uint32_t index) const {
+ i::Isolate* isolate = UnsafeIsolateFromHeapObject(Utils::OpenHandle(this));
+ return GetFrame(reinterpret_cast<Isolate*>(isolate), index);
+}
+
int StackTrace::GetFrameCount() const {
return Utils::OpenHandle(this)->length();
}
@@ -3881,6 +3920,14 @@ Maybe<bool> Value::BooleanValue(Local<Context> context) const {
return Just(Utils::OpenHandle(this)->BooleanValue(isolate));
}
+bool Value::BooleanValue() const {
+ auto obj = Utils::OpenHandle(this);
+ if (obj->IsSmi()) return *obj != i::Smi::kZero;
+ DCHECK(obj->IsHeapObject());
+ i::Isolate* isolate =
+ UnsafeIsolateFromHeapObject(i::Handle<i::HeapObject>::cast(obj));
+ return obj->BooleanValue(isolate);
+}
Maybe<double> Value::NumberValue(Local<Context> context) const {
auto obj = Utils::OpenHandle(this);
@@ -3894,6 +3941,12 @@ Maybe<double> Value::NumberValue(Local<Context> context) const {
return Just(num->Number());
}
+double Value::NumberValue() const {
+ auto obj = Utils::OpenHandle(this);
+ if (obj->IsNumber()) return obj->Number();
+ return NumberValue(UnsafeContextFromHeapObject(obj))
+ .FromMaybe(std::numeric_limits<double>::quiet_NaN());
+}
Maybe<int64_t> Value::IntegerValue(Local<Context> context) const {
auto obj = Utils::OpenHandle(this);
@@ -3909,6 +3962,17 @@ Maybe<int64_t> Value::IntegerValue(Local<Context> context) const {
return Just(NumberToInt64(*num));
}
+int64_t Value::IntegerValue() const {
+ auto obj = Utils::OpenHandle(this);
+ if (obj->IsNumber()) {
+ if (obj->IsSmi()) {
+ return i::Smi::ToInt(*obj);
+ } else {
+ return static_cast<int64_t>(obj->Number());
+ }
+ }
+ return IntegerValue(UnsafeContextFromHeapObject(obj)).FromMaybe(0);
+}
Maybe<int32_t> Value::Int32Value(Local<Context> context) const {
auto obj = Utils::OpenHandle(this);
@@ -3923,6 +3987,11 @@ Maybe<int32_t> Value::Int32Value(Local<Context> context) const {
: static_cast<int32_t>(num->Number()));
}
+int32_t Value::Int32Value() const {
+ auto obj = Utils::OpenHandle(this);
+ if (obj->IsNumber()) return NumberToInt32(*obj);
+ return Int32Value(UnsafeContextFromHeapObject(obj)).FromMaybe(0);
+}
Maybe<uint32_t> Value::Uint32Value(Local<Context> context) const {
auto obj = Utils::OpenHandle(this);
@@ -3937,6 +4006,11 @@ Maybe<uint32_t> Value::Uint32Value(Local<Context> context) const {
: static_cast<uint32_t>(num->Number()));
}
+uint32_t Value::Uint32Value() const {
+ auto obj = Utils::OpenHandle(this);
+ if (obj->IsNumber()) return NumberToUint32(*obj);
+ return Uint32Value(UnsafeContextFromHeapObject(obj)).FromMaybe(0);
+}
MaybeLocal<Uint32> Value::ToArrayIndex(Local<Context> context) const {
auto self = Utils::OpenHandle(this);
@@ -3971,6 +4045,19 @@ Maybe<bool> Value::Equals(Local<Context> context, Local<Value> that) const {
return i::Object::Equals(isolate, self, other);
}
+bool Value::Equals(Local<Value> that) const {
+ auto self = Utils::OpenHandle(this);
+ auto other = Utils::OpenHandle(*that);
+ if (self->IsSmi() && other->IsSmi()) {
+ return self->Number() == other->Number();
+ }
+ if (self->IsJSObject() && other->IsJSObject()) {
+ return *self == *other;
+ }
+ auto heap_object = self->IsSmi() ? other : self;
+ auto context = UnsafeContextFromHeapObject(heap_object);
+ return Equals(context, that).FromMaybe(false);
+}
bool Value::StrictEquals(Local<Value> that) const {
auto self = Utils::OpenHandle(this);
@@ -5295,6 +5382,11 @@ bool String::ContainsOnlyOneByte() const {
return helper.Check(*str);
}
+int String::Utf8Length() const {
+ i::Isolate* isolate = UnsafeIsolateFromHeapObject(Utils::OpenHandle(this));
+ return Utf8Length(reinterpret_cast<Isolate*>(isolate));
+}
+
int String::Utf8Length(Isolate* isolate) const {
i::Handle<i::String> str = Utils::OpenHandle(this);
str = i::String::Flatten(reinterpret_cast<i::Isolate*>(isolate), str);
@@ -5563,6 +5655,14 @@ int String::WriteUtf8(Isolate* v8_isolate, char* buffer, int capacity,
return writer.CompleteWrite(write_null, nchars_ref);
}
+int String::WriteUtf8(char* buffer, int capacity, int* nchars_ref,
+ int options) const {
+ i::Handle<i::String> str = Utils::OpenHandle(this);
+ i::Isolate* isolate = UnsafeIsolateFromHeapObject(str);
+ return WriteUtf8(reinterpret_cast<Isolate*>(isolate), buffer, capacity,
+ nchars_ref, options);
+}
+
template <typename CharType>
static inline int WriteHelper(i::Isolate* isolate, const String* string,
CharType* buffer, int start, int length,
@@ -5584,6 +5684,11 @@ static inline int WriteHelper(i::Isolate* isolate, const String* string,
return end - start;
}
+int String::WriteOneByte(uint8_t* buffer, int start, int length,
+ int options) const {
+ i::Isolate* isolate = UnsafeIsolateFromHeapObject(Utils::OpenHandle(this));
+ return WriteHelper(isolate, this, buffer, start, length, options);
+}
int String::WriteOneByte(Isolate* isolate, uint8_t* buffer, int start,
int length, int options) const {
@@ -5591,6 +5696,10 @@ int String::WriteOneByte(Isolate* isolate, uint8_t* buffer, int start,
start, length, options);
}
+int String::Write(uint16_t* buffer, int start, int length, int options) const {
+ i::Isolate* isolate = UnsafeIsolateFromHeapObject(Utils::OpenHandle(this));
+ return WriteHelper(isolate, this, buffer, start, length, options);
+}
int String::Write(Isolate* isolate, uint16_t* buffer, int start, int length,
int options) const {
@@ -6549,6 +6658,12 @@ Local<String> v8::String::Concat(Isolate* v8_isolate, Local<String> left,
return Utils::ToLocal(result);
}
+Local<String> v8::String::Concat(Local<String> left, Local<String> right) {
+ i::Handle<i::String> left_string = Utils::OpenHandle(*left);
+ i::Isolate* isolate = UnsafeIsolateFromHeapObject(left_string);
+ return Concat(reinterpret_cast<Isolate*>(isolate), left, right);
+}
+
MaybeLocal<String> v8::String::NewExternalTwoByte(
Isolate* isolate, v8::String::ExternalStringResource* resource) {
CHECK(resource && resource->data());
@@ -6757,6 +6872,11 @@ bool v8::BooleanObject::ValueOf() const {
return jsvalue->value()->IsTrue(isolate);
}
+Local<v8::Value> v8::StringObject::New(Local<String> value) {
+ i::Handle<i::String> string = Utils::OpenHandle(*value);
+ i::Isolate* isolate = UnsafeIsolateFromHeapObject(string);
+ return New(reinterpret_cast<Isolate*>(isolate), value);
+}
Local<v8::Value> v8::StringObject::New(Isolate* v8_isolate,
Local<String> value) {
diff --git a/deps/v8/src/wasm/module-compiler.cc b/deps/v8/src/wasm/module-compiler.cc
index b143b631a1..b950c590b5 100644
--- a/deps/v8/src/wasm/module-compiler.cc
+++ b/deps/v8/src/wasm/module-compiler.cc
@@ -2203,6 +2203,11 @@ std::shared_ptr<StreamingDecoder> AsyncCompileJob::CreateStreamingDecoder() {
AsyncCompileJob::~AsyncCompileJob() {
background_task_manager_.CancelAndWait();
if (native_module_) native_module_->compilation_state()->Abort();
+ // Tell the streaming decoder that the AsyncCompileJob is not available
+ // anymore.
+ // TODO(ahaas): Is this notification really necessary? Check
+ // https://crbug.com/888170.
+ if (stream_) stream_->NotifyCompilationEnded();
CancelPendingForegroundTask();
for (auto d : deferred_handles_) delete d;
}
@@ -2228,7 +2233,6 @@ void AsyncCompileJob::FinishCompile() {
}
void AsyncCompileJob::AsyncCompileFailed(Handle<Object> error_reason) {
- if (stream_) stream_->NotifyError();
// {job} keeps the {this} pointer alive.
std::shared_ptr<AsyncCompileJob> job =
isolate_->wasm_engine()->RemoveCompileJob(this);
diff --git a/deps/v8/src/wasm/streaming-decoder.h b/deps/v8/src/wasm/streaming-decoder.h
index 7b986bc28b..e14c32daf3 100644
--- a/deps/v8/src/wasm/streaming-decoder.h
+++ b/deps/v8/src/wasm/streaming-decoder.h
@@ -65,8 +65,13 @@ class V8_EXPORT_PRIVATE StreamingDecoder {
void Abort();
- // Notify the StreamingDecoder that there has been an compilation error.
- void NotifyError() { ok_ = false; }
+ // Notify the StreamingDecoder that compilation ended and the
+ // StreamingProcessor should not be called anymore.
+ void NotifyCompilationEnded() {
+ // We set {ok_} to false to turn all future calls to the StreamingDecoder
+ // into no-ops.
+ ok_ = false;
+ }
private:
// TODO(ahaas): Put the whole private state of the StreamingDecoder into the