Title: [202684] trunk
Revision
202684
Author
ryanhad...@apple.com
Date
2016-06-30 10:31:23 -0700 (Thu, 30 Jun 2016)

Log Message

Unreviewed, rolling out r202659.
https://bugs.webkit.org/show_bug.cgi?id=159305

The test for this change times out on mac-wk2 debug and caused
an existing test to crash. (Requested by ryanhaddad on
#webkit).

Reverted changeset:

"Web Inspector: Wrong function name next to scope"
https://bugs.webkit.org/show_bug.cgi?id=158210
http://trac.webkit.org/changeset/202659

Patch by Commit Queue <commit-qu...@webkit.org> on 2016-06-30

Modified Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (202683 => 202684)


--- trunk/LayoutTests/ChangeLog	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/LayoutTests/ChangeLog	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1,3 +1,18 @@
+2016-06-30  Commit Queue  <commit-qu...@webkit.org>
+
+        Unreviewed, rolling out r202659.
+        https://bugs.webkit.org/show_bug.cgi?id=159305
+
+        The test for this change times out on mac-wk2 debug and caused
+        an existing test to crash. (Requested by ryanhaddad on
+        #webkit).
+
+        Reverted changeset:
+
+        "Web Inspector: Wrong function name next to scope"
+        https://bugs.webkit.org/show_bug.cgi?id=158210
+        http://trac.webkit.org/changeset/202659
+
 2016-06-30  Benjamin Poulain  <bpoul...@apple.com>
 
         [JSC] Date.setYear() misses timeClip()

Deleted: trunk/LayoutTests/inspector/debugger/paused-scopes-expected.txt (202683 => 202684)


--- trunk/LayoutTests/inspector/debugger/paused-scopes-expected.txt	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/LayoutTests/inspector/debugger/paused-scopes-expected.txt	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1,205 +0,0 @@
-Check scope chains for different call frames at different pauses.
-
-
-== Running test suite: PausedCallFrameScope
--- Running test case: TriggerFirstPause
-CALLFRAME: firstPause
-
----- Scope Chain ----
-  SCOPE: Name (firstPause) - Type (Block) - Hash (firstPause:<sourceID>:21:29)
-    - barLexicalVariable2
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:21:29)
-    - barLexicalVariable2
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:21:29)
-    - barVarVariable1
-  SCOPE: Name (firstPause) - Type (FunctionName) - Hash (firstPause:<sourceID>:21:29)
-    - firstPause
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-    - fakeFirstPauseLexicalVariable
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - fooLexicalVariable2
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
----- Merged Scope Chain ----
-  SCOPE: Name (firstPause) - Type (Block) - Hash (firstPause:<sourceID>:21:29)
-    - barLexicalVariable2
-  SCOPE: Name (firstPause) - Type (Local) - Hash (firstPause:<sourceID>:21:29)
-    - barVarVariable1
-    - barLexicalVariable2
-  SCOPE: Name (firstPause) - Type (FunctionName) - Hash (firstPause:<sourceID>:21:29)
-    - firstPause
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-    - fakeFirstPauseLexicalVariable
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-    - fooLexicalVariable2
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
-CALLFRAME: firstPause
-
----- Scope Chain ----
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-    - fakeFirstPauseLexicalVariable
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - fooLexicalVariable2
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
----- Merged Scope Chain ----
-  SCOPE: Name (firstPause) - Type (Local) - Hash (firstPause:<sourceID>:19:24)
-    - fakeFirstPauseLexicalVariable
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-    - fooLexicalVariable2
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
-CALLFRAME: entry
-
----- Scope Chain ----
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - fooLexicalVariable2
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
----- Merged Scope Chain ----
-  SCOPE: Name (entry) - Type (Local) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-    - fooLexicalVariable2
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
-
--- Running test case: TriggerSecondPause
-CALLFRAME: secondPause
-
----- Scope Chain ----
-  SCOPE: Name (secondPause) - Type (Block) - Hash (secondPause:<sourceID>:6:21)
-    - blockLexicalVariable
-  SCOPE: Name (secondPause) - Type (Closure) - Hash (secondPause:<sourceID>:6:21)
-    - shoeLexicalVariable1
-  SCOPE: Name (secondPause) - Type (Closure) - Hash (secondPause:<sourceID>:6:21)
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
----- Merged Scope Chain ----
-  SCOPE: Name (secondPause) - Type (Block) - Hash (secondPause:<sourceID>:6:21)
-    - blockLexicalVariable
-  SCOPE: Name (secondPause) - Type (Local) - Hash (secondPause:<sourceID>:6:21)
-    - shoeLexicalVariable1
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
-CALLFRAME: firstPause
-
----- Scope Chain ----
-  SCOPE: Name (firstPause) - Type (Block) - Hash (firstPause:<sourceID>:21:29)
-    - barLexicalVariable2
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:21:29)
-    - barLexicalVariable2
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:21:29)
-    - barVarVariable1
-  SCOPE: Name (firstPause) - Type (FunctionName) - Hash (firstPause:<sourceID>:21:29)
-    - firstPause
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-    - fakeFirstPauseLexicalVariable
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - fooLexicalVariable2
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
----- Merged Scope Chain ----
-  SCOPE: Name (firstPause) - Type (Block) - Hash (firstPause:<sourceID>:21:29)
-    - barLexicalVariable2
-  SCOPE: Name (firstPause) - Type (Local) - Hash (firstPause:<sourceID>:21:29)
-    - barVarVariable1
-    - barLexicalVariable2
-  SCOPE: Name (firstPause) - Type (FunctionName) - Hash (firstPause:<sourceID>:21:29)
-    - firstPause
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-    - fakeFirstPauseLexicalVariable
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-    - fooLexicalVariable2
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
-CALLFRAME: firstPause
-
----- Scope Chain ----
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-    - fakeFirstPauseLexicalVariable
-  SCOPE: Name (firstPause) - Type (Closure) - Hash (firstPause:<sourceID>:19:24)
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - fooLexicalVariable2
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
----- Merged Scope Chain ----
-  SCOPE: Name (firstPause) - Type (Local) - Hash (firstPause:<sourceID>:19:24)
-    - fakeFirstPauseLexicalVariable
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-    - fooLexicalVariable2
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
-CALLFRAME: entry
-
----- Scope Chain ----
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - fooLexicalVariable2
-  SCOPE: Name (entry) - Type (Closure) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
----- Merged Scope Chain ----
-  SCOPE: Name (entry) - Type (Local) - Hash (entry:<sourceID>:14:15)
-    - firstPause
-    - fooVarVariable1
-    - fooLexicalVariable2
-  SCOPE: Name () - Type (GlobalLexicalEnvironment) - Hash ()
-    - globalLet2
-  SCOPE: Name () - Type (Global) - Hash ()
-
-

Deleted: trunk/LayoutTests/inspector/debugger/paused-scopes.html (202683 => 202684)


