| Index: src/debug/debug-scopes.cc
|
| diff --git a/src/debug/debug-scopes.cc b/src/debug/debug-scopes.cc
|
| index c84d32ae7da7e2ecd89c072a72f38d81a5bd0dd5..fbdb0ec32cb2d7ae57931d91239f145220eacabc 100644
|
| --- a/src/debug/debug-scopes.cc
|
| +++ b/src/debug/debug-scopes.cc
|
| @@ -272,7 +272,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();
|
| @@ -283,7 +283,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()) {
|
| @@ -377,7 +377,7 @@ Handle<ScopeInfo> ScopeIterator::CurrentScopeInfo() {
|
| return nested_scope_chain_.last().scope_info;
|
| } else if (context_->IsBlockContext()) {
|
| return Handle<ScopeInfo>(context_->scope_info());
|
| - } else if (context_->IsFunctionContext()) {
|
| + } else if (context_->IsFunctionContext() || context_->IsEvalContext()) {
|
| return Handle<ScopeInfo>(context_->closure()->shared()->scope_info());
|
| }
|
| return Handle<ScopeInfo>::null();
|
| @@ -530,7 +530,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());
|
| @@ -728,7 +728,7 @@ 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() || context_->IsEvalContext());
|
| return SetContextVariableValue(CurrentScopeInfo(), CurrentContext(),
|
| variable_name, new_value);
|
| }
|
|
|