| Index: src/debug/debug-scopes.cc
|
| diff --git a/src/debug/debug-scopes.cc b/src/debug/debug-scopes.cc
|
| index cb0b5e1c40eaf07591e5667514873846590aab1a..0e81498c5d8be7cd2a5d35f36a8a238b4f8eca95 100644
|
| --- a/src/debug/debug-scopes.cc
|
| +++ b/src/debug/debug-scopes.cc
|
| @@ -271,7 +271,7 @@ ScopeIterator::ScopeType ScopeIterator::Type() {
|
| DCHECK(!scope_info->HasContext() || context_->IsBlockContext());
|
| return ScopeTypeBlock;
|
| case EVAL_SCOPE:
|
| - DCHECK(!scope_info->HasContext() || context_->IsFunctionContext());
|
| + DCHECK(!scope_info->HasContext() || context_->IsEvalContext());
|
| return ScopeTypeEval;
|
| }
|
| UNREACHABLE();
|
| @@ -282,7 +282,7 @@ ScopeIterator::ScopeType ScopeIterator::Type() {
|
| // fake it.
|
| return seen_script_scope_ ? ScopeTypeGlobal : ScopeTypeScript;
|
| }
|
| - if (context_->IsFunctionContext()) {
|
| + if (context_->IsFunctionContext() || context_->IsEvalContext()) {
|
| return ScopeTypeClosure;
|
| }
|
| if (context_->IsCatchContext()) {
|
| @@ -374,10 +374,9 @@ Handle<ScopeInfo> ScopeIterator::CurrentScopeInfo() {
|
| DCHECK(!Done());
|
| if (!nested_scope_chain_.is_empty()) {
|
| return nested_scope_chain_.last().scope_info;
|
| - } else if (context_->IsBlockContext()) {
|
| + } else if (context_->IsBlockContext() || context_->IsFunctionContext() ||
|
| + context_->IsEvalContext()) {
|
| return Handle<ScopeInfo>(context_->scope_info());
|
| - } else if (context_->IsFunctionContext()) {
|
| - return Handle<ScopeInfo>(context_->closure()->shared()->scope_info());
|
| }
|
| return Handle<ScopeInfo>::null();
|
| }
|
| @@ -529,7 +528,7 @@ MaybeHandle<JSObject> ScopeIterator::MaterializeLocalScope() {
|
| // context.
|
| Handle<JSObject> ScopeIterator::MaterializeClosure() {
|
| Handle<Context> context = CurrentContext();
|
| - DCHECK(context->IsFunctionContext());
|
| + DCHECK(context->IsFunctionContext() || context->IsEvalContext());
|
|
|
| Handle<SharedFunctionInfo> shared(context->closure()->shared());
|
| Handle<ScopeInfo> scope_info(shared->scope_info());
|
| @@ -727,7 +726,8 @@ bool ScopeIterator::SetInnerScopeVariableValue(Handle<String> variable_name,
|
| // This method copies structure of MaterializeClosure method above.
|
| bool ScopeIterator::SetClosureVariableValue(Handle<String> variable_name,
|
| Handle<Object> new_value) {
|
| - DCHECK(CurrentContext()->IsFunctionContext());
|
| + DCHECK(CurrentContext()->IsFunctionContext() ||
|
| + CurrentContext()->IsEvalContext());
|
| return SetContextVariableValue(CurrentScopeInfo(), CurrentContext(),
|
| variable_name, new_value);
|
| }
|
|
|