<!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>[195862] 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/195862">195862</a></dd>
<dt>Author</dt> <dd>sbarati@apple.com</dd>
<dt>Date</dt> <dd>2016-01-29 16:01:48 -0800 (Fri, 29 Jan 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Remove our notion of having a single activation register
https://bugs.webkit.org/show_bug.cgi?id=153673
Reviewed by Filip Pizlo.
We have many functions lurking around where we think a function
might only have one activation register. This is clearly wrong
now that ES6 has block scoping. This patch removes this false notion.
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::CodeBlock):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::scopeRegister):
(JSC::CodeBlock::codeType):
(JSC::CodeBlock::setActivationRegister): Deleted.
(JSC::CodeBlock::activationRegister): Deleted.
(JSC::CodeBlock::uncheckedActivationRegister): Deleted.
(JSC::CodeBlock::needsActivation): Deleted.
* bytecode/ExecutableInfo.h:
(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::usesEval):
(JSC::ExecutableInfo::isStrictMode):
(JSC::ExecutableInfo::isConstructor):
(JSC::ExecutableInfo::isClassContext):
(JSC::ExecutableInfo::needsActivation): Deleted.
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
* bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::isArrowFunctionContext):
(JSC::UnlinkedCodeBlock::isClassContext):
(JSC::UnlinkedCodeBlock::setThisRegister):
(JSC::UnlinkedCodeBlock::setScopeRegister):
(JSC::UnlinkedCodeBlock::usesGlobalObject):
(JSC::UnlinkedCodeBlock::setGlobalObjectRegister):
(JSC::UnlinkedCodeBlock::thisRegister):
(JSC::UnlinkedCodeBlock::scopeRegister):
(JSC::UnlinkedCodeBlock::addPropertyAccessInstruction):
(JSC::UnlinkedCodeBlock::needsFullScopeChain): Deleted.
(JSC::UnlinkedCodeBlock::setActivationRegister): Deleted.
(JSC::UnlinkedCodeBlock::activationRegister): Deleted.
(JSC::UnlinkedCodeBlock::hasActivationRegister): Deleted.
* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::generateUnlinkedFunctionCodeBlock):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeVarLexicalEnvironment):
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::destinationForAssignResult):
(JSC::BytecodeGenerator::leftHandSideNeedsCopy):
(JSC::BytecodeGenerator::emitNodeForLeftHandSide):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::inliningCost):
(JSC::DFG::ByteCodeParser::parseCodeBlock):
* dfg/DFGGraph.h:
(JSC::DFG::Graph::hasExitSite):
(JSC::DFG::Graph::activationRegister): Deleted.
(JSC::DFG::Graph::uncheckedActivationRegister): Deleted.
(JSC::DFG::Graph::machineActivationRegister): Deleted.
(JSC::DFG::Graph::uncheckedMachineActivationRegister): Deleted.
* dfg/DFGStackLayoutPhase.cpp:
(JSC::DFG::StackLayoutPhase::run):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::callSiteIndex):
(JSC::CallFrame::stack):
(JSC::CallFrame::callerFrame):
(JSC::CallFrame::friendlyFunctionName):
(JSC::CallFrame::hasActivation): Deleted.
(JSC::CallFrame::uncheckedActivation): Deleted.
(JSC::CallFrame::lexicalEnvironment): Deleted.
(JSC::CallFrame::lexicalEnvironmentOrNullptr): Deleted.
(JSC::CallFrame::setActivation): Deleted.
* interpreter/CallFrame.h:
(JSC::ExecState::scope):
(JSC::ExecState::setCallerFrame):
(JSC::ExecState::setScope):
(JSC::ExecState::init):
* interpreter/Register.h:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* runtime/Executable.h:
(JSC::ScriptExecutable::usesEval):
(JSC::ScriptExecutable::usesArguments):
(JSC::ScriptExecutable::isArrowFunctionContext):
(JSC::ScriptExecutable::isStrictMode):
(JSC::ScriptExecutable::derivedContextType):
(JSC::ScriptExecutable::needsActivation): Deleted.
* runtime/JSLexicalEnvironment.h:
(JSC::asActivation):
(JSC::Register::lexicalEnvironment): Deleted.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</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="#trunkSourceJavaScriptCorebytecodeExecutableInfoh">trunk/Source/JavaScriptCore/bytecode/ExecutableInfo.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockh">trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutablecpp">trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp">trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh">trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp">trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGGraphh">trunk/Source/JavaScriptCore/dfg/DFGGraph.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGStackLayoutPhasecpp">trunk/Source/JavaScriptCore/dfg/DFGStackLayoutPhase.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="#trunkSourceJavaScriptCoreinterpreterRegisterh">trunk/Source/JavaScriptCore/interpreter/Register.h</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathscpp">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutableh">trunk/Source/JavaScriptCore/runtime/Executable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSLexicalEnvironmenth">trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -1,3 +1,96 @@
</span><ins>+2016-01-29 Saam barati <sbarati@apple.com>
+
+ Remove our notion of having a single activation register
+ https://bugs.webkit.org/show_bug.cgi?id=153673
+
+ Reviewed by Filip Pizlo.
+
+ We have many functions lurking around where we think a function
+ might only have one activation register. This is clearly wrong
+ now that ES6 has block scoping. This patch removes this false notion.
+
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::dumpBytecode):
+ (JSC::CodeBlock::CodeBlock):
+ * bytecode/CodeBlock.h:
+ (JSC::CodeBlock::scopeRegister):
+ (JSC::CodeBlock::codeType):
+ (JSC::CodeBlock::setActivationRegister): Deleted.
+ (JSC::CodeBlock::activationRegister): Deleted.
+ (JSC::CodeBlock::uncheckedActivationRegister): Deleted.
+ (JSC::CodeBlock::needsActivation): Deleted.
+ * bytecode/ExecutableInfo.h:
+ (JSC::ExecutableInfo::ExecutableInfo):
+ (JSC::ExecutableInfo::usesEval):
+ (JSC::ExecutableInfo::isStrictMode):
+ (JSC::ExecutableInfo::isConstructor):
+ (JSC::ExecutableInfo::isClassContext):
+ (JSC::ExecutableInfo::needsActivation): Deleted.
+ * bytecode/UnlinkedCodeBlock.cpp:
+ (JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
+ * bytecode/UnlinkedCodeBlock.h:
+ (JSC::UnlinkedCodeBlock::isArrowFunctionContext):
+ (JSC::UnlinkedCodeBlock::isClassContext):
+ (JSC::UnlinkedCodeBlock::setThisRegister):
+ (JSC::UnlinkedCodeBlock::setScopeRegister):
+ (JSC::UnlinkedCodeBlock::usesGlobalObject):
+ (JSC::UnlinkedCodeBlock::setGlobalObjectRegister):
+ (JSC::UnlinkedCodeBlock::thisRegister):
+ (JSC::UnlinkedCodeBlock::scopeRegister):
+ (JSC::UnlinkedCodeBlock::addPropertyAccessInstruction):
+ (JSC::UnlinkedCodeBlock::needsFullScopeChain): Deleted.
+ (JSC::UnlinkedCodeBlock::setActivationRegister): Deleted.
+ (JSC::UnlinkedCodeBlock::activationRegister): Deleted.
+ (JSC::UnlinkedCodeBlock::hasActivationRegister): Deleted.
+ * bytecode/UnlinkedFunctionExecutable.cpp:
+ (JSC::generateUnlinkedFunctionCodeBlock):
+ * bytecompiler/BytecodeGenerator.cpp:
+ (JSC::BytecodeGenerator::BytecodeGenerator):
+ (JSC::BytecodeGenerator::initializeVarLexicalEnvironment):
+ * bytecompiler/BytecodeGenerator.h:
+ (JSC::BytecodeGenerator::destinationForAssignResult):
+ (JSC::BytecodeGenerator::leftHandSideNeedsCopy):
+ (JSC::BytecodeGenerator::emitNodeForLeftHandSide):
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::inliningCost):
+ (JSC::DFG::ByteCodeParser::parseCodeBlock):
+ * dfg/DFGGraph.h:
+ (JSC::DFG::Graph::hasExitSite):
+ (JSC::DFG::Graph::activationRegister): Deleted.
+ (JSC::DFG::Graph::uncheckedActivationRegister): Deleted.
+ (JSC::DFG::Graph::machineActivationRegister): Deleted.
+ (JSC::DFG::Graph::uncheckedMachineActivationRegister): Deleted.
+ * dfg/DFGStackLayoutPhase.cpp:
+ (JSC::DFG::StackLayoutPhase::run):
+ * interpreter/CallFrame.cpp:
+ (JSC::CallFrame::callSiteIndex):
+ (JSC::CallFrame::stack):
+ (JSC::CallFrame::callerFrame):
+ (JSC::CallFrame::friendlyFunctionName):
+ (JSC::CallFrame::hasActivation): Deleted.
+ (JSC::CallFrame::uncheckedActivation): Deleted.
+ (JSC::CallFrame::lexicalEnvironment): Deleted.
+ (JSC::CallFrame::lexicalEnvironmentOrNullptr): Deleted.
+ (JSC::CallFrame::setActivation): Deleted.
+ * interpreter/CallFrame.h:
+ (JSC::ExecState::scope):
+ (JSC::ExecState::setCallerFrame):
+ (JSC::ExecState::setScope):
+ (JSC::ExecState::init):
+ * interpreter/Register.h:
+ * llint/LLIntSlowPaths.cpp:
+ (JSC::LLInt::LLINT_SLOW_PATH_DECL):
+ * runtime/Executable.h:
+ (JSC::ScriptExecutable::usesEval):
+ (JSC::ScriptExecutable::usesArguments):
+ (JSC::ScriptExecutable::isArrowFunctionContext):
+ (JSC::ScriptExecutable::isStrictMode):
+ (JSC::ScriptExecutable::derivedContextType):
+ (JSC::ScriptExecutable::needsActivation): Deleted.
+ * runtime/JSLexicalEnvironment.h:
+ (JSC::asActivation):
+ (JSC::Register::lexicalEnvironment): Deleted.
+
</ins><span class="cx"> 2016-01-29 Filip Pizlo <fpizlo@apple.com>
</span><span class="cx">
</span><span class="cx"> Air:fixObviousSpills should handle floats and doubles
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -586,8 +586,6 @@
</span><span class="cx"> static_cast<unsigned long>(instructions().size()),
</span><span class="cx"> static_cast<unsigned long>(instructions().size() * sizeof(Instruction)),
</span><span class="cx"> m_numParameters, m_numCalleeLocals, m_numVars);
</span><del>- if (needsActivation() && codeType() == FunctionCode)
- out.printf("; lexical environment in r%d", activationRegister().offset());
</del><span class="cx"> out.printf("\n");
</span><span class="cx">
</span><span class="cx"> StubInfoMap stubInfos;
</span><span class="lines">@@ -1750,7 +1748,6 @@
</span><span class="cx"> , m_hasBeenCompiledWithFTL(false)
</span><span class="cx"> , m_isConstructor(other.m_isConstructor)
</span><span class="cx"> , m_isStrictMode(other.m_isStrictMode)
</span><del>- , m_needsActivation(other.m_needsActivation)
</del><span class="cx"> , m_codeType(other.m_codeType)
</span><span class="cx"> , m_unlinkedCode(*other.m_vm, this, other.m_unlinkedCode.get())
</span><span class="cx"> , m_hasDebuggerStatement(false)
</span><span class="lines">@@ -1761,7 +1758,6 @@
</span><span class="cx"> , m_instructions(other.m_instructions)
</span><span class="cx"> , m_thisRegister(other.m_thisRegister)
</span><span class="cx"> , m_scopeRegister(other.m_scopeRegister)
</span><del>- , m_lexicalEnvironmentRegister(other.m_lexicalEnvironmentRegister)
</del><span class="cx"> , m_hash(other.m_hash)
</span><span class="cx"> , m_source(other.m_source)
</span><span class="cx"> , m_sourceOffset(other.m_sourceOffset)
</span><span class="lines">@@ -1817,7 +1813,6 @@
</span><span class="cx"> , m_hasBeenCompiledWithFTL(false)
</span><span class="cx"> , m_isConstructor(unlinkedCodeBlock->isConstructor())
</span><span class="cx"> , m_isStrictMode(unlinkedCodeBlock->isStrictMode())
</span><del>- , m_needsActivation(unlinkedCodeBlock->hasActivationRegister() && unlinkedCodeBlock->codeType() == FunctionCode)
</del><span class="cx"> , m_codeType(unlinkedCodeBlock->codeType())
</span><span class="cx"> , m_unlinkedCode(m_globalObject->vm(), this, unlinkedCodeBlock)
</span><span class="cx"> , m_hasDebuggerStatement(false)
</span><span class="lines">@@ -1827,7 +1822,6 @@
</span><span class="cx"> , m_vm(unlinkedCodeBlock->vm())
</span><span class="cx"> , m_thisRegister(unlinkedCodeBlock->thisRegister())
</span><span class="cx"> , m_scopeRegister(unlinkedCodeBlock->scopeRegister())
</span><del>- , m_lexicalEnvironmentRegister(unlinkedCodeBlock->activationRegister())
</del><span class="cx"> , m_source(sourceProvider)
</span><span class="cx"> , m_sourceOffset(sourceOffset)
</span><span class="cx"> , m_firstLineColumnOffset(firstLineColumnOffset)
</span><span class="lines">@@ -2334,7 +2328,6 @@
</span><span class="cx"> , m_hasBeenCompiledWithFTL(false)
</span><span class="cx"> , m_isConstructor(false)
</span><span class="cx"> , m_isStrictMode(false)
</span><del>- , m_needsActivation(false)
</del><span class="cx"> , m_codeType(FunctionCode)
</span><span class="cx"> , m_hasDebuggerStatement(false)
</span><span class="cx"> , m_steppingMode(SteppingModeDisabled)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.h (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -351,28 +351,6 @@
</span><span class="cx"> {
</span><span class="cx"> return m_scopeRegister;
</span><span class="cx"> }
</span><del>-
- void setActivationRegister(VirtualRegister activationRegister)
- {
- m_lexicalEnvironmentRegister = activationRegister;
- }
-
- VirtualRegister activationRegister() const
- {
- ASSERT(m_lexicalEnvironmentRegister.isValid());
- return m_lexicalEnvironmentRegister;
- }
-
- VirtualRegister uncheckedActivationRegister()
- {
- return m_lexicalEnvironmentRegister;
- }
-
- bool needsActivation() const
- {
- ASSERT(m_lexicalEnvironmentRegister.isValid() == m_needsActivation);
- return m_needsActivation;
- }
</del><span class="cx">
</span><span class="cx"> CodeType codeType() const
</span><span class="cx"> {
</span><span class="lines">@@ -898,7 +876,6 @@
</span><span class="cx"> bool m_hasBeenCompiledWithFTL : 1;
</span><span class="cx"> bool m_isConstructor : 1;
</span><span class="cx"> bool m_isStrictMode : 1;
</span><del>- bool m_needsActivation : 1;
</del><span class="cx"> unsigned m_codeType : 2; // CodeType
</span><span class="cx">
</span><span class="cx"> // Internal methods for use by validation code. It would be private if it wasn't
</span><span class="lines">@@ -1039,7 +1016,6 @@
</span><span class="cx"> RefCountedArray<Instruction> m_instructions;
</span><span class="cx"> VirtualRegister m_thisRegister;
</span><span class="cx"> VirtualRegister m_scopeRegister;
</span><del>- VirtualRegister m_lexicalEnvironmentRegister;
</del><span class="cx"> mutable CodeBlockHash m_hash;
</span><span class="cx">
</span><span class="cx"> RefPtr<SourceProvider> m_source;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeExecutableInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/ExecutableInfo.h (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/ExecutableInfo.h        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/bytecode/ExecutableInfo.h        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -35,9 +35,8 @@
</span><span class="cx"> // FIXME: These flags, ParserModes and propagation to XXXCodeBlocks should be reorganized.
</span><span class="cx"> // https://bugs.webkit.org/show_bug.cgi?id=151547
</span><span class="cx"> struct ExecutableInfo {
</span><del>- ExecutableInfo(bool needsActivation, bool usesEval, bool isStrictMode, bool isConstructor, bool isBuiltinFunction, ConstructorKind constructorKind, SuperBinding superBinding, SourceParseMode parseMode, DerivedContextType derivedContextType, bool isArrowFunctionContext, bool isClassContext)
- : m_needsActivation(needsActivation)
- , m_usesEval(usesEval)
</del><ins>+ ExecutableInfo(bool usesEval, bool isStrictMode, bool isConstructor, bool isBuiltinFunction, ConstructorKind constructorKind, SuperBinding superBinding, SourceParseMode parseMode, DerivedContextType derivedContextType, bool isArrowFunctionContext, bool isClassContext)
+ : m_usesEval(usesEval)
</ins><span class="cx"> , m_isStrictMode(isStrictMode)
</span><span class="cx"> , m_isConstructor(isConstructor)
</span><span class="cx"> , m_isBuiltinFunction(isBuiltinFunction)
</span><span class="lines">@@ -52,7 +51,6 @@
</span><span class="cx"> ASSERT(m_superBinding == static_cast<unsigned>(superBinding));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- bool needsActivation() const { return m_needsActivation; }
</del><span class="cx"> bool usesEval() const { return m_usesEval; }
</span><span class="cx"> bool isStrictMode() const { return m_isStrictMode; }
</span><span class="cx"> bool isConstructor() const { return m_isConstructor; }
</span><span class="lines">@@ -65,7 +63,6 @@
</span><span class="cx"> bool isClassContext() const { return m_isClassContext; }
</span><span class="cx">
</span><span class="cx"> private:
</span><del>- unsigned m_needsActivation : 1;
</del><span class="cx"> unsigned m_usesEval : 1;
</span><span class="cx"> unsigned m_isStrictMode : 1;
</span><span class="cx"> unsigned m_isConstructor : 1;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -58,7 +58,6 @@
</span><span class="cx"> , m_numParameters(0)
</span><span class="cx"> , m_vm(vm)
</span><span class="cx"> , m_globalObjectRegister(VirtualRegister())
</span><del>- , m_needsFullScopeChain(info.needsActivation())
</del><span class="cx"> , m_usesEval(info.usesEval())
</span><span class="cx"> , m_isStrictMode(info.isStrictMode())
</span><span class="cx"> , m_isConstructor(info.isConstructor())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -123,8 +123,6 @@
</span><span class="cx"> bool isArrowFunctionContext() const { return m_isArrowFunctionContext; }
</span><span class="cx"> bool isClassContext() const { return m_isClassContext; }
</span><span class="cx">
</span><del>- bool needsFullScopeChain() const { return m_needsFullScopeChain; }
-
</del><span class="cx"> void addExpressionInfo(unsigned instructionOffset, int divot,
</span><span class="cx"> int startOffset, int endOffset, unsigned line, unsigned column);
</span><span class="cx">
</span><span class="lines">@@ -135,7 +133,6 @@
</span><span class="cx"> // Special registers
</span><span class="cx"> void setThisRegister(VirtualRegister thisRegister) { m_thisRegister = thisRegister; }
</span><span class="cx"> void setScopeRegister(VirtualRegister scopeRegister) { m_scopeRegister = scopeRegister; }
</span><del>- void setActivationRegister(VirtualRegister activationRegister) { m_lexicalEnvironmentRegister = activationRegister; }
</del><span class="cx">
</span><span class="cx"> bool usesGlobalObject() const { return m_globalObjectRegister.isValid(); }
</span><span class="cx"> void setGlobalObjectRegister(VirtualRegister globalObjectRegister) { m_globalObjectRegister = globalObjectRegister; }
</span><span class="lines">@@ -292,8 +289,6 @@
</span><span class="cx">
</span><span class="cx"> VirtualRegister thisRegister() const { return m_thisRegister; }
</span><span class="cx"> VirtualRegister scopeRegister() const { return m_scopeRegister; }
</span><del>- VirtualRegister activationRegister() const { return m_lexicalEnvironmentRegister; }
- bool hasActivationRegister() const { return m_lexicalEnvironmentRegister.isValid(); }
</del><span class="cx">
</span><span class="cx"> void addPropertyAccessInstruction(unsigned propertyAccessInstruction)
</span><span class="cx"> {
</span><span class="lines">@@ -383,10 +378,8 @@
</span><span class="cx">
</span><span class="cx"> VirtualRegister m_thisRegister;
</span><span class="cx"> VirtualRegister m_scopeRegister;
</span><del>- VirtualRegister m_lexicalEnvironmentRegister;
</del><span class="cx"> VirtualRegister m_globalObjectRegister;
</span><span class="cx">
</span><del>- unsigned m_needsFullScopeChain : 1;
</del><span class="cx"> unsigned m_usesEval : 1;
</span><span class="cx"> unsigned m_isStrictMode : 1;
</span><span class="cx"> unsigned m_isConstructor : 1;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx"> bool isClassContext = executable->superBinding() == SuperBinding::Needed;
</span><span class="cx">
</span><span class="cx"> UnlinkedFunctionCodeBlock* result = UnlinkedFunctionCodeBlock::create(&vm, FunctionCode,
</span><del>- ExecutableInfo(function->needsActivation(), function->usesEval(), function->isStrictMode(), kind == CodeForConstruct, functionKind == UnlinkedBuiltinFunction, executable->constructorKind(), executable->superBinding(), parseMode, executable->derivedContextType(), false, isClassContext));
</del><ins>+ ExecutableInfo(function->usesEval(), function->isStrictMode(), kind == CodeForConstruct, functionKind == UnlinkedBuiltinFunction, executable->constructorKind(), executable->superBinding(), parseMode, executable->derivedContextType(), false, isClassContext));
</ins><span class="cx">
</span><span class="cx"> auto generator(std::make_unique<BytecodeGenerator>(vm, function.get(), result, debuggerMode, profilerMode, executable->parentScopeTDZVariables()));
</span><span class="cx"> error = generator->generate();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -240,7 +240,7 @@
</span><span class="cx"> SourceParseMode parseMode = codeBlock->parseMode();
</span><span class="cx">
</span><span class="cx"> bool containsArrowOrEvalButNotInArrowBlock = needsToUpdateArrowFunctionContext() && !m_codeBlock->isArrowFunction();
</span><del>- bool shouldCaptureSomeOfTheThings = m_shouldEmitDebugHooks || m_codeBlock->needsFullScopeChain() || containsArrowOrEvalButNotInArrowBlock;
</del><ins>+ bool shouldCaptureSomeOfTheThings = m_shouldEmitDebugHooks || functionNode->needsActivation() || containsArrowOrEvalButNotInArrowBlock;
</ins><span class="cx">
</span><span class="cx"> bool shouldCaptureAllOfTheThings = m_shouldEmitDebugHooks || codeBlock->usesEval();
</span><span class="cx"> bool needsArguments = (functionNode->usesArguments() || codeBlock->usesEval() || (functionNode->usesArrowFunction() && !codeBlock->isArrowFunction()));
</span><span class="lines">@@ -661,14 +661,11 @@
</span><span class="cx"> moduleEnvironmentSymbolTable->setUsesNonStrictEval(m_usesNonStrictEval);
</span><span class="cx"> moduleEnvironmentSymbolTable->setScopeType(SymbolTable::ScopeType::LexicalScope);
</span><span class="cx">
</span><del>- bool shouldCaptureSomeOfTheThings = m_shouldEmitDebugHooks || m_codeBlock->needsFullScopeChain();
</del><span class="cx"> bool shouldCaptureAllOfTheThings = m_shouldEmitDebugHooks || codeBlock->usesEval();
</span><span class="cx"> if (shouldCaptureAllOfTheThings)
</span><span class="cx"> moduleProgramNode->varDeclarations().markAllVariablesAsCaptured();
</span><span class="cx">
</span><span class="cx"> auto captures = [&] (UniquedStringImpl* uid) -> bool {
</span><del>- if (!shouldCaptureSomeOfTheThings)
- return false;
</del><span class="cx"> return moduleProgramNode->captures(uid);
</span><span class="cx"> };
</span><span class="cx"> auto lookUpVarKind = [&] (UniquedStringImpl* uid, const VariableEnvironmentEntry& entry) -> VarKind {
</span><span class="lines">@@ -962,7 +959,6 @@
</span><span class="cx"> void BytecodeGenerator::initializeVarLexicalEnvironment(int symbolTableConstantIndex)
</span><span class="cx"> {
</span><span class="cx"> RELEASE_ASSERT(m_lexicalEnvironmentRegister);
</span><del>- m_codeBlock->setActivationRegister(m_lexicalEnvironmentRegister->virtualRegister());
</del><span class="cx"> emitOpcode(op_create_lexical_environment);
</span><span class="cx"> instructions().append(m_lexicalEnvironmentRegister->index());
</span><span class="cx"> instructions().append(scopeRegister()->index());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -354,7 +354,7 @@
</span><span class="cx">
</span><span class="cx"> RegisterID* destinationForAssignResult(RegisterID* dst)
</span><span class="cx"> {
</span><del>- if (dst && dst != ignoredResult() && m_codeBlock->needsFullScopeChain())
</del><ins>+ if (dst && dst != ignoredResult())
</ins><span class="cx"> return dst->isTemporary() ? dst : newTemporary();
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="lines">@@ -465,7 +465,7 @@
</span><span class="cx">
</span><span class="cx"> ALWAYS_INLINE bool leftHandSideNeedsCopy(bool rightHasAssignments, bool rightIsPure)
</span><span class="cx"> {
</span><del>- return (m_codeType != FunctionCode || m_codeBlock->needsFullScopeChain() || rightHasAssignments) && !rightIsPure;
</del><ins>+ return (m_codeType != FunctionCode || rightHasAssignments) && !rightIsPure;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ALWAYS_INLINE PassRefPtr<RegisterID> emitNodeForLeftHandSide(ExpressionNode* n, bool rightHasAssignments, bool rightIsPure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -1338,7 +1338,6 @@
</span><span class="cx"> dataLog(" Might inline function: ", mightInlineFunctionFor(codeBlock, kind), "\n");
</span><span class="cx"> dataLog(" Might compile function: ", mightCompileFunctionFor(codeBlock, kind), "\n");
</span><span class="cx"> dataLog(" Is supported for inlining: ", isSupportedForInlining(codeBlock), "\n");
</span><del>- dataLog(" Needs activation: ", codeBlock->ownerScriptExecutable()->needsActivation(), "\n");
</del><span class="cx"> dataLog(" Is inlining candidate: ", codeBlock->ownerScriptExecutable()->isInliningCandidate(), "\n");
</span><span class="cx"> }
</span><span class="cx"> if (!canInline(capabilityLevel)) {
</span><span class="lines">@@ -4909,7 +4908,6 @@
</span><span class="cx"> " ", inlineCallFrame()->directCaller);
</span><span class="cx"> }
</span><span class="cx"> dataLog(
</span><del>- ": needsActivation = ", codeBlock->needsActivation(),
</del><span class="cx"> ", isStrictMode = ", codeBlock->ownerScriptExecutable()->isStrictMode(), "\n");
</span><span class="cx"> codeBlock->baselineVersion()->dumpBytecode();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGGraphh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGGraph.h (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGGraph.h        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/dfg/DFGGraph.h        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -398,26 +398,6 @@
</span><span class="cx"> return hasExitSite(node->origin.semantic, exitKind);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- VirtualRegister activationRegister()
- {
- return m_profiledBlock->activationRegister();
- }
-
- VirtualRegister uncheckedActivationRegister()
- {
- return m_profiledBlock->uncheckedActivationRegister();
- }
-
- VirtualRegister machineActivationRegister()
- {
- return m_profiledBlock->activationRegister();
- }
-
- VirtualRegister uncheckedMachineActivationRegister()
- {
- return m_profiledBlock->uncheckedActivationRegister();
- }
-
</del><span class="cx"> ValueProfile* valueProfileFor(Node*);
</span><span class="cx"> MethodOfGettingAValueProfile methodOfGettingAValueProfileFor(Node*);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGStackLayoutPhasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGStackLayoutPhase.cpp (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGStackLayoutPhase.cpp        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/dfg/DFGStackLayoutPhase.cpp        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -173,8 +173,6 @@
</span><span class="cx"> data->machineLocal = assign(allocation, data->local);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- // This register is never valid for DFG code blocks.
- codeBlock()->setActivationRegister(VirtualRegister());
</del><span class="cx"> if (LIKELY(!m_graph.hasDebuggerEnabled()))
</span><span class="cx"> codeBlock()->setScopeRegister(VirtualRegister());
</span><span class="cx"> else
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterCallFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/interpreter/CallFrame.cpp        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -84,20 +84,6 @@
</span><span class="cx"> return CallSiteIndex(callSiteAsRawBits());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool CallFrame::hasActivation() const
-{
- JSValue activation = uncheckedActivation();
- return !!activation && activation.isCell();
-}
-
-JSValue CallFrame::uncheckedActivation() const
-{
- CodeBlock* codeBlock = this->codeBlock();
- RELEASE_ASSERT(codeBlock->needsActivation());
- VirtualRegister activationRegister = codeBlock->activationRegister();
- return registers()[activationRegister.offset()].jsValue();
-}
-
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> JSStack* CallFrame::stack()
</span><span class="cx"> {
</span><span class="lines">@@ -208,28 +194,6 @@
</span><span class="cx"> return static_cast<CallFrame*>(callerFrameOrVMEntryFrame());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSLexicalEnvironment* CallFrame::lexicalEnvironment() const
-{
- CodeBlock* codeBlock = this->codeBlock();
- RELEASE_ASSERT(codeBlock->needsActivation());
- VirtualRegister activationRegister = codeBlock->activationRegister();
- return registers()[activationRegister.offset()].Register::lexicalEnvironment();
-}
-
-JSLexicalEnvironment* CallFrame::lexicalEnvironmentOrNullptr() const
-{
- CodeBlock* codeBlock = this->codeBlock();
- return codeBlock->needsActivation() ? lexicalEnvironment() : nullptr;
-}
-
-void CallFrame::setActivation(JSLexicalEnvironment* lexicalEnvironment)
-{
- CodeBlock* codeBlock = this->codeBlock();
- RELEASE_ASSERT(codeBlock->needsActivation());
- VirtualRegister activationRegister = codeBlock->activationRegister();
- registers()[activationRegister.offset()] = lexicalEnvironment;
-}
-
</del><span class="cx"> String CallFrame::friendlyFunctionName()
</span><span class="cx"> {
</span><span class="cx"> CodeBlock* codeBlock = this->codeBlock();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterCallFrameh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/CallFrame.h (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/CallFrame.h        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/interpreter/CallFrame.h        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><span class="cx"> class Arguments;
</span><del>- class JSLexicalEnvironment;
</del><span class="cx"> class Interpreter;
</span><span class="cx"> class JSScope;
</span><span class="cx">
</span><span class="lines">@@ -75,11 +74,6 @@
</span><span class="cx"> return this[scopeRegisterOffset].Register::scope();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- bool hasActivation() const;
- JSLexicalEnvironment* lexicalEnvironment() const;
- JSLexicalEnvironment* lexicalEnvironmentOrNullptr() const;
- JSValue uncheckedActivation() const;
-
</del><span class="cx"> // Global object in which execution began.
</span><span class="cx"> JS_EXPORT_PRIVATE JSGlobalObject* vmEntryGlobalObject();
</span><span class="cx">
</span><span class="lines">@@ -164,7 +158,6 @@
</span><span class="cx">
</span><span class="cx"> void setCallerFrame(CallFrame* frame) { callerFrameAndPC().callerFrame = frame; }
</span><span class="cx"> void setScope(int scopeRegisterOffset, JSScope* scope) { static_cast<Register*>(this)[scopeRegisterOffset] = scope; }
</span><del>- void setActivation(JSLexicalEnvironment*);
</del><span class="cx">
</span><span class="cx"> ALWAYS_INLINE void init(CodeBlock* codeBlock, Instruction* vPC,
</span><span class="cx"> CallFrame* callerFrame, int argc, JSObject* callee)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterRegisterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/Register.h (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/Register.h        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/interpreter/Register.h        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -60,7 +60,6 @@
</span><span class="cx"> Register& operator=(JSObject*);
</span><span class="cx">
</span><span class="cx"> int32_t i() const;
</span><del>- JSLexicalEnvironment* lexicalEnvironment() const;
</del><span class="cx"> CallFrame* callFrame() const;
</span><span class="cx"> CodeBlock* codeBlock() const;
</span><span class="cx"> JSObject* object() const;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -1031,7 +1031,6 @@
</span><span class="cx"> {
</span><span class="cx"> LLINT_BEGIN();
</span><span class="cx"> CodeBlock* codeBlock = exec->codeBlock();
</span><del>- ASSERT(codeBlock->codeType() != FunctionCode || !codeBlock->needsActivation() || exec->hasActivation());
</del><span class="cx"> JSScope* scope = exec->uncheckedR(pc[2].u.operand).Register::scope();
</span><span class="cx"> #if LLINT_SLOW_PATH_TRACING
</span><span class="cx"> dataLogF("Creating function!\n");
</span><span class="lines">@@ -1043,7 +1042,6 @@
</span><span class="cx"> {
</span><span class="cx"> LLINT_BEGIN();
</span><span class="cx"> CodeBlock* codeBlock = exec->codeBlock();
</span><del>- ASSERT(codeBlock->codeType() != FunctionCode || !codeBlock->needsActivation() || exec->hasActivation());
</del><span class="cx"> JSScope* scope = exec->uncheckedR(pc[2].u.operand).Register::scope();
</span><span class="cx"> #if LLINT_SLOW_PATH_TRACING
</span><span class="cx"> dataLogF("Creating function!\n");
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Executable.h (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Executable.h        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/runtime/Executable.h        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -348,7 +348,6 @@
</span><span class="cx">
</span><span class="cx"> bool usesEval() const { return m_features & EvalFeature; }
</span><span class="cx"> bool usesArguments() const { return m_features & ArgumentsFeature; }
</span><del>- bool needsActivation() const { return m_hasCapturedVariables || m_features & (EvalFeature | WithFeature); }
</del><span class="cx"> bool isArrowFunctionContext() const { return m_isArrowFunctionContext; }
</span><span class="cx"> bool isStrictMode() const { return m_features & StrictModeFeature; }
</span><span class="cx"> DerivedContextType derivedContextType() const { return m_derivedContextType; }
</span><span class="lines">@@ -458,7 +457,7 @@
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><del>- ExecutableInfo executableInfo() const { return ExecutableInfo(needsActivation(), usesEval(), isStrictMode(), false, false, ConstructorKind::None, SuperBinding::NotNeeded, SourceParseMode::ProgramMode, derivedContextType(), isArrowFunctionContext() , false); }
</del><ins>+ ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, SuperBinding::NotNeeded, SourceParseMode::ProgramMode, derivedContextType(), isArrowFunctionContext() , false); }
</ins><span class="cx">
</span><span class="cx"> unsigned numVariables() { return m_unlinkedEvalCodeBlock->numVariables(); }
</span><span class="cx"> unsigned numberOfFunctionDecls() { return m_unlinkedEvalCodeBlock->numberOfFunctionDecls(); }
</span><span class="lines">@@ -512,7 +511,7 @@
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><del>- ExecutableInfo executableInfo() const { return ExecutableInfo(needsActivation(), usesEval(), isStrictMode(), false, false, ConstructorKind::None, SuperBinding::NotNeeded, SourceParseMode::ProgramMode, derivedContextType(), isArrowFunctionContext(), false); }
</del><ins>+ ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, SuperBinding::NotNeeded, SourceParseMode::ProgramMode, derivedContextType(), isArrowFunctionContext(), false); }
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> friend class ExecutableBase;
</span><span class="lines">@@ -553,7 +552,7 @@
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><del>- ExecutableInfo executableInfo() const { return ExecutableInfo(needsActivation(), usesEval(), isStrictMode(), false, false, ConstructorKind::None, SuperBinding::NotNeeded, SourceParseMode::ModuleEvaluateMode, derivedContextType(), isArrowFunctionContext(), false); }
</del><ins>+ ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, SuperBinding::NotNeeded, SourceParseMode::ModuleEvaluateMode, derivedContextType(), isArrowFunctionContext(), false); }
</ins><span class="cx">
</span><span class="cx"> UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCodeBlock() { return m_unlinkedModuleProgramCodeBlock.get(); }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSLexicalEnvironmenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h (195861 => 195862)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h        2016-01-29 23:58:18 UTC (rev 195861)
+++ trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h        2016-01-30 00:01:48 UTC (rev 195862)
</span><span class="lines">@@ -89,11 +89,6 @@
</span><span class="cx"> return jsCast<JSLexicalEnvironment*>(asObject(value));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-ALWAYS_INLINE JSLexicalEnvironment* Register::lexicalEnvironment() const
-{
- return asActivation(jsValue());
-}
-
</del><span class="cx"> } // namespace JSC
</span><span class="cx">
</span><span class="cx"> #endif // JSLexicalEnvironment_h
</span></span></pre>
</div>
</div>
</body>
</html>