--- trunk/LayoutTests/inspector/debugger/paused-scopes.html	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/LayoutTests/inspector/debugger/paused-scopes.html	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1,118 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<script src=""
-<script src=""
-<script>
-
-function test()
-{
-    function scopeTypeName(type) {
-        switch (type) {
-            case WebInspector.ScopeChainNode.Type.Local: return "Local";
-            case WebInspector.ScopeChainNode.Type.Global: return "Global";
-            case WebInspector.ScopeChainNode.Type.GlobalLexicalEnvironment: return "GlobalLexicalEnvironment";
-            case WebInspector.ScopeChainNode.Type.With: return "With";
-            case WebInspector.ScopeChainNode.Type.Closure: return "Closure";
-            case WebInspector.ScopeChainNode.Type.Catch: return "Catch";
-            case WebInspector.ScopeChainNode.Type.FunctionName: return "FunctionName";
-            case WebInspector.ScopeChainNode.Type.Block: return "Block";
-            default: return "Unknown!";
-        };        
-    }
-
-    function sanitizeHash(hash) {
-        return hash.replace(/:(.*?):/, ":<sourceID>:");
-    }
-
-    function collectScopeChainProperties(scopeChain) {
-        let scopeChainData = [];
-
-        let promises = [];
-        for (let scope of scopeChain) {
-            let data = "" properties: []};
-            scopeChainData.push(data);
-            if (scope.type === WebInspector.ScopeChainNode.Type.Global)
-                continue;
-
-            for (let scopeObject of scope.objects) {
-                promises.push(new Promise((resolve, reject) => {
-                    scopeObject.getAllPropertyDescriptors((propertyDescriptors) => {
-                        data.properties = data.properties.concat(propertyDescriptors);
-                        resolve();
-                    });
-                }));
-            }
-        }
-
-        return Promise.all(promises)
-            .then(() => scopeChainData);
-    }
-
-    function dumpScopeChainData(scopeChainData) {
-        for (let {scope, properties} of scopeChainData) {
-            InspectorTest.log(`  SCOPE: Name (${scope.name}) - Type (${scopeTypeName(scope.type)}) - Hash (${sanitizeHash(scope.hash)})`);
-            for (let propertyDescriptor of properties)
-                InspectorTest.log(`    - ${propertyDescriptor.name}`);            
-        }
-    }
-
-    function dumpCallFrame(callFrame) {
-        return Promise.all([
-            collectScopeChainProperties(callFrame.scopeChain),
-            collectScopeChainProperties(callFrame.mergedScopeChain()),
-        ]).then((results) => {
-            let [scopeChainData, mergedScopeChainData] = results;
-            InspectorTest.log(`CALLFRAME: ${callFrame.functionName}`);
-            InspectorTest.log("\n---- Scope Chain ----");
-            dumpScopeChainData(scopeChainData);
-            InspectorTest.log("\n---- Merged Scope Chain ----");
-            dumpScopeChainData(mergedScopeChainData);
-            InspectorTest.log("");
-        });
-    }
-
-    function dumpCallFrames() {
-        let callFrames = WebInspector.debuggerManager.callFrames;
-        let chain = Promise.resolve();
-        for (let callFrame of callFrames)
-            chain = chain.then(() => dumpCallFrame(callFrame));
-        return chain;
-    }
-
-
-    let suite = InspectorTest.createAsyncSuite("PausedCallFrameScope");
-
-    suite.addTestCase({
-        name: "TriggerFirstPause",
-        description: "Verify CallFrames and Scopes with the first pause.",
-        test: (resolve, reject) => {
-            InspectorTest.evaluateInPage("setTimeout(entry)");
-            WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.CallFramesDidChange, (event) => {
-                dumpCallFrames().then(resolve, reject);
-            });
-        }
-    });
-
-    suite.addTestCase({
-        name: "TriggerSecondPause",
-        description: "Verify CallFrames and Scopes with the first pause.",
-        test: (resolve, reject) => {
-            WebInspector.debuggerManager.resume();
-            WebInspector.debuggerManager.singleFireEventListener(WebInspector.DebuggerManager.Event.CallFramesDidChange, (event) => {
-                dumpCallFrames().then(() => {
-                    WebInspector.debuggerManager.resume();
-                    resolve();
-                }, reject);
-            });
-        }
-    });
-
-    suite.runTestCasesAndFinish();
-}
-</script>
-</head>
-<body _onload_="runTest()">
-<p>Check scope chains for different call frames at different pauses.</p>
-</body>
-</html>

Deleted: trunk/LayoutTests/inspector/debugger/resources/paused-scopes.js (202683 => 202684)


--- trunk/LayoutTests/inspector/debugger/resources/paused-scopes.js	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/LayoutTests/inspector/debugger/resources/paused-scopes.js	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1,31 +0,0 @@
-"use strict";
-
-var globalVar1; // Global (globalVar1)
-let globalLet2; // GlobalLexicalEnvironment (globalLet2)
-
-function secondPause() { // Global (secondPause)
-    let shoeLexicalVariable1 = document; // ClosureScope (shoeLexicalVariable1)
-    if (true) {
-        let blockLexicalVariable = "block"; // NestedBlockScope (blockLexicalVariable)
-        debugger;
-    }
-}
-
-function entry() { // Global (entry)
-    var fooVarVariable1; // foo ClosureScope (fooVarVariable1)
-    let fooLexicalVariable2; // foo ClosureScope (fooLexicalVariable2)
-    firstPause();
-
-    function firstPause() { // foo ClosureScope (firstPause)
-        let fakeFirstPauseLexicalVariable; // firstPause ClosureScope (fakeFirstPauseLexicalVariable)
-        (function firstPause() {
-            var barVarVariable1 = window.navigator; // firstPause ClosureScope (barVarVariable1)
-            let barLexicalVariable2 = window.navigator; // firstPause ClosureScope (barLexicalVariable2)
-            if (true) {
-                let barLexicalVariable2 = window.navigator; // NestedBlockScope (barLexicalVariable2)
-                debugger;
-                secondPause();
-            }
-        })();
-    }
-}

Modified: trunk/Source/_javascript_Core/CMakeLists.txt (202683 => 202684)


--- trunk/Source/_javascript_Core/CMakeLists.txt	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/CMakeLists.txt	2016-06-30 17:31:23 UTC (rev 202684)
@@ -239,7 +239,6 @@
 
     debugger/Debugger.cpp
     debugger/DebuggerCallFrame.cpp
-    debugger/DebuggerLocation.cpp
     debugger/DebuggerScope.cpp
 
     dfg/DFGAbstractHeap.cpp

Modified: trunk/Source/_javascript_Core/ChangeLog (202683 => 202684)


--- trunk/Source/_javascript_Core/ChangeLog	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1,3 +1,18 @@
+2016-06-30  Commit Queue  <commit-qu...@webkit.org>
+
+        Unreviewed, rolling out r202659.
+        https://bugs.webkit.org/show_bug.cgi?id=159305
+
+        The test for this change times out on mac-wk2 debug and caused
+        an existing test to crash. (Requested by ryanhaddad on
+        #webkit).
+
+        Reverted changeset:
+
+        "Web Inspector: Wrong function name next to scope"
+        https://bugs.webkit.org/show_bug.cgi?id=158210
+        http://trac.webkit.org/changeset/202659
+
 2016-06-30  Benjamin Poulain  <bpoul...@apple.com>
 
         [JSC] Date.setYear() misses timeClip()

Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (202683 => 202684)


--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1645,8 +1645,6 @@
 		A5EF9B171A1D440300702E90 /* generate_cpp_frontend_dispatcher_implementation.py in Headers */ = {isa = PBXBuildFile; fileRef = C4F4B6D41A05C76F005CAB76 /* generate_cpp_frontend_dispatcher_implementation.py */; settings = {ATTRIBUTES = (Private, ); }; };
 		A5EF9B181A1D440600702E90 /* generate_cpp_protocol_types_header.py in Headers */ = {isa = PBXBuildFile; fileRef = C4F4B6D51A05C76F005CAB76 /* generate_cpp_protocol_types_header.py */; settings = {ATTRIBUTES = (Private, ); }; };
 		A5EF9B191A1D440700702E90 /* generate_cpp_protocol_types_implementation.py in Headers */ = {isa = PBXBuildFile; fileRef = C4F4B6D61A05C76F005CAB76 /* generate_cpp_protocol_types_implementation.py */; settings = {ATTRIBUTES = (Private, ); }; };
-		A5FC84B21D1DDAD6006B5C46 /* DebuggerLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = A5FC84B11D1DDAC8006B5C46 /* DebuggerLocation.h */; };
-		A5FC84B31D1DDAD9006B5C46 /* DebuggerLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5FC84B01D1DDAC8006B5C46 /* DebuggerLocation.cpp */; };
 		A5FD0067189AFE9C00633231 /* ScriptArguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5FD0065189AFE9C00633231 /* ScriptArguments.cpp */; };
 		A5FD0068189AFE9C00633231 /* ScriptArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = A5FD0066189AFE9C00633231 /* ScriptArguments.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		A5FD006D189B00AA00633231 /* ScriptCallFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A5FD0069189B00A900633231 /* ScriptCallFrame.cpp */; };
