When converting Maybe and MaybeLocal values with a check, always check
An embedder that wants to avoid the check should use MaybeLocal::ToLocal. BUG=none R=dcarney@chromium.org LOG=y Review URL: https://codereview.chromium.org/1083943002 Cr-Commit-Position: refs/heads/master@{#27832}
This commit is contained in:
parent
9c105f0940
commit
ac23150fd2
14
include/v8.h
14
include/v8.h
@ -439,7 +439,7 @@ class MaybeLocal {
|
||||
return !IsEmpty();
|
||||
}
|
||||
|
||||
// Will crash when checks are enabled if the MaybeLocal<> is empty.
|
||||
// Will crash if the MaybeLocal<> is empty.
|
||||
V8_INLINE Local<T> ToLocalChecked();
|
||||
|
||||
template <class S>
|
||||
@ -6074,7 +6074,7 @@ class V8_EXPORT V8 {
|
||||
int* index);
|
||||
static Local<Value> GetEternal(Isolate* isolate, int index);
|
||||
|
||||
static void CheckIsJust(bool is_just);
|
||||
static void FromJustIsNothing();
|
||||
static void ToLocalEmpty();
|
||||
static void InternalFieldOutOfBounds(int index);
|
||||
|
||||
@ -6109,11 +6109,9 @@ class Maybe {
|
||||
V8_INLINE bool IsNothing() const { return !has_value; }
|
||||
V8_INLINE bool IsJust() const { return has_value; }
|
||||
|
||||
// Will crash when checks are enabled if the Maybe<> is nothing.
|
||||
// Will crash if the Maybe<> is nothing.
|
||||
V8_INLINE T FromJust() const {
|
||||
#ifdef V8_ENABLE_CHECKS
|
||||
V8::CheckIsJust(IsJust());
|
||||
#endif
|
||||
if (V8_UNLIKELY(!IsJust())) V8::FromJustIsNothing();
|
||||
return value;
|
||||
}
|
||||
|
||||
@ -6931,9 +6929,7 @@ Local<T> Eternal<T>::Get(Isolate* isolate) {
|
||||
|
||||
template <class T>
|
||||
Local<T> MaybeLocal<T>::ToLocalChecked() {
|
||||
#ifdef V8_ENABLE_CHECKS
|
||||
if (val_ == nullptr) V8::ToLocalEmpty();
|
||||
#endif
|
||||
if (V8_UNLIKELY(val_ == nullptr)) V8::ToLocalEmpty();
|
||||
return Local<T>(val_);
|
||||
}
|
||||
|
||||
|
@ -584,8 +584,8 @@ Local<Value> V8::GetEternal(Isolate* v8_isolate, int index) {
|
||||
}
|
||||
|
||||
|
||||
void V8::CheckIsJust(bool is_just) {
|
||||
Utils::ApiCheck(is_just, "v8::FromJust", "Maybe value is Nothing.");
|
||||
void V8::FromJustIsNothing() {
|
||||
Utils::ApiCheck(false, "v8::FromJust", "Maybe value is Nothing.");
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user