<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[187969] trunk/Source/JavaScriptCore</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/187969">187969</a></dd>
<dt>Author</dt> <dd>saambarati1@gmail.com</dd>
<dt>Date</dt> <dd>2015-08-05 11:29:25 -0700 (Wed, 05 Aug 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Replace JSFunctionNameScope with JSLexicalEnvironment for the function name scope.
https://bugs.webkit.org/show_bug.cgi?id=147657

Reviewed by Mark Lam.

This kills the last of the name scope objects. Function name scopes are
now built on top of the scoping mechanisms introduced with ES6 block scoping.
A name scope is now just a JSLexicalEnvironment.  We treat assignments to the
function name scoped variable carefully depending on if the function is in
strict mode. If we're in strict mode, then we treat the variable exactly
like a &quot;const&quot; variable. If we're not in strict mode, we can't treat
this variable like like ES6 &quot;const&quot; because that would cause the bytecode
generator to throw an exception when it shouldn't.

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeDefaultParameterValuesAndSetupFunctionScopeStack):
(JSC::BytecodeGenerator::pushLexicalScope):
(JSC::BytecodeGenerator::pushLexicalScopeInternal):
(JSC::BytecodeGenerator::variable):
(JSC::BytecodeGenerator::resolveType):
(JSC::BytecodeGenerator::emitThrowTypeError):
(JSC::BytecodeGenerator::emitPushFunctionNameScope):
(JSC::BytecodeGenerator::pushScopedControlFlowContext):
(JSC::BytecodeGenerator::emitPushCatchScope):
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
* debugger/DebuggerScope.cpp:
* dfg/DFGOperations.cpp:
* interpreter/Interpreter.cpp:
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* jit/JIT.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_to_string):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_push_name_scope): Deleted.
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emitSlow_op_to_string):
(JSC::JIT::emit_op_catch):
(JSC::JIT::emit_op_push_name_scope): Deleted.
* jit/JITOperations.cpp:
(JSC::pushNameScope): Deleted.
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* llint/LLIntSlowPaths.h:
* llint/LowLevelInterpreter.asm:
* parser/Nodes.cpp:
* runtime/CommonSlowPaths.cpp:
* runtime/Executable.cpp:
(JSC::ScriptExecutable::newCodeBlockFor):
* runtime/JSFunctionNameScope.cpp: Removed.
* runtime/JSFunctionNameScope.h: Removed.
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::withScopeStructure):
(JSC::JSGlobalObject::strictEvalActivationStructure):
(JSC::JSGlobalObject::activationStructure):
(JSC::JSGlobalObject::directArgumentsStructure):
(JSC::JSGlobalObject::scopedArgumentsStructure):
(JSC::JSGlobalObject::outOfBandArgumentsStructure):
(JSC::JSGlobalObject::functionNameScopeStructure): Deleted.
* runtime/JSNameScope.cpp: Removed.
* runtime/JSNameScope.h: Removed.
* runtime/JSObject.cpp:
(JSC::JSObject::toThis):
(JSC::JSObject::seal):
(JSC::JSObject::isFunctionNameScopeObject): Deleted.
* runtime/JSObject.h:
* runtime/JSScope.cpp:
(JSC::JSScope::isCatchScope):
(JSC::JSScope::isFunctionNameScopeObject):
(JSC::resolveModeName):
* runtime/JSScope.h:
* runtime/JSSymbolTableObject.cpp:
* runtime/SymbolTable.h:
* runtime/VM.cpp:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreCMakeListstxt">trunk/Source/JavaScriptCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj">trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters">trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeListjson">trunk/Source/JavaScriptCore/bytecode/BytecodeList.json</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeUseDefh">trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp">trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh">trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerNodesCodegencpp">trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredebuggerDebuggerScopecpp">trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGOperationscpp">trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterInterpretercpp">trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITcpp">trunk/Source/JavaScriptCore/jit/JIT.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITh">trunk/Source/JavaScriptCore/jit/JIT.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOpcodescpp">trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOpcodes32_64cpp">trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOperationscpp">trunk/Source/JavaScriptCore/jit/JITOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathscpp">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathsh">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLowLevelInterpreterasm">trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserNodescpp">trunk/Source/JavaScriptCore/parser/Nodes.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCommonSlowPathscpp">trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutablecpp">trunk/Source/JavaScriptCore/runtime/Executable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjecth">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjectcpp">trunk/Source/JavaScriptCore/runtime/JSObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjecth">trunk/Source/JavaScriptCore/runtime/JSObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSScopecpp">trunk/Source/JavaScriptCore/runtime/JSScope.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSScopeh">trunk/Source/JavaScriptCore/runtime/JSScope.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSSymbolTableObjectcpp">trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSymbolTableh">trunk/Source/JavaScriptCore/runtime/SymbolTable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMcpp">trunk/Source/JavaScriptCore/runtime/VM.cpp</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSFunctionNameScopecpp">trunk/Source/JavaScriptCore/runtime/JSFunctionNameScope.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSFunctionNameScopeh">trunk/Source/JavaScriptCore/runtime/JSFunctionNameScope.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSNameScopecpp">trunk/Source/JavaScriptCore/runtime/JSNameScope.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSNameScopeh">trunk/Source/JavaScriptCore/runtime/JSNameScope.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/CMakeLists.txt (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/CMakeLists.txt        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/CMakeLists.txt        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -511,7 +511,6 @@
</span><span class="cx">     runtime/JSDateMath.cpp
</span><span class="cx">     runtime/JSEnvironmentRecord.cpp
</span><span class="cx">     runtime/JSFunction.cpp
</span><del>-    runtime/JSFunctionNameScope.cpp
</del><span class="cx">     runtime/JSGlobalObject.cpp
</span><span class="cx">     runtime/JSGlobalObjectDebuggable.cpp
</span><span class="cx">     runtime/JSGlobalObjectFunctions.cpp
</span><span class="lines">@@ -520,7 +519,6 @@
</span><span class="cx">     runtime/JSLock.cpp
</span><span class="cx">     runtime/JSMap.cpp
</span><span class="cx">     runtime/JSMapIterator.cpp
</span><del>-    runtime/JSNameScope.cpp
</del><span class="cx">     runtime/JSNotAnObject.cpp
</span><span class="cx">     runtime/JSONObject.cpp
</span><span class="cx">     runtime/JSObject.cpp
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -1,3 +1,95 @@
</span><ins>+2015-08-05  Saam barati  &lt;saambarati1@gmail.com&gt;
+
+        Replace JSFunctionNameScope with JSLexicalEnvironment for the function name scope.
+        https://bugs.webkit.org/show_bug.cgi?id=147657
+
+        Reviewed by Mark Lam.
+
+        This kills the last of the name scope objects. Function name scopes are
+        now built on top of the scoping mechanisms introduced with ES6 block scoping.
+        A name scope is now just a JSLexicalEnvironment.  We treat assignments to the
+        function name scoped variable carefully depending on if the function is in
+        strict mode. If we're in strict mode, then we treat the variable exactly
+        like a &quot;const&quot; variable. If we're not in strict mode, we can't treat
+        this variable like like ES6 &quot;const&quot; because that would cause the bytecode
+        generator to throw an exception when it shouldn't.
+
+        * CMakeLists.txt:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * bytecode/BytecodeList.json:
+        * bytecode/BytecodeUseDef.h:
+        (JSC::computeUsesForBytecodeOffset):
+        (JSC::computeDefsForBytecodeOffset):
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::dumpBytecode):
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::BytecodeGenerator):
+        (JSC::BytecodeGenerator::initializeDefaultParameterValuesAndSetupFunctionScopeStack):
+        (JSC::BytecodeGenerator::pushLexicalScope):
+        (JSC::BytecodeGenerator::pushLexicalScopeInternal):
+        (JSC::BytecodeGenerator::variable):
+        (JSC::BytecodeGenerator::resolveType):
+        (JSC::BytecodeGenerator::emitThrowTypeError):
+        (JSC::BytecodeGenerator::emitPushFunctionNameScope):
+        (JSC::BytecodeGenerator::pushScopedControlFlowContext):
+        (JSC::BytecodeGenerator::emitPushCatchScope):
+        * bytecompiler/BytecodeGenerator.h:
+        * bytecompiler/NodesCodegen.cpp:
+        * debugger/DebuggerScope.cpp:
+        * dfg/DFGOperations.cpp:
+        * interpreter/Interpreter.cpp:
+        * jit/JIT.cpp:
+        (JSC::JIT::privateCompileMainPass):
+        * jit/JIT.h:
+        * jit/JITOpcodes.cpp:
+        (JSC::JIT::emit_op_to_string):
+        (JSC::JIT::emit_op_catch):
+        (JSC::JIT::emit_op_push_name_scope): Deleted.
+        * jit/JITOpcodes32_64.cpp:
+        (JSC::JIT::emitSlow_op_to_string):
+        (JSC::JIT::emit_op_catch):
+        (JSC::JIT::emit_op_push_name_scope): Deleted.
+        * jit/JITOperations.cpp:
+        (JSC::pushNameScope): Deleted.
+        * llint/LLIntSlowPaths.cpp:
+        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
+        * llint/LLIntSlowPaths.h:
+        * llint/LowLevelInterpreter.asm:
+        * parser/Nodes.cpp:
+        * runtime/CommonSlowPaths.cpp:
+        * runtime/Executable.cpp:
+        (JSC::ScriptExecutable::newCodeBlockFor):
+        * runtime/JSFunctionNameScope.cpp: Removed.
+        * runtime/JSFunctionNameScope.h: Removed.
+        * runtime/JSGlobalObject.cpp:
+        (JSC::JSGlobalObject::init):
+        (JSC::JSGlobalObject::visitChildren):
+        * runtime/JSGlobalObject.h:
+        (JSC::JSGlobalObject::withScopeStructure):
+        (JSC::JSGlobalObject::strictEvalActivationStructure):
+        (JSC::JSGlobalObject::activationStructure):
+        (JSC::JSGlobalObject::directArgumentsStructure):
+        (JSC::JSGlobalObject::scopedArgumentsStructure):
+        (JSC::JSGlobalObject::outOfBandArgumentsStructure):
+        (JSC::JSGlobalObject::functionNameScopeStructure): Deleted.
+        * runtime/JSNameScope.cpp: Removed.
+        * runtime/JSNameScope.h: Removed.
+        * runtime/JSObject.cpp:
+        (JSC::JSObject::toThis):
+        (JSC::JSObject::seal):
+        (JSC::JSObject::isFunctionNameScopeObject): Deleted.
+        * runtime/JSObject.h:
+        * runtime/JSScope.cpp:
+        (JSC::JSScope::isCatchScope):
+        (JSC::JSScope::isFunctionNameScopeObject):
+        (JSC::resolveModeName):
+        * runtime/JSScope.h:
+        * runtime/JSSymbolTableObject.cpp:
+        * runtime/SymbolTable.h:
+        * runtime/VM.cpp:
+
</ins><span class="cx"> 2015-08-05  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Improve Support for PropertyName Iterator (Reflect.enumerate) in Inspector
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -764,14 +764,12 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSDataViewPrototype.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSDateMath.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSFunction.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\JSFunctionNameScope.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSGlobalObject.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSGlobalObjectFunctions.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSJob.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSLock.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSMap.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSMapIterator.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\JSNameScope.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSNotAnObject.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSONObject.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSObject.cpp&quot; /&gt;
</span><span class="lines">@@ -1594,7 +1592,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSFloat32Array.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSFloat64Array.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSFunction.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\JSFunctionNameScope.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSGenericTypedArrayView.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSGenericTypedArrayViewConstructor.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSGenericTypedArrayViewConstructorInlines.h&quot; /&gt;
</span><span class="lines">@@ -1610,7 +1607,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSLock.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSMap.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSMapIterator.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\JSNameScope.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSNotAnObject.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSONObject.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSObject.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -708,9 +708,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSMap.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\JSNameScope.cpp&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSNotAnObject.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -1792,7 +1789,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\dfg\DFGPutStackSinkingPhase.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\ftl\FTLJSCallBase.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\ftl\FTLJSCallVarargs.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\JSFunctionNameScope.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\jit\ExecutableAllocatorFixedVMPool.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;jit&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -2808,9 +2804,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSLock.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\JSNameScope.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSNotAnObject.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -4326,7 +4319,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dfg\DFGPutStackSinkingPhase.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\ftl\FTLJSCallBase.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\ftl\FTLJSCallVarargs.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\JSFunctionNameScope.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\MathCommon.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bytecode\BytecodeKills.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\bytecode\VariableWriteFireDetail.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -618,8 +618,6 @@
</span><span class="cx">                 0FD8A32A17D51F5700CA2C40 /* DFGToFTLDeferredCompilationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD8A32217D51F5700CA2C40 /* DFGToFTLDeferredCompilationCallback.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 0FD8A32B17D51F5700CA2C40 /* DFGToFTLForOSREntryDeferredCompilationCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD8A32317D51F5700CA2C40 /* DFGToFTLForOSREntryDeferredCompilationCallback.cpp */; };
</span><span class="cx">                 0FD8A32C17D51F5700CA2C40 /* DFGToFTLForOSREntryDeferredCompilationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD8A32417D51F5700CA2C40 /* DFGToFTLForOSREntryDeferredCompilationCallback.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                0FD949841A97DB9600E28966 /* JSFunctionNameScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD949801A97DB9600E28966 /* JSFunctionNameScope.cpp */; };
-                0FD949851A97DB9600E28966 /* JSFunctionNameScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD949811A97DB9600E28966 /* JSFunctionNameScope.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 0FDB2CC9173DA520007B3C1B /* FTLAbbreviatedTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDB2CC7173DA51E007B3C1B /* FTLAbbreviatedTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 0FDB2CCA173DA523007B3C1B /* FTLValueFromBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FDB2CC8173DA51E007B3C1B /* FTLValueFromBlock.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 0FDB2CE7174830A2007B3C1B /* DFGWorklist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FDB2CE5174830A2007B3C1B /* DFGWorklist.cpp */; };
</span><span class="lines">@@ -878,8 +876,6 @@
</span><span class="cx">                 147F39D7107EC37600427A48 /* JSEnvironmentRecord.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC22A39A0E16E14800AF21C8 /* JSEnvironmentRecord.cpp */; };
</span><span class="cx">                 1482B74E0A43032800517CFC /* JSStringRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1482B74C0A43032800517CFC /* JSStringRef.cpp */; };
</span><span class="cx">                 1482B7E40A43076000517CFC /* JSObjectRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1482B7E20A43076000517CFC /* JSObjectRef.cpp */; };
</span><del>-                14874AE315EBDE4A002E3587 /* JSNameScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14874ADF15EBDE4A002E3587 /* JSNameScope.cpp */; };
-                14874AE415EBDE4A002E3587 /* JSNameScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 14874AE015EBDE4A002E3587 /* JSNameScope.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 14874AE515EBDE4A002E3587 /* JSScope.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14874AE115EBDE4A002E3587 /* JSScope.cpp */; };
</span><span class="cx">                 14874AE615EBDE4A002E3587 /* JSScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 14874AE215EBDE4A002E3587 /* JSScope.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 148CD1D8108CF902008163C6 /* JSContextRefPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 148CD1D7108CF902008163C6 /* JSContextRefPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -2415,8 +2411,6 @@
</span><span class="cx">                 0FD8A32217D51F5700CA2C40 /* DFGToFTLDeferredCompilationCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGToFTLDeferredCompilationCallback.h; path = dfg/DFGToFTLDeferredCompilationCallback.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FD8A32317D51F5700CA2C40 /* DFGToFTLForOSREntryDeferredCompilationCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGToFTLForOSREntryDeferredCompilationCallback.cpp; path = dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FD8A32417D51F5700CA2C40 /* DFGToFTLForOSREntryDeferredCompilationCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGToFTLForOSREntryDeferredCompilationCallback.h; path = dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                0FD949801A97DB9600E28966 /* JSFunctionNameScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSFunctionNameScope.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                0FD949811A97DB9600E28966 /* JSFunctionNameScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSFunctionNameScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 0FDB2CC7173DA51E007B3C1B /* FTLAbbreviatedTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FTLAbbreviatedTypes.h; path = ftl/FTLAbbreviatedTypes.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FDB2CC8173DA51E007B3C1B /* FTLValueFromBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FTLValueFromBlock.h; path = ftl/FTLValueFromBlock.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 0FDB2CE5174830A2007B3C1B /* DFGWorklist.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGWorklist.cpp; path = dfg/DFGWorklist.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -2614,8 +2608,6 @@
</span><span class="cx">                 1482B78A0A4305AB00517CFC /* APICast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APICast.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1482B7E10A43076000517CFC /* JSObjectRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSObjectRef.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1482B7E20A43076000517CFC /* JSObjectRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSObjectRef.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                14874ADF15EBDE4A002E3587 /* JSNameScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNameScope.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                14874AE015EBDE4A002E3587 /* JSNameScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSNameScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 14874AE115EBDE4A002E3587 /* JSScope.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSScope.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 14874AE215EBDE4A002E3587 /* JSScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSScope.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 148CD1D7108CF902008163C6 /* JSContextRefPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSContextRefPrivate.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4651,8 +4643,6 @@
</span><span class="cx">                                 F692A85E0255597D01FF60F7 /* JSFunction.cpp */,
</span><span class="cx">                                 F692A85F0255597D01FF60F7 /* JSFunction.h */,
</span><span class="cx">                                 A72028B91797603D0098028C /* JSFunctionInlines.h */,
</span><del>-                                0FD949801A97DB9600E28966 /* JSFunctionNameScope.cpp */,
-                                0FD949811A97DB9600E28966 /* JSFunctionNameScope.h */,
</del><span class="cx">                                 0F2B66C317B6B5AB00A7AE3F /* JSGenericTypedArrayView.h */,
</span><span class="cx">                                 0F2B66C417B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructor.h */,
</span><span class="cx">                                 0F2B66C517B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructorInlines.h */,
</span><span class="lines">@@ -4678,8 +4668,6 @@
</span><span class="cx">                                 A700874017CBE8EB00C3E643 /* JSMap.h */,
</span><span class="cx">                                 A74DEF8F182D991400522C22 /* JSMapIterator.cpp */,
</span><span class="cx">                                 A74DEF90182D991400522C22 /* JSMapIterator.h */,
</span><del>-                                14874ADF15EBDE4A002E3587 /* JSNameScope.cpp */,
-                                14874AE015EBDE4A002E3587 /* JSNameScope.h */,
</del><span class="cx">                                 A72700780DAC605600E548D7 /* JSNotAnObject.cpp */,
</span><span class="cx">                                 A72700770DAC605600E548D7 /* JSNotAnObject.h */,
</span><span class="cx">                                 BC22A3980E16E14800AF21C8 /* JSObject.cpp */,
</span><span class="lines">@@ -6043,7 +6031,6 @@
</span><span class="cx">                                 0FFB921C16D02F110055A5DB /* DFGOSRExitCompilationInfo.h in Headers */,
</span><span class="cx">                                 0FC0977114693AF500CF2442 /* DFGOSRExitCompiler.h in Headers */,
</span><span class="cx">                                 0F7025AA1714B0FC00382C0E /* DFGOSRExitCompilerCommon.h in Headers */,
</span><del>-                                0FD949851A97DB9600E28966 /* JSFunctionNameScope.h in Headers */,
</del><span class="cx">                                 0FEFC9AB1681A3B600567F53 /* DFGOSRExitJumpPlaceholder.h in Headers */,
</span><span class="cx">                                 0F4CED5F18CEA7AB00802FE0 /* PolymorphicGetByIdList.h in Headers */,
</span><span class="cx">                                 0F235BEE17178E7300690C7F /* DFGOSRExitPreparation.h in Headers */,
</span><span class="lines">@@ -6358,7 +6345,6 @@
</span><span class="cx">                                 A700874217CBE8EB00C3E643 /* JSMap.h in Headers */,
</span><span class="cx">                                 A74DEF96182D991400522C22 /* JSMapIterator.h in Headers */,
</span><span class="cx">                                 A5840E2B187CA75B00843B10 /* jsmin.py in Headers */,
</span><del>-                                14874AE415EBDE4A002E3587 /* JSNameScope.h in Headers */,
</del><span class="cx">                                 BC18C4240E16F5CD00B34460 /* JSObject.h in Headers */,
</span><span class="cx">                                 709FB86A1AE335C60039D069 /* WeakSetConstructor.h in Headers */,
</span><span class="cx">                                 BC18C4250E16F5CD00B34460 /* JSObjectRef.h in Headers */,
</span><span class="lines">@@ -7594,7 +7580,6 @@
</span><span class="cx">                                 C25D709B16DE99F400FCA6BC /* JSManagedValue.mm in Sources */,
</span><span class="cx">                                 A700874117CBE8EB00C3E643 /* JSMap.cpp in Sources */,
</span><span class="cx">                                 A74DEF95182D991400522C22 /* JSMapIterator.cpp in Sources */,
</span><del>-                                14874AE315EBDE4A002E3587 /* JSNameScope.cpp in Sources */,
</del><span class="cx">                                 A72700900DAC6BBC00E548D7 /* JSNotAnObject.cpp in Sources */,
</span><span class="cx">                                 147F39D4107EC37600427A48 /* JSObject.cpp in Sources */,
</span><span class="cx">                                 1482B7E40A43076000517CFC /* JSObjectRef.cpp in Sources */,
</span><span class="lines">@@ -7652,7 +7637,6 @@
</span><span class="cx">                                 0F38B01117CF078000B144D3 /* LLIntEntrypoint.cpp in Sources */,
</span><span class="cx">                                 0F392C891B46188400844728 /* DFGOSRExitFuzz.cpp in Sources */,
</span><span class="cx">                                 0F4680A814BA7FAB00BFE272 /* LLIntExceptions.cpp in Sources */,
</span><del>-                                0FD949841A97DB9600E28966 /* JSFunctionNameScope.cpp in Sources */,
</del><span class="cx">                                 0F4680A414BA7F8D00BFE272 /* LLIntSlowPaths.cpp in Sources */,
</span><span class="cx">                                 0F0B839C14BCF46300885B4F /* LLIntThunks.cpp in Sources */,
</span><span class="cx">                                 0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeListjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeList.json (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -108,7 +108,6 @@
</span><span class="cx">             { &quot;name&quot; : &quot;op_get_from_arguments&quot;, &quot;length&quot; : 5 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_put_to_arguments&quot;, &quot;length&quot; : 4 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_push_with_scope&quot;, &quot;length&quot; : 3 },
</span><del>-            { &quot;name&quot; : &quot;op_push_name_scope&quot;, &quot;length&quot; : 5 },
</del><span class="cx">             { &quot;name&quot; : &quot;op_create_lexical_environment&quot;, &quot;length&quot; : 5 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_get_parent_scope&quot;, &quot;length&quot; : 3 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_catch&quot;, &quot;length&quot; : 3 },
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeUseDefh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -116,7 +116,6 @@
</span><span class="cx">     case op_get_enumerable_length:
</span><span class="cx">     case op_new_func_exp:
</span><span class="cx">     case op_to_index_string:
</span><del>-    case op_push_name_scope:
</del><span class="cx">     case op_push_with_scope:
</span><span class="cx">     case op_create_lexical_environment:
</span><span class="cx">     case op_resolve_scope:
</span><span class="lines">@@ -294,7 +293,6 @@
</span><span class="cx">     case op_enumerator_structure_pname:
</span><span class="cx">     case op_enumerator_generic_pname:
</span><span class="cx">     case op_get_parent_scope:
</span><del>-    case op_push_name_scope:
</del><span class="cx">     case op_push_with_scope:
</span><span class="cx">     case op_create_lexical_environment:
</span><span class="cx">     case op_resolve_scope:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -47,7 +47,6 @@
</span><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;LLIntEntrypoint.h&quot;
</span><span class="cx"> #include &quot;LowLevelInterpreter.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="lines">@@ -1441,15 +1440,6 @@
</span><span class="cx">             out.printf(&quot;%s, %s&quot;, registerName(dst).data(), registerName(parentScope).data());
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        case op_push_name_scope: {
-            int dst = (++it)-&gt;u.operand;
-            int r1 = (++it)-&gt;u.operand;
-            int k0 = (++it)-&gt;u.operand;
-            JSNameScope::Type scopeType = (JSNameScope::Type)(++it)-&gt;u.operand;
-            printLocationAndOp(out, exec, location, it, &quot;push_name_scope&quot;);
-            out.printf(&quot;%s, %s, %s, %s&quot;, registerName(dst).data(), registerName(r1).data(), constantName(k0).data(), (scopeType == JSNameScope::FunctionNameScope) ? &quot;functionScope&quot; : &quot;unknownScopeType&quot;);
-            break;
-        }
</del><span class="cx">         case op_create_lexical_environment: {
</span><span class="cx">             int dst = (++it)-&gt;u.operand;
</span><span class="cx">             int scope = (++it)-&gt;u.operand;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSTemplateRegistryKey.h&quot;
</span><span class="cx"> #include &quot;LowLevelInterpreter.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="lines">@@ -250,13 +249,7 @@
</span><span class="cx">     
</span><span class="cx">     if (functionNameIsInScope(functionNode-&gt;ident(), functionNode-&gt;functionMode())
</span><span class="cx">         &amp;&amp; functionNameScopeIsDynamic(codeBlock-&gt;usesEval(), codeBlock-&gt;isStrictMode())) {
</span><del>-        // When we do this, we should make our local scope stack know about the function name symbol
-        // table. Currently this works because bytecode linking creates a phony name scope.
-        // FIXME: https://bugs.webkit.org/show_bug.cgi?id=141885
-        // Also, we could create the scope once per JSFunction instance that needs it. That wouldn't
-        // be any more correct, but it would be more performant.
-        // FIXME: https://bugs.webkit.org/show_bug.cgi?id=141887
-        emitPushFunctionNameScope(m_scopeRegister, functionNode-&gt;ident(), &amp;m_calleeRegister, ReadOnly | DontDelete);
</del><ins>+        emitPushFunctionNameScope(functionNode-&gt;ident(), &amp;m_calleeRegister);
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     if (shouldCaptureSomeOfTheThings) {
</span><span class="lines">@@ -577,7 +570,7 @@
</span><span class="cx">         }
</span><span class="cx">         
</span><span class="cx">         // This implements step 25 of section 9.2.12.
</span><del>-        pushLexicalScopeInternal(environment, true, nullptr, TDZRequirement::UnderTDZ, ScopeType::LetConstScope);
</del><ins>+        pushLexicalScopeInternal(environment, true, nullptr, TDZRequirement::UnderTDZ, ScopeType::LetConstScope, ScopeRegisterType::Block);
</ins><span class="cx"> 
</span><span class="cx">         RefPtr&lt;RegisterID&gt; temp = newTemporary();
</span><span class="cx">         for (unsigned i = 0; i &lt; parameters.size(); i++) {
</span><span class="lines">@@ -1417,10 +1410,11 @@
</span><span class="cx"> void BytecodeGenerator::pushLexicalScope(VariableEnvironmentNode* node, bool canOptimizeTDZChecks, RegisterID** constantSymbolTableResult)
</span><span class="cx"> {
</span><span class="cx">     VariableEnvironment&amp; environment = node-&gt;lexicalVariables();
</span><del>-    pushLexicalScopeInternal(environment, canOptimizeTDZChecks, constantSymbolTableResult, TDZRequirement::UnderTDZ, ScopeType::LetConstScope);
</del><ins>+    pushLexicalScopeInternal(environment, canOptimizeTDZChecks, constantSymbolTableResult, TDZRequirement::UnderTDZ, ScopeType::LetConstScope, ScopeRegisterType::Block);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BytecodeGenerator::pushLexicalScopeInternal(VariableEnvironment&amp; environment, bool canOptimizeTDZChecks, RegisterID** constantSymbolTableResult, TDZRequirement tdzRequirement, ScopeType scopeType)
</del><ins>+void BytecodeGenerator::pushLexicalScopeInternal(VariableEnvironment&amp; environment, bool canOptimizeTDZChecks, 
+    RegisterID** constantSymbolTableResult, TDZRequirement tdzRequirement, ScopeType scopeType, ScopeRegisterType scopeRegisterType)
</ins><span class="cx"> {
</span><span class="cx">     if (!environment.size())
</span><span class="cx">         return;
</span><span class="lines">@@ -1436,6 +1430,9 @@
</span><span class="cx">     case ScopeType::LetConstScope:
</span><span class="cx">         symbolTable-&gt;setScopeType(SymbolTable::ScopeType::LexicalScope);
</span><span class="cx">         break;
</span><ins>+    case ScopeType::FunctionNameScope:
+        symbolTable-&gt;setScopeType(SymbolTable::ScopeType::FunctionNameScope);
+        break;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool hasCapturedVariables = false;
</span><span class="lines">@@ -1472,8 +1469,11 @@
</span><span class="cx">         symbolTableConstantIndex = constantSymbolTable-&gt;index();
</span><span class="cx">     }
</span><span class="cx">     if (hasCapturedVariables) {
</span><del>-        newScope = newBlockScopeVariable();
-        newScope-&gt;ref();
</del><ins>+        if (scopeRegisterType == ScopeRegisterType::Block) {
+            newScope = newBlockScopeVariable();
+            newScope-&gt;ref();
+        } else
+            newScope = addVar();
</ins><span class="cx">         if (!constantSymbolTable) {
</span><span class="cx">             ASSERT(!vm()-&gt;typeProfiler());
</span><span class="cx">             constantSymbolTable = addConstantValue(symbolTable-&gt;cloneScopePart(*m_vm));
</span><span class="lines">@@ -1664,7 +1664,11 @@
</span><span class="cx">         SymbolTableEntry symbolTableEntry = symbolTable-&gt;get(property.impl());
</span><span class="cx">         if (symbolTableEntry.isNull())
</span><span class="cx">             continue;
</span><del>-        
</del><ins>+        if (symbolTable-&gt;scopeType() == SymbolTable::ScopeType::FunctionNameScope &amp;&amp; m_usesNonStrictEval) {
+            // We don't know if an eval has introduced a &quot;var&quot; named the same thing as the function name scope variable name.
+            // We resort to dynamic lookup to answer this question.
+            return Variable(property);
+        }
</ins><span class="cx">         return variableForLocalEntry(property, symbolTableEntry, stackEntry.m_symbolTableConstantIndex, symbolTable-&gt;scopeType() == SymbolTable::ScopeType::LexicalScope);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1745,6 +1749,11 @@
</span><span class="cx">     for (unsigned i = m_symbolTableStack.size(); i--; ) {
</span><span class="cx">         if (m_symbolTableStack[i].m_isWithScope)
</span><span class="cx">             return Dynamic;
</span><ins>+        if (m_usesNonStrictEval &amp;&amp; m_symbolTableStack[i].m_symbolTable-&gt;scopeType() == SymbolTable::ScopeType::FunctionNameScope) {
+            // What we really want here is something like LocalClosureVarWithVarInjectionsCheck but it's probably
+            // not worth inventing just for the function name scope.
+            return Dynamic;
+        }
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (m_usesNonStrictEval)
</span><span class="lines">@@ -3064,13 +3073,27 @@
</span><span class="cx">     instructions().append(false);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BytecodeGenerator::emitPushFunctionNameScope(RegisterID* dst, const Identifier&amp; property, RegisterID* value, unsigned attributes)
</del><ins>+void BytecodeGenerator::emitPushFunctionNameScope(const Identifier&amp; property, RegisterID* callee)
</ins><span class="cx"> {
</span><del>-    emitOpcode(op_push_name_scope);
-    instructions().append(dst-&gt;index());
-    instructions().append(value-&gt;index());
-    instructions().append(addConstantValue(SymbolTable::createNameScopeTable(*vm(), property, attributes))-&gt;index());
-    instructions().append(JSNameScope::FunctionNameScope);
</del><ins>+    // There is some nuance here:
+    // If we're in strict mode code, the function name scope variable acts exactly like a &quot;const&quot; variable.
+    // If we're not in strict mode code, we want to allow bogus assignments to the name scoped variable.
+    // This means any assignment to the variable won't throw, but it won't actually assign a new value to it.
+    // To accomplish this, we don't report that this scope is a lexical scope. This will prevent
+    // any throws when trying to assign to the variable (while still ensuring it keeps its original
+    // value). There is some ugliness and exploitation of a leaky abstraction here, but it's better than 
+    // having a completely new op code and a class to handle name scopes which are so close in functionality
+    // to lexical environments.
+    VariableEnvironment nameScopeEnvironment;
+    auto addResult = nameScopeEnvironment.add(property);
+    addResult.iterator-&gt;value.setIsCaptured();
+    addResult.iterator-&gt;value.setIsConst(); // The function name scope name acts like a const variable.
+    unsigned numVars = m_codeBlock-&gt;m_numVars;
+    pushLexicalScopeInternal(nameScopeEnvironment, true, nullptr, TDZRequirement::NotUnderTDZ, ScopeType::FunctionNameScope, ScopeRegisterType::Var);
+    ASSERT_UNUSED(numVars, m_codeBlock-&gt;m_numVars == static_cast&lt;int&gt;(numVars + 1)); // Should have only created one new &quot;var&quot; for the function name scope.
+    bool shouldTreatAsLexicalVariable = isStrictMode();
+    Variable functionVar = variableForLocalEntry(property, m_symbolTableStack.last().m_symbolTable-&gt;get(property.impl()), m_symbolTableStack.last().m_symbolTableConstantIndex, shouldTreatAsLexicalVariable);
+    emitPutToScope(m_symbolTableStack.last().m_scope, functionVar, callee, ThrowIfNotFound);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void BytecodeGenerator::pushScopedControlFlowContext()
</span><span class="lines">@@ -3092,7 +3115,7 @@
</span><span class="cx"> void BytecodeGenerator::emitPushCatchScope(const Identifier&amp; property, RegisterID* exceptionValue, VariableEnvironment&amp; environment)
</span><span class="cx"> {
</span><span class="cx">     RELEASE_ASSERT(environment.contains(property.impl()));
</span><del>-    pushLexicalScopeInternal(environment, true, nullptr, TDZRequirement::NotUnderTDZ, ScopeType::CatchScope);
</del><ins>+    pushLexicalScopeInternal(environment, true, nullptr, TDZRequirement::NotUnderTDZ, ScopeType::CatchScope, ScopeRegisterType::Block);
</ins><span class="cx">     Variable exceptionVar = variable(property);
</span><span class="cx">     RELEASE_ASSERT(exceptionVar.isResolved());
</span><span class="cx">     RefPtr&lt;RegisterID&gt; scope = emitResolveScope(nullptr, exceptionVar);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -588,7 +588,7 @@
</span><span class="cx">         void emitThrowReferenceError(const String&amp; message);
</span><span class="cx">         void emitThrowTypeError(const String&amp; message);
</span><span class="cx"> 
</span><del>-        void emitPushFunctionNameScope(RegisterID* dst, const Identifier&amp; property, RegisterID* value, unsigned attributes);
</del><ins>+        void emitPushFunctionNameScope(const Identifier&amp; property, RegisterID* value);
</ins><span class="cx">         void emitPushCatchScope(const Identifier&amp; property, RegisterID* exceptionValue, VariableEnvironment&amp;);
</span><span class="cx">         void emitPopCatchScope(VariableEnvironment&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -632,8 +632,9 @@
</span><span class="cx"> 
</span><span class="cx">     private:
</span><span class="cx">         enum class TDZRequirement { UnderTDZ, NotUnderTDZ };
</span><del>-        enum class ScopeType { CatchScope, LetConstScope };
-        void pushLexicalScopeInternal(VariableEnvironment&amp;, bool canOptimizeTDZChecks, RegisterID** constantSymbolTableResult, TDZRequirement, ScopeType);
</del><ins>+        enum class ScopeType { CatchScope, LetConstScope, FunctionNameScope };
+        enum class ScopeRegisterType { Var, Block };
+        void pushLexicalScopeInternal(VariableEnvironment&amp;, bool canOptimizeTDZChecks, RegisterID** constantSymbolTableResult, TDZRequirement, ScopeType, ScopeRegisterType);
</ins><span class="cx">         void popLexicalScopeInternal(VariableEnvironment&amp;, TDZRequirement);
</span><span class="cx">     public:
</span><span class="cx">         void pushLexicalScope(VariableEnvironmentNode*, bool canOptimizeTDZChecks, RegisterID** constantSymbolTableResult = nullptr);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerNodesCodegencpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -35,7 +35,6 @@
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSONObject.h&quot;
</span><span class="cx"> #include &quot;LabelScope.h&quot;
</span><span class="cx"> #include &quot;Lexer.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggerScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -48,7 +48,6 @@
</span><span class="cx"> #include &quot;JITExceptions.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;ObjectConstructor.h&quot;
</span><span class="cx"> #include &quot;Repatch.h&quot;
</span><span class="cx"> #include &quot;ScopedArguments.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterInterpretercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -48,7 +48,6 @@
</span><span class="cx"> #include &quot;JSBoundFunction.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSNotAnObject.h&quot;
</span><span class="cx"> #include &quot;JSStackInlines.h&quot;
</span><span class="cx"> #include &quot;JSString.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/jit/JIT.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -269,7 +269,6 @@
</span><span class="cx">         DEFINE_OP(op_profile_will_call)
</span><span class="cx">         DEFINE_OP(op_profile_type)
</span><span class="cx">         DEFINE_OP(op_profile_control_flow)
</span><del>-        DEFINE_OP(op_push_name_scope)
</del><span class="cx">         DEFINE_OP(op_push_with_scope)
</span><span class="cx">         DEFINE_OP(op_create_lexical_environment)
</span><span class="cx">         DEFINE_OP(op_get_parent_scope)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/jit/JIT.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -530,7 +530,6 @@
</span><span class="cx">         void emit_op_profile_will_call(Instruction*);
</span><span class="cx">         void emit_op_profile_type(Instruction*);
</span><span class="cx">         void emit_op_profile_control_flow(Instruction*);
</span><del>-        void emit_op_push_name_scope(Instruction*);
</del><span class="cx">         void emit_op_push_with_scope(Instruction*);
</span><span class="cx">         void emit_op_create_lexical_environment(Instruction*);
</span><span class="cx">         void emit_op_get_parent_scope(Instruction*);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOpcodescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -37,7 +37,6 @@
</span><span class="cx"> #include &quot;JSArray.h&quot;
</span><span class="cx"> #include &quot;JSCell.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><span class="cx"> #include &quot;LinkBuffer.h&quot;
</span><span class="cx"> #include &quot;MaxFrameExtentForSlowPathCall.h&quot;
</span><span class="lines">@@ -493,14 +492,6 @@
</span><span class="cx">     emitPutVirtualRegister(currentInstruction[1].u.operand);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_push_name_scope(Instruction* currentInstruction)
-{
-    int dst = currentInstruction[1].u.operand;
-    emitGetVirtualRegister(currentInstruction[2].u.operand, regT0);
-    RELEASE_ASSERT(currentInstruction[4].u.operand == JSNameScope::FunctionNameScope);
-    callOperation(operationPushFunctionNameScope, dst, jsCast&lt;SymbolTable*&gt;(getConstantOperand(currentInstruction[3].u.operand)), regT0);
-}
-
</del><span class="cx"> void JIT::emit_op_catch(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     // Gotta restore the tag registers. We could be throwing from FTL, which may
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOpcodes32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -38,7 +38,6 @@
</span><span class="cx"> #include &quot;JSCell.h&quot;
</span><span class="cx"> #include &quot;JSEnvironmentRecord.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><span class="cx"> #include &quot;LinkBuffer.h&quot;
</span><span class="cx"> #include &quot;MaxFrameExtentForSlowPathCall.h&quot;
</span><span class="lines">@@ -800,14 +799,6 @@
</span><span class="cx">     slowPathCall.call();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_push_name_scope(Instruction* currentInstruction)
-{
-    int dst = currentInstruction[1].u.operand;
-    emitLoad(currentInstruction[2].u.operand, regT1, regT0);
-    RELEASE_ASSERT(currentInstruction[4].u.operand == JSNameScope::FunctionNameScope);
-    callOperation(operationPushFunctionNameScope, dst, jsCast&lt;SymbolTable*&gt;(getConstantOperand(currentInstruction[3].u.operand)), regT1, regT0);
-}
-
</del><span class="cx"> void JIT::emit_op_catch(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     move(TrustedImmPtr(m_vm), regT3);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -44,10 +44,8 @@
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITToDFGDeferredCompilationCallback.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><del>-#include &quot;JSFunctionNameScope.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><span class="cx"> #include &quot;JSStackInlines.h&quot;
</span><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="lines">@@ -63,24 +61,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-template&lt;typename ScopeType&gt;
-void pushNameScope(ExecState* exec, int32_t dst, SymbolTable* symbolTable, EncodedJSValue encodedValue)
-{
-    VM&amp; vm = exec-&gt;vm();
-    NativeCallFrameTracer tracer(&amp;vm, exec);
-    
-    ASSERT(!JITCode::isOptimizingJIT(exec-&gt;codeBlock()-&gt;jitType()));
-
-    // FIXME: This won't work if this operation is called from the DFG or FTL.
-    // This should be changed to pass in the new scope.
-    JSScope* currentScope = exec-&gt;uncheckedR(dst).Register::scope();
-    JSNameScope* scope = ScopeType::create(vm, exec-&gt;lexicalGlobalObject(), currentScope, symbolTable, JSValue::decode(encodedValue));
-
-    // FIXME: This won't work if this operation is called from the DFG or FTL.
-    // This should be changed to return the new scope.
-    exec-&gt;uncheckedR(dst) = scope;
-}
-
</del><span class="cx"> extern &quot;C&quot; {
</span><span class="cx"> 
</span><span class="cx"> #if COMPILER(MSVC)
</span><span class="lines">@@ -1363,11 +1343,6 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void JIT_OPERATION operationPushFunctionNameScope(ExecState* exec, int32_t dst, SymbolTable* symbolTable, EncodedJSValue encodedValue)
-{
-    pushNameScope&lt;JSFunctionNameScope&gt;(exec, dst, symbolTable, encodedValue);
-}
-
</del><span class="cx"> void JIT_OPERATION operationPushWithScope(ExecState* exec, int32_t dst, EncodedJSValue encodedValue)
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSStackInlines.h&quot;
</span><span class="cx"> #include &quot;JSString.h&quot;
</span><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="lines">@@ -1278,19 +1277,6 @@
</span><span class="cx">     LLINT_END();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LLINT_SLOW_PATH_DECL(slow_path_push_name_scope)
-{
-    LLINT_BEGIN();
-    int scopeReg = pc[1].u.operand;
-    JSScope* currentScope = exec-&gt;uncheckedR(scopeReg).Register::scope();
-    JSValue value = LLINT_OP_C(2).jsValue();
-    SymbolTable* symbolTable = jsCast&lt;SymbolTable*&gt;(LLINT_OP_C(3).jsValue());
-    JSNameScope::Type type = static_cast&lt;JSNameScope::Type&gt;(pc[4].u.operand);
-    JSNameScope* scope = JSNameScope::create(vm, exec-&gt;lexicalGlobalObject(), currentScope, symbolTable, value, type);
-    exec-&gt;uncheckedR(scopeReg) = scope;
-    LLINT_END();
-}
-
</del><span class="cx"> LLINT_SLOW_PATH_DECL(slow_path_throw)
</span><span class="cx"> {
</span><span class="cx">     LLINT_BEGIN();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -107,7 +107,6 @@
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_strcat);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_to_primitive);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_with_scope);
</span><del>-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_push_name_scope);
</del><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_throw);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_throw_static_error);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_handle_watchdog_timer);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLowLevelInterpreterasm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -1287,12 +1287,6 @@
</span><span class="cx">     dispatch(3)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_push_name_scope:
-    traceExecution()
-    callSlowPath(_llint_slow_path_push_name_scope)
-    dispatch(5)
-
-
</del><span class="cx"> _llint_op_create_lexical_environment:
</span><span class="cx">     traceExecution()
</span><span class="cx">     callSlowPath(_slow_path_create_lexical_environment)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserNodescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Nodes.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Nodes.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/parser/Nodes.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;LabelScope.h&quot;
</span><span class="cx"> #include &quot;Lexer.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCommonSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -44,7 +44,6 @@
</span><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><span class="cx"> #include &quot;JSString.h&quot;
</span><span class="cx"> #include &quot;JSWithScope.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Executable.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Executable.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/Executable.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include &quot;DFGDriver.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><del>-#include &quot;JSFunctionNameScope.h&quot;
</del><span class="cx"> #include &quot;LLIntEntrypoint.h&quot;
</span><span class="cx"> #include &quot;Parser.h&quot;
</span><span class="cx"> #include &quot;ProfilerDatabase.h&quot;
</span><span class="lines">@@ -247,19 +246,6 @@
</span><span class="cx">         return nullptr;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // Parsing reveals whether our function uses features that require a separate function name object in the scope chain.
-    // Be sure to add this scope before linking the bytecode because this scope will change the resolution depth of non-local variables.
-    if (functionNameIsInScope(executable-&gt;name(), executable-&gt;functionMode())
-        &amp;&amp; functionNameScopeIsDynamic(executable-&gt;usesEval(), executable-&gt;isStrictMode())) {
-        // We shouldn't have to do this. But we do, because bytecode linking requires a real scope
-        // chain.
-        // FIXME: https://bugs.webkit.org/show_bug.cgi?id=141885
-        SymbolTable* symbolTable =
-            SymbolTable::createNameScopeTable(*vm, executable-&gt;name(), ReadOnly | DontDelete);
-        scope = JSFunctionNameScope::create(
-            *vm, scope-&gt;globalObject(), scope, symbolTable, function);
-    }
-    
</del><span class="cx">     SourceProvider* provider = executable-&gt;source().provider();
</span><span class="cx">     unsigned sourceOffset = executable-&gt;source().startOffset();
</span><span class="cx">     unsigned startColumn = executable-&gt;source().startColumn();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctionNameScopecpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSFunctionNameScope.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunctionNameScope.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSFunctionNameScope.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -1,36 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 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 &quot;config.h&quot;
-#include &quot;JSFunctionNameScope.h&quot;
-
-#include &quot;JSCInlines.h&quot;
-
-namespace JSC {
-
-const ClassInfo JSFunctionNameScope::s_info = { &quot;FunctionNameScope&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSFunctionNameScope) };
-
-} // namespace JSC
-
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctionNameScopeh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSFunctionNameScope.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunctionNameScope.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSFunctionNameScope.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -1,62 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 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. 
- */
-
-#ifndef JSFunctionNameScope_h
-#define JSFunctionNameScope_h
-
-#include &quot;JSNameScope.h&quot;
-
-namespace JSC {
-
-class JSFunctionNameScope : public JSNameScope {
-public:
-    typedef JSNameScope Base;
-
-private:
-    friend class JSNameScope;
-    
-    JSFunctionNameScope(VM&amp; vm, JSGlobalObject* globalObject, JSScope* next, SymbolTable* symbolTable)
-        : Base(vm, globalObject-&gt;functionNameScopeStructure(), next, symbolTable)
-    {
-    }
-    
-public:
-    static JSFunctionNameScope* create(VM&amp; vm, JSGlobalObject* globalObject, JSScope* currentScope, SymbolTable* symbolTable, JSValue value)
-    {
-        return Base::create&lt;JSFunctionNameScope&gt;(vm, globalObject, currentScope, symbolTable, value);
-    }
-    
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
-    {
-        return Structure::create(vm, globalObject, proto, TypeInfo(NameScopeObjectType, StructureFlags), info());
-    }
-    
-    DECLARE_INFO;
-};
-
-} // namespace JSC
-
-#endif // JSFunctionNameScope_h
-
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -70,7 +70,6 @@
</span><span class="cx"> #include &quot;JSDollarVM.h&quot;
</span><span class="cx"> #include &quot;JSDollarVMPrototype.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><del>-#include &quot;JSFunctionNameScope.h&quot;
</del><span class="cx"> #include &quot;JSGenericTypedArrayViewConstructorInlines.h&quot;
</span><span class="cx"> #include &quot;JSGenericTypedArrayViewInlines.h&quot;
</span><span class="cx"> #include &quot;JSGenericTypedArrayViewPrototypeInlines.h&quot;
</span><span class="lines">@@ -302,7 +301,6 @@
</span><span class="cx">     m_typedArrays[toIndex(TypeFloat64)].structure.set(vm, this, JSFloat64Array::createStructure(vm, this, m_typedArrays[toIndex(TypeFloat64)].prototype.get()));
</span><span class="cx">     m_typedArrays[toIndex(TypeDataView)].structure.set(vm, this, JSDataView::createStructure(vm, this, m_typedArrays[toIndex(TypeDataView)].prototype.get()));
</span><span class="cx">     
</span><del>-    m_functionNameScopeStructure.set(vm, this, JSFunctionNameScope::createStructure(vm, this, jsNull()));
</del><span class="cx">     m_lexicalEnvironmentStructure.set(vm, this, JSLexicalEnvironment::createStructure(vm, this));
</span><span class="cx">     m_strictEvalActivationStructure.set(vm, this, StrictEvalActivation::createStructure(vm, this, jsNull()));
</span><span class="cx">     m_debuggerScopeStructure.set(m_vm, this, DebuggerScope::createStructure(m_vm, this));
</span><span class="lines">@@ -776,7 +774,6 @@
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_withScopeStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_strictEvalActivationStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_lexicalEnvironmentStructure);
</span><del>-    visitor.append(&amp;thisObject-&gt;m_functionNameScopeStructure);
</del><span class="cx">     visitor.append(&amp;thisObject-&gt;m_directArgumentsStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_scopedArgumentsStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_outOfBandArgumentsStructure);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -211,7 +211,6 @@
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_withScopeStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_strictEvalActivationStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_lexicalEnvironmentStructure;
</span><del>-    WriteBarrier&lt;Structure&gt; m_functionNameScopeStructure;
</del><span class="cx">     WriteBarrier&lt;Structure&gt; m_directArgumentsStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_scopedArgumentsStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_outOfBandArgumentsStructure;
</span><span class="lines">@@ -425,7 +424,6 @@
</span><span class="cx">     Structure* withScopeStructure() const { return m_withScopeStructure.get(); }
</span><span class="cx">     Structure* strictEvalActivationStructure() const { return m_strictEvalActivationStructure.get(); }
</span><span class="cx">     Structure* activationStructure() const { return m_lexicalEnvironmentStructure.get(); }
</span><del>-    Structure* functionNameScopeStructure() const { return m_functionNameScopeStructure.get(); }
</del><span class="cx">     Structure* directArgumentsStructure() const { return m_directArgumentsStructure.get(); }
</span><span class="cx">     Structure* scopedArgumentsStructure() const { return m_scopedArgumentsStructure.get(); }
</span><span class="cx">     Structure* outOfBandArgumentsStructure() const { return m_outOfBandArgumentsStructure.get(); }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSNameScopecpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSNameScope.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSNameScope.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSNameScope.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -1,79 +0,0 @@
</span><del>-/*
- * Copyright (C) 2008, 2009, 2012, 2015 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 &quot;config.h&quot;
-#include &quot;JSNameScope.h&quot;
-
-#include &quot;Error.h&quot;
-#include &quot;JSCInlines.h&quot;
-#include &quot;JSFunctionNameScope.h&quot;
-
-namespace JSC {
-
-const ClassInfo JSNameScope::s_info = { &quot;NameScope&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSNameScope) };
-
-JSNameScope* JSNameScope::create(VM&amp; vm, JSGlobalObject* globalObject, JSScope* currentScope, SymbolTable* symbolTable, JSValue value, Type type)
-{
-    RELEASE_ASSERT(type == FunctionNameScope);
-    return JSFunctionNameScope::create(vm, globalObject, currentScope, symbolTable, value);
-}
-
-JSValue JSNameScope::toThis(JSCell*, ExecState* exec, ECMAMode ecmaMode)
-{
-    if (ecmaMode == StrictMode)
-        return jsUndefined();
-    return exec-&gt;globalThisValue();
-}
-
-void JSNameScope::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
-{
-    JSNameScope* thisObject = jsCast&lt;JSNameScope*&gt;(cell);
-    if (slot.isStrictMode()) {
-        // Double lookup in strict mode, but this only occurs when
-        // a) indirectly writing to an exception slot
-        // b) writing to a function expression name
-        // (a) is unlikely, and (b) is an error.
-        // Also with a single entry the symbol table lookup should simply be
-        // a pointer compare.
-        PropertySlot slot(thisObject);
-        bool isWritable = true;
-        symbolTableGet(thisObject, propertyName, slot, isWritable);
-        if (!isWritable) {
-            exec-&gt;vm().throwException(exec, createTypeError(exec, StrictModeReadonlyPropertyWriteError));
-            return;
-        }
-    }
-    if (symbolTablePut(thisObject, exec, propertyName, value, slot.isStrictMode()))
-        return;
-    
-    RELEASE_ASSERT_NOT_REACHED();
-}
-
-bool JSNameScope::getOwnPropertySlot(JSObject* object, ExecState*, PropertyName propertyName, PropertySlot&amp; slot)
-{
-    return symbolTableGet(jsCast&lt;JSNameScope*&gt;(object), propertyName, slot);
-}
-
-} // namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSNameScopeh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSNameScope.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSNameScope.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSNameScope.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -1,80 +0,0 @@
</span><del>-/*
- * Copyright (C) 2008, 2009, 2015 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. 
- */
-
-#ifndef JSNameScope_h
-#define JSNameScope_h
-
-#include &quot;JSEnvironmentRecord.h&quot;
-#include &quot;JSGlobalObject.h&quot;
-
-namespace JSC {
-
-// Used for scopes with a single named variable: catch and named function expression.
-class JSNameScope : public JSEnvironmentRecord {
-public:
-    typedef JSEnvironmentRecord Base;
-    static const unsigned StructureFlags = Base::StructureFlags| OverridesGetOwnPropertySlot;
-
-    enum Type {
-        FunctionNameScope
-    };
-
-    template&lt;typename T&gt;
-    static T* create(VM&amp; vm, JSGlobalObject* globalObject, JSScope* currentScope, SymbolTable* symbolTable, JSValue value)
-    {
-        T* scopeObject = new (
-            NotNull, allocateCell&lt;T&gt;(vm.heap, allocationSizeForScopeSize(1)))
-            T(vm, globalObject, currentScope, symbolTable);
-        scopeObject-&gt;finishCreation(vm, value);
-        return scopeObject;
-    }
-    
-    static JSNameScope* create(VM&amp;, JSGlobalObject*, JSScope* currentScope, SymbolTable*, JSValue, Type);
-
-    static JSValue toThis(JSCell*, ExecState*, ECMAMode);
-    static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;);
-    static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&amp;);
-
-    DECLARE_INFO;
-
-    JSValue value() { return variableAt(ScopeOffset(0)).get(); }
-
-protected:
-    void finishCreation(VM&amp; vm, JSValue value)
-    {
-        Base::finishCreationUninitialized(vm);
-        variableAt(ScopeOffset(0)).set(vm, this, value);
-    }
-
-    JSNameScope(VM&amp; vm, Structure* structure, JSScope* next, SymbolTable* symbolTable)
-        : Base(vm, structure, next, symbolTable)
-    {
-        ASSERT(symbolTable-&gt;scopeSize() == 1);
-    }
-};
-
-}
-
-#endif // JSNameScope_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -36,7 +36,6 @@
</span><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;IndexingHeaderInlines.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><del>-#include &quot;JSFunctionNameScope.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &quot;Lookup.h&quot;
</span><span class="cx"> #include &quot;NativeErrorConstructor.h&quot;
</span><span class="lines">@@ -1601,11 +1600,6 @@
</span><span class="cx">     return jsCast&lt;JSObject*&gt;(cell);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool JSObject::isFunctionNameScopeObject() const
-{
-    return inherits(JSFunctionNameScope::info());
-}
-
</del><span class="cx"> void JSObject::seal(VM&amp; vm)
</span><span class="cx"> {
</span><span class="cx">     if (isSealed(vm))
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -601,7 +601,6 @@
</span><span class="cx">     bool isVariableObject() const;
</span><span class="cx">     bool isStaticScopeObject() const;
</span><span class="cx">     bool isNameScopeObject() const;
</span><del>-    bool isFunctionNameScopeObject() const;
</del><span class="cx">     bool isActivationObject() const;
</span><span class="cx">     bool isErrorInstance() const;
</span><span class="cx">     bool isWithScope() const;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSScope.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSScope.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSScope.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -217,6 +216,13 @@
</span><span class="cx">     return lexicalEnvironment-&gt;symbolTable()-&gt;scopeType() == SymbolTable::ScopeType::CatchScope;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool JSScope::isFunctionNameScopeObject()
+{
+    JSLexicalEnvironment* lexicalEnvironment = jsDynamicCast&lt;JSLexicalEnvironment*&gt;(this);
+    if (!lexicalEnvironment)
+        return false;
+    return lexicalEnvironment-&gt;symbolTable()-&gt;scopeType() == SymbolTable::ScopeType::FunctionNameScope;
+}
</ins><span class="cx"> 
</span><span class="cx"> const char* resolveModeName(ResolveMode mode)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSScopeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSScope.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSScope.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSScope.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -166,6 +166,7 @@
</span><span class="cx"> 
</span><span class="cx">     bool isLexicalScope();
</span><span class="cx">     bool isCatchScope();
</span><ins>+    bool isFunctionNameScopeObject();
</ins><span class="cx"> 
</span><span class="cx">     ScopeChainIterator begin();
</span><span class="cx">     ScopeChainIterator end();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSSymbolTableObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;PropertyNameArray.h&quot;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSymbolTableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SymbolTable.h (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SymbolTable.h        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/SymbolTable.h        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -652,7 +652,8 @@
</span><span class="cx">     enum ScopeType {
</span><span class="cx">         VarScope,
</span><span class="cx">         LexicalScope,
</span><del>-        CatchScope
</del><ins>+        CatchScope,
+        FunctionNameScope
</ins><span class="cx">     };
</span><span class="cx">     void setScopeType(ScopeType type) { m_scopeType = type; }
</span><span class="cx">     ScopeType scopeType() const { return static_cast&lt;ScopeType&gt;(m_scopeType); }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.cpp (187968 => 187969)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.cpp        2015-08-05 18:24:20 UTC (rev 187968)
+++ trunk/Source/JavaScriptCore/runtime/VM.cpp        2015-08-05 18:29:25 UTC (rev 187969)
</span><span class="lines">@@ -61,7 +61,6 @@
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><span class="cx"> #include &quot;JSLock.h&quot;
</span><del>-#include &quot;JSNameScope.h&quot;
</del><span class="cx"> #include &quot;JSNotAnObject.h&quot;
</span><span class="cx"> #include &quot;JSPromiseDeferred.h&quot;
</span><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span></span></pre>
</div>
</div>

</body>
</html>