@@ -3869,8 +3867,6 @@
 		A5EA70F619F6DE5A0098F5EC /* generate_objc_internal_header.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = generate_objc_internal_header.py; sourceTree = "<group>"; };
 		A5EA70F819F6DE5A0098F5EC /* objc_generator.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = objc_generator.py; sourceTree = "<group>"; };
 		A5EA710D19F6DF810098F5EC /* InspectorAlternateBackendDispatchers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorAlternateBackendDispatchers.h; sourceTree = "<group>"; };
-		A5FC84B01D1DDAC8006B5C46 /* DebuggerLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerLocation.cpp; sourceTree = "<group>"; };
-		A5FC84B11D1DDAC8006B5C46 /* DebuggerLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebuggerLocation.h; sourceTree = "<group>"; };
 		A5FD0065189AFE9C00633231 /* ScriptArguments.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptArguments.cpp; sourceTree = "<group>"; };
 		A5FD0066189AFE9C00633231 /* ScriptArguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptArguments.h; sourceTree = "<group>"; };
 		A5FD0069189B00A900633231 /* ScriptCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptCallFrame.cpp; sourceTree = "<group>"; };
@@ -5348,8 +5344,6 @@
 				149559ED0DDCDDF700648087 /* DebuggerCallFrame.cpp */,
 				1480DB9B0DDC227F003CFDF2 /* DebuggerCallFrame.h */,
 				6AD2CB4C19B9140100065719 /* DebuggerEvalEnabler.h */,
-				A5FC84B01D1DDAC8006B5C46 /* DebuggerLocation.cpp */,
-				A5FC84B11D1DDAC8006B5C46 /* DebuggerLocation.h */,
 				FEA0861F182B7A0400F6D851 /* DebuggerPrimitives.h */,
 				0F2D4DDB19832D34007D4B19 /* DebuggerScope.cpp */,
 				0F2D4DDC19832D34007D4B19 /* DebuggerScope.h */,
@@ -7701,7 +7695,6 @@
 				996B731C1BDA08DD00331B84 /* JSDataViewPrototype.lut.h in Headers */,
 				978801411471AD920041B016 /* JSDateMath.h in Headers */,
 				C2A7F688160432D400F76B98 /* JSDestructibleObject.h in Headers */,
-				A5FC84B21D1DDAD6006B5C46 /* DebuggerLocation.h in Headers */,
 				FE384EE61ADDB7AD0055DE2C /* JSDollarVM.h in Headers */,
 				FE384EE81ADDB7AD0055DE2C /* JSDollarVMPrototype.h in Headers */,
 				BC18C42D0E16F5CD00B34460 /* JSEnvironmentRecord.h in Headers */,
@@ -8781,7 +8774,6 @@
 				A57D23F11891B5B40031C7FA /* ContentSearchUtilities.cpp in Sources */,
 				52B717B51A0597E1007AF4F3 /* ControlFlowProfiler.cpp in Sources */,
 				0FBADF541BD1F4B800E073C1 /* CopiedBlock.cpp in Sources */,
-				A5FC84B31D1DDAD9006B5C46 /* DebuggerLocation.cpp in Sources */,
 				C240305514B404E60079EB64 /* CopiedSpace.cpp in Sources */,
 				0F6183301C45BF070072450B /* AirLowerMacros.cpp in Sources */,
 				C2239D1716262BDD005AC5FD /* CopyVisitor.cpp in Sources */,

Modified: trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp (202683 => 202684)


--- trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/bytecode/CodeBlock.cpp	2016-06-30 17:31:23 UTC (rev 202684)
@@ -2479,12 +2479,7 @@
                     ConcurrentJITLocker locker(symbolTable->m_lock);
                     symbolTable->prepareForTypeProfiling(locker);
                 }
-
-                SymbolTable* clone = symbolTable->cloneScopePart(*m_vm);
-                if (wasCompiledWithDebuggingOpcodes())
-                    clone->setRareDataCodeBlock(this);
-
-                constant = clone;
+                constant = symbolTable->cloneScopePart(*m_vm);
             }
         }
 

Deleted: trunk/Source/_javascript_Core/debugger/DebuggerLocation.cpp (202683 => 202684)


--- trunk/Source/_javascript_Core/debugger/DebuggerLocation.cpp	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/debugger/DebuggerLocation.cpp	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "DebuggerLocation.h"
-
-#include "Executable.h"
-
-namespace JSC {
-
-DebuggerLocation::DebuggerLocation(ScriptExecutable* executable)
-{
-    if (executable->isHostFunction())
-        return;
-
-    sourceID = executable->sourceID();
-    line = executable->firstLine();
-    column = executable->startColumn();
-    url = ""
-    if (url.isEmpty())
-        url = ""
-}
-
-} // namespace JSC

Deleted: trunk/Source/_javascript_Core/debugger/DebuggerLocation.h (202683 => 202684)


--- trunk/Source/_javascript_Core/debugger/DebuggerLocation.h	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/debugger/DebuggerLocation.h	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#pragma once
-
-#include "DebuggerPrimitives.h"
-#include <wtf/text/WTFString.h>
-
-namespace JSC {
-
-class ScriptExecutable;
-
-struct DebuggerLocation {
-
-    DebuggerLocation() { }
-    DebuggerLocation(const String& url, intptr_t sourceID, unsigned line, unsigned column)
-        : url(url)
-        , sourceID(sourceID)
-        , line(line)
-        , column(column)
-    { }
-
-    DebuggerLocation(ScriptExecutable*);
-
-    String url;
-    intptr_t sourceID { noSourceID };
-    unsigned line { 0 };
-    unsigned column { 0 };
-};
-
-} // namespace JSC

Modified: trunk/Source/_javascript_Core/debugger/DebuggerScope.cpp (202683 => 202684)


--- trunk/Source/_javascript_Core/debugger/DebuggerScope.cpp	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/debugger/DebuggerScope.cpp	2016-06-30 17:31:23 UTC (rev 202684)
@@ -210,33 +210,6 @@
     return m_scope->isNestedLexicalScope();
 }
 
-String DebuggerScope::name() const
-{
-    SymbolTable* symbolTable = m_scope->symbolTable();
-    if (!symbolTable)
-        return String();
-
-    CodeBlock* codeBlock = symbolTable->rareDataCodeBlock();
-    if (!codeBlock)
-        return String();
-
-    return String::fromUTF8(codeBlock->inferredName());
-}
-
-DebuggerLocation DebuggerScope::location() const
-{
-    SymbolTable* symbolTable = m_scope->symbolTable();
-    if (!symbolTable)
-        return DebuggerLocation();
-
-    CodeBlock* codeBlock = symbolTable->rareDataCodeBlock();
-    if (!codeBlock)
-        return DebuggerLocation();
-
-    ScriptExecutable* executable = codeBlock->ownerScriptExecutable();
-    return DebuggerLocation(executable);
-}
-
 JSValue DebuggerScope::caughtValue(ExecState* exec) const
 {
     ASSERT(isCatchScope());

Modified: trunk/Source/_javascript_Core/debugger/DebuggerScope.h (202683 => 202684)


--- trunk/Source/_javascript_Core/debugger/DebuggerScope.h	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/debugger/DebuggerScope.h	2016-06-30 17:31:23 UTC (rev 202684)
@@ -26,7 +26,6 @@
 #ifndef DebuggerScope_h
 #define DebuggerScope_h
 
-#include "DebuggerLocation.h"
 #include "JSObject.h"
 
 namespace JSC {
@@ -89,9 +88,6 @@
     bool isGlobalLexicalEnvironment() const;
     bool isNestedLexicalScope() const;
 
-    String name() const;
-    DebuggerLocation location() const;
-
     JSValue caughtValue(ExecState*) const;
 
 private:

Modified: trunk/Source/_javascript_Core/inspector/InjectedScriptSource.js (202683 => 202684)


--- trunk/Source/_javascript_Core/inspector/InjectedScriptSource.js	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/inspector/InjectedScriptSource.js	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1304,11 +1304,9 @@
     _wrapScopeChain: function(callFrame)
     {
         var scopeChain = callFrame.scopeChain;
-        var scopeDescriptions = callFrame.scopeDescriptions();
-
         var scopeChainProxy = [];
         for (var i = 0; i < scopeChain.length; i++)
-            scopeChainProxy[i] = InjectedScript.CallFrameProxy._createScopeJson(scopeChain[i], scopeDescriptions[i], "backtrace");
+            scopeChainProxy[i] = InjectedScript.CallFrameProxy._createScopeJson(callFrame.scopeType(i), scopeChain[i], "backtrace");
         return scopeChainProxy;
     }
 }
@@ -1321,21 +1319,14 @@
     4: "functionName", // FUNCTION_NAME_SCOPE
     5: "globalLexicalEnvironment", // GLOBAL_LEXICAL_ENVIRONMENT_SCOPE
     6: "nestedLexical", // NESTED_LEXICAL_SCOPE
-};
+}
 
