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:
jochen 2015-04-15 00:11:54 -07:00 committed by Commit bot
parent 9c105f0940
commit ac23150fd2
2 changed files with 7 additions and 11 deletions

View File

@ -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_);
}

View File

@ -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.");
}