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()) { |
adamk
2016/11/12 00:26:05
Again, it seems like this is duplicating logic fro
Dan Ehrenberg
2016/12/07 05:41:26
Done.
|
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); |
} |