-InjectedScript.CallFrameProxy._createScopeJson = function(object, {name, type, location}, groupId)
+InjectedScript.CallFrameProxy._createScopeJson = function(scopeTypeCode, scopeObject, groupId)
 {
-    var scope = {
-        object: injectedScript._wrapObject(object, groupId),
-        type: InjectedScript.CallFrameProxy._scopeTypeNames[type],
+    return {
+        object: injectedScript._wrapObject(scopeObject, groupId),
+        type: InjectedScript.CallFrameProxy._scopeTypeNames[scopeTypeCode]
     };
-
-    if (name)
-        scope.name = name;
-    if (location)
-        scope.location = location;
-
-    return scope;
 }
 
 

Modified: trunk/Source/_javascript_Core/inspector/JSJavaScriptCallFrame.cpp (202683 => 202684)


--- trunk/Source/_javascript_Core/inspector/JSJavaScriptCallFrame.cpp	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/inspector/JSJavaScriptCallFrame.cpp	2016-06-30 17:31:23 UTC (rev 202684)
@@ -28,11 +28,9 @@
 
 #include "DebuggerScope.h"
 #include "Error.h"
-#include "IdentifierInlines.h"
 #include "JSCJSValue.h"
 #include "JSCellInlines.h"
 #include "JSJavaScriptCallFramePrototype.h"
-#include "ObjectConstructor.h"
 #include "StructureInlines.h"
 
 using namespace JSC;
@@ -94,58 +92,45 @@
     return result;
 }
 
-static JSValue valueForScopeType(DebuggerScope* scope)
+JSValue JSJavaScriptCallFrame::scopeType(ExecState* exec)
 {
-    if (scope->isCatchScope())
-        return jsNumber(JSJavaScriptCallFrame::CATCH_SCOPE);
-    if (scope->isFunctionNameScope())
-        return jsNumber(JSJavaScriptCallFrame::FUNCTION_NAME_SCOPE);
-    if (scope->isWithScope())
-        return jsNumber(JSJavaScriptCallFrame::WITH_SCOPE);
-    if (scope->isNestedLexicalScope())
-        return jsNumber(JSJavaScriptCallFrame::NESTED_LEXICAL_SCOPE);
-    if (scope->isGlobalLexicalEnvironment())
-        return jsNumber(JSJavaScriptCallFrame::GLOBAL_LEXICAL_ENVIRONMENT_SCOPE);
-    if (scope->isGlobalScope())
-        return jsNumber(JSJavaScriptCallFrame::GLOBAL_SCOPE);
+    if (!impl().scopeChain())
+        return jsUndefined();
 
-    ASSERT(scope->isClosureScope());
-    return jsNumber(JSJavaScriptCallFrame::CLOSURE_SCOPE);
-}
+    if (!exec->argument(0).isInt32())
+        return jsUndefined();
+    int index = exec->argument(0).asInt32();
 
-static JSValue valueForScopeLocation(ExecState* exec, const DebuggerLocation& location)
-{
-    if (location.sourceID == noSourceID)
-        return jsNull();
-
-    // Debugger.Location protocol object.
-    JSObject* result = constructEmptyObject(exec);
-    result->putDirect(exec->vm(), Identifier::fromString(exec, "scriptId"), jsString(exec, String::number(location.sourceID)));
-    result->putDirect(exec->vm(), Identifier::fromString(exec, "lineNumber"), jsNumber(location.line));
-    result->putDirect(exec->vm(), Identifier::fromString(exec, "columnNumber"), jsNumber(location.column));
-    return result;
-}
-
-JSValue JSJavaScriptCallFrame::scopeDescriptions(ExecState* exec)
-{
     DebuggerScope* scopeChain = impl().scopeChain();
-    if (!scopeChain)
-        return jsUndefined();
+    DebuggerScope::iterator end = scopeChain->end();
 
-    int index = 0;
-    JSArray* array = constructEmptyArray(exec, nullptr);
-
-    DebuggerScope::iterator end = scopeChain->end();
     for (DebuggerScope::iterator iter = scopeChain->begin(); iter != end; ++iter) {
         DebuggerScope* scope = iter.get();
-        JSObject* description = constructEmptyObject(exec);
-        description->putDirect(exec->vm(), Identifier::fromString(exec, "type"), valueForScopeType(scope));
-        description->putDirect(exec->vm(), Identifier::fromString(exec, "name"), jsString(exec, scope->name()));
-        description->putDirect(exec->vm(), Identifier::fromString(exec, "location"), valueForScopeLocation(exec, scope->location()));
-        array->putDirectIndex(exec, index++, description);
+
+        if (!index) {
+            if (scope->isCatchScope())
+                return jsNumber(JSJavaScriptCallFrame::CATCH_SCOPE);
+            if (scope->isFunctionNameScope())
+                return jsNumber(JSJavaScriptCallFrame::FUNCTION_NAME_SCOPE);
+            if (scope->isWithScope())
+                return jsNumber(JSJavaScriptCallFrame::WITH_SCOPE);
+            if (scope->isNestedLexicalScope())
+                return jsNumber(JSJavaScriptCallFrame::NESTED_LEXICAL_SCOPE);
+            if (scope->isGlobalLexicalEnvironment())
+                return jsNumber(JSJavaScriptCallFrame::GLOBAL_LEXICAL_ENVIRONMENT_SCOPE);
+            if (scope->isGlobalScope()) {
+                ASSERT(++iter == end);
+                return jsNumber(JSJavaScriptCallFrame::GLOBAL_SCOPE);
+            }
+            ASSERT(scope->isClosureScope());
+            return jsNumber(JSJavaScriptCallFrame::CLOSURE_SCOPE);
+        }
+
+        --index;
     }
 
-    return array;
+    ASSERT_NOT_REACHED();
+    return jsUndefined();
 }
 
 JSValue JSJavaScriptCallFrame::caller(ExecState* exec) const

Modified: trunk/Source/_javascript_Core/inspector/JSJavaScriptCallFrame.h (202683 => 202684)


--- trunk/Source/_javascript_Core/inspector/JSJavaScriptCallFrame.h	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/inspector/JSJavaScriptCallFrame.h	2016-06-30 17:31:23 UTC (rev 202684)
@@ -58,7 +58,7 @@
 
     // Functions.
     JSC::JSValue evaluateWithScopeExtension(JSC::ExecState*);
-    JSC::JSValue scopeDescriptions(JSC::ExecState*);
+    JSC::JSValue scopeType(JSC::ExecState*);
 
     // Attributes.
     JSC::JSValue caller(JSC::ExecState*) const;

Modified: trunk/Source/_javascript_Core/inspector/JSJavaScriptCallFramePrototype.cpp (202683 => 202684)


--- trunk/Source/_javascript_Core/inspector/JSJavaScriptCallFramePrototype.cpp	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/inspector/JSJavaScriptCallFramePrototype.cpp	2016-06-30 17:31:23 UTC (rev 202684)
@@ -39,7 +39,7 @@
 
 // Functions.
 static EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension(ExecState*);
-static EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFramePrototypeFunctionScopeDescriptions(ExecState*);
+static EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFramePrototypeFunctionScopeType(ExecState*);
 
 // Attributes.
 static EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFrameAttributeCaller(ExecState*);
@@ -61,7 +61,7 @@
     vm.prototypeMap.addPrototype(this);
 
     JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION("evaluateWithScopeExtension", jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension, DontEnum, 1);
