<!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 <oliver@apple.com>
+
+ 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ó <llango.u-szeged@partner.samsung.com>
</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"> <ClCompile Include="..\runtime\IntendedStructureChain.cpp" />
</span><span class="cx"> <ClCompile Include="..\runtime\InternalFunction.cpp" />
</span><span class="cx"> <ClCompile Include="..\runtime\JSAPIValueWrapper.cpp" />
</span><del>- <ClCompile Include="..\runtime\JSActivation.cpp" />
</del><ins>+ <ClCompile Include="..\runtime\JSLexicalEnvironment.cpp" />
</ins><span class="cx"> <ClCompile Include="..\runtime\JSArgumentsIterator.cpp" />
</span><span class="cx"> <ClCompile Include="..\runtime\JSArray.cpp" />
</span><span class="cx"> <ClCompile Include="..\runtime\JSArrayIterator.cpp" />
</span><span class="lines">@@ -1454,7 +1454,7 @@
</span><span class="cx"> <ClInclude Include="..\runtime\InternalFunction.h" />
</span><span class="cx"> <ClInclude Include="..\runtime\Intrinsic.h" />
</span><span class="cx"> <ClInclude Include="..\runtime\JSAPIValueWrapper.h" />
</span><del>- <ClInclude Include="..\runtime\JSActivation.h" />
</del><ins>+ <ClInclude Include="..\runtime\JSLexicalEnvironment.h" />
</ins><span class="cx"> <ClInclude Include="..\runtime\JSArgumentsIterator.h" />
</span><span class="cx"> <ClInclude Include="..\runtime\JSArray.h" />
</span><span class="cx"> <ClInclude Include="..\runtime\JSArrayBuffer.h" />
</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"> <ClCompile Include="..\runtime\InternalFunction.cpp">
</span><span class="cx"> <Filter>runtime</Filter>
</span><span class="cx"> </ClCompile>
</span><del>- <ClCompile Include="..\runtime\JSActivation.cpp">
</del><ins>+ <ClCompile Include="..\runtime\JSLexicalEnvironment.cpp">
</ins><span class="cx"> <Filter>runtime</Filter>
</span><span class="cx"> </ClCompile>
</span><span class="cx"> <ClCompile Include="..\runtime\JSAPIValueWrapper.cpp">
</span><span class="lines">@@ -2576,7 +2576,7 @@
</span><span class="cx"> <ClInclude Include="..\runtime\Intrinsic.h">
</span><span class="cx"> <Filter>runtime</Filter>
</span><span class="cx"> </ClInclude>
</span><del>- <ClInclude Include="..\runtime\JSActivation.h">
</del><ins>+ <ClInclude Include="..\runtime\JSLexicalEnvironment.h">
</ins><span class="cx"> <Filter>runtime</Filter>
</span><span class="cx"> </ClInclude>
</span><span class="cx"> <ClInclude Include="..\runtime\JSAPIValueWrapper.h">
</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 = "<group>"; };
</span><span class="cx">                 14D844A316AA2C7000A65AF0 /* PrototypeMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrototypeMap.h; sourceTree = "<group>"; };
</span><span class="cx">                 14D857740A4696C80032146C /* testapi.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = testapi.js; path = API/tests/testapi.js; sourceTree = "<group>"; };
</span><del>-                14DA818E0D99FD2000B0A4FB /* JSActivation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSActivation.h; sourceTree = "<group>"; };
-                14DA818F0D99FD2000B0A4FB /* JSActivation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSActivation.cpp; sourceTree = "<group>"; };
</del><ins>+                14DA818E0D99FD2000B0A4FB /* JSLexicalEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSLexicalEnvironment.h; sourceTree = "<group>"; };
+                14DA818F0D99FD2000B0A4FB /* JSLexicalEnvironment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSLexicalEnvironment.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 14DE0D680D02431400AACCA2 /* JSGlobalObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = JSGlobalObject.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
</span><span class="cx">                 14DF04D916B3996D0016A513 /* StaticPropertyAnalysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticPropertyAnalysis.h; sourceTree = "<group>"; };
</span><span class="cx">                 14E84F9914EE1ACC00D6D5D4 /* WeakBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WeakBlock.cpp; sourceTree = "<group>"; };
</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"> "macroNameComponent" : "BYTECODE", "asmPrefix" : "llint_",
</span><span class="cx"> "bytecodes" : [
</span><span class="cx"> { "name" : "op_enter", "length" : 1 },
</span><del>- { "name" : "op_create_activation", "length" : 2 },
</del><ins>+ { "name" : "op_create_lexical_environment", "length" : 2 },
</ins><span class="cx"> { "name" : "op_touch_entry", "length" : 1 },
</span><span class="cx"> { "name" : "op_init_lazy_reg", "length" : 2 },
</span><span class="cx"> { "name" : "op_create_arguments", "length" : 2 },
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx"> { "name" : "op_call", "length" : 9 },
</span><span class="cx"> { "name" : "op_call_eval", "length" : 9 },
</span><span class="cx"> { "name" : "op_call_varargs", "length" : 9 },
</span><del>- { "name" : "op_tear_off_activation", "length" : 2 },
</del><ins>+ { "name" : "op_tear_off_lexical_environment", "length" : 2 },
</ins><span class="cx"> { "name" : "op_tear_off_arguments", "length" : 3 },
</span><span class="cx"> { "name" : "op_ret", "length" : 2 },
</span><span class="cx"> { "name" : "op_ret_object_or_this", "length" : 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 "Interpreter.h"
</span><span class="cx"> #include "JIT.h"
</span><span class="cx"> #include "JITStubs.h"
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSCJSValue.h"
</span><span class="cx"> #include "JSFunction.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSNameScope.h"
</span><span class="cx"> #include "LLIntEntrypoint.h"
</span><span class="cx"> #include "LowLevelInterpreter.h"
</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() && codeType() == FunctionCode)
</span><del>- out.printf("; activation in r%d", activationRegister().offset());
</del><ins>+ out.printf("; lexical environment in r%d", activationRegister().offset());
</ins><span class="cx"> out.printf("\n");
</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, "touch_entry");
</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)->u.operand;
</span><del>- printLocationOpAndRegisterOperand(out, exec, location, it, "create_activation", r0);
</del><ins>+ printLocationOpAndRegisterOperand(out, exec, location, it, "create_lexical_environment", 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)->u.operand;
</span><del>- printLocationOpAndRegisterOperand(out, exec, location, it, "tear_off_activation", r0);
</del><ins>+ printLocationOpAndRegisterOperand(out, exec, location, it, "tear_off_lexical_environment", 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->vm())
</span><span class="cx"> , m_thisRegister(unlinkedCodeBlock->thisRegister())
</span><span class="cx"> , m_argumentsRegister(unlinkedCodeBlock->argumentsRegister())
</span><del>- , m_activationRegister(unlinkedCodeBlock->activationRegister())
</del><ins>+ , m_lexicalEnvironmentRegister(unlinkedCodeBlock->activationRegister())
</ins><span class="cx"> , m_isStrictMode(unlinkedCodeBlock->isStrictMode())
</span><span class="cx"> , m_needsActivation(unlinkedCodeBlock->hasActivationRegister() && unlinkedCodeBlock->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->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->symbolTable();
</del><ins>+ symbolTable = op.lexicalEnvironment->symbolTable();
</ins><span class="cx"> else if (op.type == GlobalVar)
</span><span class="cx"> symbolTable = m_globalObject.get()->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<JSActivation>& activation = curInstruction[5].u.activation;
- if (!activation || Heap::isMarked(activation.get()))
</del><ins>+ WriteBarrierBase<JSLexicalEnvironment>& 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("Clearing dead activation %p.\n", activation.get());
- activation.clear();
</del><ins>+ dataLogF("Clearing dead lexicalEnvironment %p.\n", 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->capturedVars.get(operand.toLocal());
</span><span class="cx">
</span><del>- // The activation object isn't in the captured region, but it's "captured"
</del><ins>+ // The lexical environment object isn't in the captured region, but it's "captured"
</ins><span class="cx"> // in the sense that stores to its location can be observed indirectly.
</span><span class="cx"> if (needsActivation() && 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() && virtualRegister == activationRegister())
</span><del>- return ASCIILiteral("activation");
</del><ins>+ return ASCIILiteral("lexical environment");
</ins><span class="cx"> if (virtualRegister == thisRegister())
</span><span class="cx"> return ASCIILiteral("this");
</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<SymbolTable> 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<JSActivation> activation;
</del><ins>+ WriteBarrierBase<JSLexicalEnvironment> 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 "BytecodeGenerator.h"
</span><span class="cx">
</span><span class="cx"> #include "Interpreter.h"
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSFunction.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSNameScope.h"
</span><span class="cx"> #include "LowLevelInterpreter.h"
</span><span class="cx"> #include "JSCInlines.h"
</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->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->needsFullScopeChain() || m_shouldEmitDebugHooks) {
</span><del>- m_activationRegister = addVar();
- emitInitLazyRegister(m_activationRegister);
- m_codeBlock->setActivationRegister(m_activationRegister->virtualRegister());
- emitOpcode(op_create_activation);
- instructions().append(m_activationRegister->index());
</del><ins>+ m_lexicalEnvironmentRegister = addVar();
+ emitInitLazyRegister(m_lexicalEnvironmentRegister);
+ m_codeBlock->setActivationRegister(m_lexicalEnvironmentRegister->virtualRegister());
+ emitOpcode(op_create_lexical_environment);
+ instructions().append(m_lexicalEnvironmentRegister->index());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> m_symbolTable->setCaptureStart(virtualRegisterForLocal(m_codeBlock->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->index());
</del><ins>+ if (m_lexicalEnvironmentRegister) {
+ emitOpcode(op_tear_off_lexical_environment);
+ instructions().append(m_lexicalEnvironmentRegister->index());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (m_codeBlock->usesArguments() && m_codeBlock->numParameters() != 1 && !isStrictMode()) {
</span><span class="cx"> emitOpcode(op_tear_off_arguments);
</span><span class="cx"> instructions().append(m_codeBlock->argumentsRegister().offset());
</span><del>- instructions().append(m_activationRegister ? m_activationRegister->index() : emitLoad(0, JSValue())->index());
</del><ins>+ instructions().append(m_lexicalEnvironmentRegister ? m_lexicalEnvironmentRegister->index() : emitLoad(0, JSValue())->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<Identifier, 16> 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 "DebuggerEvalEnabler.h"
</span><span class="cx"> #include "DebuggerScope.h"
</span><span class="cx"> #include "Interpreter.h"
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSFunction.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "Parser.h"
</span><span class="cx"> #include "StackVisitor.h"
</span><span class="lines">@@ -146,9 +146,9 @@
</span><span class="cx"> CodeBlock* codeBlock = m_callFrame->codeBlock();
</span><span class="cx"> if (codeBlock && codeBlock->needsActivation() && !m_callFrame->hasActivation()) {
</span><span class="cx"> ASSERT(!m_callFrame->scope()->isWithScope());
</span><del>- JSActivation* activation = JSActivation::create(vm, m_callFrame, codeBlock);
- m_callFrame->setActivation(activation);
- m_callFrame->setScope(activation);
</del><ins>+ JSLexicalEnvironment* lexicalEnvironment = JSLexicalEnvironment::create(vm, m_callFrame, codeBlock);
+ m_callFrame->setActivation(lexicalEnvironment);
+ m_callFrame->setScope(lexicalEnvironment);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> m_scope.set(vm, DebuggerScope::create(vm, m_callFrame->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 "config.h"
</span><span class="cx"> #include "DebuggerScope.h"
</span><span class="cx">
</span><del>-#include "JSActivation.h"
</del><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "JSWithScope.h"
</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->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 "DFGJITCode.h"
</span><span class="cx"> #include "GetByIdStatus.h"
</span><span class="cx"> #include "Heap.h"
</span><del>-#include "JSActivation.h"
</del><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "PreciseJumpTargets.h"
</span><span class="cx"> #include "PutByIdStatus.h"
</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
- && activation->symbolTable()->m_functionEnteredOnce.isStillValid()) {
- addToGraph(FunctionReentryWatchpoint, OpInfo(activation->symbolTable()));
- set(VirtualRegister(dst), weakJSConstant(activation));
</del><ins>+ JSLexicalEnvironment* lexicalEnvironment = currentInstruction[5].u.lexicalEnvironment.get();
+ if (lexicalEnvironment
+ && lexicalEnvironment->symbolTable()->m_functionEnteredOnce.isStillValid()) {
+ addToGraph(FunctionReentryWatchpoint, OpInfo(lexicalEnvironment->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->symbolTable();
</del><ins>+ if (JSLexicalEnvironment* lexicalEnvironment = m_graph.tryGetActivation(scopeNode)) {
+ SymbolTable* symbolTable = lexicalEnvironment->symbolTable();
</ins><span class="cx"> ConcurrentJITLocker locker(symbolTable->m_lock);
</span><span class="cx"> SymbolTable::Map::iterator iter = symbolTable->find(locker, uid);
</span><span class="cx"> ASSERT(iter != symbolTable->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 "FullBytecodeLiveness.h"
</span><span class="cx"> #include "FunctionExecutableDump.h"
</span><span class="cx"> #include "JIT.h"
</span><del>-#include "JSActivation.h"
</del><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "MaxFrameExtentForSlowPathCall.h"
</span><span class="cx"> #include "OperandsInlines.h"
</span><span class="cx"> #include "JSCInlines.h"
</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->dynamicCastConstant<JSActivation*>();
</del><ins>+ return node->dynamicCastConstant<JSLexicalEnvironment*>();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> WriteBarrierBase<Unknown>* 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->isTornOff())
</del><ins>+ if (!lexicalEnvironment->isTornOff())
</ins><span class="cx"> return 0;
</span><del>- return activation->registers();
</del><ins>+ return lexicalEnvironment->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&, PropertyOffset);
</span><span class="cx"> JSValue tryGetConstantProperty(const AbstractValue&, PropertyOffset);
</span><span class="cx">
</span><del>- JSActivation* tryGetActivation(Node*);
</del><ins>+ JSLexicalEnvironment* tryGetActivation(Node*);
</ins><span class="cx"> WriteBarrierBase<Unknown>* 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 "Interpreter.h"
</span><span class="cx"> #include "JIT.h"
</span><span class="cx"> #include "JITExceptions.h"
</span><del>-#include "JSActivation.h"
</del><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "VM.h"
</span><span class="cx"> #include "JSNameScope.h"
</span><span class="cx"> #include "NameInstance.h"
</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 "DFGSlowPathGenerator.h"
</span><span class="cx"> #include "Debugger.h"
</span><span class="cx"> #include "GetterSetter.h"
</span><del>-#include "JSActivation.h"
</del><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSPropertyNameEnumerator.h"
</span><span class="cx"> #include "ObjectPrototype.h"
</span><span class="cx"> #include "JSCInlines.h"
</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->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->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(&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->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->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(&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 "CallFrameInlines.h"
</span><span class="cx"> #include "CodeBlock.h"
</span><span class="cx"> #include "Interpreter.h"
</span><del>-#include "JSActivation.h"
</del><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "VMEntryScope.h"
</span><span class="cx"> #include <wtf/StringPrintStream.h>
</span><span class="lines">@@ -146,20 +146,20 @@
</span><span class="cx"> return static_cast<CallFrame*>(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->codeBlock();
</span><span class="cx"> RELEASE_ASSERT(codeBlock->needsActivation());
</span><span class="cx"> VirtualRegister activationRegister = codeBlock->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->codeBlock();
</span><span class="cx"> RELEASE_ASSERT(codeBlock->needsActivation());
</span><span class="cx"> VirtualRegister activationRegister = codeBlock->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& 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<Register*>(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 "EvalCodeCache.h"
</span><span class="cx"> #include "ExceptionHelpers.h"
</span><span class="cx"> #include "GetterSetter.h"
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSArray.h"
</span><span class="cx"> #include "JSBoundFunction.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSNameScope.h"
</span><span class="cx"> #include "JSNotAnObject.h"
</span><span class="cx"> #include "JSStackInlines.h"
</span><span class="lines">@@ -450,16 +450,16 @@
</span><span class="cx"> ASSERT(!callFrame->hadException());
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JSValue activation;
</del><ins>+ JSValue lexicalEnvironment;
</ins><span class="cx"> if (codeBlock->codeType() == FunctionCode && codeBlock->needsActivation()) {
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx"> RELEASE_ASSERT(!visitor->isInlinedFrame());
</span><span class="cx"> #endif
</span><del>- activation = callFrame->uncheckedActivation();
- // Protect against the activation not being created, or the variable still being
</del><ins>+ lexicalEnvironment = callFrame->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 && activation.isCell()) {
- JSActivation* activationObject = jsCast<JSActivation*>(activation);
</del><ins>+ if (lexicalEnvironment && lexicalEnvironment.isCell()) {
+ JSLexicalEnvironment* activationObject = jsCast<JSLexicalEnvironment*>(lexicalEnvironment);
</ins><span class="cx"> // Protect against throwing exceptions after tear-off.
</span><span class="cx"> if (!activationObject->isTornOff())
</span><span class="cx"> activationObject->tearOff(*scope->vm());
</span><span class="lines">@@ -468,8 +468,8 @@
</span><span class="cx">
</span><span class="cx"> if (codeBlock->codeType() == FunctionCode && codeBlock->usesArguments()) {
</span><span class="cx"> if (Arguments* arguments = visitor->existingArguments()) {
</span><del>- if (activation && activation.isCell())
- arguments->didTearOffActivation(callFrame, jsCast<JSActivation*>(activation));
</del><ins>+ if (lexicalEnvironment && lexicalEnvironment.isCell())
+ arguments->didTearOffActivation(callFrame, jsCast<JSLexicalEnvironment*>(lexicalEnvironment));
</ins><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx"> else if (visitor->isInlinedFrame())
</span><span class="cx"> arguments->tearOff(callFrame, visitor->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& 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& vm = exec->vm();
</span><span class="cx"> NativeCallFrameTracer tracer(&vm, exec);
</span><del>- JSActivation* activation = JSActivation::create(vm, exec, exec->registers() + offset, exec->codeBlock());
- exec->setScope(activation);
- return activation;
</del><ins>+ JSLexicalEnvironment* lexicalEnvironment = JSLexicalEnvironment::create(vm, exec, exec->registers() + offset, exec->codeBlock());
+ exec->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(&vm, exec);
</span><span class="cx">
</span><span class="cx"> ASSERT(exec->codeBlock()->needsActivation());
</span><del>- jsCast<JSActivation*>(activationCell)->tearOff(vm);
</del><ins>+ jsCast<JSLexicalEnvironment*>(activationCell)->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->codeBlock()->usesArguments());
</span><span class="cx"> if (activationCell) {
</span><del>- jsCast<Arguments*>(argumentsCell)->didTearOffActivation(exec, jsCast<JSActivation*>(activationCell));
</del><ins>+ jsCast<Arguments*>(argumentsCell)->didTearOffActivation(exec, jsCast<JSLexicalEnvironment*>(activationCell));
</ins><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> jsCast<Arguments*>(argumentsCell)->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 "Interpreter.h"
</span><span class="cx"> #include "JIT.h"
</span><span class="cx"> #include "JITExceptions.h"
</span><del>-#include "JSActivation.h"
</del><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "JSCJSValue.h"
</span><span class="cx"> #include "JSGlobalObjectFunctions.h"
</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("Creating an activation, exec = %p!\n", exec);
</del><ins>+ dataLogF("Creating an lexicalEnvironment, exec = %p!\n", exec);
</ins><span class="cx"> #endif
</span><del>- JSActivation* activation = JSActivation::create(vm, exec, exec->codeBlock());
- exec->setScope(activation);
- LLINT_RETURN(JSValue(activation));
</del><ins>+ JSLexicalEnvironment* lexicalEnvironment = JSLexicalEnvironment::create(vm, exec, exec->codeBlock());
+ exec->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->codeBlock()->needsActivation());
</span><del>- jsCast<JSActivation*>(LLINT_OP(1).jsValue())->tearOff(vm);
</del><ins>+ jsCast<JSLexicalEnvironment*>(LLINT_OP(1).jsValue())->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->codeBlock()->usesArguments());
</span><span class="cx"> Arguments* arguments = jsCast<Arguments*>(exec->uncheckedR(unmodifiedArgumentsRegister(VirtualRegister(pc[1].u.operand)).offset()).jsValue());
</span><span class="cx"> if (JSValue activationValue = LLINT_OP_C(2).jsValue())
</span><del>- arguments->didTearOffActivation(exec, jsCast<JSActivation*>(activationValue));
</del><ins>+ arguments->didTearOffActivation(exec, jsCast<JSLexicalEnvironment*>(activationValue));
</ins><span class="cx"> else
</span><span class="cx"> arguments->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 "Arguments.h"
</span><span class="cx">
</span><span class="cx"> #include "CopyVisitorInlines.h"
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSArgumentsIterator.h"
</span><span class="cx"> #include "JSFunction.h"
</span><span class="cx"> #include "JSGlobalObject.h"
</span><span class="cx"> #include "JSCInlines.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</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->m_slowArgumentData.get(), SlowArgumentData::sizeForNumArguments(thisObject->m_numArguments));
</span><span class="cx"> }
</span><span class="cx"> visitor.append(&thisObject->m_callee);
</span><del>- visitor.append(&thisObject->m_activation);
</del><ins>+ visitor.append(&thisObject->m_lexicalEnvironment);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void Arguments::copyBackingStore(JSCell* cell, CopyVisitor& visitor, CopyToken token)
</span><span class="lines">@@ -384,10 +384,10 @@
</span><span class="cx"> allocateRegisterArray(callFrame->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 && !m_activation) {
</del><ins>+ if (m_slowArgumentData && !m_lexicalEnvironment) {
</ins><span class="cx"> for (size_t i = 0; i < m_numArguments; ++i) {
</span><span class="cx"> if (m_slowArgumentData->slowArguments()[i].status != SlowArgument::Captured)
</span><span class="cx"> continue;
</span><span class="lines">@@ -400,16 +400,16 @@
</span><span class="cx"> trySetArgument(callFrame->vm(), i, callFrame->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->vm(), this, activation);
</del><ins>+ m_lexicalEnvironment.set(exec->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 "CodeOrigin.h"
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSFunction.h"
</span><span class="cx"> #include "JSGlobalObject.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "Interpreter.h"
</span><span class="cx"> #include "ObjectConstructor.h"
</span><span class="cx"> #include "WriteBarrierInlines.h"
</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& 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<JSActivation> m_activation;
</del><ins>+ WriteBarrier<JSLexicalEnvironment> 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->slowArguments()[argument].index;
</span><del>- if (!m_activation || m_slowArgumentData->slowArguments()[argument].status != SlowArgument::Captured)
</del><ins>+ if (!m_lexicalEnvironment || m_slowArgumentData->slowArguments()[argument].status != SlowArgument::Captured)
</ins><span class="cx"> return m_registers[index];
</span><span class="cx">
</span><del>- return m_activation->registerAt(index - m_slowArgumentData->bytecodeToMachineCaptureOffset());
</del><ins>+ return m_lexicalEnvironment->registerAt(index - m_slowArgumentData->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->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->jsExecutable()->parameterCount())
</span><span class="cx"> tearOff(callFrame);
</span><span class="lines">@@ -323,7 +323,7 @@
</span><span class="cx"> m_isStrictMode = jsCast<FunctionExecutable*>(inlineCallFrame->executable.get())->isStrictMode();
</span><span class="cx"> ASSERT(!jsCast<FunctionExecutable*>(inlineCallFrame->executable.get())->symbolTable(inlineCallFrame->specializationKind())->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->jsExecutable()->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 "Interpreter.h"
</span><span class="cx"> #include "JIT.h"
</span><span class="cx"> #include "JITStubs.h"
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSCJSValue.h"
</span><span class="cx"> #include "JSGlobalObjectFunctions.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSNameScope.h"
</span><span class="cx"> #include "JSPropertyNameEnumerator.h"
</span><span class="cx"> #include "JSString.h"
</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. ("Apple") 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 "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE 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 "config.h"
-#include "JSActivation.h"
-
-#include "Arguments.h"
-#include "Interpreter.h"
-#include "JSFunction.h"
-#include "JSCInlines.h"
-
-using namespace std;
-
-namespace JSC {
-
-const ClassInfo JSActivation::s_info = { "JSActivation", &Base::s_info, 0, CREATE_METHOD_TABLE(JSActivation) };
-
-void JSActivation::visitChildren(JSCell* cell, SlotVisitor& visitor)
-{
- JSActivation* thisObject = jsCast<JSActivation*>(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->isTornOff())
- return;
-
- for (int i = 0; i < thisObject->symbolTable()->captureCount(); ++i)
- visitor.append(&thisObject->storage()[i]);
-}
-
-inline bool JSActivation::symbolTableGet(PropertyName propertyName, PropertySlot& slot)
-{
- SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.uid());
- if (entry.isNull())
- return false;
-
- // Defend against the inspector asking for a var after it has been optimized out.
- if (isTornOff() && !isValid(entry))
- return false;
-
- slot.setValue(this, DontEnum, registerAt(entry.getIndex()).get());
- return true;
-}
-
-inline bool JSActivation::symbolTableGet(PropertyName propertyName, PropertyDescriptor& descriptor)
-{
- SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.uid());
- if (entry.isNull())
- return false;
-
- // Defend against the inspector asking for a var after it has been optimized out.
- if (isTornOff() && !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& vm = exec->vm();
- ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
-
- WriteBarrierBase<Unknown>* reg;
- {
- GCSafeConcurrentJITLocker locker(symbolTable()->m_lock, exec->vm().heap);
- SymbolTable::Map::iterator iter = symbolTable()->find(locker, propertyName.uid());
- if (iter == symbolTable()->end(locker))
- return false;
- ASSERT(!iter->value.isNull());
- if (iter->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() && !isValid(iter->value))
- return false;
- if (VariableWatchpointSet* set = iter->value.watchpointSet())
- set->invalidate(VariableWriteFireDetail(this, propertyName)); // Don't mess around - if we had found this statically, we would have invcalidated it.
- reg = &registerAt(iter->value.getIndex());
- }
- reg->set(vm, this, value);
- return true;
-}
-
-void JSActivation::getOwnNonIndexPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode)
-{
- JSActivation* thisObject = jsCast<JSActivation*>(object);
-
- CallFrame* callFrame = CallFrame::create(reinterpret_cast<Register*>(thisObject->m_registers));
- if (shouldIncludeDontEnumProperties(mode) && !thisObject->isTornOff() && (callFrame->codeBlock()->usesArguments() || callFrame->codeBlock()->usesEval()))
- propertyNames.add(exec->propertyNames().arguments);
-
- {
- ConcurrentJITLocker locker(thisObject->symbolTable()->m_lock);
- SymbolTable::Map::iterator end = thisObject->symbolTable()->end(locker);
- for (SymbolTable::Map::iterator it = thisObject->symbolTable()->begin(locker); it != end; ++it) {
- if (it->value.getAttributes() & DontEnum && !shouldIncludeDontEnumProperties(mode))
- continue;
- if (!thisObject->isValid(it->value))
- continue;
- propertyNames.add(Identifier(exec, it->key.get()));
- }
- }
- // Skip the JSEnvironmentRecord implementation of getOwnNonIndexPropertyNames
- JSObject::getOwnNonIndexPropertyNames(thisObject, exec, propertyNames, mode);
-}
-
-inline bool JSActivation::symbolTablePutWithAttributes(VM& vm, PropertyName propertyName, JSValue value, unsigned attributes)
-{
- ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
-
- WriteBarrierBase<Unknown>* reg;
- {
- ConcurrentJITLocker locker(symbolTable()->m_lock);
- SymbolTable::Map::iterator iter = symbolTable()->find(locker, propertyName.uid());
- if (iter == symbolTable()->end(locker))
- return false;
- SymbolTableEntry& entry = iter->value;
- ASSERT(!entry.isNull());
- if (!isValid(entry))
- return false;
-
- entry.setAttributes(attributes);
- reg = &registerAt(entry.getIndex());
- }
- reg->set(vm, this, value);
- return true;
-}
-
-bool JSActivation::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot& slot)
-{
- JSActivation* thisObject = jsCast<JSActivation*>(object);
-
- if (propertyName == exec->propertyNames().arguments) {
- // Defend against the inspector asking for the arguments object after it has been optimized out.
- CallFrame* callFrame = CallFrame::create(reinterpret_cast<Register*>(thisObject->m_registers));
- if (!thisObject->isTornOff() && (callFrame->codeBlock()->usesArguments() || callFrame->codeBlock()->usesEval())) {
- slot.setCustom(thisObject, DontEnum, argumentsGetter);
- return true;
- }
- }
-
- if (thisObject->symbolTableGet(propertyName, slot))
- return true;
-
- unsigned attributes;
- if (JSValue value = thisObject->getDirect(exec->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->hasGetterSetterProperties());
- ASSERT(thisObject->prototype().isNull());
- return false;
-}
-
-void JSActivation::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot)
-{
- JSActivation* thisObject = jsCast<JSActivation*>(cell);
- ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(thisObject));
-
- if (thisObject->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->hasGetterSetterProperties());
- thisObject->putOwnDataProperty(exec->vm(), propertyName, value, slot);
-}
-
-bool JSActivation::deleteProperty(JSCell* cell, ExecState* exec, PropertyName propertyName)
-{
- if (propertyName == exec->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->globalThisValue();
-}
-
-EncodedJSValue JSActivation::argumentsGetter(ExecState*, JSObject* slotBase, EncodedJSValue, PropertyName)
-{
- JSActivation* activation = jsCast<JSActivation*>(slotBase);
- CallFrame* callFrame = CallFrame::create(reinterpret_cast<Register*>(activation->m_registers));
- ASSERT(!activation->isTornOff() && (callFrame->codeBlock()->usesArguments() || callFrame->codeBlock()->usesEval()));
- if (activation->isTornOff() || !(callFrame->codeBlock()->usesArguments() || callFrame->codeBlock()->usesEval()))
- return JSValue::encode(jsUndefined());
-
- VirtualRegister argumentsRegister = callFrame->codeBlock()->argumentsRegister();
- if (JSValue arguments = callFrame->uncheckedR(argumentsRegister.offset()).jsValue())
- return JSValue::encode(arguments);
- int realArgumentsRegister = unmodifiedArgumentsRegister(argumentsRegister).offset();
-
- JSValue arguments = JSValue(Arguments::create(callFrame->vm(), callFrame));
- callFrame->uncheckedR(argumentsRegister.offset()) = arguments;
- callFrame->uncheckedR(realArgumentsRegister) = arguments;
-
- ASSERT(callFrame->uncheckedR(realArgumentsRegister).jsValue().inherits(Arguments::info()));
- return JSValue::encode(callFrame->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. ("Apple") 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 "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE 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 "CodeBlock.h"
-#include "CopiedSpaceInlines.h"
-#include "JSEnvironmentRecord.h"
-#include "Nodes.h"
-#include "SymbolTable.h"
-
-namespace JSC {
-
-class Register;
-
-class JSActivation : public JSEnvironmentRecord {
-private:
- JSActivation(VM&, CallFrame*, Register*, SymbolTable*);
-
-public:
- typedef JSEnvironmentRecord Base;
-
- static JSActivation* create(VM& vm, CallFrame* callFrame, Register* registers, CodeBlock* codeBlock)
- {
- SymbolTable* symbolTable = codeBlock->symbolTable();
- ASSERT(codeBlock->codeType() == FunctionCode);
- JSActivation* activation = new (
- NotNull,
- allocateCell<JSActivation>(
- vm.heap,
- allocationSize(symbolTable)
- )
- ) JSActivation(vm, callFrame, registers, symbolTable);
- activation->finishCreation(vm);
- return activation;
- }
-
- static JSActivation* create(VM& vm, CallFrame* callFrame, CodeBlock* codeBlock)
- {
- return create(vm, callFrame, callFrame->registers() + codeBlock->framePointerOffsetToGetActivationRegisters(), codeBlock);
- }
-
- static void visitChildren(JSCell*, SlotVisitor&);
-
- static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&);
- static void getOwnNonIndexPropertyNames(JSObject*, ExecState*, PropertyNameArray&, EnumerationMode);
-
- static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&);
-
- static bool deleteProperty(JSCell*, ExecState*, PropertyName);
-
- static JSValue toThis(JSCell*, ExecState*, ECMAMode);
-
- void tearOff(VM&);
-
- DECLARE_INFO;
-
- static Structure* createStructure(VM& vm, JSGlobalObject* globalObject) { return Structure::create(vm, globalObject, jsNull(), TypeInfo(ActivationObjectType, StructureFlags), info()); }
-
- WriteBarrierBase<Unknown>& registerAt(int) const;
- bool isValidIndex(int) const;
- bool isValid(const SymbolTableEntry&) const;
- bool isTornOff();
- int registersOffset();
- static int registersOffset(SymbolTable*);
-
-protected:
- static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesGetPropertyNames | Base::StructureFlags;
-
-private:
- bool symbolTableGet(PropertyName, PropertySlot&);
- bool symbolTableGet(PropertyName, PropertyDescriptor&);
- bool symbolTableGet(PropertyName, PropertySlot&, bool& slotIsWriteable);
- bool symbolTablePut(ExecState*, PropertyName, JSValue, bool shouldThrow);
- bool symbolTablePutWithAttributes(VM&, PropertyName, JSValue, unsigned attributes);
-
- static EncodedJSValue argumentsGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
-
- static size_t allocationSize(SymbolTable*);
- static size_t storageOffset();
-
- WriteBarrier<Unknown>* storage(); // captureCount() number of registers.
-};
-
-extern int activationCount;
-extern int allTheThingsCount;
-
-inline JSActivation::JSActivation(VM& vm, CallFrame* callFrame, Register* registers, SymbolTable* symbolTable)
- : Base(
- vm,
- callFrame->lexicalGlobalObject()->activationStructure(),
- registers,
- callFrame->scope(),
- symbolTable)
-{
- WriteBarrier<Unknown>* storage = this->storage();
- size_t captureCount = symbolTable->captureCount();
- for (size_t i = 0; i < captureCount; ++i)
- new (NotNull, &storage[i]) WriteBarrier<Unknown>;
-}
-
-JSActivation* asActivation(JSValue);
-
-inline JSActivation* asActivation(JSValue value)
-{
- ASSERT(asObject(value)->inherits(JSActivation::info()));
- return jsCast<JSActivation*>(asObject(value));
-}
-
-ALWAYS_INLINE JSActivation* Register::activation() const
-{
- return asActivation(jsValue());
-}
-
-inline int JSActivation::registersOffset(SymbolTable* symbolTable)
-{
- return storageOffset() + ((symbolTable->captureCount() - symbolTable->captureStart() - 1) * sizeof(WriteBarrier<Unknown>));
-}
-
-inline void JSActivation::tearOff(VM& vm)
-{
- ASSERT(!isTornOff());
-
- WriteBarrierBase<Unknown>* dst = reinterpret_cast_ptr<WriteBarrierBase<Unknown>*>(
- reinterpret_cast<char*>(this) + registersOffset(symbolTable()));
- WriteBarrierBase<Unknown>* src = m_registers;
-
- int captureEnd = symbolTable()->captureEnd();
- for (int i = symbolTable()->captureStart(); i > 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<WriteBarrierBase<Unknown>*>(
- reinterpret_cast<char*>(this) + registersOffset(symbolTable()));
-}
-
-inline size_t JSActivation::storageOffset()
-{
- return WTF::roundUpToMultipleOf<sizeof(WriteBarrier<Unknown>)>(sizeof(JSActivation));
-}
-
-inline WriteBarrier<Unknown>* JSActivation::storage()
-{
- return reinterpret_cast_ptr<WriteBarrier<Unknown>*>(
- reinterpret_cast<char*>(this) + storageOffset());
-}
-
-inline size_t JSActivation::allocationSize(SymbolTable* symbolTable)
-{
- size_t objectSizeInBytes = WTF::roundUpToMultipleOf<sizeof(WriteBarrier<Unknown>)>(sizeof(JSActivation));
- size_t storageSizeInBytes = symbolTable->captureCount() * sizeof(WriteBarrier<Unknown>);
- return objectSizeInBytes + storageSizeInBytes;
-}
-
-inline bool JSActivation::isValidIndex(int index) const
-{
- if (index > symbolTable()->captureStart())
- return false;
- if (index <= symbolTable()->captureEnd())
- return false;
- return true;
-}
-
-inline bool JSActivation::isValid(const SymbolTableEntry& entry) const
-{
- return isValidIndex(entry.getIndex());
-}
-
-inline WriteBarrierBase<Unknown>& 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 "HeapIterationScope.h"
</span><span class="cx"> #include "Interpreter.h"
</span><span class="cx"> #include "JSAPIWrapperObject.h"
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSArgumentsIterator.h"
</span><span class="cx"> #include "JSArrayBuffer.h"
</span><span class="cx"> #include "JSArrayBufferConstructor.h"
</span><span class="lines">@@ -74,6 +73,7 @@
</span><span class="cx"> #include "JSGenericTypedArrayViewInlines.h"
</span><span class="cx"> #include "JSGenericTypedArrayViewPrototypeInlines.h"
</span><span class="cx"> #include "JSGlobalObjectFunctions.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSLock.h"
</span><span class="cx"> #include "JSMap.h"
</span><span class="cx"> #include "JSMapIterator.h"
</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(&thisObject->m_debuggerScopeStructure);
</span><span class="cx"> visitor.append(&thisObject->m_withScopeStructure);
</span><span class="cx"> visitor.append(&thisObject->m_strictEvalActivationStructure);
</span><del>- visitor.append(&thisObject->m_activationStructure);
</del><ins>+ visitor.append(&thisObject->m_lexicalEnvironmentStructure);
</ins><span class="cx"> visitor.append(&thisObject->m_nameScopeStructure);
</span><span class="cx"> visitor.append(&thisObject->m_argumentsStructure);
</span><span class="cx"> for (unsigned i = 0; i < 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<Structure> m_debuggerScopeStructure;
</span><span class="cx"> WriteBarrier<Structure> m_withScopeStructure;
</span><span class="cx"> WriteBarrier<Structure> m_strictEvalActivationStructure;
</span><del>- WriteBarrier<Structure> m_activationStructure;
</del><ins>+ WriteBarrier<Structure> m_lexicalEnvironmentStructure;
</ins><span class="cx"> WriteBarrier<Structure> m_nameScopeStructure;
</span><span class="cx"> WriteBarrier<Structure> 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. ("Apple") 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 "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE 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 "config.h"
+#include "JSLexicalEnvironment.h"
+
+#include "Arguments.h"
+#include "Interpreter.h"
+#include "JSFunction.h"
+#include "JSCInlines.h"
+
+using namespace std;
+
+namespace JSC {
+
+const ClassInfo JSLexicalEnvironment::s_info = { "JSLexicalEnvironment", &Base::s_info, 0, CREATE_METHOD_TABLE(JSLexicalEnvironment) };
+
+void JSLexicalEnvironment::visitChildren(JSCell* cell, SlotVisitor& visitor)
+{
+ JSLexicalEnvironment* thisObject = jsCast<JSLexicalEnvironment*>(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->isTornOff())
+ return;
+
+ for (int i = 0; i < thisObject->symbolTable()->captureCount(); ++i)
+ visitor.append(&thisObject->storage()[i]);
+}
+
+inline bool JSLexicalEnvironment::symbolTableGet(PropertyName propertyName, PropertySlot& slot)
+{
+ SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.uid());
+ if (entry.isNull())
+ return false;
+
+ // Defend against the inspector asking for a var after it has been optimized out.
+ if (isTornOff() && !isValid(entry))
+ return false;
+
+ slot.setValue(this, DontEnum, registerAt(entry.getIndex()).get());
+ return true;
+}
+
+inline bool JSLexicalEnvironment::symbolTableGet(PropertyName propertyName, PropertyDescriptor& descriptor)
+{
+ SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.uid());
+ if (entry.isNull())
+ return false;
+
+ // Defend against the inspector asking for a var after it has been optimized out.
+ if (isTornOff() && !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& vm = exec->vm();
+ ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
+
+ WriteBarrierBase<Unknown>* reg;
+ {
+ GCSafeConcurrentJITLocker locker(symbolTable()->m_lock, exec->vm().heap);
+ SymbolTable::Map::iterator iter = symbolTable()->find(locker, propertyName.uid());
+ if (iter == symbolTable()->end(locker))
+ return false;
+ ASSERT(!iter->value.isNull());
+ if (iter->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() && !isValid(iter->value))
+ return false;
+ if (VariableWatchpointSet* set = iter->value.watchpointSet())
+ set->invalidate(VariableWriteFireDetail(this, propertyName)); // Don't mess around - if we had found this statically, we would have invcalidated it.
+ reg = &registerAt(iter->value.getIndex());
+ }
+ reg->set(vm, this, value);
+ return true;
+}
+
+void JSLexicalEnvironment::getOwnNonIndexPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode)
+{
+ JSLexicalEnvironment* thisObject = jsCast<JSLexicalEnvironment*>(object);
+
+ CallFrame* callFrame = CallFrame::create(reinterpret_cast<Register*>(thisObject->m_registers));
+ if (shouldIncludeDontEnumProperties(mode) && !thisObject->isTornOff() && (callFrame->codeBlock()->usesArguments() || callFrame->codeBlock()->usesEval()))
+ propertyNames.add(exec->propertyNames().arguments);
+
+ {
+ ConcurrentJITLocker locker(thisObject->symbolTable()->m_lock);
+ SymbolTable::Map::iterator end = thisObject->symbolTable()->end(locker);
+ for (SymbolTable::Map::iterator it = thisObject->symbolTable()->begin(locker); it != end; ++it) {
+ if (it->value.getAttributes() & DontEnum && !shouldIncludeDontEnumProperties(mode))
+ continue;
+ if (!thisObject->isValid(it->value))
+ continue;
+ propertyNames.add(Identifier(exec, it->key.get()));
+ }
+ }
+ // Skip the JSEnvironmentRecord implementation of getOwnNonIndexPropertyNames
+ JSObject::getOwnNonIndexPropertyNames(thisObject, exec, propertyNames, mode);
+}
+
+inline bool JSLexicalEnvironment::symbolTablePutWithAttributes(VM& vm, PropertyName propertyName, JSValue value, unsigned attributes)
+{
+ ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(this));
+
+ WriteBarrierBase<Unknown>* reg;
+ {
+ ConcurrentJITLocker locker(symbolTable()->m_lock);
+ SymbolTable::Map::iterator iter = symbolTable()->find(locker, propertyName.uid());
+ if (iter == symbolTable()->end(locker))
+ return false;
+ SymbolTableEntry& entry = iter->value;
+ ASSERT(!entry.isNull());
+ if (!isValid(entry))
+ return false;
+
+ entry.setAttributes(attributes);
+ reg = &registerAt(entry.getIndex());
+ }
+ reg->set(vm, this, value);
+ return true;
+}
+
+bool JSLexicalEnvironment::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot& slot)
+{
+ JSLexicalEnvironment* thisObject = jsCast<JSLexicalEnvironment*>(object);
+
+ if (propertyName == exec->propertyNames().arguments) {
+ // Defend against the inspector asking for the arguments object after it has been optimized out.
+ CallFrame* callFrame = CallFrame::create(reinterpret_cast<Register*>(thisObject->m_registers));
+ if (!thisObject->isTornOff() && (callFrame->codeBlock()->usesArguments() || callFrame->codeBlock()->usesEval())) {
+ slot.setCustom(thisObject, DontEnum, argumentsGetter);
+ return true;
+ }
+ }
+
+ if (thisObject->symbolTableGet(propertyName, slot))
+ return true;
+
+ unsigned attributes;
+ if (JSValue value = thisObject->getDirect(exec->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->hasGetterSetterProperties());
+ ASSERT(thisObject->prototype().isNull());
+ return false;
+}
+
+void JSLexicalEnvironment::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot)
+{
+ JSLexicalEnvironment* thisObject = jsCast<JSLexicalEnvironment*>(cell);
+ ASSERT(!Heap::heap(value) || Heap::heap(value) == Heap::heap(thisObject));
+
+ if (thisObject->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->hasGetterSetterProperties());
+ thisObject->putOwnDataProperty(exec->vm(), propertyName, value, slot);
+}
+
+bool JSLexicalEnvironment::deleteProperty(JSCell* cell, ExecState* exec, PropertyName propertyName)
+{
+ if (propertyName == exec->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->globalThisValue();
+}
+
+EncodedJSValue JSLexicalEnvironment::argumentsGetter(ExecState*, JSObject* slotBase, EncodedJSValue, PropertyName)
+{
+ JSLexicalEnvironment* lexicalEnvironment = jsCast<JSLexicalEnvironment*>(slotBase);
+ CallFrame* callFrame = CallFrame::create(reinterpret_cast<Register*>(lexicalEnvironment->m_registers));
+ ASSERT(!lexicalEnvironment->isTornOff() && (callFrame->codeBlock()->usesArguments() || callFrame->codeBlock()->usesEval()));
+ if (lexicalEnvironment->isTornOff() || !(callFrame->codeBlock()->usesArguments() || callFrame->codeBlock()->usesEval()))
+ return JSValue::encode(jsUndefined());
+
+ VirtualRegister argumentsRegister = callFrame->codeBlock()->argumentsRegister();
+ if (JSValue arguments = callFrame->uncheckedR(argumentsRegister.offset()).jsValue())
+ return JSValue::encode(arguments);
+ int realArgumentsRegister = unmodifiedArgumentsRegister(argumentsRegister).offset();
+
+ JSValue arguments = JSValue(Arguments::create(callFrame->vm(), callFrame));
+ callFrame->uncheckedR(argumentsRegister.offset()) = arguments;
+ callFrame->uncheckedR(realArgumentsRegister) = arguments;
+
+ ASSERT(callFrame->uncheckedR(realArgumentsRegister).jsValue().inherits(Arguments::info()));
+ return JSValue::encode(callFrame->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. ("Apple") 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 "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE 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 "CodeBlock.h"
+#include "CopiedSpaceInlines.h"
+#include "JSEnvironmentRecord.h"
+#include "Nodes.h"
+#include "SymbolTable.h"
+
+namespace JSC {
+
+class Register;
+
+class JSLexicalEnvironment : public JSEnvironmentRecord {
+private:
+ JSLexicalEnvironment(VM&, CallFrame*, Register*, SymbolTable*);
+
+public:
+ typedef JSEnvironmentRecord Base;
+
+ static JSLexicalEnvironment* create(VM& vm, CallFrame* callFrame, Register* registers, CodeBlock* codeBlock)
+ {
+ SymbolTable* symbolTable = codeBlock->symbolTable();
+ ASSERT(codeBlock->codeType() == FunctionCode);
+ JSLexicalEnvironment* lexicalEnvironment = new (
+ NotNull,
+ allocateCell<JSLexicalEnvironment>(
+ vm.heap,
+ allocationSize(symbolTable)
+ )
+ ) JSLexicalEnvironment(vm, callFrame, registers, symbolTable);
+ lexicalEnvironment->finishCreation(vm);
+ return lexicalEnvironment;
+ }
+
+ static JSLexicalEnvironment* create(VM& vm, CallFrame* callFrame, CodeBlock* codeBlock)
+ {
+ return create(vm, callFrame, callFrame->registers() + codeBlock->framePointerOffsetToGetActivationRegisters(), codeBlock);
+ }
+
+ static void visitChildren(JSCell*, SlotVisitor&);
+
+ static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&);
+ static void getOwnNonIndexPropertyNames(JSObject*, ExecState*, PropertyNameArray&, EnumerationMode);
+
+ static void put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&);
+
+ static bool deleteProperty(JSCell*, ExecState*, PropertyName);
+
+ static JSValue toThis(JSCell*, ExecState*, ECMAMode);
+
+ void tearOff(VM&);
+
+ DECLARE_INFO;
+
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject) { return Structure::create(vm, globalObject, jsNull(), TypeInfo(ActivationObjectType, StructureFlags), info()); }
+
+ WriteBarrierBase<Unknown>& registerAt(int) const;
+ bool isValidIndex(int) const;
+ bool isValid(const SymbolTableEntry&) const;
+ bool isTornOff();
+ int registersOffset();
+ static int registersOffset(SymbolTable*);
+
+protected:
+ static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesGetPropertyNames | Base::StructureFlags;
+
+private:
+ bool symbolTableGet(PropertyName, PropertySlot&);
+ bool symbolTableGet(PropertyName, PropertyDescriptor&);
+ bool symbolTableGet(PropertyName, PropertySlot&, bool& slotIsWriteable);
+ bool symbolTablePut(ExecState*, PropertyName, JSValue, bool shouldThrow);
+ bool symbolTablePutWithAttributes(VM&, PropertyName, JSValue, unsigned attributes);
+
+ static EncodedJSValue argumentsGetter(ExecState*, JSObject*, EncodedJSValue, PropertyName);
+
+ static size_t allocationSize(SymbolTable*);
+ static size_t storageOffset();
+
+ WriteBarrier<Unknown>* storage(); // captureCount() number of registers.
+};
+
+extern int activationCount;
+extern int allTheThingsCount;
+
+inline JSLexicalEnvironment::JSLexicalEnvironment(VM& vm, CallFrame* callFrame, Register* registers, SymbolTable* symbolTable)
+ : Base(
+ vm,
+ callFrame->lexicalGlobalObject()->activationStructure(),
+ registers,
+ callFrame->scope(),
+ symbolTable)
+{
+ WriteBarrier<Unknown>* storage = this->storage();
+ size_t captureCount = symbolTable->captureCount();
+ for (size_t i = 0; i < captureCount; ++i)
+ new (NotNull, &storage[i]) WriteBarrier<Unknown>;
+}
+
+JSLexicalEnvironment* asActivation(JSValue);
+
+inline JSLexicalEnvironment* asActivation(JSValue value)
+{
+ ASSERT(asObject(value)->inherits(JSLexicalEnvironment::info()));
+ return jsCast<JSLexicalEnvironment*>(asObject(value));
+}
+
+ALWAYS_INLINE JSLexicalEnvironment* Register::lexicalEnvironment() const
+{
+ return asActivation(jsValue());
+}
+
+inline int JSLexicalEnvironment::registersOffset(SymbolTable* symbolTable)
+{
+ return storageOffset() + ((symbolTable->captureCount() - symbolTable->captureStart() - 1) * sizeof(WriteBarrier<Unknown>));
+}
+
+inline void JSLexicalEnvironment::tearOff(VM& vm)
+{
+ ASSERT(!isTornOff());
+
+ WriteBarrierBase<Unknown>* dst = reinterpret_cast_ptr<WriteBarrierBase<Unknown>*>(
+ reinterpret_cast<char*>(this) + registersOffset(symbolTable()));
+ WriteBarrierBase<Unknown>* src = m_registers;
+
+ int captureEnd = symbolTable()->captureEnd();
+ for (int i = symbolTable()->captureStart(); i > 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<WriteBarrierBase<Unknown>*>(
+ reinterpret_cast<char*>(this) + registersOffset(symbolTable()));
+}
+
+inline size_t JSLexicalEnvironment::storageOffset()
+{
+ return WTF::roundUpToMultipleOf<sizeof(WriteBarrier<Unknown>)>(sizeof(JSLexicalEnvironment));
+}
+
+inline WriteBarrier<Unknown>* JSLexicalEnvironment::storage()
+{
+ return reinterpret_cast_ptr<WriteBarrier<Unknown>*>(
+ reinterpret_cast<char*>(this) + storageOffset());
+}
+
+inline size_t JSLexicalEnvironment::allocationSize(SymbolTable* symbolTable)
+{
+ size_t objectSizeInBytes = WTF::roundUpToMultipleOf<sizeof(WriteBarrier<Unknown>)>(sizeof(JSLexicalEnvironment));
+ size_t storageSizeInBytes = symbolTable->captureCount() * sizeof(WriteBarrier<Unknown>);
+ return objectSizeInBytes + storageSizeInBytes;
+}
+
+inline bool JSLexicalEnvironment::isValidIndex(int index) const
+{
+ if (index > symbolTable()->captureStart())
+ return false;
+ if (index <= symbolTable()->captureEnd())
+ return false;
+ return true;
+}
+
+inline bool JSLexicalEnvironment::isValid(const SymbolTableEntry& entry) const
+{
+ return isValidIndex(entry.getIndex());
+}
+
+inline WriteBarrierBase<Unknown>& 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&, PropertyName, JSValue, PutPropertySlot&);
</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 "config.h"
</span><span class="cx"> #include "JSScope.h"
</span><span class="cx">
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSGlobalObject.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSNameScope.h"
</span><span class="cx"> #include "JSWithScope.h"
</span><span class="cx"> #include "JSCInlines.h"
</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& ident, GetOrPut getOrPut, size_t depth, bool& needsVarInjectionChecks, ResolveOp& op)
</span><span class="cx"> {
</span><del>- if (JSActivation* activation = jsDynamicCast<JSActivation*>(scope)) {
</del><ins>+ if (JSLexicalEnvironment* lexicalEnvironment = jsDynamicCast<JSLexicalEnvironment*>(scope)) {
</ins><span class="cx"> if (ident == exec->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->symbolTable()->get(ident.impl());
</del><ins>+ SymbolTableEntry entry = lexicalEnvironment->symbolTable()->get(ident.impl());
</ins><span class="cx"> if (entry.isReadOnly() && 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->symbolTable()->usesNonStrictEval())
</del><ins>+ if (lexicalEnvironment->symbolTable()->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 "config.h"
</span><span class="cx"> #include "JSSymbolTableObject.h"
</span><span class="cx">
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSGlobalObject.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSNameScope.h"
</span><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "PropertyNameArray.h"
</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<StrictEvalActivation>(*exec->heap())) StrictEvalActivation(exec);
- activation->finishCreation(exec->vm());
- return activation;
</del><ins>+ StrictEvalActivation* lexicalEnvironment = new (NotNull, allocateCell<StrictEvalActivation>(*exec->heap())) StrictEvalActivation(exec);
+ lexicalEnvironment->finishCreation(exec->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 "Interpreter.h"
</span><span class="cx"> #include "JITCode.h"
</span><span class="cx"> #include "JSAPIValueWrapper.h"
</span><del>-#include "JSActivation.h"
</del><span class="cx"> #include "JSArray.h"
</span><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "JSFunction.h"
</span><span class="cx"> #include "JSGlobalObjectFunctions.h"
</span><ins>+#include "JSLexicalEnvironment.h"
</ins><span class="cx"> #include "JSLock.h"
</span><span class="cx"> #include "JSNameScope.h"
</span><span class="cx"> #include "JSNotAnObject.h"
</span></span></pre>
</div>
</div>
</body>
</html>