<!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>[173517] 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/173517">173517</a></dd>
<dt>Author</dt> <dd>oliver@apple.com</dd>
<dt>Date</dt> <dd>2014-09-11 11:18:14 -0700 (Thu, 11 Sep 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Rename activation to be more in line with spec language
https://bugs.webkit.org/show_bug.cgi?id=136721

Reviewed by Michael Saboff.

Somewhat bigger than the last one, but still just a rename.

* CMakeLists.txt:
* JavaScriptCore.order:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecode/CallVariant.h:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::isCaptured):
(JSC::CodeBlock::nameForRegister):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::setActivationRegister):
(JSC::CodeBlock::activationRegister):
(JSC::CodeBlock::uncheckedActivationRegister):
(JSC::CodeBlock::needsActivation):
* bytecode/Instruction.h:
* bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::setActivationRegister):
(JSC::UnlinkedCodeBlock::activationRegister):
(JSC::UnlinkedCodeBlock::hasActivationRegister):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitReturn):
* bytecompiler/BytecodeGenerator.h:
* debugger/DebuggerCallFrame.cpp:
(JSC::DebuggerCallFrame::scope):
* debugger/DebuggerScope.cpp:
(JSC::DebuggerScope::isFunctionOrEvalScope):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::tryGetActivation):
(JSC::DFG::Graph::tryGetRegisters):
* dfg/DFGGraph.h:
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::lexicalEnvironment):
(JSC::CallFrame::setActivation):
(JSC::CallFrame::activation): Deleted.
* interpreter/CallFrame.h:
* interpreter/Interpreter.cpp:
(JSC::unwindCallFrame):
* interpreter/Register.h:
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* jit/JIT.h:
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_tear_off_lexical_environment):
(JSC::JIT::emit_op_tear_off_arguments):
(JSC::JIT::emit_op_create_lexical_environment):
(JSC::JIT::emit_op_tear_off_activation): Deleted.
(JSC::JIT::emit_op_create_activation): Deleted.
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_tear_off_lexical_environment):
(JSC::JIT::emit_op_tear_off_arguments):
(JSC::JIT::emit_op_create_lexical_environment):
(JSC::JIT::emit_op_tear_off_activation): Deleted.
(JSC::JIT::emit_op_create_activation): Deleted.
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* llint/LLIntSlowPaths.h:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/Arguments.cpp:
(JSC::Arguments::visitChildren):
(JSC::Arguments::tearOff):
(JSC::Arguments::didTearOffActivation):
* runtime/Arguments.h:
(JSC::Arguments::offsetOfActivation):
(JSC::Arguments::argument):
(JSC::Arguments::finishCreation):
* runtime/CommonSlowPaths.cpp:
* runtime/JSFunction.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::reset):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::activationStructure):
* runtime/JSLexicalEnvironment.cpp: Renamed from Source/JavaScriptCore/runtime/JSActivation.cpp.
(JSC::JSLexicalEnvironment::visitChildren):
(JSC::JSLexicalEnvironment::symbolTableGet):
(JSC::JSLexicalEnvironment::symbolTablePut):
(JSC::JSLexicalEnvironment::getOwnNonIndexPropertyNames):
(JSC::JSLexicalEnvironment::symbolTablePutWithAttributes):
(JSC::JSLexicalEnvironment::getOwnPropertySlot):
(JSC::JSLexicalEnvironment::put):
(JSC::JSLexicalEnvironment::deleteProperty):
(JSC::JSLexicalEnvironment::toThis):
(JSC::JSLexicalEnvironment::argumentsGetter):
* runtime/JSLexicalEnvironment.h: Renamed from Source/JavaScriptCore/runtime/JSActivation.h.
(JSC::JSLexicalEnvironment::create):
(JSC::JSLexicalEnvironment::createStructure):
(JSC::JSLexicalEnvironment::JSLexicalEnvironment):
(JSC::asActivation):
(JSC::Register::lexicalEnvironment):
(JSC::JSLexicalEnvironment::registersOffset):
(JSC::JSLexicalEnvironment::tearOff):
(JSC::JSLexicalEnvironment::isTornOff):
(JSC::JSLexicalEnvironment::storageOffset):
(JSC::JSLexicalEnvironment::storage):
(JSC::JSLexicalEnvironment::allocationSize):
(JSC::JSLexicalEnvironment::isValidIndex):
(JSC::JSLexicalEnvironment::isValid):
(JSC::JSLexicalEnvironment::registerAt):
* runtime/JSObject.h:
* runtime/JSScope.cpp:
(JSC::abstractAccess):
* runtime/JSScope.h:
(JSC::ResolveOp::ResolveOp):
* runtime/JSSymbolTableObject.cpp:
* runtime/StrictEvalActivation.h:
(JSC::StrictEvalActivation::create):
* 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="#trunkSourceJavaScriptCoreJavaScriptCoreorder">trunk/Source/JavaScriptCore/JavaScriptCore.order</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="#trunkSourceJavaScriptCorebytecodeCallVarianth">trunk/Source/JavaScriptCore/bytecode/CallVariant.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockh">trunk/Source/JavaScriptCore/bytecode/CodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeInstructionh">trunk/Source/JavaScriptCore/bytecode/Instruction.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockh">trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h</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="#trunkSourceJavaScriptCoredebuggerDebuggerCallFramecpp">trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredebuggerDebuggerScopecpp">trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp">trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGCapabilitiescpp">trunk/Source/JavaScriptCore/dfg/DFGCapabilities.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGGraphcpp">trunk/Source/JavaScriptCore/dfg/DFGGraph.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGGraphh">trunk/Source/JavaScriptCore/dfg/DFGGraph.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGNodeTypeh">trunk/Source/JavaScriptCore/dfg/DFGNodeType.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGOperationscpp">trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJIT64cpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterCallFramecpp">trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterCallFrameh">trunk/Source/JavaScriptCore/interpreter/CallFrame.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterInterpretercpp">trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterRegisterh">trunk/Source/JavaScriptCore/interpreter/Register.h</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="#trunkSourceJavaScriptCorejitJITOperationsh">trunk/Source/JavaScriptCore/jit/JITOperations.h</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="#trunkSourceJavaScriptCorellintLowLevelInterpreter32_64asm">trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLowLevelInterpreter64asm">trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeArgumentscpp">trunk/Source/JavaScriptCore/runtime/Arguments.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeArgumentsh">trunk/Source/JavaScriptCore/runtime/Arguments.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCommonSlowPathscpp">trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSFunctionh">trunk/Source/JavaScriptCore/runtime/JSFunction.h</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="#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="#trunkSourceJavaScriptCoreruntimeStrictEvalActivationh">trunk/Source/JavaScriptCore/runtime/StrictEvalActivation.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMcpp">trunk/Source/JavaScriptCore/runtime/VM.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSLexicalEnvironmentcpp">trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSLexicalEnvironmenth">trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSActivationcpp">trunk/Source/JavaScriptCore/runtime/JSActivation.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSActivationh">trunk/Source/JavaScriptCore/runtime/JSActivation.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 (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/CMakeLists.txt        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/CMakeLists.txt        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -427,7 +427,7 @@
</span><span class="cx">     runtime/IntendedStructureChain.cpp
</span><span class="cx">     runtime/InternalFunction.cpp
</span><span class="cx">     runtime/JSAPIValueWrapper.cpp
</span><del>-    runtime/JSActivation.cpp
</del><ins>+    runtime/JSLexicalEnvironment.cpp
</ins><span class="cx">     runtime/JSArgumentsIterator.cpp
</span><span class="cx">     runtime/JSArray.cpp
</span><span class="cx">     runtime/JSArrayBuffer.cpp
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/ChangeLog        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -1,3 +1,141 @@
</span><ins>+2014-09-11  Oliver Hunt  &lt;oliver@apple.com&gt;
+
+        Rename activation to be more in line with spec language
+        https://bugs.webkit.org/show_bug.cgi?id=136721
+
+        Reviewed by Michael Saboff.
+
+        Somewhat bigger than the last one, but still just a rename.
+
+        * CMakeLists.txt:
+        * JavaScriptCore.order:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
+        * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * bytecode/BytecodeList.json:
+        * bytecode/BytecodeUseDef.h:
+        (JSC::computeUsesForBytecodeOffset):
+        (JSC::computeDefsForBytecodeOffset):
+        * bytecode/CallVariant.h:
+        * bytecode/CodeBlock.cpp:
+        (JSC::CodeBlock::dumpBytecode):
+        (JSC::CodeBlock::CodeBlock):
+        (JSC::CodeBlock::finalizeUnconditionally):
+        (JSC::CodeBlock::isCaptured):
+        (JSC::CodeBlock::nameForRegister):
+        * bytecode/CodeBlock.h:
+        (JSC::CodeBlock::setActivationRegister):
+        (JSC::CodeBlock::activationRegister):
+        (JSC::CodeBlock::uncheckedActivationRegister):
+        (JSC::CodeBlock::needsActivation):
+        * bytecode/Instruction.h:
+        * bytecode/UnlinkedCodeBlock.h:
+        (JSC::UnlinkedCodeBlock::setActivationRegister):
+        (JSC::UnlinkedCodeBlock::activationRegister):
+        (JSC::UnlinkedCodeBlock::hasActivationRegister):
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::BytecodeGenerator):
+        (JSC::BytecodeGenerator::emitReturn):
+        * bytecompiler/BytecodeGenerator.h:
+        * debugger/DebuggerCallFrame.cpp:
+        (JSC::DebuggerCallFrame::scope):
+        * debugger/DebuggerScope.cpp:
+        (JSC::DebuggerScope::isFunctionOrEvalScope):
+        * dfg/DFGByteCodeParser.cpp:
+        (JSC::DFG::ByteCodeParser::parseBlock):
+        * dfg/DFGCapabilities.cpp:
+        (JSC::DFG::capabilityLevel):
+        * dfg/DFGGraph.cpp:
+        (JSC::DFG::Graph::tryGetActivation):
+        (JSC::DFG::Graph::tryGetRegisters):
+        * dfg/DFGGraph.h:
+        * dfg/DFGNodeType.h:
+        * dfg/DFGOperations.cpp:
+        * dfg/DFGSpeculativeJIT32_64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+        * dfg/DFGSpeculativeJIT64.cpp:
+        (JSC::DFG::SpeculativeJIT::compile):
+        * interpreter/CallFrame.cpp:
+        (JSC::CallFrame::lexicalEnvironment):
+        (JSC::CallFrame::setActivation):
+        (JSC::CallFrame::activation): Deleted.
+        * interpreter/CallFrame.h:
+        * interpreter/Interpreter.cpp:
+        (JSC::unwindCallFrame):
+        * interpreter/Register.h:
+        * jit/JIT.cpp:
+        (JSC::JIT::privateCompileMainPass):
+        * jit/JIT.h:
+        * jit/JITOpcodes.cpp:
+        (JSC::JIT::emit_op_tear_off_lexical_environment):
+        (JSC::JIT::emit_op_tear_off_arguments):
+        (JSC::JIT::emit_op_create_lexical_environment):
+        (JSC::JIT::emit_op_tear_off_activation): Deleted.
+        (JSC::JIT::emit_op_create_activation): Deleted.
+        * jit/JITOpcodes32_64.cpp:
+        (JSC::JIT::emit_op_tear_off_lexical_environment):
+        (JSC::JIT::emit_op_tear_off_arguments):
+        (JSC::JIT::emit_op_create_lexical_environment):
+        (JSC::JIT::emit_op_tear_off_activation): Deleted.
+        (JSC::JIT::emit_op_create_activation): Deleted.
+        * jit/JITOperations.cpp:
+        * jit/JITOperations.h:
+        * llint/LLIntSlowPaths.cpp:
+        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
+        * llint/LLIntSlowPaths.h:
+        * llint/LowLevelInterpreter32_64.asm:
+        * llint/LowLevelInterpreter64.asm:
+        * runtime/Arguments.cpp:
+        (JSC::Arguments::visitChildren):
+        (JSC::Arguments::tearOff):
+        (JSC::Arguments::didTearOffActivation):
+        * runtime/Arguments.h:
+        (JSC::Arguments::offsetOfActivation):
+        (JSC::Arguments::argument):
+        (JSC::Arguments::finishCreation):
+        * runtime/CommonSlowPaths.cpp:
+        * runtime/JSFunction.h:
+        * runtime/JSGlobalObject.cpp:
+        (JSC::JSGlobalObject::reset):
+        (JSC::JSGlobalObject::visitChildren):
+        * runtime/JSGlobalObject.h:
+        (JSC::JSGlobalObject::activationStructure):
+        * runtime/JSLexicalEnvironment.cpp: Renamed from Source/JavaScriptCore/runtime/JSActivation.cpp.
+        (JSC::JSLexicalEnvironment::visitChildren):
+        (JSC::JSLexicalEnvironment::symbolTableGet):
+        (JSC::JSLexicalEnvironment::symbolTablePut):
+        (JSC::JSLexicalEnvironment::getOwnNonIndexPropertyNames):
+        (JSC::JSLexicalEnvironment::symbolTablePutWithAttributes):
+        (JSC::JSLexicalEnvironment::getOwnPropertySlot):
+        (JSC::JSLexicalEnvironment::put):
+        (JSC::JSLexicalEnvironment::deleteProperty):
+        (JSC::JSLexicalEnvironment::toThis):
+        (JSC::JSLexicalEnvironment::argumentsGetter):
+        * runtime/JSLexicalEnvironment.h: Renamed from Source/JavaScriptCore/runtime/JSActivation.h.
+        (JSC::JSLexicalEnvironment::create):
+        (JSC::JSLexicalEnvironment::createStructure):
+        (JSC::JSLexicalEnvironment::JSLexicalEnvironment):
+        (JSC::asActivation):
+        (JSC::Register::lexicalEnvironment):
+        (JSC::JSLexicalEnvironment::registersOffset):
+        (JSC::JSLexicalEnvironment::tearOff):
+        (JSC::JSLexicalEnvironment::isTornOff):
+        (JSC::JSLexicalEnvironment::storageOffset):
+        (JSC::JSLexicalEnvironment::storage):
+        (JSC::JSLexicalEnvironment::allocationSize):
+        (JSC::JSLexicalEnvironment::isValidIndex):
+        (JSC::JSLexicalEnvironment::isValid):
+        (JSC::JSLexicalEnvironment::registerAt):
+        * runtime/JSObject.h:
+        * runtime/JSScope.cpp:
+        (JSC::abstractAccess):
+        * runtime/JSScope.h:
+        (JSC::ResolveOp::ResolveOp):
+        * runtime/JSSymbolTableObject.cpp:
+        * runtime/StrictEvalActivation.h:
+        (JSC::StrictEvalActivation::create):
+        * runtime/VM.cpp:
+
</ins><span class="cx"> 2014-09-11  László Langó  &lt;llango.u-szeged@partner.samsung.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [JavaScriptCore] Fix FTL on platform EFL.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCoreorder"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.order (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.order        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.order        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -1300,7 +1300,6 @@
</span><span class="cx"> __ZN3WTF9HashTableINSt3__14pairIPN3JSC8JSObjectEjEENS_12KeyValuePairIS6_NS3_4WeakINS3_9StructureEEEEENS_24KeyValuePairKeyExtractorISB_EENS_8PairHashIS5_jEENS_18HashMapValueTraitsINS_10HashTraitsIS6_EENSH_ISA_EEEESI_E3addINS_17HashMapTranslatorISK_SF_EES6_NS3_8PassWeakIS9_EEEENS_18HashTableAddResultINS_17HashTableIteratorIS6_SB_SD_SF_SK_SI_EEEERKT0_RKT1_
</span><span class="cx"> __ZN3WTF9HashTableINSt3__14pairIPN3JSC8JSObjectEjEENS_12KeyValuePairIS6_NS3_4WeakINS3_9StructureEEEEENS_24KeyValuePairKeyExtractorISB_EENS_8PairHashIS5_jEENS_18HashMapValueTraitsINS_10HashTraitsIS6_EENSH_ISA_EEEESI_E6lookupINS_22IdentityHashTranslatorISF_EES6_EEPSB_RKT0_
</span><span class="cx"> __ZN3WTF9HashTableINSt3__14pairIPN3JSC8JSObjectEjEENS_12KeyValuePairIS6_NS3_4WeakINS3_9StructureEEEEENS_24KeyValuePairKeyExtractorISB_EENS_8PairHashIS5_jEENS_18HashMapValueTraitsINS_10HashTraitsIS6_EENSH_ISA_EEEESI_E6rehashEi
</span><del>-__ZN3JSC12JSActivation6createERNS_2VMEPNS_9ExecStateEPNS_9CodeBlockE
</del><span class="cx"> __ZNK3JSC7JSValue3getEPNS_9ExecStateENS_12PropertyNameERNS_12PropertySlotE
</span><span class="cx"> __ZNK3JSC19BracketAccessorNode10isLocationEv
</span><span class="cx"> __ZNK3JSC19BracketAccessorNode21isBracketAccessorNodeEv
</span><span class="lines">@@ -1312,8 +1311,6 @@
</span><span class="cx"> __ZN3JSC17AssignBracketNode12emitBytecodeERNS_17BytecodeGeneratorEPNS_10RegisterIDE
</span><span class="cx"> __ZN3JSC17BytecodeGenerator12emitPutByValEPNS_10RegisterIDES2_S2_
</span><span class="cx"> __ZN3JSC12RegExpObjectC1EPNS_14JSGlobalObjectEPNS_9StructureEPNS_6RegExpE
</span><del>-__ZN3JSC12JSActivation18getOwnPropertySlotEPNS_6JSCellEPNS_9ExecStateENS_12PropertyNameERNS_12PropertySlotE
-__ZN3JSC12JSActivation14symbolTableGetENS_12PropertyNameERNS_12PropertySlotE
</del><span class="cx"> __ZN3JSC17ObjectConstructor18getOwnPropertySlotEPNS_6JSCellEPNS_9ExecStateENS_12PropertyNameERNS_12PropertySlotE
</span><span class="cx"> __ZN3JSC21getStaticFunctionSlotINS_8JSObjectEEEbPNS_9ExecStateEPKNS_9HashTableEPS1_NS_12PropertyNameERNS_12PropertySlotE
</span><span class="cx"> __ZN3JSC14ArrayPrototype18getOwnPropertySlotEPNS_6JSCellEPNS_9ExecStateENS_12PropertyNameERNS_12PropertySlotE
</span><span class="lines">@@ -2624,7 +2621,6 @@
</span><span class="cx"> __ZN3JSC9CodeBlock29stronglyVisitStrongReferencesERNS_11SlotVisitorE
</span><span class="cx"> __ZN3JSC13EvalCodeCache14visitAggregateERNS_11SlotVisitorE
</span><span class="cx"> __ZN3JSC9CodeBlock27stronglyVisitWeakReferencesERNS_11SlotVisitorE
</span><del>-__ZN3JSC12JSActivation13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE
</del><span class="cx"> __ZN3JSC9CodeBlock31performTracingFixpointIterationERNS_11SlotVisitorE
</span><span class="cx"> __ZN3JSC16JSCallbackObjectINS_20JSDestructibleObjectEE13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE
</span><span class="cx"> __ZN3JSC18RegExpMatchesArray13visitChildrenEPNS_6JSCellERNS_11SlotVisitorE
</span><span class="lines">@@ -3060,7 +3056,6 @@
</span><span class="cx"> __ZN3JSC22jsMakeNontrivialStringIPKcN3WTF6StringES2_S4_S2_S4_EENS_7JSValueEPNS_9ExecStateET_T0_T1_T2_T3_T4_
</span><span class="cx"> __ZN3WTF13tryMakeStringIPKcNS_6StringES2_S3_S2_S3_EENS_10PassRefPtrINS_10StringImplEEET_T0_T1_T2_T3_T4_
</span><span class="cx"> __ZN3JSC4Yarr12ByteCompiler26alternativeBodyDisjunctionEb
</span><del>-__ZN3JSC9Arguments20didTearOffActivationEPNS_9ExecStateEPNS_12JSActivationE
</del><span class="cx"> __ZN3JSC3JIT24emit_op_create_argumentsEPNS_11InstructionE
</span><span class="cx"> __ZN3JSC3JIT16emit_op_new_funcEPNS_11InstructionE
</span><span class="cx"> _cti_op_create_arguments
</span><span class="lines">@@ -3727,8 +3722,6 @@
</span><span class="cx"> __ZN3JSC3DFG12GPRTemporaryC1EPNS0_14SpeculativeJITERNS0_23SpeculateIntegerOperandE
</span><span class="cx"> __ZN3JSC3DFG12GPRTemporaryC2EPNS0_14SpeculativeJITERNS0_23SpeculateIntegerOperandE
</span><span class="cx"> __ZN3JSC23MacroAssemblerX86Common9compare32ENS0_19RelationalConditionENS_12X86Registers10RegisterIDENS_22AbstractMacroAssemblerINS_12X86AssemblerEE12TrustedImm32ES3_
</span><del>-__ZN3JSC12JSActivation3putEPNS_6JSCellEPNS_9ExecStateENS_12PropertyNameENS_7JSValueERNS_15PutPropertySlotE
-__ZN3JSC12JSActivation14symbolTablePutEPNS_9ExecStateENS_12PropertyNameENS_7JSValueEb
</del><span class="cx"> _cti_op_mod
</span><span class="cx"> __ZN3JSC3DFG14SpeculativeJIT21compileObjectEqualityEPNS0_4NodeE
</span><span class="cx"> __ZN3JSCL24dateProtoFuncToUTCStringEPNS_9ExecStateE
</span><span class="lines">@@ -4135,7 +4128,6 @@
</span><span class="cx"> __ZN3WTF5DequeINS_19FunctionWithContextELm0EE6removeEm
</span><span class="cx"> __ZN3JSC17BytecodeGenerator20emitLoadGlobalObjectEPNS_10RegisterIDE
</span><span class="cx"> __ZN3JSC4Yarr13YarrGeneratorILNS0_18YarrJITCompileModeE1EE29generatePatternCharacterFixedEm
</span><del>-__ZN3JSC12JSActivation15argumentsGetterEPNS_9ExecStateENS_7JSValueENS_12PropertyNameE
</del><span class="cx"> __ZN3JSCL21dateProtoFuncSetMonthEPNS_9ExecStateE
</span><span class="cx"> _operationCompareLess
</span><span class="cx"> __ZN3JSCL23dateProtoFuncSetUTCDateEPNS_9ExecStateE
</span><span class="lines">@@ -4764,7 +4756,6 @@
</span><span class="cx"> __ZN3JSC17BytecodeGenerator35emitThrowExpressionTooDeepExceptionEv
</span><span class="cx"> __ZN3JSC22createOutOfMemoryErrorEPNS_14JSGlobalObjectE
</span><span class="cx"> __ZN3JSCL17mathProtoFuncACosEPNS_9ExecStateE
</span><del>-__ZN3JSC12JSActivation14deletePropertyEPNS_6JSCellEPNS_9ExecStateENS_12PropertyNameE
</del><span class="cx"> __ZN3JSC11JSNameScope3putEPNS_6JSCellEPNS_9ExecStateENS_12PropertyNameENS_7JSValueERNS_15PutPropertySlotE
</span><span class="cx"> __ZN3JSC14symbolTablePutINS_11JSNameScopeEEEbPT_PNS_9ExecStateENS_12PropertyNameENS_7JSValueEb
</span><span class="cx"> __ZN3JSC15NameConstructor11getCallDataEPNS_6JSCellERNS_8CallDataE
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -701,7 +701,7 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\IntendedStructureChain.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\InternalFunction.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSAPIValueWrapper.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\JSActivation.cpp&quot; /&gt;
</del><ins>+    &lt;ClCompile Include=&quot;..\runtime\JSLexicalEnvironment.cpp&quot; /&gt;
</ins><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSArgumentsIterator.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSArray.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSArrayIterator.cpp&quot; /&gt;
</span><span class="lines">@@ -1454,7 +1454,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\InternalFunction.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\Intrinsic.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSAPIValueWrapper.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\JSActivation.h&quot; /&gt;
</del><ins>+    &lt;ClInclude Include=&quot;..\runtime\JSLexicalEnvironment.h&quot; /&gt;
</ins><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSArgumentsIterator.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSArray.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSArrayBuffer.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -621,7 +621,7 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\InternalFunction.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\JSActivation.cpp&quot;&gt;
</del><ins>+    &lt;ClCompile Include=&quot;..\runtime\JSLexicalEnvironment.cpp&quot;&gt;
</ins><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSAPIValueWrapper.cpp&quot;&gt;
</span><span class="lines">@@ -2576,7 +2576,7 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\Intrinsic.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\JSActivation.h&quot;&gt;
</del><ins>+    &lt;ClInclude Include=&quot;..\runtime\JSLexicalEnvironment.h&quot;&gt;
</ins><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSAPIValueWrapper.h&quot;&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -682,7 +682,7 @@
</span><span class="cx">                 0FFFC96014EF90BD00C72532 /* DFGVirtualRegisterAllocationPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FFFC95414EF909500C72532 /* DFGVirtualRegisterAllocationPhase.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 140566C4107EC255005DBC8D /* JSAPIValueWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC0894D50FAFBA2D00001865 /* JSAPIValueWrapper.cpp */; };
</span><span class="cx">                 140566D6107EC271005DBC8D /* JSFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A85E0255597D01FF60F7 /* JSFunction.cpp */; };
</span><del>-                140B7D1D0DC69AF7009C42B8 /* JSActivation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14DA818F0D99FD2000B0A4FB /* JSActivation.cpp */; };
</del><ins>+                140B7D1D0DC69AF7009C42B8 /* JSLexicalEnvironment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14DA818F0D99FD2000B0A4FB /* JSLexicalEnvironment.cpp */; };
</ins><span class="cx">                 140D17D70E8AD4A9000CD17D /* JSBasePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 140D17D60E8AD4A9000CD17D /* JSBasePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 141211310A48794D00480255 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 932F5BD90822A1C700736975 /* JavaScriptCore.framework */; };
</span><span class="cx">                 141211340A48795800480255 /* minidom.c in Sources */ = {isa = PBXBuildFile; fileRef = 141211020A48780900480255 /* minidom.c */; };
</span><span class="lines">@@ -953,7 +953,7 @@
</span><span class="cx">                 554076FB18DA58AD00EFF7F2 /* IntendedStructureChain.h in Headers */ = {isa = PBXBuildFile; fileRef = A78853F817972629001440E4 /* IntendedStructureChain.h */; };
</span><span class="cx">                 554076FC18DA58AD00EFF7F2 /* InternalFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = BC11667A0E199C05008066DD /* InternalFunction.h */; };
</span><span class="cx">                 554076FE18DA58AD00EFF7F2 /* Intrinsic.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BF642A148DB2B5004DE36A /* Intrinsic.h */; };
</span><del>-                5540771818DA58AD00EFF7F2 /* JSActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DA818E0D99FD2000B0A4FB /* JSActivation.h */; settings = {ATTRIBUTES = (); }; };
</del><ins>+                5540771818DA58AD00EFF7F2 /* JSLexicalEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DA818E0D99FD2000B0A4FB /* JSLexicalEnvironment.h */; settings = {ATTRIBUTES = (); }; };
</ins><span class="cx">                 5540771918DA58AD00EFF7F2 /* JSAPIValueWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0894D60FAFBA2D00001865 /* JSAPIValueWrapper.h */; };
</span><span class="cx">                 5540771B18DA58AD00EFF7F2 /* JSArgumentsIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A76140CC182982CB00750624 /* JSArgumentsIterator.h */; };
</span><span class="cx">                 5540771C18DA58AD00EFF7F2 /* JSArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 938772E5038BFE19008635CE /* JSArray.h */; };
</span><span class="lines">@@ -1667,7 +1667,7 @@
</span><span class="cx">                 BC18C4130E16F5CD00B34460 /* JavaScript.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CAA8B4A0D32C39A0041BCFF /* JavaScript.h */; settings = {ATTRIBUTES = (Public, ); }; };
</span><span class="cx">                 BC18C4140E16F5CD00B34460 /* JavaScriptCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CAA8B4B0D32C39A0041BCFF /* JavaScriptCore.h */; settings = {ATTRIBUTES = (Public, ); }; };
</span><span class="cx">                 BC18C4150E16F5CD00B34460 /* JavaScriptCorePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C290E60284F98E018635CA /* JavaScriptCorePrefix.h */; };
</span><del>-                BC18C4160E16F5CD00B34460 /* JSActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DA818E0D99FD2000B0A4FB /* JSActivation.h */; settings = {ATTRIBUTES = (); }; };
</del><ins>+                BC18C4160E16F5CD00B34460 /* JSLexicalEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = 14DA818E0D99FD2000B0A4FB /* JSLexicalEnvironment.h */; settings = {ATTRIBUTES = (); }; };
</ins><span class="cx">                 BC18C4170E16F5CD00B34460 /* JSArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 938772E5038BFE19008635CE /* JSArray.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 BC18C4180E16F5CD00B34460 /* JSBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 142711380A460BBB0080EEEA /* JSBase.h */; settings = {ATTRIBUTES = (Public, ); }; };
</span><span class="cx">                 BC18C4190E16F5CD00B34460 /* JSCallbackConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1440F8AC0A508D200005F061 /* JSCallbackConstructor.h */; };
</span><span class="lines">@@ -2702,8 +2702,8 @@
</span><span class="cx">                 14D844A216AA2C7000A65AF0 /* PrototypeMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PrototypeMap.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 14D844A316AA2C7000A65AF0 /* PrototypeMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrototypeMap.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 14D857740A4696C80032146C /* testapi.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = testapi.js; path = API/tests/testapi.js; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                14DA818E0D99FD2000B0A4FB /* JSActivation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActivation.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                14DA818F0D99FD2000B0A4FB /* JSActivation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSActivation.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><ins>+                14DA818E0D99FD2000B0A4FB /* JSLexicalEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSLexicalEnvironment.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                14DA818F0D99FD2000B0A4FB /* JSLexicalEnvironment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSLexicalEnvironment.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 14DE0D680D02431400AACCA2 /* JSGlobalObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = JSGlobalObject.cpp; sourceTree = &quot;&lt;group&gt;&quot;; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</span><span class="cx">                 14DF04D916B3996D0016A513 /* StaticPropertyAnalysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticPropertyAnalysis.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 14E84F9914EE1ACC00D6D5D4 /* WeakBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WeakBlock.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4479,8 +4479,8 @@
</span><span class="cx">                                 BC9BB95B0E19680600DF8855 /* InternalFunction.cpp */,
</span><span class="cx">                                 BC11667A0E199C05008066DD /* InternalFunction.h */,
</span><span class="cx">                                 86BF642A148DB2B5004DE36A /* Intrinsic.h */,
</span><del>-                                14DA818F0D99FD2000B0A4FB /* JSActivation.cpp */,
-                                14DA818E0D99FD2000B0A4FB /* JSActivation.h */,
</del><ins>+                                14DA818F0D99FD2000B0A4FB /* JSLexicalEnvironment.cpp */,
+                                14DA818E0D99FD2000B0A4FB /* JSLexicalEnvironment.h */,
</ins><span class="cx">                                 A76140CB182982CB00750624 /* JSArgumentsIterator.cpp */,
</span><span class="cx">                                 A76140CC182982CB00750624 /* JSArgumentsIterator.h */,
</span><span class="cx">                                 93ADFCE60CCBD7AC00D30B08 /* JSArray.cpp */,
</span><span class="lines">@@ -5525,7 +5525,7 @@
</span><span class="cx">                                 554075DA18DA58AD00EFF7F2 /* DatePrototype.h in Headers */,
</span><span class="cx">                                 5540767118DA58AD00EFF7F2 /* ErrorConstructor.h in Headers */,
</span><span class="cx">                                 5540769118DA58AD00EFF7F2 /* ConsolePrototype.h in Headers */,
</span><del>-                                5540771818DA58AD00EFF7F2 /* JSActivation.h in Headers */,
</del><ins>+                                5540771818DA58AD00EFF7F2 /* JSLexicalEnvironment.h in Headers */,
</ins><span class="cx">                                 5540771B18DA58AD00EFF7F2 /* JSArgumentsIterator.h in Headers */,
</span><span class="cx">                                 5540772218DA58AD00EFF7F2 /* JSArrayIterator.h in Headers */,
</span><span class="cx">                                 5540774818DA58AD00EFF7F2 /* JSGlobalObjectDebuggable.h in Headers */,
</span><span class="lines">@@ -6205,7 +6205,7 @@
</span><span class="cx">                                 0F5EF91F16878F7D003E5C25 /* JITThunks.h in Headers */,
</span><span class="cx">                                 0FC712E317CD8793008CC93C /* JITToDFGDeferredCompilationCallback.h in Headers */,
</span><span class="cx">                                 A76F54A313B28AAB00EF2BCE /* JITWriteBarrier.h in Headers */,
</span><del>-                                BC18C4160E16F5CD00B34460 /* JSActivation.h in Headers */,
</del><ins>+                                BC18C4160E16F5CD00B34460 /* JSLexicalEnvironment.h in Headers */,
</ins><span class="cx">                                 840480131021A1D9008E7F01 /* JSAPIValueWrapper.h in Headers */,
</span><span class="cx">                                 0F3B7E2919A11B8000D9BC56 /* CallEdgeProfileInlines.h in Headers */,
</span><span class="cx">                                 C2CF39C216E15A8100DD69BE /* JSAPIWrapperObject.h in Headers */,
</span><span class="lines">@@ -7474,7 +7474,7 @@
</span><span class="cx">                                 14A23D750F4E1ABB0023CDAD /* JITStubs.cpp in Sources */,
</span><span class="cx">                                 0F5EF91E16878F7A003E5C25 /* JITThunks.cpp in Sources */,
</span><span class="cx">                                 0FC712E217CD8791008CC93C /* JITToDFGDeferredCompilationCallback.cpp in Sources */,
</span><del>-                                140B7D1D0DC69AF7009C42B8 /* JSActivation.cpp in Sources */,
</del><ins>+                                140B7D1D0DC69AF7009C42B8 /* JSLexicalEnvironment.cpp in Sources */,
</ins><span class="cx">                                 140566C4107EC255005DBC8D /* JSAPIValueWrapper.cpp in Sources */,
</span><span class="cx">                                 C2CF39C116E15A8100DD69BE /* JSAPIWrapperObject.mm in Sources */,
</span><span class="cx">                                 A76140D1182982CB00750624 /* JSArgumentsIterator.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeListjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeList.json (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx">         &quot;macroNameComponent&quot; : &quot;BYTECODE&quot;, &quot;asmPrefix&quot; : &quot;llint_&quot;, 
</span><span class="cx">         &quot;bytecodes&quot; : [
</span><span class="cx">             { &quot;name&quot; : &quot;op_enter&quot;, &quot;length&quot; : 1 },
</span><del>-            { &quot;name&quot; : &quot;op_create_activation&quot;, &quot;length&quot; : 2 },
</del><ins>+            { &quot;name&quot; : &quot;op_create_lexical_environment&quot;, &quot;length&quot; : 2 },
</ins><span class="cx">             { &quot;name&quot; : &quot;op_touch_entry&quot;, &quot;length&quot; : 1 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_init_lazy_reg&quot;, &quot;length&quot; : 2 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_create_arguments&quot;, &quot;length&quot; : 2 },
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx">             { &quot;name&quot; : &quot;op_call&quot;, &quot;length&quot; : 9 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_call_eval&quot;, &quot;length&quot; : 9 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_call_varargs&quot;, &quot;length&quot; : 9 },
</span><del>-            { &quot;name&quot; : &quot;op_tear_off_activation&quot;, &quot;length&quot; : 2 },
</del><ins>+            { &quot;name&quot; : &quot;op_tear_off_lexical_environment&quot;, &quot;length&quot; : 2 },
</ins><span class="cx">             { &quot;name&quot; : &quot;op_tear_off_arguments&quot;, &quot;length&quot; : 3 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_ret&quot;, &quot;length&quot; : 2 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_ret_object_or_this&quot;, &quot;length&quot; : 3 },
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeUseDefh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -59,10 +59,10 @@
</span><span class="cx">         return;
</span><span class="cx">     case op_new_func:
</span><span class="cx">     case op_new_captured_func:
</span><del>-    case op_create_activation: 
</del><ins>+    case op_create_lexical_environment: 
</ins><span class="cx">     case op_create_arguments:
</span><span class="cx">     case op_to_this:
</span><del>-    case op_tear_off_activation:
</del><ins>+    case op_tear_off_lexical_environment:
</ins><span class="cx">     case op_profile_will_call:
</span><span class="cx">     case op_profile_did_call:
</span><span class="cx">     case op_profile_type:
</span><span class="lines">@@ -305,7 +305,7 @@
</span><span class="cx">     case op_next_enumerator_pname:
</span><span class="cx">     case op_resolve_scope:
</span><span class="cx">     case op_strcat:
</span><del>-    case op_tear_off_activation:
</del><ins>+    case op_tear_off_lexical_environment:
</ins><span class="cx">     case op_to_primitive:
</span><span class="cx">     case op_catch:
</span><span class="cx">     case op_create_this:
</span><span class="lines">@@ -370,7 +370,7 @@
</span><span class="cx">     case op_to_this:
</span><span class="cx">     case op_get_callee:
</span><span class="cx">     case op_init_lazy_reg:
</span><del>-    case op_create_activation:
</del><ins>+    case op_create_lexical_environment:
</ins><span class="cx">     case op_create_arguments:
</span><span class="cx">     case op_del_by_id:
</span><span class="cx">     case op_del_by_val:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCallVarianth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CallVariant.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CallVariant.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/bytecode/CallVariant.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -38,8 +38,9 @@
</span><span class="cx"> // callee in one of the following four forms:
</span><span class="cx"> //
</span><span class="cx"> // JSFunction callee: This means that we expect the callsite to always call a particular function
</span><del>-//     instance, that is associated with a particular activation. This pinpoints not just the code
-//     that will be called (i.e. the executable) but also the scope within which the code runs.
</del><ins>+//     instance, that is associated with a particular lexical environment. This pinpoints not
+//     just the code that will be called (i.e. the executable) but also the scope within which
+//     the code runs.
</ins><span class="cx"> //
</span><span class="cx"> // Executable callee: This corresponds to a call to a closure. In this case, we know that the
</span><span class="cx"> //     callsite will call a JSFunction, but we do not know which particular JSFunction. We do know
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -43,9 +43,9 @@
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITStubs.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;LLIntEntrypoint.h&quot;
</span><span class="cx"> #include &quot;LowLevelInterpreter.h&quot;
</span><span class="lines">@@ -588,7 +588,7 @@
</span><span class="cx">             unmodifiedArgumentsRegister(argumentsRegister()).offset());
</span><span class="cx">     }
</span><span class="cx">     if (needsActivation() &amp;&amp; codeType() == FunctionCode)
</span><del>-        out.printf(&quot;; activation in r%d&quot;, activationRegister().offset());
</del><ins>+        out.printf(&quot;; lexical environment in r%d&quot;, activationRegister().offset());
</ins><span class="cx">     out.printf(&quot;\n&quot;);
</span><span class="cx">     
</span><span class="cx">     StubInfoMap stubInfos;
</span><span class="lines">@@ -743,9 +743,9 @@
</span><span class="cx">             printLocationAndOp(out, exec, location, it, &quot;touch_entry&quot;);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        case op_create_activation: {
</del><ins>+        case op_create_lexical_environment: {
</ins><span class="cx">             int r0 = (++it)-&gt;u.operand;
</span><del>-            printLocationOpAndRegisterOperand(out, exec, location, it, &quot;create_activation&quot;, r0);
</del><ins>+            printLocationOpAndRegisterOperand(out, exec, location, it, &quot;create_lexical_environment&quot;, r0);
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case op_create_arguments: {
</span><span class="lines">@@ -1317,9 +1317,9 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">             
</span><del>-        case op_tear_off_activation: {
</del><ins>+        case op_tear_off_lexical_environment: {
</ins><span class="cx">             int r0 = (++it)-&gt;u.operand;
</span><del>-            printLocationOpAndRegisterOperand(out, exec, location, it, &quot;tear_off_activation&quot;, r0);
</del><ins>+            printLocationOpAndRegisterOperand(out, exec, location, it, &quot;tear_off_lexical_environment&quot;, r0);
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         case op_tear_off_arguments: {
</span><span class="lines">@@ -1637,7 +1637,7 @@
</span><span class="cx">     , m_instructions(other.m_instructions)
</span><span class="cx">     , m_thisRegister(other.m_thisRegister)
</span><span class="cx">     , m_argumentsRegister(other.m_argumentsRegister)
</span><del>-    , m_activationRegister(other.m_activationRegister)
</del><ins>+    , m_lexicalEnvironmentRegister(other.m_lexicalEnvironmentRegister)
</ins><span class="cx">     , m_isStrictMode(other.m_isStrictMode)
</span><span class="cx">     , m_needsActivation(other.m_needsActivation)
</span><span class="cx">     , m_mayBeExecuting(false)
</span><span class="lines">@@ -1696,7 +1696,7 @@
</span><span class="cx">     , m_vm(unlinkedCodeBlock-&gt;vm())
</span><span class="cx">     , m_thisRegister(unlinkedCodeBlock-&gt;thisRegister())
</span><span class="cx">     , m_argumentsRegister(unlinkedCodeBlock-&gt;argumentsRegister())
</span><del>-    , m_activationRegister(unlinkedCodeBlock-&gt;activationRegister())
</del><ins>+    , m_lexicalEnvironmentRegister(unlinkedCodeBlock-&gt;activationRegister())
</ins><span class="cx">     , m_isStrictMode(unlinkedCodeBlock-&gt;isStrictMode())
</span><span class="cx">     , m_needsActivation(unlinkedCodeBlock-&gt;hasActivationRegister() &amp;&amp; unlinkedCodeBlock-&gt;codeType() == FunctionCode)
</span><span class="cx">     , m_mayBeExecuting(false)
</span><span class="lines">@@ -1950,8 +1950,8 @@
</span><span class="cx">             ResolveOp op = JSScope::abstractResolve(m_globalObject-&gt;globalExec(), needsActivation(), scope, ident, Get, type);
</span><span class="cx">             instructions[i + 3].u.operand = op.type;
</span><span class="cx">             instructions[i + 4].u.operand = op.depth;
</span><del>-            if (op.activation)
-                instructions[i + 5].u.activation.set(*vm(), ownerExecutable, op.activation);
</del><ins>+            if (op.lexicalEnvironment)
+                instructions[i + 5].u.lexicalEnvironment.set(*vm(), ownerExecutable, op.lexicalEnvironment);
</ins><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="lines">@@ -2016,7 +2016,7 @@
</span><span class="cx">                 // FIXME: handle other values for op.type here, and also consider what to do when we can't statically determine the globalID
</span><span class="cx">                 // https://bugs.webkit.org/show_bug.cgi?id=135184
</span><span class="cx">                 if (op.type == ClosureVar)
</span><del>-                    symbolTable = op.activation-&gt;symbolTable();
</del><ins>+                    symbolTable = op.lexicalEnvironment-&gt;symbolTable();
</ins><span class="cx">                 else if (op.type == GlobalVar)
</span><span class="cx">                     symbolTable = m_globalObject.get()-&gt;symbolTable();
</span><span class="cx">                 
</span><span class="lines">@@ -2534,12 +2534,12 @@
</span><span class="cx">                 curInstruction[2].u.jsCell.clear();
</span><span class="cx">                 break;
</span><span class="cx">             case op_resolve_scope: {
</span><del>-                WriteBarrierBase&lt;JSActivation&gt;&amp; activation = curInstruction[5].u.activation;
-                if (!activation || Heap::isMarked(activation.get()))
</del><ins>+                WriteBarrierBase&lt;JSLexicalEnvironment&gt;&amp; lexicalEnvironment = curInstruction[5].u.lexicalEnvironment;
+                if (!lexicalEnvironment || Heap::isMarked(lexicalEnvironment.get()))
</ins><span class="cx">                     break;
</span><span class="cx">                 if (Options::verboseOSR())
</span><del>-                    dataLogF(&quot;Clearing dead activation %p.\n&quot;, activation.get());
-                activation.clear();
</del><ins>+                    dataLogF(&quot;Clearing dead lexicalEnvironment %p.\n&quot;, lexicalEnvironment.get());
+                lexicalEnvironment.clear();
</ins><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">             case op_get_from_scope:
</span><span class="lines">@@ -2831,7 +2831,7 @@
</span><span class="cx">     if (inlineCallFrame)
</span><span class="cx">         return inlineCallFrame-&gt;capturedVars.get(operand.toLocal());
</span><span class="cx"> 
</span><del>-    // The activation object isn't in the captured region, but it's &quot;captured&quot;
</del><ins>+    // The lexical environment object isn't in the captured region, but it's &quot;captured&quot;
</ins><span class="cx">     // in the sense that stores to its location can be observed indirectly.
</span><span class="cx">     if (needsActivation() &amp;&amp; operand == activationRegister())
</span><span class="cx">         return true;
</span><span class="lines">@@ -3837,7 +3837,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     if (needsActivation() &amp;&amp; virtualRegister == activationRegister())
</span><del>-        return ASCIILiteral(&quot;activation&quot;);
</del><ins>+        return ASCIILiteral(&quot;lexical environment&quot;);
</ins><span class="cx">     if (virtualRegister == thisRegister())
</span><span class="cx">         return ASCIILiteral(&quot;this&quot;);
</span><span class="cx">     if (usesArguments()) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -342,25 +342,25 @@
</span><span class="cx">     }
</span><span class="cx">     void setActivationRegister(VirtualRegister activationRegister)
</span><span class="cx">     {
</span><del>-        m_activationRegister = activationRegister;
</del><ins>+        m_lexicalEnvironmentRegister = activationRegister;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     VirtualRegister activationRegister() const
</span><span class="cx">     {
</span><del>-        ASSERT(m_activationRegister.isValid());
-        return m_activationRegister;
</del><ins>+        ASSERT(m_lexicalEnvironmentRegister.isValid());
+        return m_lexicalEnvironmentRegister;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     VirtualRegister uncheckedActivationRegister()
</span><span class="cx">     {
</span><del>-        return m_activationRegister;
</del><ins>+        return m_lexicalEnvironmentRegister;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool usesArguments() const { return m_argumentsRegister.isValid(); }
</span><span class="cx"> 
</span><span class="cx">     bool needsActivation() const
</span><span class="cx">     {
</span><del>-        ASSERT(m_activationRegister.isValid() == m_needsActivation);
</del><ins>+        ASSERT(m_lexicalEnvironmentRegister.isValid() == m_needsActivation);
</ins><span class="cx">         return m_needsActivation;
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -1033,7 +1033,7 @@
</span><span class="cx">     WriteBarrier&lt;SymbolTable&gt; m_symbolTable;
</span><span class="cx">     VirtualRegister m_thisRegister;
</span><span class="cx">     VirtualRegister m_argumentsRegister;
</span><del>-    VirtualRegister m_activationRegister;
</del><ins>+    VirtualRegister m_lexicalEnvironmentRegister;
</ins><span class="cx"> 
</span><span class="cx">     bool m_isStrictMode;
</span><span class="cx">     bool m_needsActivation;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeInstructionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/Instruction.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/Instruction.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/bytecode/Instruction.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx">         ArrayAllocationProfile* arrayAllocationProfile;
</span><span class="cx">         ObjectAllocationProfile* objectAllocationProfile;
</span><span class="cx">         VariableWatchpointSet* watchpointSet;
</span><del>-        WriteBarrierBase&lt;JSActivation&gt; activation;
</del><ins>+        WriteBarrierBase&lt;JSLexicalEnvironment&gt; lexicalEnvironment;
</ins><span class="cx">         void* pointer;
</span><span class="cx">         bool* predicatePointer;
</span><span class="cx">         ToThisStatus toThisStatus;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -282,7 +282,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Special registers
</span><span class="cx">     void setThisRegister(VirtualRegister thisRegister) { m_thisRegister = thisRegister; }
</span><del>-    void setActivationRegister(VirtualRegister activationRegister) { m_activationRegister = activationRegister; }
</del><ins>+    void setActivationRegister(VirtualRegister activationRegister) { m_lexicalEnvironmentRegister = activationRegister; }
</ins><span class="cx"> 
</span><span class="cx">     void setArgumentsRegister(VirtualRegister argumentsRegister) { m_argumentsRegister = argumentsRegister; }
</span><span class="cx">     bool usesArguments() const { return m_argumentsRegister.isValid(); }
</span><span class="lines">@@ -429,8 +429,8 @@
</span><span class="cx">     CodeType codeType() const { return m_codeType; }
</span><span class="cx"> 
</span><span class="cx">     VirtualRegister thisRegister() const { return m_thisRegister; }
</span><del>-    VirtualRegister activationRegister() const { return m_activationRegister; }
-    bool hasActivationRegister() const { return m_activationRegister.isValid(); }
</del><ins>+    VirtualRegister activationRegister() const { return m_lexicalEnvironmentRegister; }
+    bool hasActivationRegister() const { return m_lexicalEnvironmentRegister.isValid(); }
</ins><span class="cx"> 
</span><span class="cx">     void addPropertyAccessInstruction(unsigned propertyAccessInstruction)
</span><span class="cx">     {
</span><span class="lines">@@ -520,7 +520,7 @@
</span><span class="cx"> 
</span><span class="cx">     VirtualRegister m_thisRegister;
</span><span class="cx">     VirtualRegister m_argumentsRegister;
</span><del>-    VirtualRegister m_activationRegister;
</del><ins>+    VirtualRegister m_lexicalEnvironmentRegister;
</ins><span class="cx">     VirtualRegister m_globalObjectRegister;
</span><span class="cx"> 
</span><span class="cx">     bool m_needsFullScopeChain : 1;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -32,8 +32,8 @@
</span><span class="cx"> #include &quot;BytecodeGenerator.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSFunction.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;LowLevelInterpreter.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx">     , m_scopeNode(programNode)
</span><span class="cx">     , m_codeBlock(vm, codeBlock)
</span><span class="cx">     , m_thisRegister(CallFrame::thisArgumentOffset())
</span><del>-    , m_activationRegister(0)
</del><ins>+    , m_lexicalEnvironmentRegister(0)
</ins><span class="cx">     , m_emptyValueRegister(0)
</span><span class="cx">     , m_globalObjectRegister(0)
</span><span class="cx">     , m_finallyDepth(0)
</span><span class="lines">@@ -208,7 +208,7 @@
</span><span class="cx">     , m_symbolTable(codeBlock-&gt;symbolTable())
</span><span class="cx">     , m_scopeNode(functionBody)
</span><span class="cx">     , m_codeBlock(vm, codeBlock)
</span><del>-    , m_activationRegister(0)
</del><ins>+    , m_lexicalEnvironmentRegister(0)
</ins><span class="cx">     , m_emptyValueRegister(0)
</span><span class="cx">     , m_globalObjectRegister(0)
</span><span class="cx">     , m_finallyDepth(0)
</span><span class="lines">@@ -245,11 +245,11 @@
</span><span class="cx"> 
</span><span class="cx">     emitOpcode(op_enter);
</span><span class="cx">     if (m_codeBlock-&gt;needsFullScopeChain() || m_shouldEmitDebugHooks) {
</span><del>-        m_activationRegister = addVar();
-        emitInitLazyRegister(m_activationRegister);
-        m_codeBlock-&gt;setActivationRegister(m_activationRegister-&gt;virtualRegister());
-        emitOpcode(op_create_activation);
-        instructions().append(m_activationRegister-&gt;index());
</del><ins>+        m_lexicalEnvironmentRegister = addVar();
+        emitInitLazyRegister(m_lexicalEnvironmentRegister);
+        m_codeBlock-&gt;setActivationRegister(m_lexicalEnvironmentRegister-&gt;virtualRegister());
+        emitOpcode(op_create_lexical_environment);
+        instructions().append(m_lexicalEnvironmentRegister-&gt;index());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_symbolTable-&gt;setCaptureStart(virtualRegisterForLocal(m_codeBlock-&gt;m_numVars).offset());
</span><span class="lines">@@ -423,7 +423,7 @@
</span><span class="cx">     , m_scopeNode(evalNode)
</span><span class="cx">     , m_codeBlock(vm, codeBlock)
</span><span class="cx">     , m_thisRegister(CallFrame::thisArgumentOffset())
</span><del>-    , m_activationRegister(0)
</del><ins>+    , m_lexicalEnvironmentRegister(0)
</ins><span class="cx">     , m_emptyValueRegister(0)
</span><span class="cx">     , m_globalObjectRegister(0)
</span><span class="cx">     , m_finallyDepth(0)
</span><span class="lines">@@ -1855,15 +1855,15 @@
</span><span class="cx"> 
</span><span class="cx"> RegisterID* BytecodeGenerator::emitReturn(RegisterID* src)
</span><span class="cx"> {
</span><del>-    if (m_activationRegister) {
-        emitOpcode(op_tear_off_activation);
-        instructions().append(m_activationRegister-&gt;index());
</del><ins>+    if (m_lexicalEnvironmentRegister) {
+        emitOpcode(op_tear_off_lexical_environment);
+        instructions().append(m_lexicalEnvironmentRegister-&gt;index());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (m_codeBlock-&gt;usesArguments() &amp;&amp; m_codeBlock-&gt;numParameters() != 1 &amp;&amp; !isStrictMode()) {
</span><span class="cx">         emitOpcode(op_tear_off_arguments);
</span><span class="cx">         instructions().append(m_codeBlock-&gt;argumentsRegister().offset());
</span><del>-        instructions().append(m_activationRegister ? m_activationRegister-&gt;index() : emitLoad(0, JSValue())-&gt;index());
</del><ins>+        instructions().append(m_lexicalEnvironmentRegister ? m_lexicalEnvironmentRegister-&gt;index() : emitLoad(0, JSValue())-&gt;index());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Constructors use op_ret_object_or_this to check the result is an
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -710,7 +710,7 @@
</span><span class="cx">         RegisterID m_ignoredResultRegister;
</span><span class="cx">         RegisterID m_thisRegister;
</span><span class="cx">         RegisterID m_calleeRegister;
</span><del>-        RegisterID* m_activationRegister;
</del><ins>+        RegisterID* m_lexicalEnvironmentRegister;
</ins><span class="cx">         RegisterID* m_emptyValueRegister;
</span><span class="cx">         RegisterID* m_globalObjectRegister;
</span><span class="cx">         Vector&lt;Identifier, 16&gt; m_watchableVariables;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggerCallFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -33,8 +33,8 @@
</span><span class="cx"> #include &quot;DebuggerEvalEnabler.h&quot;
</span><span class="cx"> #include &quot;DebuggerScope.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSFunction.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;Parser.h&quot;
</span><span class="cx"> #include &quot;StackVisitor.h&quot;
</span><span class="lines">@@ -146,9 +146,9 @@
</span><span class="cx">         CodeBlock* codeBlock = m_callFrame-&gt;codeBlock();
</span><span class="cx">         if (codeBlock &amp;&amp; codeBlock-&gt;needsActivation() &amp;&amp; !m_callFrame-&gt;hasActivation()) {
</span><span class="cx">             ASSERT(!m_callFrame-&gt;scope()-&gt;isWithScope());
</span><del>-            JSActivation* activation = JSActivation::create(vm, m_callFrame, codeBlock);
-            m_callFrame-&gt;setActivation(activation);
-            m_callFrame-&gt;setScope(activation);
</del><ins>+            JSLexicalEnvironment* lexicalEnvironment = JSLexicalEnvironment::create(vm, m_callFrame, codeBlock);
+            m_callFrame-&gt;setActivation(lexicalEnvironment);
+            m_callFrame-&gt;setScope(lexicalEnvironment);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         m_scope.set(vm, DebuggerScope::create(vm, m_callFrame-&gt;scope()));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggerScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;DebuggerScope.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;JSActivation.h&quot;
</del><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="cx"> 
</span><span class="lines">@@ -165,7 +165,8 @@
</span><span class="cx"> bool DebuggerScope::isFunctionOrEvalScope() const
</span><span class="cx"> {
</span><span class="cx">     // In the current debugger implementation, every function or eval will create an
</span><del>-    // activation object. Hence, an activation object implies a function or eval scope.
</del><ins>+    // lexical environment object. Hence, a lexical environment object implies a
+    // function or eval scope.
</ins><span class="cx">     return m_scope-&gt;isActivationObject();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> #include &quot;DFGJITCode.h&quot;
</span><span class="cx"> #include &quot;GetByIdStatus.h&quot;
</span><span class="cx"> #include &quot;Heap.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;PreciseJumpTargets.h&quot;
</span><span class="cx"> #include &quot;PutByIdStatus.h&quot;
</span><span class="lines">@@ -3193,11 +3193,11 @@
</span><span class="cx">                 break;
</span><span class="cx">             case ClosureVar:
</span><span class="cx">             case ClosureVarWithVarInjectionChecks: {
</span><del>-                JSActivation* activation = currentInstruction[5].u.activation.get();
-                if (activation
-                    &amp;&amp; activation-&gt;symbolTable()-&gt;m_functionEnteredOnce.isStillValid()) {
-                    addToGraph(FunctionReentryWatchpoint, OpInfo(activation-&gt;symbolTable()));
-                    set(VirtualRegister(dst), weakJSConstant(activation));
</del><ins>+                JSLexicalEnvironment* lexicalEnvironment = currentInstruction[5].u.lexicalEnvironment.get();
+                if (lexicalEnvironment
+                    &amp;&amp; lexicalEnvironment-&gt;symbolTable()-&gt;m_functionEnteredOnce.isStillValid()) {
+                    addToGraph(FunctionReentryWatchpoint, OpInfo(lexicalEnvironment-&gt;symbolTable()));
+                    set(VirtualRegister(dst), weakJSConstant(lexicalEnvironment));
</ins><span class="cx">                     break;
</span><span class="cx">                 }
</span><span class="cx">                 set(VirtualRegister(dst), getScope(depth));
</span><span class="lines">@@ -3269,8 +3269,8 @@
</span><span class="cx">             case ClosureVar:
</span><span class="cx">             case ClosureVarWithVarInjectionChecks: {
</span><span class="cx">                 Node* scopeNode = get(VirtualRegister(scope));
</span><del>-                if (JSActivation* activation = m_graph.tryGetActivation(scopeNode)) {
-                    SymbolTable* symbolTable = activation-&gt;symbolTable();
</del><ins>+                if (JSLexicalEnvironment* lexicalEnvironment = m_graph.tryGetActivation(scopeNode)) {
+                    SymbolTable* symbolTable = lexicalEnvironment-&gt;symbolTable();
</ins><span class="cx">                     ConcurrentJITLocker locker(symbolTable-&gt;m_lock);
</span><span class="cx">                     SymbolTable::Map::iterator iter = symbolTable-&gt;find(locker, uid);
</span><span class="cx">                     ASSERT(iter != symbolTable-&gt;end(locker));
</span><span class="lines">@@ -3389,9 +3389,9 @@
</span><span class="cx">             NEXT_OPCODE(op_init_lazy_reg);
</span><span class="cx">         }
</span><span class="cx">             
</span><del>-        case op_create_activation: {
</del><ins>+        case op_create_lexical_environment: {
</ins><span class="cx">             set(VirtualRegister(currentInstruction[1].u.operand), addToGraph(CreateActivation, get(VirtualRegister(currentInstruction[1].u.operand))));
</span><del>-            NEXT_OPCODE(op_create_activation);
</del><ins>+            NEXT_OPCODE(op_create_lexical_environment);
</ins><span class="cx">         }
</span><span class="cx">             
</span><span class="cx">         case op_create_arguments: {
</span><span class="lines">@@ -3402,9 +3402,9 @@
</span><span class="cx">             NEXT_OPCODE(op_create_arguments);
</span><span class="cx">         }
</span><span class="cx">             
</span><del>-        case op_tear_off_activation: {
</del><ins>+        case op_tear_off_lexical_environment: {
</ins><span class="cx">             addToGraph(TearOffActivation, get(VirtualRegister(currentInstruction[1].u.operand)));
</span><del>-            NEXT_OPCODE(op_tear_off_activation);
</del><ins>+            NEXT_OPCODE(op_tear_off_lexical_environment);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         case op_tear_off_arguments: {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGCapabilitiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGCapabilities.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGCapabilities.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/dfg/DFGCapabilities.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -230,8 +230,8 @@
</span><span class="cx">         return CannotCompile;
</span><span class="cx"> 
</span><span class="cx">     case op_new_regexp: 
</span><del>-    case op_create_activation:
-    case op_tear_off_activation:
</del><ins>+    case op_create_lexical_environment:
+    case op_tear_off_lexical_environment:
</ins><span class="cx">     case op_new_func:
</span><span class="cx">     case op_new_captured_func:
</span><span class="cx">     case op_new_func_exp:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGGraphcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGGraph.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGGraph.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/dfg/DFGGraph.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> #include &quot;FullBytecodeLiveness.h&quot;
</span><span class="cx"> #include &quot;FunctionExecutableDump.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;MaxFrameExtentForSlowPathCall.h&quot;
</span><span class="cx"> #include &quot;OperandsInlines.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="lines">@@ -852,19 +852,19 @@
</span><span class="cx">     return tryGetConstantProperty(base.m_value, base.m_structure, offset);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSActivation* Graph::tryGetActivation(Node* node)
</del><ins>+JSLexicalEnvironment* Graph::tryGetActivation(Node* node)
</ins><span class="cx"> {
</span><del>-    return node-&gt;dynamicCastConstant&lt;JSActivation*&gt;();
</del><ins>+    return node-&gt;dynamicCastConstant&lt;JSLexicalEnvironment*&gt;();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> WriteBarrierBase&lt;Unknown&gt;* Graph::tryGetRegisters(Node* node)
</span><span class="cx"> {
</span><del>-    JSActivation* activation = tryGetActivation(node);
-    if (!activation)
</del><ins>+    JSLexicalEnvironment* lexicalEnvironment = tryGetActivation(node);
+    if (!lexicalEnvironment)
</ins><span class="cx">         return 0;
</span><del>-    if (!activation-&gt;isTornOff())
</del><ins>+    if (!lexicalEnvironment-&gt;isTornOff())
</ins><span class="cx">         return 0;
</span><del>-    return activation-&gt;registers();
</del><ins>+    return lexicalEnvironment-&gt;registers();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSArrayBufferView* Graph::tryGetFoldableView(Node* node)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGGraphh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGGraph.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGGraph.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/dfg/DFGGraph.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -698,7 +698,7 @@
</span><span class="cx">     JSValue tryGetConstantProperty(JSValue base, const StructureAbstractValue&amp;, PropertyOffset);
</span><span class="cx">     JSValue tryGetConstantProperty(const AbstractValue&amp;, PropertyOffset);
</span><span class="cx">     
</span><del>-    JSActivation* tryGetActivation(Node*);
</del><ins>+    JSLexicalEnvironment* tryGetActivation(Node*);
</ins><span class="cx">     WriteBarrierBase&lt;Unknown&gt;* tryGetRegisters(Node*);
</span><span class="cx">     
</span><span class="cx">     JSArrayBufferView* tryGetFoldableView(Node*);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGNodeTypeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGNodeType.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGNodeType.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/dfg/DFGNodeType.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -254,7 +254,7 @@
</span><span class="cx">     macro(CreateActivation, NodeResultJS) \
</span><span class="cx">     macro(TearOffActivation, NodeMustGenerate) \
</span><span class="cx">     \
</span><del>-    /* Nodes used for arguments. Similar to activation support, only it makes even less */\
</del><ins>+    /* Nodes used for arguments. Similar to lexical environment support, only it makes even less */\
</ins><span class="cx">     /* sense. */\
</span><span class="cx">     macro(CreateArguments, NodeResultJS) \
</span><span class="cx">     macro(PhantomArguments, NodeResultJS) \
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITExceptions.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;VM.h&quot;
</span><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;NameInstance.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> #include &quot;DFGSlowPathGenerator.h&quot;
</span><span class="cx"> #include &quot;Debugger.h&quot;
</span><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><span class="cx"> #include &quot;ObjectPrototype.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="lines">@@ -4252,7 +4252,7 @@
</span><span class="cx">         JITCompiler::Jump notCreated = m_jit.branch32(JITCompiler::Equal, activationValueTagGPR, TrustedImm32(JSValue::EmptyValueTag));
</span><span class="cx"> 
</span><span class="cx">         SymbolTable* symbolTable = m_jit.symbolTableFor(node-&gt;origin.semantic);
</span><del>-        int registersOffset = JSActivation::registersOffset(symbolTable);
</del><ins>+        int registersOffset = JSLexicalEnvironment::registersOffset(symbolTable);
</ins><span class="cx"> 
</span><span class="cx">         int bytecodeCaptureStart = symbolTable-&gt;captureStart();
</span><span class="cx">         int machineCaptureStart = m_jit.graph().m_machineCaptureStart;
</span><span class="lines">@@ -4273,7 +4273,7 @@
</span><span class="cx">                     activationValuePayloadGPR, registersOffset + (bytecodeCaptureStart - i) * sizeof(Register) + OBJECT_OFFSETOF(EncodedValueDescriptor, asBits.payload)));
</span><span class="cx">         }
</span><span class="cx">         m_jit.addPtr(TrustedImm32(registersOffset), activationValuePayloadGPR, scratchGPR);
</span><del>-        m_jit.storePtr(scratchGPR, JITCompiler::Address(activationValuePayloadGPR, JSActivation::offsetOfRegisters()));
</del><ins>+        m_jit.storePtr(scratchGPR, JITCompiler::Address(activationValuePayloadGPR, JSLexicalEnvironment::offsetOfRegisters()));
</ins><span class="cx">         
</span><span class="cx">         notCreated.link(&amp;m_jit);
</span><span class="cx">         noResult(node);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -4316,7 +4316,7 @@
</span><span class="cx">         JITCompiler::Jump notCreated = m_jit.branchTest64(JITCompiler::Zero, activationValueGPR);
</span><span class="cx"> 
</span><span class="cx">         SymbolTable* symbolTable = m_jit.symbolTableFor(node-&gt;origin.semantic);
</span><del>-        int registersOffset = JSActivation::registersOffset(symbolTable);
</del><ins>+        int registersOffset = JSLexicalEnvironment::registersOffset(symbolTable);
</ins><span class="cx"> 
</span><span class="cx">         int bytecodeCaptureStart = symbolTable-&gt;captureStart();
</span><span class="cx">         int machineCaptureStart = m_jit.graph().m_machineCaptureStart;
</span><span class="lines">@@ -4333,7 +4333,7 @@
</span><span class="cx">                     registersOffset + (bytecodeCaptureStart - i) * sizeof(Register)));
</span><span class="cx">         }
</span><span class="cx">         m_jit.addPtr(TrustedImm32(registersOffset), activationValueGPR, scratchGPR);
</span><del>-        m_jit.storePtr(scratchGPR, JITCompiler::Address(activationValueGPR, JSActivation::offsetOfRegisters()));
</del><ins>+        m_jit.storePtr(scratchGPR, JITCompiler::Address(activationValueGPR, JSLexicalEnvironment::offsetOfRegisters()));
</ins><span class="cx"> 
</span><span class="cx">         notCreated.link(&amp;m_jit);
</span><span class="cx">         noResult(node);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterCallFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> #include &quot;CallFrameInlines.h&quot;
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;VMEntryScope.h&quot;
</span><span class="cx"> #include &lt;wtf/StringPrintStream.h&gt;
</span><span class="lines">@@ -146,20 +146,20 @@
</span><span class="cx">     return static_cast&lt;CallFrame*&gt;(callerFrameOrVMEntryFrame());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-JSActivation* CallFrame::activation() const
</del><ins>+JSLexicalEnvironment* CallFrame::lexicalEnvironment() const
</ins><span class="cx"> {
</span><span class="cx">     CodeBlock* codeBlock = this-&gt;codeBlock();
</span><span class="cx">     RELEASE_ASSERT(codeBlock-&gt;needsActivation());
</span><span class="cx">     VirtualRegister activationRegister = codeBlock-&gt;activationRegister();
</span><del>-    return registers()[activationRegister.offset()].Register::activation();
</del><ins>+    return registers()[activationRegister.offset()].Register::lexicalEnvironment();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void CallFrame::setActivation(JSActivation* activation)
</del><ins>+void CallFrame::setActivation(JSLexicalEnvironment* lexicalEnvironment)
</ins><span class="cx"> {
</span><span class="cx">     CodeBlock* codeBlock = this-&gt;codeBlock();
</span><span class="cx">     RELEASE_ASSERT(codeBlock-&gt;needsActivation());
</span><span class="cx">     VirtualRegister activationRegister = codeBlock-&gt;activationRegister();
</span><del>-    registers()[activationRegister.offset()] = activation;
</del><ins>+    registers()[activationRegister.offset()] = lexicalEnvironment;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void CallFrame::dump(PrintStream&amp; out)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterCallFrameh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/CallFrame.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/CallFrame.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/interpreter/CallFrame.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> namespace JSC  {
</span><span class="cx"> 
</span><span class="cx">     class Arguments;
</span><del>-    class JSActivation;
</del><ins>+    class JSLexicalEnvironment;
</ins><span class="cx">     class Interpreter;
</span><span class="cx">     class JSScope;
</span><span class="cx"> 
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         bool hasActivation() const { return !!uncheckedActivation(); }
</span><del>-        JSActivation* activation() const;
</del><ins>+        JSLexicalEnvironment* lexicalEnvironment() const;
</ins><span class="cx">         JSValue uncheckedActivation() const;
</span><span class="cx"> 
</span><span class="cx">         // Global object in which execution began.
</span><span class="lines">@@ -186,7 +186,7 @@
</span><span class="cx"> 
</span><span class="cx">         void setCallerFrame(CallFrame* frame) { callerFrameAndPC().callerFrame = frame; }
</span><span class="cx">         void setScope(JSScope* scope) { static_cast&lt;Register*&gt;(this)[JSStack::ScopeChain] = scope; }
</span><del>-        void setActivation(JSActivation*);
</del><ins>+        void setActivation(JSLexicalEnvironment*);
</ins><span class="cx"> 
</span><span class="cx">         ALWAYS_INLINE void init(CodeBlock* codeBlock, Instruction* vPC, JSScope* scope,
</span><span class="cx">             CallFrame* callerFrame, int argc, JSObject* callee)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterInterpretercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -42,9 +42,9 @@
</span><span class="cx"> #include &quot;EvalCodeCache.h&quot;
</span><span class="cx"> #include &quot;ExceptionHelpers.h&quot;
</span><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSArray.h&quot;
</span><span class="cx"> #include &quot;JSBoundFunction.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;JSNotAnObject.h&quot;
</span><span class="cx"> #include &quot;JSStackInlines.h&quot;
</span><span class="lines">@@ -450,16 +450,16 @@
</span><span class="cx">         ASSERT(!callFrame-&gt;hadException());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    JSValue activation;
</del><ins>+    JSValue lexicalEnvironment;
</ins><span class="cx">     if (codeBlock-&gt;codeType() == FunctionCode &amp;&amp; codeBlock-&gt;needsActivation()) {
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx">         RELEASE_ASSERT(!visitor-&gt;isInlinedFrame());
</span><span class="cx"> #endif
</span><del>-        activation = callFrame-&gt;uncheckedActivation();
-        // Protect against the activation not being created, or the variable still being
</del><ins>+        lexicalEnvironment = callFrame-&gt;uncheckedActivation();
+        // Protect against the lexical environment not being created, or the variable still being
</ins><span class="cx">         // initialized to Undefined inside op_enter.
</span><del>-        if (activation &amp;&amp; activation.isCell()) {
-            JSActivation* activationObject = jsCast&lt;JSActivation*&gt;(activation);
</del><ins>+        if (lexicalEnvironment &amp;&amp; lexicalEnvironment.isCell()) {
+            JSLexicalEnvironment* activationObject = jsCast&lt;JSLexicalEnvironment*&gt;(lexicalEnvironment);
</ins><span class="cx">             // Protect against throwing exceptions after tear-off.
</span><span class="cx">             if (!activationObject-&gt;isTornOff())
</span><span class="cx">                 activationObject-&gt;tearOff(*scope-&gt;vm());
</span><span class="lines">@@ -468,8 +468,8 @@
</span><span class="cx"> 
</span><span class="cx">     if (codeBlock-&gt;codeType() == FunctionCode &amp;&amp; codeBlock-&gt;usesArguments()) {
</span><span class="cx">         if (Arguments* arguments = visitor-&gt;existingArguments()) {
</span><del>-            if (activation &amp;&amp; activation.isCell())
-                arguments-&gt;didTearOffActivation(callFrame, jsCast&lt;JSActivation*&gt;(activation));
</del><ins>+            if (lexicalEnvironment &amp;&amp; lexicalEnvironment.isCell())
+                arguments-&gt;didTearOffActivation(callFrame, jsCast&lt;JSLexicalEnvironment*&gt;(lexicalEnvironment));
</ins><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx">             else if (visitor-&gt;isInlinedFrame())
</span><span class="cx">                 arguments-&gt;tearOff(callFrame, visitor-&gt;inlineCallFrame());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterRegisterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/Register.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/Register.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/interpreter/Register.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> 
</span><span class="cx">     class CodeBlock;
</span><span class="cx">     class ExecState;
</span><del>-    class JSActivation;
</del><ins>+    class JSLexicalEnvironment;
</ins><span class="cx">     class JSObject;
</span><span class="cx">     class JSScope;
</span><span class="cx"> 
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx">         Register&amp; operator=(JSScope*);
</span><span class="cx"> 
</span><span class="cx">         int32_t i() const;
</span><del>-        JSActivation* activation() const;
</del><ins>+        JSLexicalEnvironment* lexicalEnvironment() const;
</ins><span class="cx">         CallFrame* callFrame() const;
</span><span class="cx">         CodeBlock* codeBlock() const;
</span><span class="cx">         JSObject* function() const;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/jit/JIT.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -215,7 +215,7 @@
</span><span class="cx">         DEFINE_OP(op_div)
</span><span class="cx">         DEFINE_OP(op_end)
</span><span class="cx">         DEFINE_OP(op_enter)
</span><del>-        DEFINE_OP(op_create_activation)
</del><ins>+        DEFINE_OP(op_create_lexical_environment)
</ins><span class="cx">         DEFINE_OP(op_eq)
</span><span class="cx">         DEFINE_OP(op_eq_null)
</span><span class="cx">         case op_get_by_id_out_of_line:
</span><span class="lines">@@ -296,7 +296,7 @@
</span><span class="cx">         DEFINE_OP(op_switch_char)
</span><span class="cx">         DEFINE_OP(op_switch_imm)
</span><span class="cx">         DEFINE_OP(op_switch_string)
</span><del>-        DEFINE_OP(op_tear_off_activation)
</del><ins>+        DEFINE_OP(op_tear_off_lexical_environment)
</ins><span class="cx">         DEFINE_OP(op_tear_off_arguments)
</span><span class="cx">         DEFINE_OP(op_throw)
</span><span class="cx">         DEFINE_OP(op_throw_static_error)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/jit/JIT.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -475,7 +475,7 @@
</span><span class="cx">         void emit_op_div(Instruction*);
</span><span class="cx">         void emit_op_end(Instruction*);
</span><span class="cx">         void emit_op_enter(Instruction*);
</span><del>-        void emit_op_create_activation(Instruction*);
</del><ins>+        void emit_op_create_lexical_environment(Instruction*);
</ins><span class="cx">         void emit_op_eq(Instruction*);
</span><span class="cx">         void emit_op_eq_null(Instruction*);
</span><span class="cx">         void emit_op_get_by_id(Instruction*);
</span><span class="lines">@@ -543,7 +543,7 @@
</span><span class="cx">         void emit_op_switch_char(Instruction*);
</span><span class="cx">         void emit_op_switch_imm(Instruction*);
</span><span class="cx">         void emit_op_switch_string(Instruction*);
</span><del>-        void emit_op_tear_off_activation(Instruction*);
</del><ins>+        void emit_op_tear_off_lexical_environment(Instruction*);
</ins><span class="cx">         void emit_op_tear_off_arguments(Instruction*);
</span><span class="cx">         void emit_op_throw(Instruction*);
</span><span class="cx">         void emit_op_throw_static_error(Instruction*);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOpcodescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -233,11 +233,11 @@
</span><span class="cx">     emitPutVirtualRegister(dst);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_tear_off_activation(Instruction* currentInstruction)
</del><ins>+void JIT::emit_op_tear_off_lexical_environment(Instruction* currentInstruction)
</ins><span class="cx"> {
</span><del>-    int activation = currentInstruction[1].u.operand;
-    Jump activationNotCreated = branchTest64(Zero, addressFor(activation));
-    emitGetVirtualRegister(activation, regT0);
</del><ins>+    int lexicalEnvironment = currentInstruction[1].u.operand;
+    Jump activationNotCreated = branchTest64(Zero, addressFor(lexicalEnvironment));
+    emitGetVirtualRegister(lexicalEnvironment, regT0);
</ins><span class="cx">     callOperation(operationTearOffActivation, regT0);
</span><span class="cx">     activationNotCreated.link(this);
</span><span class="cx"> }
</span><span class="lines">@@ -245,11 +245,11 @@
</span><span class="cx"> void JIT::emit_op_tear_off_arguments(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     int arguments = currentInstruction[1].u.operand;
</span><del>-    int activation = currentInstruction[2].u.operand;
</del><ins>+    int lexicalEnvironment = currentInstruction[2].u.operand;
</ins><span class="cx"> 
</span><span class="cx">     Jump argsNotCreated = branchTest64(Zero, Address(callFrameRegister, sizeof(Register) * (unmodifiedArgumentsRegister(VirtualRegister(arguments)).offset())));
</span><span class="cx">     emitGetVirtualRegister(unmodifiedArgumentsRegister(VirtualRegister(arguments)).offset(), regT0);
</span><del>-    emitGetVirtualRegister(activation, regT1);
</del><ins>+    emitGetVirtualRegister(lexicalEnvironment, regT1);
</ins><span class="cx">     callOperation(operationTearOffArguments, regT0, regT1);
</span><span class="cx">     argsNotCreated.link(this);
</span><span class="cx"> }
</span><span class="lines">@@ -680,7 +680,7 @@
</span><span class="cx">     emitEnterOptimizationCheck();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_create_activation(Instruction* currentInstruction)
</del><ins>+void JIT::emit_op_create_lexical_environment(Instruction* currentInstruction)
</ins><span class="cx"> {
</span><span class="cx">     int dst = currentInstruction[1].u.operand;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOpcodes32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -350,11 +350,11 @@
</span><span class="cx">     emitStoreBool(dst, regT0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_tear_off_activation(Instruction* currentInstruction)
</del><ins>+void JIT::emit_op_tear_off_lexical_environment(Instruction* currentInstruction)
</ins><span class="cx"> {
</span><del>-    int activation = currentInstruction[1].u.operand;
-    Jump activationNotCreated = branch32(Equal, tagFor(activation), TrustedImm32(JSValue::EmptyValueTag));
-    emitLoadPayload(activation, regT0);
</del><ins>+    int lexicalEnvironment = currentInstruction[1].u.operand;
+    Jump activationNotCreated = branch32(Equal, tagFor(lexicalEnvironment), TrustedImm32(JSValue::EmptyValueTag));
+    emitLoadPayload(lexicalEnvironment, regT0);
</ins><span class="cx">     callOperation(operationTearOffActivation, regT0);
</span><span class="cx">     activationNotCreated.link(this);
</span><span class="cx"> }
</span><span class="lines">@@ -362,11 +362,11 @@
</span><span class="cx"> void JIT::emit_op_tear_off_arguments(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     VirtualRegister arguments = VirtualRegister(currentInstruction[1].u.operand);
</span><del>-    int activation = currentInstruction[2].u.operand;
</del><ins>+    int lexicalEnvironment = currentInstruction[2].u.operand;
</ins><span class="cx"> 
</span><span class="cx">     Jump argsNotCreated = branch32(Equal, tagFor(unmodifiedArgumentsRegister(arguments).offset()), TrustedImm32(JSValue::EmptyValueTag));
</span><span class="cx">     emitLoadPayload(unmodifiedArgumentsRegister(VirtualRegister(arguments)).offset(), regT0);
</span><del>-    emitLoadPayload(activation, regT1);
</del><ins>+    emitLoadPayload(lexicalEnvironment, regT1);
</ins><span class="cx">     callOperation(operationTearOffArguments, regT0, regT1);
</span><span class="cx">     argsNotCreated.link(this);
</span><span class="cx"> }
</span><span class="lines">@@ -904,12 +904,12 @@
</span><span class="cx">     slowPathCall.call();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_create_activation(Instruction* currentInstruction)
</del><ins>+void JIT::emit_op_create_lexical_environment(Instruction* currentInstruction)
</ins><span class="cx"> {
</span><del>-    int activation = currentInstruction[1].u.operand;
</del><ins>+    int lexicalEnvironment = currentInstruction[1].u.operand;
</ins><span class="cx"> 
</span><span class="cx">     callOperation(operationCreateActivation, 0);
</span><del>-    emitStoreCell(activation, returnValueGPR);
</del><ins>+    emitStoreCell(lexicalEnvironment, returnValueGPR);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JIT::emit_op_create_arguments(Instruction* currentInstruction)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -1381,9 +1381,9 @@
</span><span class="cx"> {
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     NativeCallFrameTracer tracer(&amp;vm, exec);
</span><del>-    JSActivation* activation = JSActivation::create(vm, exec, exec-&gt;registers() + offset, exec-&gt;codeBlock());
-    exec-&gt;setScope(activation);
-    return activation;
</del><ins>+    JSLexicalEnvironment* lexicalEnvironment = JSLexicalEnvironment::create(vm, exec, exec-&gt;registers() + offset, exec-&gt;codeBlock());
+    exec-&gt;setScope(lexicalEnvironment);
+    return lexicalEnvironment;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSCell* JIT_OPERATION operationCreateArguments(ExecState* exec)
</span><span class="lines">@@ -1595,14 +1595,14 @@
</span><span class="cx">     NativeCallFrameTracer tracer(&amp;vm, exec);
</span><span class="cx"> 
</span><span class="cx">     ASSERT(exec-&gt;codeBlock()-&gt;needsActivation());
</span><del>-    jsCast&lt;JSActivation*&gt;(activationCell)-&gt;tearOff(vm);
</del><ins>+    jsCast&lt;JSLexicalEnvironment*&gt;(activationCell)-&gt;tearOff(vm);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void JIT_OPERATION operationTearOffArguments(ExecState* exec, JSCell* argumentsCell, JSCell* activationCell)
</span><span class="cx"> {
</span><span class="cx">     ASSERT(exec-&gt;codeBlock()-&gt;usesArguments());
</span><span class="cx">     if (activationCell) {
</span><del>-        jsCast&lt;Arguments*&gt;(argumentsCell)-&gt;didTearOffActivation(exec, jsCast&lt;JSActivation*&gt;(activationCell));
</del><ins>+        jsCast&lt;Arguments*&gt;(argumentsCell)-&gt;didTearOffActivation(exec, jsCast&lt;JSLexicalEnvironment*&gt;(activationCell));
</ins><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx">     jsCast&lt;Arguments*&gt;(argumentsCell)-&gt;tearOff(exec);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx">     Idc: const Identifier*
</span><span class="cx">     J: EncodedJSValue
</span><span class="cx">     Jcp: const JSValue*
</span><del>-    Jsa: JSActivation*
</del><ins>+    Jsa: JSLexicalEnvironment*
</ins><span class="cx">     Jss: JSString*
</span><span class="cx">     O: JSObject*
</span><span class="cx">     P: pointer (char*)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITExceptions.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><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><span class="lines">@@ -470,11 +470,11 @@
</span><span class="cx"> #endif
</span><span class="cx">     // This stack check is done in the prologue for a function call, and the
</span><span class="cx">     // CallFrame is not completely set up yet. For example, if the frame needs
</span><del>-    // an activation object, the activation object will only be set up after
-    // we start executing the function. If we need to throw a StackOverflowError
-    // here, then we need to tell the prologue to start the stack unwinding from
-    // the caller frame (which is fully set up) instead. To do that, we return
-    // the caller's CallFrame in the second return value.
</del><ins>+    // a lexical environment object, the lexical environment object will only be
+    // set up after we start executing the function. If we need to throw a
+    // StackOverflowError here, then we need to tell the prologue to start the
+    // stack unwinding from the caller frame (which is fully set up) instead.
+    // To do that, we return the caller's CallFrame in the second return value.
</ins><span class="cx">     //
</span><span class="cx">     // If the stack check succeeds and we don't need to throw the error, then
</span><span class="cx">     // we'll return 0 instead. The prologue will check for a non-zero value
</span><span class="lines">@@ -497,15 +497,15 @@
</span><span class="cx">     LLINT_RETURN_TWO(pc, exec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LLINT_SLOW_PATH_DECL(slow_path_create_activation)
</del><ins>+LLINT_SLOW_PATH_DECL(slow_path_create_lexical_environment)
</ins><span class="cx"> {
</span><span class="cx">     LLINT_BEGIN();
</span><span class="cx"> #if LLINT_SLOW_PATH_TRACING
</span><del>-    dataLogF(&quot;Creating an activation, exec = %p!\n&quot;, exec);
</del><ins>+    dataLogF(&quot;Creating an lexicalEnvironment, exec = %p!\n&quot;, exec);
</ins><span class="cx"> #endif
</span><del>-    JSActivation* activation = JSActivation::create(vm, exec, exec-&gt;codeBlock());
-    exec-&gt;setScope(activation);
-    LLINT_RETURN(JSValue(activation));
</del><ins>+    JSLexicalEnvironment* lexicalEnvironment = JSLexicalEnvironment::create(vm, exec, exec-&gt;codeBlock());
+    exec-&gt;setScope(lexicalEnvironment);
+    LLINT_RETURN(JSValue(lexicalEnvironment));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> LLINT_SLOW_PATH_DECL(slow_path_new_object)
</span><span class="lines">@@ -1245,11 +1245,11 @@
</span><span class="cx">     LLINT_CALL_RETURN(exec, execCallee, LLInt::getCodePtr(getHostCallReturnValue));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LLINT_SLOW_PATH_DECL(slow_path_tear_off_activation)
</del><ins>+LLINT_SLOW_PATH_DECL(slow_path_tear_off_lexical_environment)
</ins><span class="cx"> {
</span><span class="cx">     LLINT_BEGIN();
</span><span class="cx">     ASSERT(exec-&gt;codeBlock()-&gt;needsActivation());
</span><del>-    jsCast&lt;JSActivation*&gt;(LLINT_OP(1).jsValue())-&gt;tearOff(vm);
</del><ins>+    jsCast&lt;JSLexicalEnvironment*&gt;(LLINT_OP(1).jsValue())-&gt;tearOff(vm);
</ins><span class="cx">     LLINT_END();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1259,7 +1259,7 @@
</span><span class="cx">     ASSERT(exec-&gt;codeBlock()-&gt;usesArguments());
</span><span class="cx">     Arguments* arguments = jsCast&lt;Arguments*&gt;(exec-&gt;uncheckedR(unmodifiedArgumentsRegister(VirtualRegister(pc[1].u.operand)).offset()).jsValue());
</span><span class="cx">     if (JSValue activationValue = LLINT_OP_C(2).jsValue())
</span><del>-        arguments-&gt;didTearOffActivation(exec, jsCast&lt;JSActivation*&gt;(activationValue));
</del><ins>+        arguments-&gt;didTearOffActivation(exec, jsCast&lt;JSLexicalEnvironment*&gt;(activationValue));
</ins><span class="cx">     else
</span><span class="cx">         arguments-&gt;tearOff(exec);
</span><span class="cx">     LLINT_END();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(loop_osr);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(replace);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(stack_check);
</span><del>-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_create_activation);
</del><ins>+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_create_lexical_environment);
</ins><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_object);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_array);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_array_with_size);
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_call_varargs);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_construct_varargs);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_call_eval);
</span><del>-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_tear_off_activation);
</del><ins>+LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_tear_off_lexical_environment);
</ins><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_tear_off_arguments);
</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></pre></div>
<a id="trunkSourceJavaScriptCorellintLowLevelInterpreter32_64asm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -719,10 +719,10 @@
</span><span class="cx">     dispatch(1)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_create_activation:
</del><ins>+_llint_op_create_lexical_environment:
</ins><span class="cx">     traceExecution()
</span><span class="cx">     loadi 4[PC], t0
</span><del>-    callSlowPath(_llint_slow_path_create_activation)
</del><ins>+    callSlowPath(_llint_slow_path_create_lexical_environment)
</ins><span class="cx">     dispatch(2)
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -1971,11 +1971,11 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_tear_off_activation:
</del><ins>+_llint_op_tear_off_lexical_environment:
</ins><span class="cx">     traceExecution()
</span><span class="cx">     loadi 4[PC], t0
</span><span class="cx">     bieq TagOffset[cfr, t0, 8], EmptyValueTag, .opTearOffActivationNotCreated
</span><del>-    callSlowPath(_llint_slow_path_tear_off_activation)
</del><ins>+    callSlowPath(_llint_slow_path_tear_off_lexical_environment)
</ins><span class="cx"> .opTearOffActivationNotCreated:
</span><span class="cx">     dispatch(2)
</span><span class="cx"> 
</span><span class="lines">@@ -2070,7 +2070,7 @@
</span><span class="cx">     bineq CodeBlock::m_codeType[t1], FunctionCode, .loop
</span><span class="cx">     btbz CodeBlock::m_needsActivation[t1], .loop
</span><span class="cx"> 
</span><del>-    loadi CodeBlock::m_activationRegister[t1], t1
</del><ins>+    loadi CodeBlock::m_lexicalEnvironmentRegister[t1], t1
</ins><span class="cx"> 
</span><span class="cx">     # Need to conditionally skip over one scope.
</span><span class="cx">     bieq TagOffset[cfr, t1, 8], EmptyValueTag, .noActivation
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLowLevelInterpreter64asm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -607,10 +607,10 @@
</span><span class="cx">     dispatch(1)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_create_activation:
</del><ins>+_llint_op_create_lexical_environment:
</ins><span class="cx">     traceExecution()
</span><span class="cx">     loadisFromInstruction(1, t0)
</span><del>-    callSlowPath(_llint_slow_path_create_activation)
</del><ins>+    callSlowPath(_llint_slow_path_create_lexical_environment)
</ins><span class="cx">     dispatch(2)
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -1828,11 +1828,11 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_tear_off_activation:
</del><ins>+_llint_op_tear_off_lexical_environment:
</ins><span class="cx">     traceExecution()
</span><span class="cx">     loadisFromInstruction(1, t0)
</span><span class="cx">     btqz [cfr, t0, 8], .opTearOffActivationNotCreated
</span><del>-    callSlowPath(_llint_slow_path_tear_off_activation)
</del><ins>+    callSlowPath(_llint_slow_path_tear_off_lexical_environment)
</ins><span class="cx"> .opTearOffActivationNotCreated:
</span><span class="cx">     dispatch(2)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeArgumentscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Arguments.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Arguments.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/Arguments.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -26,11 +26,11 @@
</span><span class="cx"> #include &quot;Arguments.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CopyVisitorInlines.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSArgumentsIterator.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> using namespace std;
</span><span class="cx"> 
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">             thisObject-&gt;m_slowArgumentData.get(), SlowArgumentData::sizeForNumArguments(thisObject-&gt;m_numArguments));
</span><span class="cx">     }
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_callee);
</span><del>-    visitor.append(&amp;thisObject-&gt;m_activation);
</del><ins>+    visitor.append(&amp;thisObject-&gt;m_lexicalEnvironment);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void Arguments::copyBackingStore(JSCell* cell, CopyVisitor&amp; visitor, CopyToken token)
</span><span class="lines">@@ -384,10 +384,10 @@
</span><span class="cx">     allocateRegisterArray(callFrame-&gt;vm());
</span><span class="cx">     m_registers = m_registerArray.get() - CallFrame::offsetFor(1) - 1;
</span><span class="cx"> 
</span><del>-    // If we have a captured argument that logically aliases activation storage,
-    // but we optimize away the activation, the argument needs to tear off into
</del><ins>+    // If we have a captured argument that logically aliases lexical environment storage,
+    // but we optimize away the lexicalEnvironment, the argument needs to tear off into
</ins><span class="cx">     // our storage. The simplest way to do this is to revert it to Normal status.
</span><del>-    if (m_slowArgumentData &amp;&amp; !m_activation) {
</del><ins>+    if (m_slowArgumentData &amp;&amp; !m_lexicalEnvironment) {
</ins><span class="cx">         for (size_t i = 0; i &lt; m_numArguments; ++i) {
</span><span class="cx">             if (m_slowArgumentData-&gt;slowArguments()[i].status != SlowArgument::Captured)
</span><span class="cx">                 continue;
</span><span class="lines">@@ -400,16 +400,16 @@
</span><span class="cx">         trySetArgument(callFrame-&gt;vm(), i, callFrame-&gt;argumentAfterCapture(i));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Arguments::didTearOffActivation(ExecState* exec, JSActivation* activation)
</del><ins>+void Arguments::didTearOffActivation(ExecState* exec, JSLexicalEnvironment* lexicalEnvironment)
</ins><span class="cx"> {
</span><del>-    RELEASE_ASSERT(activation);
</del><ins>+    RELEASE_ASSERT(lexicalEnvironment);
</ins><span class="cx">     if (isTornOff())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (!m_numArguments)
</span><span class="cx">         return;
</span><span class="cx">     
</span><del>-    m_activation.set(exec-&gt;vm(), this, activation);
</del><ins>+    m_lexicalEnvironment.set(exec-&gt;vm(), this, lexicalEnvironment);
</ins><span class="cx">     tearOff(exec);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeArgumentsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Arguments.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Arguments.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/Arguments.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -25,9 +25,9 @@
</span><span class="cx"> #define Arguments_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CodeOrigin.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;ObjectConstructor.h&quot;
</span><span class="cx"> #include &quot;WriteBarrierInlines.h&quot;
</span><span class="lines">@@ -82,14 +82,14 @@
</span><span class="cx">     void tearOff(CallFrame*);
</span><span class="cx">     void tearOff(CallFrame*, InlineCallFrame*);
</span><span class="cx">     bool isTornOff() const { return m_registerArray.get(); }
</span><del>-    void didTearOffActivation(ExecState*, JSActivation*);
</del><ins>+    void didTearOffActivation(ExecState*, JSLexicalEnvironment*);
</ins><span class="cx"> 
</span><span class="cx">     static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue prototype) 
</span><span class="cx">     { 
</span><span class="cx">         return Structure::create(vm, globalObject, prototype, TypeInfo(ArgumentsType, StructureFlags), info()); 
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    static ptrdiff_t offsetOfActivation() { return OBJECT_OFFSETOF(Arguments, m_activation); }
</del><ins>+    static ptrdiff_t offsetOfActivation() { return OBJECT_OFFSETOF(Arguments, m_lexicalEnvironment); }
</ins><span class="cx">     static ptrdiff_t offsetOfNumArguments() { return OBJECT_OFFSETOF(Arguments, m_numArguments); }
</span><span class="cx">     static ptrdiff_t offsetOfOverrodeLength() { return OBJECT_OFFSETOF(Arguments, m_overrodeLength); }
</span><span class="cx">     static ptrdiff_t offsetOfIsStrictMode() { return OBJECT_OFFSETOF(Arguments, m_isStrictMode); }
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx"> 
</span><span class="cx">     void init(CallFrame*);
</span><span class="cx"> 
</span><del>-    WriteBarrier&lt;JSActivation&gt; m_activation;
</del><ins>+    WriteBarrier&lt;JSLexicalEnvironment&gt; m_lexicalEnvironment;
</ins><span class="cx"> 
</span><span class="cx">     unsigned m_numArguments;
</span><span class="cx"> 
</span><span class="lines">@@ -265,10 +265,10 @@
</span><span class="cx">         return m_registers[CallFrame::argumentOffset(argument)];
</span><span class="cx"> 
</span><span class="cx">     int index = m_slowArgumentData-&gt;slowArguments()[argument].index;
</span><del>-    if (!m_activation || m_slowArgumentData-&gt;slowArguments()[argument].status != SlowArgument::Captured)
</del><ins>+    if (!m_lexicalEnvironment || m_slowArgumentData-&gt;slowArguments()[argument].status != SlowArgument::Captured)
</ins><span class="cx">         return m_registers[index];
</span><span class="cx"> 
</span><del>-    return m_activation-&gt;registerAt(index - m_slowArgumentData-&gt;bytecodeToMachineCaptureOffset());
</del><ins>+    return m_lexicalEnvironment-&gt;registerAt(index - m_slowArgumentData-&gt;bytecodeToMachineCaptureOffset());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline void Arguments::finishCreation(CallFrame* callFrame)
</span><span class="lines">@@ -297,7 +297,7 @@
</span><span class="cx">             codeBlock-&gt;framePointerOffsetToGetActivationRegisters());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    // The bytecode generator omits op_tear_off_activation in cases of no
</del><ins>+    // The bytecode generator omits op_tear_off_lexical_environment in cases of no
</ins><span class="cx">     // declared parameters, so we need to tear off immediately.
</span><span class="cx">     if (m_isStrictMode || !callee-&gt;jsExecutable()-&gt;parameterCount())
</span><span class="cx">         tearOff(callFrame);
</span><span class="lines">@@ -323,7 +323,7 @@
</span><span class="cx">     m_isStrictMode = jsCast&lt;FunctionExecutable*&gt;(inlineCallFrame-&gt;executable.get())-&gt;isStrictMode();
</span><span class="cx">     ASSERT(!jsCast&lt;FunctionExecutable*&gt;(inlineCallFrame-&gt;executable.get())-&gt;symbolTable(inlineCallFrame-&gt;specializationKind())-&gt;slowArguments());
</span><span class="cx"> 
</span><del>-    // The bytecode generator omits op_tear_off_activation in cases of no
</del><ins>+    // The bytecode generator omits op_tear_off_lexical_environment in cases of no
</ins><span class="cx">     // declared parameters, so we need to tear off immediately.
</span><span class="cx">     if (m_isStrictMode || !callee-&gt;jsExecutable()-&gt;parameterCount())
</span><span class="cx">         tearOff(callFrame, inlineCallFrame);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCommonSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -38,9 +38,9 @@
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITStubs.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><span class="cx"> #include &quot;JSString.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSActivationcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSActivation.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSActivation.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/JSActivation.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -1,238 +0,0 @@
</span><del>-/*
- * Copyright (C) 2008, 2009 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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 OR ITS 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;JSActivation.h&quot;
-
-#include &quot;Arguments.h&quot;
-#include &quot;Interpreter.h&quot;
-#include &quot;JSFunction.h&quot;
-#include &quot;JSCInlines.h&quot;
-
-using namespace std;
-
-namespace JSC {
-
-const ClassInfo JSActivation::s_info = { &quot;JSActivation&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSActivation) };
-
-void JSActivation::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
-{
-    JSActivation* thisObject = jsCast&lt;JSActivation*&gt;(cell);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    Base::visitChildren(thisObject, visitor);
-
-    // No need to mark our registers if they're still in the JSStack.
-    if (!thisObject-&gt;isTornOff())
-        return;
-
-    for (int i = 0; i &lt; thisObject-&gt;symbolTable()-&gt;captureCount(); ++i)
-        visitor.append(&amp;thisObject-&gt;storage()[i]);
-}
-
-inline bool JSActivation::symbolTableGet(PropertyName propertyName, PropertySlot&amp; slot)
-{
-    SymbolTableEntry entry = symbolTable()-&gt;inlineGet(propertyName.uid());
-    if (entry.isNull())
-        return false;
-
-    // Defend against the inspector asking for a var after it has been optimized out.
-    if (isTornOff() &amp;&amp; !isValid(entry))
-        return false;
-
-    slot.setValue(this, DontEnum, registerAt(entry.getIndex()).get());
-    return true;
-}
-
-inline bool JSActivation::symbolTableGet(PropertyName propertyName, PropertyDescriptor&amp; descriptor)
-{
-    SymbolTableEntry entry = symbolTable()-&gt;inlineGet(propertyName.uid());
-    if (entry.isNull())
-        return false;
-
-    // Defend against the inspector asking for a var after it has been optimized out.
-    if (isTornOff() &amp;&amp; !isValid(entry))
-        return false;
-
-    descriptor.setDescriptor(registerAt(entry.getIndex()).get(), entry.getAttributes());
-    return true;
-}
-
-inline bool JSActivation::symbolTablePut(ExecState* exec, PropertyName propertyName, JSValue value, bool shouldThrow)
-{
-    VM&amp; vm = exec-&gt;vm();
-    ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
-    
-    WriteBarrierBase&lt;Unknown&gt;* reg;
-    {
-        GCSafeConcurrentJITLocker locker(symbolTable()-&gt;m_lock, exec-&gt;vm().heap);
-        SymbolTable::Map::iterator iter = symbolTable()-&gt;find(locker, propertyName.uid());
-        if (iter == symbolTable()-&gt;end(locker))
-            return false;
-        ASSERT(!iter-&gt;value.isNull());
-        if (iter-&gt;value.isReadOnly()) {
-            if (shouldThrow)
-                throwTypeError(exec, StrictModeReadonlyPropertyWriteError);
-            return true;
-        }
-        // Defend against the inspector asking for a var after it has been optimized out.
-        if (isTornOff() &amp;&amp; !isValid(iter-&gt;value))
-            return false;
-        if (VariableWatchpointSet* set = iter-&gt;value.watchpointSet())
-            set-&gt;invalidate(VariableWriteFireDetail(this, propertyName)); // Don't mess around - if we had found this statically, we would have invcalidated it.
-        reg = &amp;registerAt(iter-&gt;value.getIndex());
-    }
-    reg-&gt;set(vm, this, value);
-    return true;
-}
-
-void JSActivation::getOwnNonIndexPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray&amp; propertyNames, EnumerationMode mode)
-{
-    JSActivation* thisObject = jsCast&lt;JSActivation*&gt;(object);
-
-    CallFrame* callFrame = CallFrame::create(reinterpret_cast&lt;Register*&gt;(thisObject-&gt;m_registers));
-    if (shouldIncludeDontEnumProperties(mode) &amp;&amp; !thisObject-&gt;isTornOff() &amp;&amp; (callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval()))
-        propertyNames.add(exec-&gt;propertyNames().arguments);
-
-    {
-        ConcurrentJITLocker locker(thisObject-&gt;symbolTable()-&gt;m_lock);
-        SymbolTable::Map::iterator end = thisObject-&gt;symbolTable()-&gt;end(locker);
-        for (SymbolTable::Map::iterator it = thisObject-&gt;symbolTable()-&gt;begin(locker); it != end; ++it) {
-            if (it-&gt;value.getAttributes() &amp; DontEnum &amp;&amp; !shouldIncludeDontEnumProperties(mode))
-                continue;
-            if (!thisObject-&gt;isValid(it-&gt;value))
-                continue;
-            propertyNames.add(Identifier(exec, it-&gt;key.get()));
-        }
-    }
-    // Skip the JSEnvironmentRecord implementation of getOwnNonIndexPropertyNames
-    JSObject::getOwnNonIndexPropertyNames(thisObject, exec, propertyNames, mode);
-}
-
-inline bool JSActivation::symbolTablePutWithAttributes(VM&amp; vm, PropertyName propertyName, JSValue value, unsigned attributes)
-{
-    ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
-    
-    WriteBarrierBase&lt;Unknown&gt;* reg;
-    {
-        ConcurrentJITLocker locker(symbolTable()-&gt;m_lock);
-        SymbolTable::Map::iterator iter = symbolTable()-&gt;find(locker, propertyName.uid());
-        if (iter == symbolTable()-&gt;end(locker))
-            return false;
-        SymbolTableEntry&amp; entry = iter-&gt;value;
-        ASSERT(!entry.isNull());
-        if (!isValid(entry))
-            return false;
-        
-        entry.setAttributes(attributes);
-        reg = &amp;registerAt(entry.getIndex());
-    }
-    reg-&gt;set(vm, this, value);
-    return true;
-}
-
-bool JSActivation::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
-{
-    JSActivation* thisObject = jsCast&lt;JSActivation*&gt;(object);
-
-    if (propertyName == exec-&gt;propertyNames().arguments) {
-        // Defend against the inspector asking for the arguments object after it has been optimized out.
-        CallFrame* callFrame = CallFrame::create(reinterpret_cast&lt;Register*&gt;(thisObject-&gt;m_registers));
-        if (!thisObject-&gt;isTornOff() &amp;&amp; (callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval())) {
-            slot.setCustom(thisObject, DontEnum, argumentsGetter);
-            return true;
-        }
-    }
-
-    if (thisObject-&gt;symbolTableGet(propertyName, slot))
-        return true;
-
-    unsigned attributes;
-    if (JSValue value = thisObject-&gt;getDirect(exec-&gt;vm(), propertyName, attributes)) {
-        slot.setValue(thisObject, attributes, value);
-        return true;
-    }
-
-    // We don't call through to JSObject because there's no way to give an 
-    // activation object getter properties or a prototype.
-    ASSERT(!thisObject-&gt;hasGetterSetterProperties());
-    ASSERT(thisObject-&gt;prototype().isNull());
-    return false;
-}
-
-void JSActivation::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
-{
-    JSActivation* thisObject = jsCast&lt;JSActivation*&gt;(cell);
-    ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(thisObject));
-
-    if (thisObject-&gt;symbolTablePut(exec, propertyName, value, slot.isStrictMode()))
-        return;
-
-    // We don't call through to JSObject because __proto__ and getter/setter 
-    // properties are non-standard extensions that other implementations do not
-    // expose in the activation object.
-    ASSERT(!thisObject-&gt;hasGetterSetterProperties());
-    thisObject-&gt;putOwnDataProperty(exec-&gt;vm(), propertyName, value, slot);
-}
-
-bool JSActivation::deleteProperty(JSCell* cell, ExecState* exec, PropertyName propertyName)
-{
-    if (propertyName == exec-&gt;propertyNames().arguments)
-        return false;
-
-    return Base::deleteProperty(cell, exec, propertyName);
-}
-
-JSValue JSActivation::toThis(JSCell*, ExecState* exec, ECMAMode ecmaMode)
-{
-    if (ecmaMode == StrictMode)
-        return jsUndefined();
-    return exec-&gt;globalThisValue();
-}
-
-EncodedJSValue JSActivation::argumentsGetter(ExecState*, JSObject* slotBase, EncodedJSValue, PropertyName)
-{
-    JSActivation* activation = jsCast&lt;JSActivation*&gt;(slotBase);
-    CallFrame* callFrame = CallFrame::create(reinterpret_cast&lt;Register*&gt;(activation-&gt;m_registers));
-    ASSERT(!activation-&gt;isTornOff() &amp;&amp; (callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval()));
-    if (activation-&gt;isTornOff() || !(callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval()))
-        return JSValue::encode(jsUndefined());
-
-    VirtualRegister argumentsRegister = callFrame-&gt;codeBlock()-&gt;argumentsRegister();
-    if (JSValue arguments = callFrame-&gt;uncheckedR(argumentsRegister.offset()).jsValue())
-        return JSValue::encode(arguments);
-    int realArgumentsRegister = unmodifiedArgumentsRegister(argumentsRegister).offset();
-
-    JSValue arguments = JSValue(Arguments::create(callFrame-&gt;vm(), callFrame));
-    callFrame-&gt;uncheckedR(argumentsRegister.offset()) = arguments;
-    callFrame-&gt;uncheckedR(realArgumentsRegister) = arguments;
-    
-    ASSERT(callFrame-&gt;uncheckedR(realArgumentsRegister).jsValue().inherits(Arguments::info()));
-    return JSValue::encode(callFrame-&gt;uncheckedR(realArgumentsRegister).jsValue());
-}
-
-} // namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSActivationh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSActivation.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSActivation.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/JSActivation.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -1,208 +0,0 @@
</span><del>-/*
- * Copyright (C) 2008, 2009, 2013 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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 OR ITS 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 JSActivation_h
-#define JSActivation_h
-
-#include &quot;CodeBlock.h&quot;
-#include &quot;CopiedSpaceInlines.h&quot;
-#include &quot;JSEnvironmentRecord.h&quot;
-#include &quot;Nodes.h&quot;
-#include &quot;SymbolTable.h&quot;
-
-namespace JSC {
-
-class Register;
-    
-class JSActivation : public JSEnvironmentRecord {
-private:
-    JSActivation(VM&amp;, CallFrame*, Register*, SymbolTable*);
-    
-public:
-    typedef JSEnvironmentRecord Base;
-
-    static JSActivation* create(VM&amp; vm, CallFrame* callFrame, Register* registers, CodeBlock* codeBlock)
-    {
-        SymbolTable* symbolTable = codeBlock-&gt;symbolTable();
-        ASSERT(codeBlock-&gt;codeType() == FunctionCode);
-        JSActivation* activation = new (
-            NotNull,
-            allocateCell&lt;JSActivation&gt;(
-                vm.heap,
-                allocationSize(symbolTable)
-            )
-        ) JSActivation(vm, callFrame, registers, symbolTable);
-        activation-&gt;finishCreation(vm);
-        return activation;
-    }
-        
-    static JSActivation* create(VM&amp; vm, CallFrame* callFrame, CodeBlock* codeBlock)
-    {
-        return create(vm, callFrame, callFrame-&gt;registers() + codeBlock-&gt;framePointerOffsetToGetActivationRegisters(), codeBlock);
-    }
-
-    static void visitChildren(JSCell*, SlotVisitor&amp;);
-
-    static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;);
-    static void getOwnNonIndexPropertyNames(JSObject*, ExecState*, PropertyNameArray&amp;, EnumerationMode);
-
-    static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&amp;);
-
-    static bool deleteProperty(JSCell*, ExecState*, PropertyName);
-
-    static JSValue toThis(JSCell*, ExecState*, ECMAMode);
-
-    void tearOff(VM&amp;);
-        
-    DECLARE_INFO;
-
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject) { return Structure::create(vm, globalObject, jsNull(), TypeInfo(ActivationObjectType, StructureFlags), info()); }
-
-    WriteBarrierBase&lt;Unknown&gt;&amp; registerAt(int) const;
-    bool isValidIndex(int) const;
-    bool isValid(const SymbolTableEntry&amp;) const;
-    bool isTornOff();
-    int registersOffset();
-    static int registersOffset(SymbolTable*);
-
-protected:
-    static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesGetPropertyNames | Base::StructureFlags;
-
-private:
-    bool symbolTableGet(PropertyName, PropertySlot&amp;);
-    bool symbolTableGet(PropertyName, PropertyDescriptor&amp;);
-    bool symbolTableGet(PropertyName, PropertySlot&amp;, bool&amp; slotIsWriteable);
-    bool symbolTablePut(ExecState*, PropertyName, JSValue, bool shouldThrow);
-    bool symbolTablePutWithAttributes(VM&amp;, PropertyName, JSValue, unsigned attributes);
-
-    static EncodedJSValue argumentsGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-
-    static size_t allocationSize(SymbolTable*);
-    static size_t storageOffset();
-
-    WriteBarrier&lt;Unknown&gt;* storage(); // captureCount() number of registers.
-};
-
-extern int activationCount;
-extern int allTheThingsCount;
-
-inline JSActivation::JSActivation(VM&amp; vm, CallFrame* callFrame, Register* registers, SymbolTable* symbolTable)
-    : Base(
-        vm,
-        callFrame-&gt;lexicalGlobalObject()-&gt;activationStructure(),
-        registers,
-        callFrame-&gt;scope(),
-        symbolTable)
-{
-    WriteBarrier&lt;Unknown&gt;* storage = this-&gt;storage();
-    size_t captureCount = symbolTable-&gt;captureCount();
-    for (size_t i = 0; i &lt; captureCount; ++i)
-        new (NotNull, &amp;storage[i]) WriteBarrier&lt;Unknown&gt;;
-}
-
-JSActivation* asActivation(JSValue);
-
-inline JSActivation* asActivation(JSValue value)
-{
-    ASSERT(asObject(value)-&gt;inherits(JSActivation::info()));
-    return jsCast&lt;JSActivation*&gt;(asObject(value));
-}
-    
-ALWAYS_INLINE JSActivation* Register::activation() const
-{
-    return asActivation(jsValue());
-}
-
-inline int JSActivation::registersOffset(SymbolTable* symbolTable)
-{
-    return storageOffset() + ((symbolTable-&gt;captureCount() - symbolTable-&gt;captureStart()  - 1) * sizeof(WriteBarrier&lt;Unknown&gt;));
-}
-
-inline void JSActivation::tearOff(VM&amp; vm)
-{
-    ASSERT(!isTornOff());
-
-    WriteBarrierBase&lt;Unknown&gt;* dst = reinterpret_cast_ptr&lt;WriteBarrierBase&lt;Unknown&gt;*&gt;(
-        reinterpret_cast&lt;char*&gt;(this) + registersOffset(symbolTable()));
-    WriteBarrierBase&lt;Unknown&gt;* src = m_registers;
-
-    int captureEnd = symbolTable()-&gt;captureEnd();
-    for (int i = symbolTable()-&gt;captureStart(); i &gt; captureEnd; --i)
-        dst[i].set(vm, this, src[i].get());
-
-    m_registers = dst;
-    ASSERT(isTornOff());
-}
-
-inline bool JSActivation::isTornOff()
-{
-    return m_registers == reinterpret_cast_ptr&lt;WriteBarrierBase&lt;Unknown&gt;*&gt;(
-        reinterpret_cast&lt;char*&gt;(this) + registersOffset(symbolTable()));
-}
-
-inline size_t JSActivation::storageOffset()
-{
-    return WTF::roundUpToMultipleOf&lt;sizeof(WriteBarrier&lt;Unknown&gt;)&gt;(sizeof(JSActivation));
-}
-
-inline WriteBarrier&lt;Unknown&gt;* JSActivation::storage()
-{
-    return reinterpret_cast_ptr&lt;WriteBarrier&lt;Unknown&gt;*&gt;(
-        reinterpret_cast&lt;char*&gt;(this) + storageOffset());
-}
-
-inline size_t JSActivation::allocationSize(SymbolTable* symbolTable)
-{
-    size_t objectSizeInBytes = WTF::roundUpToMultipleOf&lt;sizeof(WriteBarrier&lt;Unknown&gt;)&gt;(sizeof(JSActivation));
-    size_t storageSizeInBytes = symbolTable-&gt;captureCount() * sizeof(WriteBarrier&lt;Unknown&gt;);
-    return objectSizeInBytes + storageSizeInBytes;
-}
-
-inline bool JSActivation::isValidIndex(int index) const
-{
-    if (index &gt; symbolTable()-&gt;captureStart())
-        return false;
-    if (index &lt;= symbolTable()-&gt;captureEnd())
-        return false;
-    return true;
-}
-
-inline bool JSActivation::isValid(const SymbolTableEntry&amp; entry) const
-{
-    return isValidIndex(entry.getIndex());
-}
-
-inline WriteBarrierBase&lt;Unknown&gt;&amp; JSActivation::registerAt(int index) const
-{
-    ASSERT(isValidIndex(index));
-    return Base::registerAt(index);
-}
-
-} // namespace JSC
-
-#endif // JSActivation_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFunction.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunction.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/JSFunction.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> class ExecutableBase;
</span><span class="cx"> class FunctionExecutable;
</span><span class="cx"> class FunctionPrototype;
</span><del>-class JSActivation;
</del><ins>+class JSLexicalEnvironment;
</ins><span class="cx"> class JSGlobalObject;
</span><span class="cx"> class LLIntOffsetsExtractor;
</span><span class="cx"> class NativeExecutable;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -55,7 +55,6 @@
</span><span class="cx"> #include &quot;HeapIterationScope.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JSAPIWrapperObject.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSArgumentsIterator.h&quot;
</span><span class="cx"> #include &quot;JSArrayBuffer.h&quot;
</span><span class="cx"> #include &quot;JSArrayBufferConstructor.h&quot;
</span><span class="lines">@@ -74,6 +73,7 @@
</span><span class="cx"> #include &quot;JSGenericTypedArrayViewInlines.h&quot;
</span><span class="cx"> #include &quot;JSGenericTypedArrayViewPrototypeInlines.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSLock.h&quot;
</span><span class="cx"> #include &quot;JSMap.h&quot;
</span><span class="cx"> #include &quot;JSMapIterator.h&quot;
</span><span class="lines">@@ -319,7 +319,7 @@
</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><span class="cx">     m_nameScopeStructure.set(vm, this, JSNameScope::createStructure(vm, this, jsNull()));
</span><del>-    m_activationStructure.set(vm, this, JSActivation::createStructure(vm, this));
</del><ins>+    m_lexicalEnvironmentStructure.set(vm, this, JSLexicalEnvironment::createStructure(vm, this));
</ins><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="cx">     m_withScopeStructure.set(vm, this, JSWithScope::createStructure(vm, this, jsNull()));
</span><span class="lines">@@ -667,7 +667,7 @@
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_debuggerScopeStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_withScopeStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_strictEvalActivationStructure);
</span><del>-    visitor.append(&amp;thisObject-&gt;m_activationStructure);
</del><ins>+    visitor.append(&amp;thisObject-&gt;m_lexicalEnvironmentStructure);
</ins><span class="cx">     visitor.append(&amp;thisObject-&gt;m_nameScopeStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_argumentsStructure);
</span><span class="cx">     for (unsigned i = 0; i &lt; NumberOfIndexingShapes; ++i)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -189,7 +189,7 @@
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_debuggerScopeStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_withScopeStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_strictEvalActivationStructure;
</span><del>-    WriteBarrier&lt;Structure&gt; m_activationStructure;
</del><ins>+    WriteBarrier&lt;Structure&gt; m_lexicalEnvironmentStructure;
</ins><span class="cx">     WriteBarrier&lt;Structure&gt; m_nameScopeStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_argumentsStructure;
</span><span class="cx">         
</span><span class="lines">@@ -395,7 +395,7 @@
</span><span class="cx">     Structure* debuggerScopeStructure() const { return m_debuggerScopeStructure.get(); }
</span><span class="cx">     Structure* withScopeStructure() const { return m_withScopeStructure.get(); }
</span><span class="cx">     Structure* strictEvalActivationStructure() const { return m_strictEvalActivationStructure.get(); }
</span><del>-    Structure* activationStructure() const { return m_activationStructure.get(); }
</del><ins>+    Structure* activationStructure() const { return m_lexicalEnvironmentStructure.get(); }
</ins><span class="cx">     Structure* nameScopeStructure() const { return m_nameScopeStructure.get(); }
</span><span class="cx">     Structure* argumentsStructure() const { return m_argumentsStructure.get(); }
</span><span class="cx">     Structure* originalArrayStructureForIndexingType(IndexingType indexingType) const
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSLexicalEnvironmentcppfromrev173516trunkSourceJavaScriptCoreruntimeJSActivationcpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp (from rev 173516, trunk/Source/JavaScriptCore/runtime/JSActivation.cpp) (0 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -0,0 +1,238 @@
</span><ins>+/*
+ * Copyright (C) 2008, 2009, 2014 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.
+ * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 OR ITS 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;JSLexicalEnvironment.h&quot;
+
+#include &quot;Arguments.h&quot;
+#include &quot;Interpreter.h&quot;
+#include &quot;JSFunction.h&quot;
+#include &quot;JSCInlines.h&quot;
+
+using namespace std;
+
+namespace JSC {
+
+const ClassInfo JSLexicalEnvironment::s_info = { &quot;JSLexicalEnvironment&quot;, &amp;Base::s_info, 0, CREATE_METHOD_TABLE(JSLexicalEnvironment) };
+
+void JSLexicalEnvironment::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
+{
+    JSLexicalEnvironment* thisObject = jsCast&lt;JSLexicalEnvironment*&gt;(cell);
+    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+    Base::visitChildren(thisObject, visitor);
+
+    // No need to mark our registers if they're still in the JSStack.
+    if (!thisObject-&gt;isTornOff())
+        return;
+
+    for (int i = 0; i &lt; thisObject-&gt;symbolTable()-&gt;captureCount(); ++i)
+        visitor.append(&amp;thisObject-&gt;storage()[i]);
+}
+
+inline bool JSLexicalEnvironment::symbolTableGet(PropertyName propertyName, PropertySlot&amp; slot)
+{
+    SymbolTableEntry entry = symbolTable()-&gt;inlineGet(propertyName.uid());
+    if (entry.isNull())
+        return false;
+
+    // Defend against the inspector asking for a var after it has been optimized out.
+    if (isTornOff() &amp;&amp; !isValid(entry))
+        return false;
+
+    slot.setValue(this, DontEnum, registerAt(entry.getIndex()).get());
+    return true;
+}
+
+inline bool JSLexicalEnvironment::symbolTableGet(PropertyName propertyName, PropertyDescriptor&amp; descriptor)
+{
+    SymbolTableEntry entry = symbolTable()-&gt;inlineGet(propertyName.uid());
+    if (entry.isNull())
+        return false;
+
+    // Defend against the inspector asking for a var after it has been optimized out.
+    if (isTornOff() &amp;&amp; !isValid(entry))
+        return false;
+
+    descriptor.setDescriptor(registerAt(entry.getIndex()).get(), entry.getAttributes());
+    return true;
+}
+
+inline bool JSLexicalEnvironment::symbolTablePut(ExecState* exec, PropertyName propertyName, JSValue value, bool shouldThrow)
+{
+    VM&amp; vm = exec-&gt;vm();
+    ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
+    
+    WriteBarrierBase&lt;Unknown&gt;* reg;
+    {
+        GCSafeConcurrentJITLocker locker(symbolTable()-&gt;m_lock, exec-&gt;vm().heap);
+        SymbolTable::Map::iterator iter = symbolTable()-&gt;find(locker, propertyName.uid());
+        if (iter == symbolTable()-&gt;end(locker))
+            return false;
+        ASSERT(!iter-&gt;value.isNull());
+        if (iter-&gt;value.isReadOnly()) {
+            if (shouldThrow)
+                throwTypeError(exec, StrictModeReadonlyPropertyWriteError);
+            return true;
+        }
+        // Defend against the inspector asking for a var after it has been optimized out.
+        if (isTornOff() &amp;&amp; !isValid(iter-&gt;value))
+            return false;
+        if (VariableWatchpointSet* set = iter-&gt;value.watchpointSet())
+            set-&gt;invalidate(VariableWriteFireDetail(this, propertyName)); // Don't mess around - if we had found this statically, we would have invcalidated it.
+        reg = &amp;registerAt(iter-&gt;value.getIndex());
+    }
+    reg-&gt;set(vm, this, value);
+    return true;
+}
+
+void JSLexicalEnvironment::getOwnNonIndexPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray&amp; propertyNames, EnumerationMode mode)
+{
+    JSLexicalEnvironment* thisObject = jsCast&lt;JSLexicalEnvironment*&gt;(object);
+
+    CallFrame* callFrame = CallFrame::create(reinterpret_cast&lt;Register*&gt;(thisObject-&gt;m_registers));
+    if (shouldIncludeDontEnumProperties(mode) &amp;&amp; !thisObject-&gt;isTornOff() &amp;&amp; (callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval()))
+        propertyNames.add(exec-&gt;propertyNames().arguments);
+
+    {
+        ConcurrentJITLocker locker(thisObject-&gt;symbolTable()-&gt;m_lock);
+        SymbolTable::Map::iterator end = thisObject-&gt;symbolTable()-&gt;end(locker);
+        for (SymbolTable::Map::iterator it = thisObject-&gt;symbolTable()-&gt;begin(locker); it != end; ++it) {
+            if (it-&gt;value.getAttributes() &amp; DontEnum &amp;&amp; !shouldIncludeDontEnumProperties(mode))
+                continue;
+            if (!thisObject-&gt;isValid(it-&gt;value))
+                continue;
+            propertyNames.add(Identifier(exec, it-&gt;key.get()));
+        }
+    }
+    // Skip the JSEnvironmentRecord implementation of getOwnNonIndexPropertyNames
+    JSObject::getOwnNonIndexPropertyNames(thisObject, exec, propertyNames, mode);
+}
+
+inline bool JSLexicalEnvironment::symbolTablePutWithAttributes(VM&amp; vm, PropertyName propertyName, JSValue value, unsigned attributes)
+{
+    ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
+    
+    WriteBarrierBase&lt;Unknown&gt;* reg;
+    {
+        ConcurrentJITLocker locker(symbolTable()-&gt;m_lock);
+        SymbolTable::Map::iterator iter = symbolTable()-&gt;find(locker, propertyName.uid());
+        if (iter == symbolTable()-&gt;end(locker))
+            return false;
+        SymbolTableEntry&amp; entry = iter-&gt;value;
+        ASSERT(!entry.isNull());
+        if (!isValid(entry))
+            return false;
+        
+        entry.setAttributes(attributes);
+        reg = &amp;registerAt(entry.getIndex());
+    }
+    reg-&gt;set(vm, this, value);
+    return true;
+}
+
+bool JSLexicalEnvironment::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
+{
+    JSLexicalEnvironment* thisObject = jsCast&lt;JSLexicalEnvironment*&gt;(object);
+
+    if (propertyName == exec-&gt;propertyNames().arguments) {
+        // Defend against the inspector asking for the arguments object after it has been optimized out.
+        CallFrame* callFrame = CallFrame::create(reinterpret_cast&lt;Register*&gt;(thisObject-&gt;m_registers));
+        if (!thisObject-&gt;isTornOff() &amp;&amp; (callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval())) {
+            slot.setCustom(thisObject, DontEnum, argumentsGetter);
+            return true;
+        }
+    }
+
+    if (thisObject-&gt;symbolTableGet(propertyName, slot))
+        return true;
+
+    unsigned attributes;
+    if (JSValue value = thisObject-&gt;getDirect(exec-&gt;vm(), propertyName, attributes)) {
+        slot.setValue(thisObject, attributes, value);
+        return true;
+    }
+
+    // We don't call through to JSObject because there's no way to give a 
+    // lexical environment object getter properties or a prototype.
+    ASSERT(!thisObject-&gt;hasGetterSetterProperties());
+    ASSERT(thisObject-&gt;prototype().isNull());
+    return false;
+}
+
+void JSLexicalEnvironment::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot&amp; slot)
+{
+    JSLexicalEnvironment* thisObject = jsCast&lt;JSLexicalEnvironment*&gt;(cell);
+    ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(thisObject));
+
+    if (thisObject-&gt;symbolTablePut(exec, propertyName, value, slot.isStrictMode()))
+        return;
+
+    // We don't call through to JSObject because __proto__ and getter/setter 
+    // properties are non-standard extensions that other implementations do not
+    // expose in the lexicalEnvironment object.
+    ASSERT(!thisObject-&gt;hasGetterSetterProperties());
+    thisObject-&gt;putOwnDataProperty(exec-&gt;vm(), propertyName, value, slot);
+}
+
+bool JSLexicalEnvironment::deleteProperty(JSCell* cell, ExecState* exec, PropertyName propertyName)
+{
+    if (propertyName == exec-&gt;propertyNames().arguments)
+        return false;
+
+    return Base::deleteProperty(cell, exec, propertyName);
+}
+
+JSValue JSLexicalEnvironment::toThis(JSCell*, ExecState* exec, ECMAMode ecmaMode)
+{
+    if (ecmaMode == StrictMode)
+        return jsUndefined();
+    return exec-&gt;globalThisValue();
+}
+
+EncodedJSValue JSLexicalEnvironment::argumentsGetter(ExecState*, JSObject* slotBase, EncodedJSValue, PropertyName)
+{
+    JSLexicalEnvironment* lexicalEnvironment = jsCast&lt;JSLexicalEnvironment*&gt;(slotBase);
+    CallFrame* callFrame = CallFrame::create(reinterpret_cast&lt;Register*&gt;(lexicalEnvironment-&gt;m_registers));
+    ASSERT(!lexicalEnvironment-&gt;isTornOff() &amp;&amp; (callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval()));
+    if (lexicalEnvironment-&gt;isTornOff() || !(callFrame-&gt;codeBlock()-&gt;usesArguments() || callFrame-&gt;codeBlock()-&gt;usesEval()))
+        return JSValue::encode(jsUndefined());
+
+    VirtualRegister argumentsRegister = callFrame-&gt;codeBlock()-&gt;argumentsRegister();
+    if (JSValue arguments = callFrame-&gt;uncheckedR(argumentsRegister.offset()).jsValue())
+        return JSValue::encode(arguments);
+    int realArgumentsRegister = unmodifiedArgumentsRegister(argumentsRegister).offset();
+
+    JSValue arguments = JSValue(Arguments::create(callFrame-&gt;vm(), callFrame));
+    callFrame-&gt;uncheckedR(argumentsRegister.offset()) = arguments;
+    callFrame-&gt;uncheckedR(realArgumentsRegister) = arguments;
+    
+    ASSERT(callFrame-&gt;uncheckedR(realArgumentsRegister).jsValue().inherits(Arguments::info()));
+    return JSValue::encode(callFrame-&gt;uncheckedR(realArgumentsRegister).jsValue());
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSLexicalEnvironmenthfromrev173516trunkSourceJavaScriptCoreruntimeJSActivationh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h (from rev 173516, trunk/Source/JavaScriptCore/runtime/JSActivation.h) (0 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -0,0 +1,208 @@
</span><ins>+/*
+ * Copyright (C) 2008, 2009, 2013, 2014 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.
+ * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 OR ITS 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 JSLexicalEnvironment_h
+#define JSLexicalEnvironment_h
+
+#include &quot;CodeBlock.h&quot;
+#include &quot;CopiedSpaceInlines.h&quot;
+#include &quot;JSEnvironmentRecord.h&quot;
+#include &quot;Nodes.h&quot;
+#include &quot;SymbolTable.h&quot;
+
+namespace JSC {
+
+class Register;
+    
+class JSLexicalEnvironment : public JSEnvironmentRecord {
+private:
+    JSLexicalEnvironment(VM&amp;, CallFrame*, Register*, SymbolTable*);
+    
+public:
+    typedef JSEnvironmentRecord Base;
+
+    static JSLexicalEnvironment* create(VM&amp; vm, CallFrame* callFrame, Register* registers, CodeBlock* codeBlock)
+    {
+        SymbolTable* symbolTable = codeBlock-&gt;symbolTable();
+        ASSERT(codeBlock-&gt;codeType() == FunctionCode);
+        JSLexicalEnvironment* lexicalEnvironment = new (
+            NotNull,
+            allocateCell&lt;JSLexicalEnvironment&gt;(
+                vm.heap,
+                allocationSize(symbolTable)
+            )
+        ) JSLexicalEnvironment(vm, callFrame, registers, symbolTable);
+        lexicalEnvironment-&gt;finishCreation(vm);
+        return lexicalEnvironment;
+    }
+        
+    static JSLexicalEnvironment* create(VM&amp; vm, CallFrame* callFrame, CodeBlock* codeBlock)
+    {
+        return create(vm, callFrame, callFrame-&gt;registers() + codeBlock-&gt;framePointerOffsetToGetActivationRegisters(), codeBlock);
+    }
+
+    static void visitChildren(JSCell*, SlotVisitor&amp;);
+
+    static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;);
+    static void getOwnNonIndexPropertyNames(JSObject*, ExecState*, PropertyNameArray&amp;, EnumerationMode);
+
+    static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&amp;);
+
+    static bool deleteProperty(JSCell*, ExecState*, PropertyName);
+
+    static JSValue toThis(JSCell*, ExecState*, ECMAMode);
+
+    void tearOff(VM&amp;);
+        
+    DECLARE_INFO;
+
+    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject) { return Structure::create(vm, globalObject, jsNull(), TypeInfo(ActivationObjectType, StructureFlags), info()); }
+
+    WriteBarrierBase&lt;Unknown&gt;&amp; registerAt(int) const;
+    bool isValidIndex(int) const;
+    bool isValid(const SymbolTableEntry&amp;) const;
+    bool isTornOff();
+    int registersOffset();
+    static int registersOffset(SymbolTable*);
+
+protected:
+    static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesGetPropertyNames | Base::StructureFlags;
+
+private:
+    bool symbolTableGet(PropertyName, PropertySlot&amp;);
+    bool symbolTableGet(PropertyName, PropertyDescriptor&amp;);
+    bool symbolTableGet(PropertyName, PropertySlot&amp;, bool&amp; slotIsWriteable);
+    bool symbolTablePut(ExecState*, PropertyName, JSValue, bool shouldThrow);
+    bool symbolTablePutWithAttributes(VM&amp;, PropertyName, JSValue, unsigned attributes);
+
+    static EncodedJSValue argumentsGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
+
+    static size_t allocationSize(SymbolTable*);
+    static size_t storageOffset();
+
+    WriteBarrier&lt;Unknown&gt;* storage(); // captureCount() number of registers.
+};
+
+extern int activationCount;
+extern int allTheThingsCount;
+
+inline JSLexicalEnvironment::JSLexicalEnvironment(VM&amp; vm, CallFrame* callFrame, Register* registers, SymbolTable* symbolTable)
+    : Base(
+        vm,
+        callFrame-&gt;lexicalGlobalObject()-&gt;activationStructure(),
+        registers,
+        callFrame-&gt;scope(),
+        symbolTable)
+{
+    WriteBarrier&lt;Unknown&gt;* storage = this-&gt;storage();
+    size_t captureCount = symbolTable-&gt;captureCount();
+    for (size_t i = 0; i &lt; captureCount; ++i)
+        new (NotNull, &amp;storage[i]) WriteBarrier&lt;Unknown&gt;;
+}
+
+JSLexicalEnvironment* asActivation(JSValue);
+
+inline JSLexicalEnvironment* asActivation(JSValue value)
+{
+    ASSERT(asObject(value)-&gt;inherits(JSLexicalEnvironment::info()));
+    return jsCast&lt;JSLexicalEnvironment*&gt;(asObject(value));
+}
+    
+ALWAYS_INLINE JSLexicalEnvironment* Register::lexicalEnvironment() const
+{
+    return asActivation(jsValue());
+}
+
+inline int JSLexicalEnvironment::registersOffset(SymbolTable* symbolTable)
+{
+    return storageOffset() + ((symbolTable-&gt;captureCount() - symbolTable-&gt;captureStart()  - 1) * sizeof(WriteBarrier&lt;Unknown&gt;));
+}
+
+inline void JSLexicalEnvironment::tearOff(VM&amp; vm)
+{
+    ASSERT(!isTornOff());
+
+    WriteBarrierBase&lt;Unknown&gt;* dst = reinterpret_cast_ptr&lt;WriteBarrierBase&lt;Unknown&gt;*&gt;(
+        reinterpret_cast&lt;char*&gt;(this) + registersOffset(symbolTable()));
+    WriteBarrierBase&lt;Unknown&gt;* src = m_registers;
+
+    int captureEnd = symbolTable()-&gt;captureEnd();
+    for (int i = symbolTable()-&gt;captureStart(); i &gt; captureEnd; --i)
+        dst[i].set(vm, this, src[i].get());
+
+    m_registers = dst;
+    ASSERT(isTornOff());
+}
+
+inline bool JSLexicalEnvironment::isTornOff()
+{
+    return m_registers == reinterpret_cast_ptr&lt;WriteBarrierBase&lt;Unknown&gt;*&gt;(
+        reinterpret_cast&lt;char*&gt;(this) + registersOffset(symbolTable()));
+}
+
+inline size_t JSLexicalEnvironment::storageOffset()
+{
+    return WTF::roundUpToMultipleOf&lt;sizeof(WriteBarrier&lt;Unknown&gt;)&gt;(sizeof(JSLexicalEnvironment));
+}
+
+inline WriteBarrier&lt;Unknown&gt;* JSLexicalEnvironment::storage()
+{
+    return reinterpret_cast_ptr&lt;WriteBarrier&lt;Unknown&gt;*&gt;(
+        reinterpret_cast&lt;char*&gt;(this) + storageOffset());
+}
+
+inline size_t JSLexicalEnvironment::allocationSize(SymbolTable* symbolTable)
+{
+    size_t objectSizeInBytes = WTF::roundUpToMultipleOf&lt;sizeof(WriteBarrier&lt;Unknown&gt;)&gt;(sizeof(JSLexicalEnvironment));
+    size_t storageSizeInBytes = symbolTable-&gt;captureCount() * sizeof(WriteBarrier&lt;Unknown&gt;);
+    return objectSizeInBytes + storageSizeInBytes;
+}
+
+inline bool JSLexicalEnvironment::isValidIndex(int index) const
+{
+    if (index &gt; symbolTable()-&gt;captureStart())
+        return false;
+    if (index &lt;= symbolTable()-&gt;captureEnd())
+        return false;
+    return true;
+}
+
+inline bool JSLexicalEnvironment::isValid(const SymbolTableEntry&amp; entry) const
+{
+    return isValidIndex(entry.getIndex());
+}
+
+inline WriteBarrierBase&lt;Unknown&gt;&amp; JSLexicalEnvironment::registerAt(int index) const
+{
+    ASSERT(isValidIndex(index));
+    return Base::registerAt(index);
+}
+
+} // namespace JSC
+
+#endif // JSLexicalEnvironment_h
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -573,7 +573,7 @@
</span><span class="cx">     //  - assumes the object contains no own getter/setter properties.
</span><span class="cx">     //  - provides no special handling for __proto__
</span><span class="cx">     //  - does not walk the prototype chain (to check for accessors or non-writable properties).
</span><del>-    // This is used by JSActivation.
</del><ins>+    // This is used by JSLexicalEnvironment.
</ins><span class="cx">     bool putOwnDataProperty(VM&amp;, PropertyName, JSValue, PutPropertySlot&amp;);
</span><span class="cx"> 
</span><span class="cx">     // Fast access to known property offsets.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSScope.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSScope.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/JSScope.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -26,8 +26,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;JSScope.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;JSWithScope.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="lines">@@ -47,26 +47,26 @@
</span><span class="cx"> // Returns true if we found enough information to terminate optimization.
</span><span class="cx"> static inline bool abstractAccess(ExecState* exec, JSScope* scope, const Identifier&amp; ident, GetOrPut getOrPut, size_t depth, bool&amp; needsVarInjectionChecks, ResolveOp&amp; op)
</span><span class="cx"> {
</span><del>-    if (JSActivation* activation = jsDynamicCast&lt;JSActivation*&gt;(scope)) {
</del><ins>+    if (JSLexicalEnvironment* lexicalEnvironment = jsDynamicCast&lt;JSLexicalEnvironment*&gt;(scope)) {
</ins><span class="cx">         if (ident == exec-&gt;propertyNames().arguments) {
</span><del>-            // We know the property will be at this activation scope, but we don't know how to cache it.
</del><ins>+            // We know the property will be at this lexical environment scope, but we don't know how to cache it.
</ins><span class="cx">             op = ResolveOp(Dynamic, 0, 0, 0, 0, 0);
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        SymbolTableEntry entry = activation-&gt;symbolTable()-&gt;get(ident.impl());
</del><ins>+        SymbolTableEntry entry = lexicalEnvironment-&gt;symbolTable()-&gt;get(ident.impl());
</ins><span class="cx">         if (entry.isReadOnly() &amp;&amp; getOrPut == Put) {
</span><del>-            // We know the property will be at this activation scope, but we don't know how to cache it.
</del><ins>+            // We know the property will be at this lexical environment scope, but we don't know how to cache it.
</ins><span class="cx">             op = ResolveOp(Dynamic, 0, 0, 0, 0, 0);
</span><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (!entry.isNull()) {
</span><del>-            op = ResolveOp(makeType(ClosureVar, needsVarInjectionChecks), depth, 0, activation, entry.watchpointSet(), entry.getIndex());
</del><ins>+            op = ResolveOp(makeType(ClosureVar, needsVarInjectionChecks), depth, 0, lexicalEnvironment, entry.watchpointSet(), entry.getIndex());
</ins><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        if (activation-&gt;symbolTable()-&gt;usesNonStrictEval())
</del><ins>+        if (lexicalEnvironment-&gt;symbolTable()-&gt;usesNonStrictEval())
</ins><span class="cx">             needsVarInjectionChecks = true;
</span><span class="cx">         return false;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSScopeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSScope.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSScope.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/JSScope.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -99,11 +99,11 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> struct ResolveOp {
</span><del>-    ResolveOp(ResolveType type, size_t depth, Structure* structure, JSActivation* activation, VariableWatchpointSet* watchpointSet, uintptr_t operand)
</del><ins>+    ResolveOp(ResolveType type, size_t depth, Structure* structure, JSLexicalEnvironment* lexicalEnvironment, VariableWatchpointSet* watchpointSet, uintptr_t operand)
</ins><span class="cx">         : type(type)
</span><span class="cx">         , depth(depth)
</span><span class="cx">         , structure(structure)
</span><del>-        , activation(activation)
</del><ins>+        , lexicalEnvironment(lexicalEnvironment)
</ins><span class="cx">         , watchpointSet(watchpointSet)
</span><span class="cx">         , operand(operand)
</span><span class="cx">     {
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx">     ResolveType type;
</span><span class="cx">     size_t depth;
</span><span class="cx">     Structure* structure;
</span><del>-    JSActivation* activation;
</del><ins>+    JSLexicalEnvironment* lexicalEnvironment;
</ins><span class="cx">     VariableWatchpointSet* watchpointSet;
</span><span class="cx">     uintptr_t operand;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSSymbolTableObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/JSSymbolTableObject.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -29,8 +29,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;JSSymbolTableObject.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;PropertyNameArray.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStrictEvalActivationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StrictEvalActivation.h (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StrictEvalActivation.h        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/StrictEvalActivation.h        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -36,9 +36,9 @@
</span><span class="cx"> 
</span><span class="cx">     static StrictEvalActivation* create(ExecState* exec)
</span><span class="cx">     {
</span><del>-        StrictEvalActivation* activation = new (NotNull, allocateCell&lt;StrictEvalActivation&gt;(*exec-&gt;heap())) StrictEvalActivation(exec);
-        activation-&gt;finishCreation(exec-&gt;vm());
-        return activation;
</del><ins>+        StrictEvalActivation* lexicalEnvironment = new (NotNull, allocateCell&lt;StrictEvalActivation&gt;(*exec-&gt;heap())) StrictEvalActivation(exec);
+        lexicalEnvironment-&gt;finishCreation(exec-&gt;vm());
+        return lexicalEnvironment;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     static bool deleteProperty(JSCell*, ExecState*, PropertyName);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.cpp (173516 => 173517)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.cpp        2014-09-11 17:20:18 UTC (rev 173516)
+++ trunk/Source/JavaScriptCore/runtime/VM.cpp        2014-09-11 18:18:14 UTC (rev 173517)
</span><span class="lines">@@ -53,11 +53,11 @@
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JITCode.h&quot;
</span><span class="cx"> #include &quot;JSAPIValueWrapper.h&quot;
</span><del>-#include &quot;JSActivation.h&quot;
</del><span class="cx"> #include &quot;JSArray.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><ins>+#include &quot;JSLexicalEnvironment.h&quot;
</ins><span class="cx"> #include &quot;JSLock.h&quot;
</span><span class="cx"> #include &quot;JSNameScope.h&quot;
</span><span class="cx"> #include &quot;JSNotAnObject.h&quot;
</span></span></pre>
</div>
</div>

</body>
</html>