Skip to content

Commit

Permalink
deps: backport 071b655 from V8 upstream
Browse files Browse the repository at this point in the history
Original commit message:

    [PATCH] [debugger] Scope iterator should not visit inner function literals.

    R=marja@chromium.org
    BUG=chromium:621361

    Review-Url: https://codereview.chromium.org/2185913003
    Cr-Commit-Position: refs/heads/master@{#38087}

Fixes: #15075

PR-URL: #15215
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
  • Loading branch information
targos authored and MylesBorins committed Sep 19, 2017
1 parent 8dfc283 commit 921876d
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
2 changes: 1 addition & 1 deletion deps/v8/include/v8-version.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#define V8_MAJOR_VERSION 5
#define V8_MINOR_VERSION 1
#define V8_BUILD_NUMBER 281
#define V8_PATCH_LEVEL 107
#define V8_PATCH_LEVEL 108

// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
Expand Down
6 changes: 6 additions & 0 deletions deps/v8/src/debug/debug-scopes.cc
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,12 @@ bool ScopeIterator::CopyContextExtensionToScopeObject(

void ScopeIterator::GetNestedScopeChain(Isolate* isolate, Scope* scope,
int position) {
if (scope->is_function_scope()) {
// Do not collect scopes of nested inner functions inside the current one.
Handle<JSFunction> function =
Handle<JSFunction>::cast(frame_inspector_->GetFunction());
if (scope->end_position() < function->shared()->end_position()) return;
}
if (!scope->is_eval_scope()) {
nested_scope_chain_.Add(ExtendedScopeInfo(scope->GetScopeInfo(isolate),
scope->start_position(),
Expand Down
40 changes: 40 additions & 0 deletions deps/v8/test/mjsunit/regress/regress-crbug-621361.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Copyright 2016 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --expose-debug-as debug

var Debug = debug.Debug;
var steps = 0;
var exception = null;

function listener(event, execState, eventData, data) {
if (event != Debug.DebugEvent.Break) return;
try {
assertEquals([ debug.ScopeType.Local,
debug.ScopeType.Script,
debug.ScopeType.Global],
execState.frame().allScopes().map(s => s.scopeType()));
var x_value = execState.frame().evaluate("x").value();
if (steps < 2) {
assertEquals(undefined, x_value);
execState.prepareStep(Debug.StepAction.StepIn);
} else {
assertEquals("l => l", x_value.toString());
}
steps++;
} catch (e) {
exception = e;
}
}

Debug.setListener(listener);

(function() {
debugger;
var x = l => l;
})();

Debug.setListener(null);
assertNull(exception);
assertEquals(3, steps);

0 comments on commit 921876d

Please sign in to comment.