Index: src/runtime/runtime-scopes.cc |
diff --git a/src/runtime/runtime-scopes.cc b/src/runtime/runtime-scopes.cc |
index 4baef7b99ed012728fbbe5545cf85b3818d92c18..8fb06caaff2f771b6a139aab2fbaf9f709a00262 100644 |
--- a/src/runtime/runtime-scopes.cc |
+++ b/src/runtime/runtime-scopes.cc |
@@ -266,11 +266,11 @@ Object* DeclareEvalHelper(Isolate* isolate, Handle<String> name, |
int index; |
PropertyAttributes attributes; |
- BindingFlags binding_flags; |
+ InitializationFlag init_flag; |
VariableMode mode; |
// Check for a conflict with a lexically scoped variable |
- context_arg->Lookup(name, LEXICAL_TEST, &index, &attributes, &binding_flags, |
+ context_arg->Lookup(name, LEXICAL_TEST, &index, &attributes, &init_flag, |
&mode); |
if (attributes != ABSENT && IsLexicalVariableMode(mode)) { |
// ES#sec-evaldeclarationinstantiation 5.a.i.1: |
@@ -283,7 +283,7 @@ Object* DeclareEvalHelper(Isolate* isolate, Handle<String> name, |
} |
Handle<Object> holder = context->Lookup(name, DONT_FOLLOW_CHAINS, &index, |
- &attributes, &binding_flags, &mode); |
+ &attributes, &init_flag, &mode); |
DCHECK(!isolate->has_pending_exception()); |
Handle<JSObject> object; |
@@ -772,10 +772,10 @@ RUNTIME_FUNCTION(Runtime_DeleteLookupSlot) { |
int index; |
PropertyAttributes attributes; |
- BindingFlags flags; |
+ InitializationFlag flag; |
VariableMode mode; |
Handle<Object> holder = isolate->context()->Lookup( |
- name, FOLLOW_CHAINS, &index, &attributes, &flags, &mode); |
+ name, FOLLOW_CHAINS, &index, &attributes, &flag, &mode); |
// If the slot was not found the result is true. |
if (holder.is_null()) { |
@@ -808,10 +808,10 @@ MaybeHandle<Object> LoadLookupSlot(Handle<String> name, |
int index; |
PropertyAttributes attributes; |
- BindingFlags flags; |
+ InitializationFlag flag; |
VariableMode mode; |
Handle<Object> holder = isolate->context()->Lookup( |
- name, FOLLOW_CHAINS, &index, &attributes, &flags, &mode); |
+ name, FOLLOW_CHAINS, &index, &attributes, &flag, &mode); |
if (isolate->has_pending_exception()) return MaybeHandle<Object>(); |
if (index != Context::kNotFound) { |
@@ -821,22 +821,14 @@ MaybeHandle<Object> LoadLookupSlot(Handle<String> name, |
Handle<Object> receiver = isolate->factory()->undefined_value(); |
Handle<Object> value = handle(Context::cast(*holder)->get(index), isolate); |
// Check for uninitialized bindings. |
- switch (flags) { |
- case BINDING_CHECK_INITIALIZED: |
- if (value->IsTheHole(isolate)) { |
- THROW_NEW_ERROR(isolate, |
- NewReferenceError(MessageTemplate::kNotDefined, name), |
- Object); |
- } |
- // FALLTHROUGH |
- case BINDING_IS_INITIALIZED: |
- DCHECK(!value->IsTheHole(isolate)); |
- if (receiver_return) *receiver_return = receiver; |
- return value; |
- case MISSING_BINDING: |
- break; |
+ if (flag == kNeedsInitialization && value->IsTheHole(isolate)) { |
+ THROW_NEW_ERROR(isolate, |
+ NewReferenceError(MessageTemplate::kNotDefined, name), |
+ Object); |
} |
- UNREACHABLE(); |
+ DCHECK(!value->IsTheHole(isolate)); |
+ if (receiver_return) *receiver_return = receiver; |
+ return value; |
} |
// Otherwise, if the slot was found the holder is a context extension |
@@ -912,10 +904,10 @@ MaybeHandle<Object> StoreLookupSlot(Handle<String> name, Handle<Object> value, |
int index; |
PropertyAttributes attributes; |
- BindingFlags flags; |
+ InitializationFlag flag; |
VariableMode mode; |
Handle<Object> holder = |
- context->Lookup(name, FOLLOW_CHAINS, &index, &attributes, &flags, &mode); |
+ context->Lookup(name, FOLLOW_CHAINS, &index, &attributes, &flag, &mode); |
if (holder.is_null()) { |
// In case of JSProxy, an exception might have been thrown. |
if (isolate->has_pending_exception()) return MaybeHandle<Object>(); |
@@ -923,7 +915,7 @@ MaybeHandle<Object> StoreLookupSlot(Handle<String> name, Handle<Object> value, |
// The property was found in a context slot. |
if (index != Context::kNotFound) { |
- if (flags == BINDING_CHECK_INITIALIZED && |
+ if (flag == kNeedsInitialization && |
Handle<Context>::cast(holder)->is_the_hole(index)) { |
THROW_NEW_ERROR(isolate, |
NewReferenceError(MessageTemplate::kNotDefined, name), |