-    JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION("scopeDescriptions", jsJavaScriptCallFramePrototypeFunctionScopeDescriptions, DontEnum, 0);
+    JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION("scopeType", jsJavaScriptCallFramePrototypeFunctionScopeType, DontEnum, 1);
 
     JSC_NATIVE_GETTER("caller", jsJavaScriptCallFrameAttributeCaller, DontEnum | Accessor);
     JSC_NATIVE_GETTER("sourceID", jsJavaScriptCallFrameAttributeSourceID, DontEnum | Accessor);
@@ -84,7 +84,7 @@
     return JSValue::encode(castedThis->evaluateWithScopeExtension(exec));
 }
 
-EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFramePrototypeFunctionScopeDescriptions(ExecState* exec)
+EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFramePrototypeFunctionScopeType(ExecState* exec)
 {
     JSValue thisValue = exec->thisValue();
     JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
@@ -91,7 +91,7 @@
     if (!castedThis)
         return throwVMTypeError(exec);
 
-    return JSValue::encode(castedThis->scopeDescriptions(exec));
+    return JSValue::encode(castedThis->scopeType(exec));
 }
 
 EncodedJSValue JSC_HOST_CALL jsJavaScriptCallFrameAttributeCaller(ExecState* exec)

Modified: trunk/Source/_javascript_Core/inspector/protocol/Debugger.json (202683 => 202684)


--- trunk/Source/_javascript_Core/inspector/protocol/Debugger.json	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/inspector/protocol/Debugger.json	2016-06-30 17:31:23 UTC (rev 202684)
@@ -81,10 +81,8 @@
             "id": "Scope",
             "type": "object",
             "properties": [
-                { "name": "object", "$ref": "Runtime.RemoteObject", "description": "Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties." },
                 { "name": "type", "type": "string", "enum": ["global", "with", "closure", "catch", "functionName", "globalLexicalEnvironment", "nestedLexical"], "description": "Scope type." },
-                { "name": "name", "type": "string", "optional": true, "description": "Name associated with the scope." },
-                { "name": "location", "$ref": "Location", "optional": true, "description": "Location if available of the scope definition." }
+                { "name": "object", "$ref": "Runtime.RemoteObject", "description": "Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties." }
             ],
             "description": "Scope description."
         },

Modified: trunk/Source/_javascript_Core/runtime/JSScope.cpp (202683 => 202684)


--- trunk/Source/_javascript_Core/runtime/JSScope.cpp	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/runtime/JSScope.cpp	2016-06-30 17:31:23 UTC (rev 202684)
@@ -340,12 +340,4 @@
     return nullptr;
 }
 
-SymbolTable* JSScope::symbolTable()
-{
-    if (JSSymbolTableObject* symbolTableObject = jsDynamicCast<JSSymbolTableObject*>(this))
-        return symbolTableObject->symbolTable();
-
-    return nullptr;
-}
-
 } // namespace JSC

Modified: trunk/Source/_javascript_Core/runtime/JSScope.h (202683 => 202684)


--- trunk/Source/_javascript_Core/runtime/JSScope.h	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/runtime/JSScope.h	2016-06-30 17:31:23 UTC (rev 202684)
@@ -32,9 +32,8 @@
 namespace JSC {
 
 class ScopeChainIterator;
-class SymbolTable;
+class WatchpointSet;
 class VariableEnvironment;
-class WatchpointSet;
 
 class JSScope : public JSNonFinalObject {
 public:
@@ -72,8 +71,6 @@
     VM* vm();
     JSObject* globalThis();
 
-    SymbolTable* symbolTable();
-
 protected:
     JSScope(VM&, Structure*, JSScope* next);
 

Modified: trunk/Source/_javascript_Core/runtime/SymbolTable.cpp (202683 => 202684)


--- trunk/Source/_javascript_Core/runtime/SymbolTable.cpp	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/runtime/SymbolTable.cpp	2016-06-30 17:31:23 UTC (rev 202684)
@@ -104,9 +104,6 @@
     visitor.append(&thisSymbolTable->m_arguments);
     visitor.append(&thisSymbolTable->m_singletonScope);
     
-    if (thisSymbolTable->m_rareData)
-        visitor.append(&thisSymbolTable->m_rareData->m_codeBlock);
-    
     // Save some memory. This is O(n) to rebuild and we do so on the fly.
     ConcurrentJITLocker locker(thisSymbolTable->m_lock);
     thisSymbolTable->m_localToEntry = nullptr;
@@ -162,28 +159,28 @@
     if (ScopedArgumentsTable* arguments = this->arguments())
         result->m_arguments.set(vm, result, arguments);
     
-    if (m_rareData) {
-        result->m_rareData = std::make_unique<SymbolTableRareData>();
+    if (m_typeProfilingRareData) {
+        result->m_typeProfilingRareData = std::make_unique<TypeProfilingRareData>();
 
         {
-            auto iter = m_rareData->m_uniqueIDMap.begin();
-            auto end = m_rareData->m_uniqueIDMap.end();
+            auto iter = m_typeProfilingRareData->m_uniqueIDMap.begin();
+            auto end = m_typeProfilingRareData->m_uniqueIDMap.end();
             for (; iter != end; ++iter)
-                result->m_rareData->m_uniqueIDMap.set(iter->key, iter->value);
+                result->m_typeProfilingRareData->m_uniqueIDMap.set(iter->key, iter->value);
         }
 
         {
-            auto iter = m_rareData->m_offsetToVariableMap.begin();
-            auto end = m_rareData->m_offsetToVariableMap.end();
+            auto iter = m_typeProfilingRareData->m_offsetToVariableMap.begin();
+            auto end = m_typeProfilingRareData->m_offsetToVariableMap.end();
             for (; iter != end; ++iter)
-                result->m_rareData->m_offsetToVariableMap.set(iter->key, iter->value);
+                result->m_typeProfilingRareData->m_offsetToVariableMap.set(iter->key, iter->value);
         }
 
         {
-            auto iter = m_rareData->m_uniqueTypeSetMap.begin();
-            auto end = m_rareData->m_uniqueTypeSetMap.end();
+            auto iter = m_typeProfilingRareData->m_uniqueTypeSetMap.begin();
+            auto end = m_typeProfilingRareData->m_uniqueTypeSetMap.end();
             for (; iter != end; ++iter)
-                result->m_rareData->m_uniqueTypeSetMap.set(iter->key, iter->value);
+                result->m_typeProfilingRareData->m_uniqueTypeSetMap.set(iter->key, iter->value);
         }
     }
     
@@ -192,40 +189,23 @@
 
 void SymbolTable::prepareForTypeProfiling(const ConcurrentJITLocker&)
 {
-    if (m_rareData)
+    if (m_typeProfilingRareData)
         return;
 
-    m_rareData = std::make_unique<SymbolTableRareData>();
+    m_typeProfilingRareData = std::make_unique<TypeProfilingRareData>();
 
     for (auto iter = m_map.begin(), end = m_map.end(); iter != end; ++iter) {
-        m_rareData->m_uniqueIDMap.set(iter->key, TypeProfilerNeedsUniqueIDGeneration);
-        m_rareData->m_offsetToVariableMap.set(iter->value.varOffset(), iter->key);
+        m_typeProfilingRareData->m_uniqueIDMap.set(iter->key, TypeProfilerNeedsUniqueIDGeneration);
+        m_typeProfilingRareData->m_offsetToVariableMap.set(iter->value.varOffset(), iter->key);
     }
 }
 
-CodeBlock* SymbolTable::rareDataCodeBlock()
-{
-    if (!m_rareData)
-        return nullptr;
-
-    return m_rareData->m_codeBlock.get();
-}
-
-void SymbolTable::setRareDataCodeBlock(CodeBlock* codeBlock)
-{
-    if (!m_rareData)
-        m_rareData = std::make_unique<SymbolTableRareData>();
-
-    ASSERT(!m_rareData->m_codeBlock);
-    m_rareData->m_codeBlock.set(*codeBlock->vm(), this, codeBlock);
-}
-
 GlobalVariableID SymbolTable::uniqueIDForVariable(const ConcurrentJITLocker&, UniquedStringImpl* key, VM& vm)
 {
-    RELEASE_ASSERT(m_rareData);
+    RELEASE_ASSERT(m_typeProfilingRareData);
 
-    auto iter = m_rareData->m_uniqueIDMap.find(key);
-    auto end = m_rareData->m_uniqueIDMap.end();
+    auto iter = m_typeProfilingRareData->m_uniqueIDMap.find(key);
+    auto end = m_typeProfilingRareData->m_uniqueIDMap.end();
     if (iter == end)
         return TypeProfilerNoGlobalIDExists;
 
@@ -232,8 +212,8 @@
     GlobalVariableID id = iter->value;
     if (id == TypeProfilerNeedsUniqueIDGeneration) {
         id = vm.typeProfiler()->getNextUniqueVariableID();
-        m_rareData->m_uniqueIDMap.set(key, id);
-        m_rareData->m_uniqueTypeSetMap.set(key, TypeSet::create()); // Make a new global typeset for this corresponding ID.
+        m_typeProfilingRareData->m_uniqueIDMap.set(key, id);
+        m_typeProfilingRareData->m_uniqueTypeSetMap.set(key, TypeSet::create()); // Make a new global typeset for this corresponding ID.
     }
 
     return id;
@@ -241,10 +221,10 @@
 
 GlobalVariableID SymbolTable::uniqueIDForOffset(const ConcurrentJITLocker& locker, VarOffset offset, VM& vm)
 {
-    RELEASE_ASSERT(m_rareData);
+    RELEASE_ASSERT(m_typeProfilingRareData);
 
-    auto iter = m_rareData->m_offsetToVariableMap.find(offset);
-    auto end = m_rareData->m_offsetToVariableMap.end();
+    auto iter = m_typeProfilingRareData->m_offsetToVariableMap.find(offset);
+    auto end = m_typeProfilingRareData->m_offsetToVariableMap.end();
     if (iter == end)
         return TypeProfilerNoGlobalIDExists;
 
@@ -253,12 +233,12 @@
 
 RefPtr<TypeSet> SymbolTable::globalTypeSetForOffset(const ConcurrentJITLocker& locker, VarOffset offset, VM& vm)
 {
-    RELEASE_ASSERT(m_rareData);
+    RELEASE_ASSERT(m_typeProfilingRareData);
 
     uniqueIDForOffset(locker, offset, vm); // Lazily create the TypeSet if necessary.
 
-    auto iter = m_rareData->m_offsetToVariableMap.find(offset);
-    auto end = m_rareData->m_offsetToVariableMap.end();
+    auto iter = m_typeProfilingRareData->m_offsetToVariableMap.find(offset);
+    auto end = m_typeProfilingRareData->m_offsetToVariableMap.end();
     if (iter == end)
         return nullptr;
 
@@ -267,12 +247,12 @@
 
 RefPtr<TypeSet> SymbolTable::globalTypeSetForVariable(const ConcurrentJITLocker& locker, UniquedStringImpl* key, VM& vm)
 {
-    RELEASE_ASSERT(m_rareData);
+    RELEASE_ASSERT(m_typeProfilingRareData);
 
     uniqueIDForVariable(locker, key, vm); // Lazily create the TypeSet if necessary.
 
-    auto iter = m_rareData->m_uniqueTypeSetMap.find(key);
-    auto end = m_rareData->m_uniqueTypeSetMap.end();
+    auto iter = m_typeProfilingRareData->m_uniqueTypeSetMap.find(key);
+    auto end = m_typeProfilingRareData->m_uniqueTypeSetMap.end();
     if (iter == end)
         return nullptr;
 

Modified: trunk/Source/_javascript_Core/runtime/SymbolTable.h (202683 => 202684)


--- trunk/Source/_javascript_Core/runtime/SymbolTable.h	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/_javascript_Core/runtime/SymbolTable.h	2016-06-30 17:31:23 UTC (rev 202684)
@@ -679,9 +679,6 @@
     SymbolTable* cloneScopePart(VM&);
 
     void prepareForTypeProfiling(const ConcurrentJITLocker&);
-
-    CodeBlock* rareDataCodeBlock();
-    void setRareDataCodeBlock(CodeBlock*);
     
     InferredValue* singletonScope() { return m_singletonScope.get(); }
 
@@ -698,13 +695,12 @@
     Map m_map;
     ScopeOffset m_maxScopeOffset;
     
-    struct SymbolTableRareData {
+    struct TypeProfilingRareData {
         UniqueIDMap m_uniqueIDMap;
         OffsetToVariableMap m_offsetToVariableMap;
         UniqueTypeSetMap m_uniqueTypeSetMap;
-        WriteBarrier<CodeBlock> m_codeBlock;
     };
-    std::unique_ptr<SymbolTableRareData> m_rareData;
+    std::unique_ptr<TypeProfilingRareData> m_typeProfilingRareData;
 
     bool m_usesNonStrictEval : 1;
     bool m_nestedLexicalScope : 1; // Non-function LexicalScope.

Modified: trunk/Source/WebInspectorUI/ChangeLog (202683 => 202684)


--- trunk/Source/WebInspectorUI/ChangeLog	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/WebInspectorUI/ChangeLog	2016-06-30 17:31:23 UTC (rev 202684)
@@ -1,3 +1,18 @@
+2016-06-30  Commit Queue  <commit-qu...@webkit.org>
+
+        Unreviewed, rolling out r202659.
+        https://bugs.webkit.org/show_bug.cgi?id=159305
+
+        The test for this change times out on mac-wk2 debug and caused
+        an existing test to crash. (Requested by ryanhaddad on
+        #webkit).
+
+        Reverted changeset:
+
+        "Web Inspector: Wrong function name next to scope"
+        https://bugs.webkit.org/show_bug.cgi?id=158210
+        http://trac.webkit.org/changeset/202659
+
 2016-06-29  Joseph Pecoraro  <pecor...@apple.com>
 
         Web Inspector: Wrong function name next to scope

Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js (202683 => 202684)


--- trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js	2016-06-30 17:31:23 UTC (rev 202684)
@@ -662,7 +662,7 @@
         }
 
         var object = WebInspector.RemoteObject.fromPayload(payload.object);
-        return new WebInspector.ScopeChainNode(type, [object], payload.name, payload.location);
+        return new WebInspector.ScopeChainNode(type, [object]);
     }
 
     _pauseReasonFromPayload(payload)

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/CallFrame.js (202683 => 202684)


--- trunk/Source/WebInspectorUI/UserInterface/Models/CallFrame.js	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/CallFrame.js	2016-06-30 17:31:23 UTC (rev 202684)
@@ -45,15 +45,46 @@
 
     // Public
 
-    get id() { return this._id; }
-    get sourceCodeLocation() { return this._sourceCodeLocation; }
-    get functionName() { return this._functionName; }
-    get nativeCode() { return this._nativeCode; }
-    get programCode() { return this._programCode; }
-    get thisObject() { return this._thisObject; }
-    get scopeChain() { return this._scopeChain; }
-    get isTailDeleted() { return this._isTailDeleted; }
+    get id()
+    {
+        return this._id;
+    }
 
+    get sourceCodeLocation()
+    {
+        return this._sourceCodeLocation;
+    }
+
+    get functionName()
+    {
+        return this._functionName;
+    }
+
+    get nativeCode()
+    {
+        return this._nativeCode;
+    }
+
+    get programCode()
+    {
+        return this._programCode;
+    }
+
+    get thisObject()
+    {
+        return this._thisObject;
+    }
+
+    get scopeChain()
+    {
+        return this._scopeChain;
+    }
+
+    get isTailDeleted()
+    {
+        return this._isTailDeleted;
+    }
+
     saveIdentityToCookie()
     {
         // Do nothing. The call frame is torn down when the inspector closes, and
@@ -81,99 +112,6 @@
             this._scopeChain[i].objects[0].deprecatedGetAllProperties(propertiesCollected);
     }
 
-    mergedScopeChain()
-    {
-        let mergedScopes = [];
-
-        // Scopes list goes from top/local (1) to bottom/global (5)
-        //   [scope1, scope2, scope3, scope4, scope5]
-        let scopes = this._scopeChain.slice();
-
-        // Merge similiar scopes. Some function call frames may have multiple
-        // top level closure scopes (one for `var`s one for `let`s) that can be
-        // combined to a single scope of variables. Go in reverse order so we
-        // merge the first two closure scopes with the same name. Also mark
-        // the first time we see a new name, so we know the base for the name.
-        //   [scope1&2, scope3, scope4, scope5]
-        //      foo      bar     GLE    global
-        let lastMarkedHash = null;
-        function markAsBaseIfNeeded(scope) {
-            if (!scope.hash)
-                return false;
-            if (scope.type !== WebInspector.ScopeChainNode.Type.Closure)
-                return false;
-            if (scope.hash === lastMarkedHash)
-                return false;
-            lastMarkedHash = scope.hash;
-            scope.__baseClosureScope = true;
-            return true;
-        }
-
-        function shouldMergeClosureScopes(youngScope, oldScope, lastMerge) {
-            if (!youngScope || !oldScope)
-                return false;
-
-            // Don't merge unknown locations.
-            if (!youngScope.hash || !oldScope.hash)
-                return false;
-
-            // Only merge closure scopes.
-            if (youngScope.type !== WebInspector.ScopeChainNode.Type.Closure)
-                return false;
-            if (oldScope.type !== WebInspector.ScopeChainNode.Type.Closure)
-                return false;
-
-            // Don't merge if they are not the same.
-            if (youngScope.hash !== oldScope.hash)
-                return false;
-
-            // Don't merge if there was already a merge.
-            if (lastMerge && youngScope.hash === lastMerge.hash)
-                return false;
-
-            return true;
-        }
-
-        let lastScope = null;
-        let lastMerge = null;
-        for (let i = scopes.length - 1; i >= 0; --i) {
-            let scope = scopes[i];
-            markAsBaseIfNeeded(scope);
-            if (shouldMergeClosureScopes(scope, lastScope, lastMerge)) {
-                console.assert(lastScope.__baseClosureScope);
-                let type = WebInspector.ScopeChainNode.Type.Closure;
-                let objects = lastScope.objects.concat(scope.objects);
-                let merged = new WebInspector.ScopeChainNode(type, objects, scope.name, scope.location);
-                merged.__baseClosureScope = true;
-                console.assert(objects.length === 2);
-
-                mergedScopes.pop(); // Remove the last.
-                mergedScopes.push(merged); // Add the merged scope.
-
-                lastMerge = merged;
-                lastScope = null;
-            } else {
-                mergedScopes.push(scope);
-
-                lastMerge = null;
-                lastScope = scope;
-            }
-        }
-
-        mergedScopes = mergedScopes.reverse();
-
-        // Mark the first Closure as Local if the name matches this call frame.
-        for (let scope of mergedScopes) {
-            if (scope.type === WebInspector.ScopeChainNode.Type.Closure) {
-                if (scope.name === this._functionName)
-                    scope.convertToLocalScope();
-                break;
-            }
-        }
-
-        return mergedScopes;
-    }
-
     // Static
 
     static functionNameFromPayload(payload)

Modified: trunk/Source/WebInspectorUI/UserInterface/Models/ScopeChainNode.js (202683 => 202684)


--- trunk/Source/WebInspectorUI/UserInterface/Models/ScopeChainNode.js	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/ScopeChainNode.js	2016-06-30 17:31:23 UTC (rev 202684)
@@ -25,7 +25,7 @@
 
 WebInspector.ScopeChainNode = class ScopeChainNode extends WebInspector.Object
 {
-    constructor(type, objects, name, location)
+    constructor(type, objects)
     {
         super();
 
@@ -37,31 +37,18 @@
 
         this._type = type || null;
         this._objects = objects || [];
-        this._name = name || "";
-        this._location = location || null;
     }
 
     // Public
 
-    get type() { return this._type; }
-    get objects() { return this._objects; }
-    get name() { return this._name; }
-    get location() { return this._location; }
-
-    get hash()
+    get type()
     {
-        if (this._hash)
-            return this._hash;
-
-        this._hash = this._name;
-        if (this._location)
-            this._hash += `:${this._location.scriptId}:${this._location.lineNumber}:${this._location.columnNumber}`;
-        return this._hash;
+        return this._type;
     }
 
-    convertToLocalScope()
+    get objects()
     {
-        this._type = WebInspector.ScopeChainNode.Type.Local;
+        return this._objects;
     }
 };
 

Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ScopeChainDetailsSidebarPanel.js (202683 => 202684)


--- trunk/Source/WebInspectorUI/UserInterface/Views/ScopeChainDetailsSidebarPanel.js	2016-06-30 17:16:39 UTC (rev 202683)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ScopeChainDetailsSidebarPanel.js	2016-06-30 17:31:23 UTC (rev 202684)
@@ -164,92 +164,159 @@
         for (let type in WebInspector.ScopeChainNode.Type)
             sectionCountByType.set(WebInspector.ScopeChainNode.Type[type], 0);
 
-        let scopeChain = callFrame.mergedScopeChain();
-        for (let scope of scopeChain) {
-            let title = null;
-            let extraPropertyDescriptor = null;
-            let collapsedByDefault = false;
+        // Scopes list goes from top/local (1) to bottom/global (5)
+        // Call frames list goes from top/local (1) to bottom/global (2)
+        //   [scope1, scope2, scope3, scope4, scope5]
+        //   [CallFrame1, CallFrame2]
+        let scopeChain = callFrame.scopeChain;
+        let callFrames = WebInspector.debuggerManager.callFrames;
 
-            let count = sectionCountByType.get(scope.type);
-            sectionCountByType.set(scope.type, ++count);
-
-            switch (scope.type) {
-            case WebInspector.ScopeChainNode.Type.Local:
-                foundLocalScope = true;
-                collapsedByDefault = false;
-                title = WebInspector.UIString("Local Variables");
-                if (callFrame.thisObject)
-                    extraPropertyDescriptor = new WebInspector.PropertyDescriptor({name: "this", value: callFrame.thisObject});
+        // Group scopes with the call frame containing them.
+        // Creating a map that looks like:
+        //   CallFrame2 => [scope5, scope4]
+        //   CallFrame1 => [scope3, scope2, scope1]
+        let reversedScopeChain = scopeChain.slice().reverse();
+        let callFrameScopes = new Map;
+        let lastLength = 0;
+        for (let i = callFrames.length - 1; i >= 0; --i) {
+            let nextCallFrame = callFrames[i];
+            console.assert(nextCallFrame.scopeChain.length > lastLength);
+            callFrameScopes.set(nextCallFrame, reversedScopeChain.slice(lastLength, nextCallFrame.scopeChain.length));
+            lastLength = nextCallFrame.scopeChain.length;
+            if (nextCallFrame === callFrame) {
+                console.assert(lastLength === scopeChain.length);
                 break;
+            }
+        }
 
-            case WebInspector.ScopeChainNode.Type.Closure:
-                if (scope.__baseClosureScope && scope.name)
-                    title = WebInspector.UIString("Closure Variables (%s)").format(scope.name);
-                else
-                    title = WebInspector.UIString("Closure Variables");
-                collapsedByDefault = false;
-                break;
+        // Now that we have this map we can merge some of the scopes within an individual
+        // call frame. In particular, function call frames may have multiple top level
+        // closure scopes (one for `var`s one for `let`s) that can be combined to a
+        // single scope of variables.
+        // This modifies the Map, resulting in:
+        //   CallFrame2 => [scope4, scope5]
+        //   CallFrame1 => [scope1, scope2&3]
+        for (let [currentCallFrame, scopes] of callFrameScopes) {
+            let firstClosureScope = null;
+            for (let scope of scopes) {
+                // Reached a non-closure scope. Bail.
+                let isClosureScope = scope.type === WebInspector.ScopeChainNode.Type.Closure;
+                if (!isClosureScope && firstClosureScope)
+                    break;
 
-            case WebInspector.ScopeChainNode.Type.Block:
-                title = WebInspector.UIString("Block Variables");
-                collapsedByDefault = false;
-                break;
+                // Found first closure scope. Mark it so we can provide the function name later in the UI.
+                if (isClosureScope && !firstClosureScope) {
+                    firstClosureScope = scope;
+                    firstClosureScope[WebInspector.ScopeChainDetailsSidebarPanel.CallFrameBaseClosureScopeSymbol] = true;
+                    continue;
+                }
 
-            case WebInspector.ScopeChainNode.Type.Catch:
-                title = WebInspector.UIString("Catch Variables");
-                collapsedByDefault = false;
-                break;
+                // Found 2 sequential top level closure scopes. Merge and mark it so we can provide the function name later in the UI.
+                if (isClosureScope && firstClosureScope) {
+                    let type = currentCallFrame === callFrame ? WebInspector.ScopeChainNode.Type.Local : WebInspector.ScopeChainNode.Type.Closure;
+                    let objects = firstClosureScope.objects.concat(scope.objects);
+                    let merged = new WebInspector.ScopeChainNode(type, objects);
+                    merged[WebInspector.ScopeChainDetailsSidebarPanel.CallFrameBaseClosureScopeSymbol] = true;
+                    console.assert(objects.length === 2);
 
-            case WebInspector.ScopeChainNode.Type.FunctionName:
-                title = WebInspector.UIString("Function Name Variable");
-                collapsedByDefault = true;
-                break;
+                    let index = scopes.indexOf(firstClosureScope);
+                    scopes.splice(index, 1); // Remove one of them.
+                    scopes[index] = merged; // Replace the remaining with the merged.
+                    break;
+                }
+            }
+            scopes.reverse();
+        }
 
-            case WebInspector.ScopeChainNode.Type.With:
-                title = WebInspector.UIString("With Object Properties");
-                collapsedByDefault = foundLocalScope;
-                break;
+        // Now we can walk the list of call frames and their scopes.
+        // We walk in top -> down order:
+        //   CallFrame1 => [scope1, scope2&3]
+        //   CallFrame2 => [scope5, scope4]
+        for (let [call, scopes] of [...callFrameScopes.entries()].reverse()) {
+            for (let scope of scopes) {
+                let title = null;
+                let extraPropertyDescriptor = null;
+                let collapsedByDefault = false;
 
-            case WebInspector.ScopeChainNode.Type.Global:
-                title = WebInspector.UIString("Global Variables");
-                collapsedByDefault = true;
-                break;
+                let count = sectionCountByType.get(scope.type);
+                sectionCountByType.set(scope.type, ++count);
 
-            case WebInspector.ScopeChainNode.Type.GlobalLexicalEnvironment:
-                title = WebInspector.UIString("Global Lexical Environment");
-                collapsedByDefault = true;
-                break;
-            }
+                switch (scope.type) {
+                    case WebInspector.ScopeChainNode.Type.Local:
+                        foundLocalScope = true;
+                        collapsedByDefault = false;
+                        title = WebInspector.UIString("Local Variables");
+                        if (call.thisObject)
+                            extraPropertyDescriptor = new WebInspector.PropertyDescriptor({name: "this", value: call.thisObject});
+                        break;
 
-            let detailsSectionIdentifier = scope.type + "-" + sectionCountByType.get(scope.type);
+                    case WebInspector.ScopeChainNode.Type.Closure:
+                        if (scope[WebInspector.ScopeChainDetailsSidebarPanel.CallFrameBaseClosureScopeSymbol] && call.functionName)
+                            title = WebInspector.UIString("Closure Variables (%s)").format(call.functionName);
+                        else
+                            title = WebInspector.UIString("Closure Variables");
+                        collapsedByDefault = false;
+                        break;
 
-            // FIXME: This just puts two ObjectTreeViews next to each other, but that means
-            // that properties are not nicely sorted between the two separate lists.
+                    case WebInspector.ScopeChainNode.Type.Block:
+                        title = WebInspector.UIString("Block Variables");
+                        collapsedByDefault = false;
+                        break;
 
-            let rows = [];
-            for (let object of scope.objects) {
-                let scopePropertyPath = WebInspector.PropertyPath.emptyPropertyPathForScope(object);
-                let objectTree = new WebInspector.ObjectTreeView(object, WebInspector.ObjectTreeView.Mode.Properties, scopePropertyPath);
+                    case WebInspector.ScopeChainNode.Type.Catch:
+                        title = WebInspector.UIString("Catch Variables");
+                        collapsedByDefault = false;
+                        break;
 
-                objectTree.showOnlyProperties();
+                    case WebInspector.ScopeChainNode.Type.FunctionName:
+                        title = WebInspector.UIString("Function Name Variable");
+                        collapsedByDefault = true;
+                        break;
 
-                if (extraPropertyDescriptor) {
-                    objectTree.appendExtraPropertyDescriptor(extraPropertyDescriptor);
-                    extraPropertyDescriptor = null;
+                    case WebInspector.ScopeChainNode.Type.With:
+                        title = WebInspector.UIString("With Object Properties");
+                        collapsedByDefault = foundLocalScope;
+                        break;
+
+                    case WebInspector.ScopeChainNode.Type.Global:
+                        title = WebInspector.UIString("Global Variables");
+                        collapsedByDefault = true;
+                        break;
+
+                    case WebInspector.ScopeChainNode.Type.GlobalLexicalEnvironment:
+                        title = WebInspector.UIString("Global Lexical Environment");
+                        collapsedByDefault = true;
+                        break;
                 }
 
-                let treeOutline = objectTree.treeOutline;
-                treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementAdded, this._treeElementAdded.bind(this, detailsSectionIdentifier), this);
-                treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementDisclosureDidChanged, this._treeElementDisclosureDidChange.bind(this, detailsSectionIdentifier), this);
+                let detailsSectionIdentifier = scope.type + "-" + sectionCountByType.get(scope.type);
 
-                // FIXME: <https://webkit.org/b/140567> Web Inspector: Do not request Scope Chain lists if section is collapsed (mainly Global Variables)
-                // This autoexpands the ObjectTreeView and fetches all properties. Should wait to see if we are collapsed or not.
-                rows.push(new WebInspector.DetailsSectionPropertiesRow(objectTree));
+                // FIXME: This just puts two ObjectTreeViews next to eachother, but that means
+                // that properties are not nicely sorted between the two separate lists.
+
+                let rows = [];
+                for (let object of scope.objects) {
+                    let scopePropertyPath = WebInspector.PropertyPath.emptyPropertyPathForScope(object);
+                    let objectTree = new WebInspector.ObjectTreeView(object, WebInspector.ObjectTreeView.Mode.Properties, scopePropertyPath);
+
+                    objectTree.showOnlyProperties();
+
+                    if (extraPropertyDescriptor) {
+                        objectTree.appendExtraPropertyDescriptor(extraPropertyDescriptor);
+                        extraPropertyDescriptor = null;
+                    }
+
+                    let treeOutline = objectTree.treeOutline;
+                    treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementAdded, this._treeElementAdded.bind(this, detailsSectionIdentifier), this);
+                    treeOutline.addEventListener(WebInspector.TreeOutline.Event.ElementDisclosureDidChanged, this._treeElementDisclosureDidChange.bind(this, detailsSectionIdentifier), this);
+
+                    rows.push(new WebInspector.DetailsSectionPropertiesRow(objectTree));
+                }
+
+                let detailsSection = new WebInspector.DetailsSection(detailsSectionIdentifier, title, null, null, collapsedByDefault);
+                detailsSection.groups[0].rows = rows;
+                detailsSections.push(detailsSection);
             }
-
-            let detailsSection = new WebInspector.DetailsSection(detailsSectionIdentifier, title, null, null, collapsedByDefault);
-            detailsSection.groups[0].rows = rows;
-            detailsSections.push(detailsSection);
         }
 
         return Promise.resolve(detailsSections);
@@ -478,3 +545,4 @@
 
 WebInspector.ScopeChainDetailsSidebarPanel._autoExpandProperties = new Set;
 WebInspector.ScopeChainDetailsSidebarPanel.WatchExpressionsObjectGroupName = "watch-expressions";
+WebInspector.ScopeChainDetailsSidebarPanel.CallFrameBaseClosureScopeSymbol = Symbol("scope-chain-call-frame-base-closure-scope");
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to