<!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>[192935] trunk</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/192935">192935</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2015-12-01 17:37:19 -0800 (Tue, 01 Dec 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/192914">r192914</a>.
https://bugs.webkit.org/show_bug.cgi?id=151734

JSC tests for this change are failing on 32 and 64-bit bots
(Requested by ryanhaddad on #webkit).

Reverted changeset:

&quot;[ES6] Implement LLInt/Baseline Support for ES6 Generators and
enable this feature&quot;
https://bugs.webkit.org/show_bug.cgi?id=150792
http://trac.webkit.org/changeset/192914</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkChangeLog">trunk/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSScriptRefcpp">trunk/Source/JavaScriptCore/API/JSScriptRef.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreCMakeListstxt">trunk/Source/JavaScriptCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceJavaScriptCoreDerivedSourcesmake">trunk/Source/JavaScriptCore/DerivedSources.make</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="#trunkSourceJavaScriptCorebuiltinsBuiltinExecutablescpp">trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeBasicBlockcpp">trunk/Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeListjson">trunk/Source/JavaScriptCore/bytecode/BytecodeList.json</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeLivenessAnalysiscpp">trunk/Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeBytecodeUseDefh">trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockh">trunk/Source/JavaScriptCore/bytecode/CodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeEvalCodeCacheh">trunk/Source/JavaScriptCore/bytecode/EvalCodeCache.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeExecutableInfoh">trunk/Source/JavaScriptCore/bytecode/ExecutableInfo.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodePreciseJumpTargetscpp">trunk/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp</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="#trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutableh">trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.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="#trunkSourceJavaScriptCorebytecompilerNodesCodegencpp">trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp">trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGForAllKillsh">trunk/Source/JavaScriptCore/dfg/DFGForAllKills.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGGraphh">trunk/Source/JavaScriptCore/dfg/DFGGraph.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGOSREntrypointCreationPhasecpp">trunk/Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGVariableEventStreamcpp">trunk/Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLForOSREntryJITCodecpp">trunk/Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLForOSREntryJITCodeh">trunk/Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLOSREntrycpp">trunk/Source/JavaScriptCore/ftl/FTLOSREntry.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLStatecpp">trunk/Source/JavaScriptCore/ftl/FTLState.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapMarkedBlockh">trunk/Source/JavaScriptCore/heap/MarkedBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterInterpretercpp">trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITcpp">trunk/Source/JavaScriptCore/jit/JIT.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITh">trunk/Source/JavaScriptCore/jit/JIT.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOpcodescpp">trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOperationscpp">trunk/Source/JavaScriptCore/jit/JITOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOperationsh">trunk/Source/JavaScriptCore/jit/JITOperations.h</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntEntrypointcpp">trunk/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathscpp">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathsh">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLowLevelInterpreterasm">trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserASTBuilderh">trunk/Source/JavaScriptCore/parser/ASTBuilder.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserNodescpp">trunk/Source/JavaScriptCore/parser/Nodes.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserNodesh">trunk/Source/JavaScriptCore/parser/Nodes.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserParsercpp">trunk/Source/JavaScriptCore/parser/Parser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserParserh">trunk/Source/JavaScriptCore/parser/Parser.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserParserModesh">trunk/Source/JavaScriptCore/parser/ParserModes.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserSyntaxCheckerh">trunk/Source/JavaScriptCore/parser/SyntaxChecker.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCodeCachecpp">trunk/Source/JavaScriptCore/runtime/CodeCache.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCodeCacheh">trunk/Source/JavaScriptCore/runtime/CodeCache.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCommonIdentifiersh">trunk/Source/JavaScriptCore/runtime/CommonIdentifiers.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCommonSlowPathscpp">trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCommonSlowPathsh">trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCompletioncpp">trunk/Source/JavaScriptCore/runtime/Completion.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutablecpp">trunk/Source/JavaScriptCore/runtime/Executable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutableh">trunk/Source/JavaScriptCore/runtime/Executable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionConstructorcpp">trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionConstructorh">trunk/Source/JavaScriptCore/runtime/FunctionConstructor.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSFunctioncpp">trunk/Source/JavaScriptCore/runtime/JSFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjecth">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeModuleLoaderObjectcpp">trunk/Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMcpp">trunk/Source/JavaScriptCore/runtime/VM.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMh">trunk/Source/JavaScriptCore/runtime/VM.h</a></li>
<li><a href="#trunkSourceJavaScriptCoretestses6generators_yield_star_generic_iterablesjs">trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_generic_iterables.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestses6generators_yield_star_instances_of_iterablesjs">trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_instances_of_iterables.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestses6generators_yield_star_iterator_closingjs">trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_iterator_closing.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestses6generators_yield_star_iterator_closing_via_throwjs">trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_iterator_closing_via_throw.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestses6yaml">trunk/Source/JavaScriptCore/tests/es6.yaml</a></li>
<li><a href="#trunkSourceWTFChangeLog">trunk/Source/WTF/ChangeLog</a></li>
<li><a href="#trunkSourceWTFwtfFastBitVectorh">trunk/Source/WTF/wtf/FastBitVector.h</a></li>
<li><a href="#trunkSourceWTFwtfFeatureDefinesh">trunk/Source/WTF/wtf/FeatureDefines.h</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig">trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig">trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig</a></li>
<li><a href="#trunkSourcecmakeOptionsWincmake">trunk/Source/cmake/OptionsWin.cmake</a></li>
<li><a href="#trunkSourcecmakeWebKitFeaturescmake">trunk/Source/cmake/WebKitFeatures.cmake</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptswebkitperlFeatureListpm">trunk/Tools/Scripts/webkitperl/FeatureList.pm</a></li>
<li><a href="#trunkWebKitLibrariesChangeLog">trunk/WebKitLibraries/ChangeLog</a></li>
<li><a href="#trunkWebKitLibrarieswintoolsvspropsFeatureDefinesprops">trunk/WebKitLibraries/win/tools/vsprops/FeatureDefines.props</a></li>
<li><a href="#trunkWebKitLibrarieswintoolsvspropsFeatureDefinesCairoprops">trunk/WebKitLibraries/win/tools/vsprops/FeatureDefinesCairo.props</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCorebuiltinsGeneratorPrototypejs">trunk/Source/JavaScriptCore/builtins/GeneratorPrototype.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserSourceCodeKeyh">trunk/Source/JavaScriptCore/parser/SourceCodeKey.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorFramecpp">trunk/Source/JavaScriptCore/runtime/GeneratorFrame.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorFrameh">trunk/Source/JavaScriptCore/runtime/GeneratorFrame.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorFunctionConstructorcpp">trunk/Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorFunctionConstructorh">trunk/Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorFunctionPrototypecpp">trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorFunctionPrototypeh">trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorPrototypecpp">trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorPrototypeh">trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorThisModeh">trunk/Source/JavaScriptCore/runtime/GeneratorThisMode.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGeneratorFunctioncpp">trunk/Source/JavaScriptCore/runtime/JSGeneratorFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGeneratorFunctionh">trunk/Source/JavaScriptCore/runtime/JSGeneratorFunction.h</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorargumentsfromfunctionjs">trunk/Source/JavaScriptCore/tests/stress/generator-arguments-from-function.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorargumentsjs">trunk/Source/JavaScriptCore/tests/stress/generator-arguments.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorclassmethodssyntaxjs">trunk/Source/JavaScriptCore/tests/stress/generator-class-methods-syntax.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorclassmethodsjs">trunk/Source/JavaScriptCore/tests/stress/generator-class-methods.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorevalthisjs">trunk/Source/JavaScriptCore/tests/stress/generator-eval-this.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorfunctionconstructorjs">trunk/Source/JavaScriptCore/tests/stress/generator-function-constructor.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorfunctionnamejs">trunk/Source/JavaScriptCore/tests/stress/generator-function-name.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratormethodswithnongeneratorjs">trunk/Source/JavaScriptCore/tests/stress/generator-methods-with-non-generator.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorrelationsjs">trunk/Source/JavaScriptCore/tests/stress/generator-relations.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorreturnbeforefirstcalljs">trunk/Source/JavaScriptCore/tests/stress/generator-return-before-first-call.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorreturnjs">trunk/Source/JavaScriptCore/tests/stress/generator-return.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorthisjs">trunk/Source/JavaScriptCore/tests/stress/generator-this.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorthrowbeforefirstcalljs">trunk/Source/JavaScriptCore/tests/stress/generator-throw-before-first-call.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorthrowjs">trunk/Source/JavaScriptCore/tests/stress/generator-throw.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorwithnewtargetjs">trunk/Source/JavaScriptCore/tests/stress/generator-with-new-target.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratorwithsuperjs">trunk/Source/JavaScriptCore/tests/stress/generator-with-super.js</a></li>
<li><a href="#trunkSourceJavaScriptCoretestsstressgeneratoryieldstarjs">trunk/Source/JavaScriptCore/tests/stress/generator-yield-star.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/ChangeLog (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/ChangeLog        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/ChangeLog        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-12-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r192914.
+        https://bugs.webkit.org/show_bug.cgi?id=151734
+
+        JSC tests for this change are failing on 32 and 64-bit bots
+        (Requested by ryanhaddad on #webkit).
+
+        Reverted changeset:
+
+        &quot;[ES6] Implement LLInt/Baseline Support for ES6 Generators and
+        enable this feature&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=150792
+        http://trac.webkit.org/changeset/192914
+
</ins><span class="cx"> 2015-12-01  Yusuke Suzuki  &lt;utatane.tea@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSScriptRefcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSScriptRef.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSScriptRef.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/API/JSScriptRef.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> {
</span><span class="cx">     return !!JSC::parse&lt;JSC::ProgramNode&gt;(
</span><span class="cx">         vm, source, Identifier(), JSParserBuiltinMode::NotBuiltin,
</span><del>-        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode, SuperBinding::NotNeeded,
</del><ins>+        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode, 
</ins><span class="cx">         error);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/CMakeLists.txt (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/CMakeLists.txt        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/CMakeLists.txt        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -576,10 +576,6 @@
</span><span class="cx">     runtime/FunctionHasExecutedCache.cpp
</span><span class="cx">     runtime/FunctionPrototype.cpp
</span><span class="cx">     runtime/FunctionRareData.cpp
</span><del>-    runtime/GeneratorFrame.cpp
-    runtime/GeneratorFunctionConstructor.cpp
-    runtime/GeneratorFunctionPrototype.cpp
-    runtime/GeneratorPrototype.cpp
</del><span class="cx">     runtime/GetterSetter.cpp
</span><span class="cx">     runtime/Identifier.cpp
</span><span class="cx">     runtime/IndexingType.cpp
</span><span class="lines">@@ -619,7 +615,6 @@
</span><span class="cx">     runtime/JSDateMath.cpp
</span><span class="cx">     runtime/JSEnvironmentRecord.cpp
</span><span class="cx">     runtime/JSFunction.cpp
</span><del>-    runtime/JSGeneratorFunction.cpp
</del><span class="cx">     runtime/JSGlobalLexicalEnvironment.cpp
</span><span class="cx">     runtime/JSGlobalObject.cpp
</span><span class="cx">     runtime/JSGlobalObjectDebuggable.cpp
</span><span class="lines">@@ -755,7 +750,6 @@
</span><span class="cx">     runtime/DateConstructor.cpp
</span><span class="cx">     runtime/DatePrototype.cpp
</span><span class="cx">     runtime/ErrorPrototype.cpp
</span><del>-    runtime/GeneratorPrototype.cpp
</del><span class="cx">     runtime/InspectorInstrumentationObject.cpp
</span><span class="cx">     runtime/IntlCollatorConstructor.cpp
</span><span class="cx">     runtime/IntlCollatorPrototype.cpp
</span><span class="lines">@@ -1215,7 +1209,6 @@
</span><span class="cx">     ${JAVASCRIPTCORE_DIR}/builtins/ArrayIteratorPrototype.js
</span><span class="cx">     ${JAVASCRIPTCORE_DIR}/builtins/ArrayPrototype.js
</span><span class="cx">     ${JAVASCRIPTCORE_DIR}/builtins/FunctionPrototype.js
</span><del>-    ${JAVASCRIPTCORE_DIR}/builtins/GeneratorPrototype.js
</del><span class="cx">     ${JAVASCRIPTCORE_DIR}/builtins/GlobalObject.js
</span><span class="cx">     ${JAVASCRIPTCORE_DIR}/builtins/InspectorInstrumentationObject.js
</span><span class="cx">     ${JAVASCRIPTCORE_DIR}/builtins/InternalPromiseConstructor.js
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-12-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r192914.
+        https://bugs.webkit.org/show_bug.cgi?id=151734
+
+        JSC tests for this change are failing on 32 and 64-bit bots
+        (Requested by ryanhaddad on #webkit).
+
+        Reverted changeset:
+
+        &quot;[ES6] Implement LLInt/Baseline Support for ES6 Generators and
+        enable this feature&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=150792
+        http://trac.webkit.org/changeset/192914
+
</ins><span class="cx"> 2015-12-01  Caitlin Potter  &lt;caitpotter88@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [JSC] support CoverInitializedName in nested AssignmentPatterns
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
</span><span class="cx"> ENABLE_ES6_ARROWFUNCTION_SYNTAX = ENABLE_ES6_ARROWFUNCTION_SYNTAX;
</span><span class="cx"> ENABLE_ES6_CLASS_SYNTAX = ENABLE_ES6_CLASS_SYNTAX;
</span><del>-ENABLE_ES6_GENERATORS = ENABLE_ES6_GENERATORS;
</del><ins>+ENABLE_ES6_GENERATORS = ;
</ins><span class="cx"> ENABLE_ES6_MODULES = ;
</span><span class="cx"> ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX = ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX;
</span><span class="cx"> ENABLE_CONTENT_FILTERING = ENABLE_CONTENT_FILTERING;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/DerivedSources.make (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/DerivedSources.make        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/DerivedSources.make        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -84,7 +84,6 @@
</span><span class="cx">     $(JavaScriptCore)/builtins/ArrayIteratorPrototype.js \
</span><span class="cx">     $(JavaScriptCore)/builtins/ArrayPrototype.js \
</span><span class="cx">     $(JavaScriptCore)/builtins/FunctionPrototype.js \
</span><del>-    $(JavaScriptCore)/builtins/GeneratorPrototype.js \
</del><span class="cx">     $(JavaScriptCore)/builtins/GlobalObject.js \
</span><span class="cx">     $(JavaScriptCore)/builtins/InspectorInstrumentationObject.js \
</span><span class="cx">     $(JavaScriptCore)/builtins/InternalPromiseConstructor.js \
</span><span class="lines">@@ -120,7 +119,6 @@
</span><span class="cx">     DateConstructor.lut.h \
</span><span class="cx">     DatePrototype.lut.h \
</span><span class="cx">     ErrorPrototype.lut.h \
</span><del>-    GeneratorPrototype.lut.h \
</del><span class="cx">     InspectorInstrumentationObject.lut.h \
</span><span class="cx">     IntlCollatorConstructor.lut.h \
</span><span class="cx">     IntlCollatorPrototype.lut.h \
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -758,10 +758,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\FunctionHasExecutedCache.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\FunctionPrototype.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\FunctionRareData.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\GeneratorFrame.cpp&quot; /&gt;
-    &lt;ClCompile Include=&quot;..\runtime\GeneratorFunctionConstructor.cpp&quot; /&gt;
-    &lt;ClCompile Include=&quot;..\runtime\GeneratorFunctionPrototype.cpp&quot; /&gt;
-    &lt;ClCompile Include=&quot;..\runtime\GeneratorPrototype.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\GetterSetter.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\Identifier.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\IndexingType.cpp&quot; /&gt;
</span><span class="lines">@@ -801,7 +797,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSDataViewPrototype.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSDateMath.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSFunction.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\JSGeneratorFunction.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSGlobalObject.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSGlobalObjectFunctions.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSGlobalLexicalEnvironment.cpp&quot; /&gt;
</span><span class="lines">@@ -952,7 +947,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\DateConstructor.lut.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\DatePrototype.lut.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\ErrorPrototype.lut.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\GeneratorPrototype.lut.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\HeaderDetection.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InjectedScriptSource.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\InspectorBackendDispatchers.h&quot; /&gt;
</span><span class="lines">@@ -1527,7 +1521,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\parser\ParserTokens.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\parser\ResultType.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\parser\SourceCode.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\parser\SourceCodeKey.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\parser\SourceProvider.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\parser\SourceProviderCache.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\parser\SourceProviderCacheItem.h&quot; /&gt;
</span><span class="lines">@@ -1614,11 +1607,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\FunctionHasExecutedCache.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\FunctionPrototype.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\FunctionRareData.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\GeneratorFrame.h&quot; /&gt;
-    &lt;ClInclude Include=&quot;..\runtime\GeneratorFunctionConstructor.h&quot; /&gt;
-    &lt;ClInclude Include=&quot;..\runtime\GeneratorFunctionPrototype.h&quot; /&gt;
-    &lt;ClInclude Include=&quot;..\runtime\GeneratorPrototype.h&quot; /&gt;
-    &lt;ClInclude Include=&quot;..\runtime\GeneratorThisMode.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\GenericArguments.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\GenericArgumentsInlines.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\GenericOffset.h&quot; /&gt;
</span><span class="lines">@@ -1678,7 +1666,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSFloat32Array.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSFloat64Array.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSFunction.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\JSGeneratorFunction.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSGenericTypedArrayView.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSGenericTypedArrayViewConstructor.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSGenericTypedArrayViewConstructorInlines.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorevcxprojJavaScriptCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -669,18 +669,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\FunctionRareData.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\GeneratorFrame.cpp&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
-    &lt;ClCompile Include=&quot;..\runtime\GeneratorFunctionConstructor.cpp&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
-    &lt;ClCompile Include=&quot;..\runtime\GeneratorFunctionPrototype.cpp&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
-    &lt;ClCompile Include=&quot;..\runtime\GeneratorPrototype.cpp&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\GetterSetter.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -762,9 +750,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSFunction.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\runtime\JSGeneratorFunction.cpp&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\runtime\JSGlobalObject.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -2639,9 +2624,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\parser\SourceCode.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;parser&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\parser\SourceCodeKey.h&quot;&gt;
-      &lt;Filter&gt;parser&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\parser\SourceProvider.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;parser&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -2843,21 +2825,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\FunctionRareData.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\GeneratorFrame.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
-    &lt;ClInclude Include=&quot;..\runtime\GeneratorFunctionConstructor.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
-    &lt;ClInclude Include=&quot;..\runtime\GeneratorFunctionPrototype.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
-    &lt;ClInclude Include=&quot;..\runtime\GeneratorPrototype.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
-    &lt;ClInclude Include=&quot;..\runtime\GeneratorThisMode.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\GetPutInfo.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -2963,9 +2930,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSFunction.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\runtime\JSGeneratorFunction.h&quot;&gt;
-      &lt;Filter&gt;runtime&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\runtime\JSGlobalObject.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;runtime&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -3330,9 +3294,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\ErrorPrototype.lut.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;Derived Sources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\GeneratorPrototype.lut.h&quot;&gt;
-      &lt;Filter&gt;Derived Sources&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\$(ProjectName)\DerivedSources\HeaderDetection.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;Derived Sources&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1208,19 +1208,6 @@
</span><span class="cx">                 709FB86B1AE335C60039D069 /* WeakSetPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 709FB8651AE335C60039D069 /* WeakSetPrototype.cpp */; };
</span><span class="cx">                 709FB86C1AE335C60039D069 /* WeakSetPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 709FB8661AE335C60039D069 /* WeakSetPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 70B0A9D11A9B66460001306A /* RuntimeFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B0A9D01A9B66200001306A /* RuntimeFlags.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                70B791911C024A13002481E2 /* SourceCodeKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B7918E1C0244C9002481E2 /* SourceCodeKey.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                70B791921C024A23002481E2 /* GeneratorFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70B791831C024432002481E2 /* GeneratorFrame.cpp */; };
-                70B791931C024A28002481E2 /* GeneratorFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B791841C024432002481E2 /* GeneratorFrame.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                70B791941C024A28002481E2 /* GeneratorFunctionConstructor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70B791851C024432002481E2 /* GeneratorFunctionConstructor.cpp */; };
-                70B791951C024A28002481E2 /* GeneratorFunctionConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B791861C024432002481E2 /* GeneratorFunctionConstructor.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                70B791961C024A28002481E2 /* GeneratorFunctionPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70B791871C024432002481E2 /* GeneratorFunctionPrototype.cpp */; };
-                70B791971C024A29002481E2 /* GeneratorFunctionPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B791881C024432002481E2 /* GeneratorFunctionPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                70B791981C024A29002481E2 /* GeneratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70B791891C024432002481E2 /* GeneratorPrototype.cpp */; };
-                70B791991C024A29002481E2 /* GeneratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B7918A1C024432002481E2 /* GeneratorPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                70B7919A1C024A29002481E2 /* GeneratorThisMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B7918B1C024432002481E2 /* GeneratorThisMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                70B7919B1C024A46002481E2 /* JSGeneratorFunction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70B7918C1C024462002481E2 /* JSGeneratorFunction.cpp */; };
-                70B7919C1C024A49002481E2 /* JSGeneratorFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B7918D1C024462002481E2 /* JSGeneratorFunction.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                70B7919D1C024A56002481E2 /* GeneratorPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B791901C0246CE002481E2 /* GeneratorPrototype.lut.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 70DC3E091B2DF2C700054299 /* IteratorPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70DC3E071B2DF2C700054299 /* IteratorPrototype.cpp */; };
</span><span class="cx">                 70DC3E0A1B2DF2C700054299 /* IteratorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 70DC3E081B2DF2C700054299 /* IteratorPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 70DE9A091BE7D69E005D89D9 /* LLIntAssembly.h in Headers */ = {isa = PBXBuildFile; fileRef = 70DE9A081BE7D670005D89D9 /* LLIntAssembly.h */; };
</span><span class="lines">@@ -3300,20 +3287,6 @@
</span><span class="cx">                 709FB8651AE335C60039D069 /* WeakSetPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WeakSetPrototype.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 709FB8661AE335C60039D069 /* WeakSetPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WeakSetPrototype.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 70B0A9D01A9B66200001306A /* RuntimeFlags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuntimeFlags.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                70B791831C024432002481E2 /* GeneratorFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeneratorFrame.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B791841C024432002481E2 /* GeneratorFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratorFrame.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B791851C024432002481E2 /* GeneratorFunctionConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeneratorFunctionConstructor.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B791861C024432002481E2 /* GeneratorFunctionConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratorFunctionConstructor.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B791871C024432002481E2 /* GeneratorFunctionPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeneratorFunctionPrototype.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B791881C024432002481E2 /* GeneratorFunctionPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratorFunctionPrototype.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B791891C024432002481E2 /* GeneratorPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeneratorPrototype.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B7918A1C024432002481E2 /* GeneratorPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratorPrototype.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B7918B1C024432002481E2 /* GeneratorThisMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratorThisMode.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B7918C1C024462002481E2 /* JSGeneratorFunction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSGeneratorFunction.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B7918D1C024462002481E2 /* JSGeneratorFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSGeneratorFunction.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B7918E1C0244C9002481E2 /* SourceCodeKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceCodeKey.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B7918F1C0244EC002481E2 /* GeneratorPrototype.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = GeneratorPrototype.js; sourceTree = &quot;&lt;group&gt;&quot;; };
-                70B791901C0246CE002481E2 /* GeneratorPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratorPrototype.lut.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 70DC3E071B2DF2C700054299 /* IteratorPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IteratorPrototype.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 70DC3E081B2DF2C700054299 /* IteratorPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IteratorPrototype.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 70DE9A081BE7D670005D89D9 /* LLIntAssembly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLIntAssembly.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -5143,7 +5116,6 @@
</span><span class="cx">                                 996B73081BD9FA2C00331B84 /* DateConstructor.lut.h */,
</span><span class="cx">                                 BCD203E70E1718F4002C7E82 /* DatePrototype.lut.h */,
</span><span class="cx">                                 996B73091BD9FA2C00331B84 /* ErrorPrototype.lut.h */,
</span><del>-                                70B791901C0246CE002481E2 /* GeneratorPrototype.lut.h */,
</del><span class="cx">                                 6514F21818B3E1670098FF8B /* InitBytecodes.asm */,
</span><span class="cx">                                 A513E5C6185F9436007E95AD /* InjectedScriptSource.h */,
</span><span class="cx">                                 A5EA710D19F6DF810098F5EC /* InspectorAlternateBackendDispatchers.h */,
</span><span class="lines">@@ -5272,7 +5244,6 @@
</span><span class="cx">                                 869EBCB60E8C6D4A008722CC /* ResultType.h */,
</span><span class="cx">                                 0F8F2B9D17306C8B007DBDA5 /* SourceCode.cpp */,
</span><span class="cx">                                 65E866EE0DD59AFA00A2B2A1 /* SourceCode.h */,
</span><del>-                                70B7918E1C0244C9002481E2 /* SourceCodeKey.h */,
</del><span class="cx">                                 0F493AF816D0CAD10084508B /* SourceProvider.cpp */,
</span><span class="cx">                                 65E866ED0DD59AFA00A2B2A1 /* SourceProvider.h */,
</span><span class="cx">                                 E49DC15512EF277200184A1F /* SourceProviderCache.cpp */,
</span><span class="lines">@@ -5402,15 +5373,6 @@
</span><span class="cx">                                 F692A85D0255597D01FF60F7 /* FunctionPrototype.h */,
</span><span class="cx">                                 62D2D38D1ADF103F000206C1 /* FunctionRareData.cpp */,
</span><span class="cx">                                 62D2D38E1ADF103F000206C1 /* FunctionRareData.h */,
</span><del>-                                70B791831C024432002481E2 /* GeneratorFrame.cpp */,
-                                70B791841C024432002481E2 /* GeneratorFrame.h */,
-                                70B791851C024432002481E2 /* GeneratorFunctionConstructor.cpp */,
-                                70B791861C024432002481E2 /* GeneratorFunctionConstructor.h */,
-                                70B791871C024432002481E2 /* GeneratorFunctionPrototype.cpp */,
-                                70B791881C024432002481E2 /* GeneratorFunctionPrototype.h */,
-                                70B791891C024432002481E2 /* GeneratorPrototype.cpp */,
-                                70B7918A1C024432002481E2 /* GeneratorPrototype.h */,
-                                70B7918B1C024432002481E2 /* GeneratorThisMode.h */,
</del><span class="cx">                                 0FE050111AA9091100D33B33 /* GenericArguments.h */,
</span><span class="cx">                                 0FE050121AA9091100D33B33 /* GenericArgumentsInlines.h */,
</span><span class="cx">                                 0FE050131AA9091100D33B33 /* GenericOffset.h */,
</span><span class="lines">@@ -5510,8 +5472,6 @@
</span><span class="cx">                                 F692A85E0255597D01FF60F7 /* JSFunction.cpp */,
</span><span class="cx">                                 F692A85F0255597D01FF60F7 /* JSFunction.h */,
</span><span class="cx">                                 A72028B91797603D0098028C /* JSFunctionInlines.h */,
</span><del>-                                70B7918C1C024462002481E2 /* JSGeneratorFunction.cpp */,
-                                70B7918D1C024462002481E2 /* JSGeneratorFunction.h */,
</del><span class="cx">                                 0F2B66C317B6B5AB00A7AE3F /* JSGenericTypedArrayView.h */,
</span><span class="cx">                                 0F2B66C417B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructor.h */,
</span><span class="cx">                                 0F2B66C517B6B5AB00A7AE3F /* JSGenericTypedArrayViewConstructorInlines.h */,
</span><span class="lines">@@ -6626,7 +6586,6 @@
</span><span class="cx">                                 A75EE9B018AAB7E200AAD043 /* BuiltinNames.h */,
</span><span class="cx">                                 41DEA1311B9F3154006D65DD /* BuiltinUtils.h */,
</span><span class="cx">                                 A7A979C418BE8D9E002C3733 /* FunctionPrototype.js */,
</span><del>-                                70B7918F1C0244EC002481E2 /* GeneratorPrototype.js */,
</del><span class="cx">                                 7CF9BC5A1B65D9A3009DB1EF /* GlobalObject.js */,
</span><span class="cx">                                 E35E03611B7AB4850073AD2A /* InspectorInstrumentationObject.js */,
</span><span class="cx">                                 E33F50881B844A1A00413856 /* InternalPromiseConstructor.js */,
</span><span class="lines">@@ -7043,7 +7002,6 @@
</span><span class="cx">                                 A737810E1799EA2E00817533 /* DFGNaturalLoops.h in Headers */,
</span><span class="cx">                                 86ECA3EA132DEF1C002B2AD7 /* DFGNode.h in Headers */,
</span><span class="cx">                                 0FFB921B16D02F010055A5DB /* DFGNodeAllocator.h in Headers */,
</span><del>-                                70B791931C024A28002481E2 /* GeneratorFrame.h in Headers */,
</del><span class="cx">                                 0FA581BB150E953000B9A2D9 /* DFGNodeFlags.h in Headers */,
</span><span class="cx">                                 0F300B7818AB051100A6D72E /* DFGNodeOrigin.h in Headers */,
</span><span class="cx">                                 0FA581BC150E953000B9A2D9 /* DFGNodeType.h in Headers */,
</span><span class="lines">@@ -7094,7 +7052,6 @@
</span><span class="cx">                                 0F50AF3C193E8B3900674EE8 /* DFGStructureClobberState.h in Headers */,
</span><span class="cx">                                 0F79085619A290B200F6310C /* DFGStructureRegistrationPhase.h in Headers */,
</span><span class="cx">                                 0F2FCCFF18A60070001A27F8 /* DFGThreadData.h in Headers */,
</span><del>-                                70B791991C024A29002481E2 /* GeneratorPrototype.h in Headers */,
</del><span class="cx">                                 0FC097A2146B28CC00CF2442 /* DFGThunks.h in Headers */,
</span><span class="cx">                                 0FD8A32817D51F5700CA2C40 /* DFGTierUpCheckInjectionPhase.h in Headers */,
</span><span class="cx">                                 0FD8A32A17D51F5700CA2C40 /* DFGToFTLDeferredCompilationCallback.h in Headers */,
</span><span class="lines">@@ -7316,7 +7273,6 @@
</span><span class="cx">                                 A50E4B6218809DD50068A46D /* InspectorRuntimeAgent.h in Headers */,
</span><span class="cx">                                 A593CF831840377100BFCE27 /* InspectorValues.h in Headers */,
</span><span class="cx">                                 969A07990ED1D3AE00F1F681 /* Instruction.h in Headers */,
</span><del>-                                70B791911C024A13002481E2 /* SourceCodeKey.h in Headers */,
</del><span class="cx">                                 A7A8AF3B17ADB5F3005AB174 /* Int16Array.h in Headers */,
</span><span class="cx">                                 A7A8AF3C17ADB5F3005AB174 /* Int32Array.h in Headers */,
</span><span class="cx">                                 A7A8AF3A17ADB5F3005AB174 /* Int8Array.h in Headers */,
</span><span class="lines">@@ -7344,7 +7300,6 @@
</span><span class="cx">                                 70113D4C1A8DB093003848C4 /* IteratorOperations.h in Headers */,
</span><span class="cx">                                 70DC3E0A1B2DF2C700054299 /* IteratorPrototype.h in Headers */,
</span><span class="cx">                                 BC18C4130E16F5CD00B34460 /* JavaScript.h in Headers */,
</span><del>-                                70B791971C024A29002481E2 /* GeneratorFunctionPrototype.h in Headers */,
</del><span class="cx">                                 A503FA1A188E0FB000110F14 /* JavaScriptCallFrame.h in Headers */,
</span><span class="cx">                                 BC18C4140E16F5CD00B34460 /* JavaScriptCore.h in Headers */,
</span><span class="cx">                                 BC18C4150E16F5CD00B34460 /* JavaScriptCorePrefix.h in Headers */,
</span><span class="lines">@@ -7488,7 +7443,6 @@
</span><span class="cx">                                 1A28D4A8177B71C80007FA3C /* JSStringRefPrivate.h in Headers */,
</span><span class="cx">                                 0F919D0D157EE0A2004A4E7D /* JSSymbolTableObject.h in Headers */,
</span><span class="cx">                                 70ECA6061AFDBEA200449739 /* JSTemplateRegistryKey.h in Headers */,
</span><del>-                                70B7919C1C024A49002481E2 /* JSGeneratorFunction.h in Headers */,
</del><span class="cx">                                 BC18C42A0E16F5CD00B34460 /* JSType.h in Headers */,
</span><span class="cx">                                 0F2B66FB17B6B5AB00A7AE3F /* JSTypedArrayConstructors.h in Headers */,
</span><span class="cx">                                 0F2B66FD17B6B5AB00A7AE3F /* JSTypedArrayPrototypes.h in Headers */,
</span><span class="lines">@@ -7525,7 +7479,6 @@
</span><span class="cx">                                 FE187A021BFBE5610038BBCA /* JITMulGenerator.h in Headers */,
</span><span class="cx">                                 86D3B3C310159D7F002865E7 /* LinkBuffer.h in Headers */,
</span><span class="cx">                                 0F431738146BAC69007E3890 /* ListableHandler.h in Headers */,
</span><del>-                                70B791951C024A28002481E2 /* GeneratorFunctionConstructor.h in Headers */,
</del><span class="cx">                                 A7E2EA6B0FB460CF00601F06 /* LiteralParser.h in Headers */,
</span><span class="cx">                                 FE3913551B794F8A00EDAF71 /* LiveObjectData.h in Headers */,
</span><span class="cx">                                 FE3913561B794F8F00EDAF71 /* LiveObjectList.h in Headers */,
</span><span class="lines">@@ -7699,7 +7652,6 @@
</span><span class="cx">                                 A55D93A6185012A800400DED /* ScriptFunctionCall.h in Headers */,
</span><span class="cx">                                 A54CF2FA184EAEDA00237F19 /* ScriptObject.h in Headers */,
</span><span class="cx">                                 A54CF2F6184EAB2400237F19 /* ScriptValue.h in Headers */,
</span><del>-                                70B7919D1C024A56002481E2 /* GeneratorPrototype.lut.h in Headers */,
</del><span class="cx">                                 A7299DA617D12858005F5FF9 /* SetConstructor.h in Headers */,
</span><span class="cx">                                 A790DD6E182F499700588807 /* SetIteratorPrototype.h in Headers */,
</span><span class="cx">                                 A7299DA217D12848005F5FF9 /* SetPrototype.h in Headers */,
</span><span class="lines">@@ -7732,7 +7684,6 @@
</span><span class="cx">                                 BC18C46A0E16F5CD00B34460 /* StringPrototype.h in Headers */,
</span><span class="cx">                                 0FB3878E1BFBC44D00E3AB1E /* AirBlockWorklist.h in Headers */,
</span><span class="cx">                                 142E313B134FF0A600AFADB5 /* Strong.h in Headers */,
</span><del>-                                70B7919A1C024A29002481E2 /* GeneratorThisMode.h in Headers */,
</del><span class="cx">                                 145722861437E140005FDE26 /* StrongInlines.h in Headers */,
</span><span class="cx">                                 BCDE3AB80E6C82F5001453A7 /* Structure.h in Headers */,
</span><span class="cx">                                 7E4EE7090EBB7963005934AA /* StructureChain.h in Headers */,
</span><span class="lines">@@ -8754,7 +8705,6 @@
</span><span class="cx">                                 A1B9E23D1B4E0D6700BC7FED /* IntlCollatorPrototype.cpp in Sources */,
</span><span class="cx">                                 A1587D6D1B4DC14100D69849 /* IntlDateTimeFormat.cpp in Sources */,
</span><span class="cx">                                 A1587D6F1B4DC14100D69849 /* IntlDateTimeFormatConstructor.cpp in Sources */,
</span><del>-                                70B7919B1C024A46002481E2 /* JSGeneratorFunction.cpp in Sources */,
</del><span class="cx">                                 A1587D711B4DC14100D69849 /* IntlDateTimeFormatPrototype.cpp in Sources */,
</span><span class="cx">                                 A1D792FC1B43864B004516F5 /* IntlNumberFormat.cpp in Sources */,
</span><span class="cx">                                 A1D792FE1B43864B004516F5 /* IntlNumberFormatConstructor.cpp in Sources */,
</span><span class="lines">@@ -8781,7 +8731,6 @@
</span><span class="cx">                                 0F766D2815A8CC1E008F363E /* JITStubRoutine.cpp in Sources */,
</span><span class="cx">                                 0F766D2B15A8CC38008F363E /* JITStubRoutineSet.cpp in Sources */,
</span><span class="cx">                                 FE4238901BE18C3C00514737 /* JITSubGenerator.cpp in Sources */,
</span><del>-                                70B791941C024A28002481E2 /* GeneratorFunctionConstructor.cpp in Sources */,
</del><span class="cx">                                 0F5EF91E16878F7A003E5C25 /* JITThunks.cpp in Sources */,
</span><span class="cx">                                 0FC712E217CD8791008CC93C /* JITToDFGDeferredCompilationCallback.cpp in Sources */,
</span><span class="cx">                                 140566C4107EC255005DBC8D /* JSAPIValueWrapper.cpp in Sources */,
</span><span class="lines">@@ -8919,7 +8868,6 @@
</span><span class="cx">                                 142D6F0813539A2800B02E86 /* MarkedBlock.cpp in Sources */,
</span><span class="cx">                                 14D2F3DA139F4BE200491031 /* MarkedSpace.cpp in Sources */,
</span><span class="cx">                                 142D6F1113539A4100B02E86 /* MarkStack.cpp in Sources */,
</span><del>-                                70B791981C024A29002481E2 /* GeneratorPrototype.cpp in Sources */,
</del><span class="cx">                                 4340A4841A9051AF00D73CCA /* MathCommon.cpp in Sources */,
</span><span class="cx">                                 0F37308C1C0BD29100052BFA /* B3PhiChildren.cpp in Sources */,
</span><span class="cx">                                 14469DDF107EC7E700650446 /* MathObject.cpp in Sources */,
</span><span class="lines">@@ -9068,7 +9016,6 @@
</span><span class="cx">                                 0FF42745158EBE91004CB9FF /* udis86_syn-att.c in Sources */,
</span><span class="cx">                                 0FF42746158EBE91004CB9FF /* udis86_syn-intel.c in Sources */,
</span><span class="cx">                                 0FF42747158EBE91004CB9FF /* udis86_syn.c in Sources */,
</span><del>-                                70B791961C024A28002481E2 /* GeneratorFunctionPrototype.cpp in Sources */,
</del><span class="cx">                                 0FF42732158EBD58004CB9FF /* UDis86Disassembler.cpp in Sources */,
</span><span class="cx">                                 A76F279415F13C9600517D67 /* UnlinkedCodeBlock.cpp in Sources */,
</span><span class="cx">                                 14142E551B7973C000F4BF4B /* UnlinkedFunctionExecutable.cpp in Sources */,
</span><span class="lines">@@ -9077,7 +9024,6 @@
</span><span class="cx">                                 79EE0BFF1B4AFB85000385C9 /* VariableEnvironment.cpp in Sources */,
</span><span class="cx">                                 0F6C73501AC9F99F00BE1682 /* VariableWriteFireDetail.cpp in Sources */,
</span><span class="cx">                                 0FE0502C1AA9095600D33B33 /* VarOffset.cpp in Sources */,
</span><del>-                                70B791921C024A23002481E2 /* GeneratorFrame.cpp in Sources */,
</del><span class="cx">                                 0F20C2591A8013AB00DA3229 /* VirtualRegister.cpp in Sources */,
</span><span class="cx">                                 E18E3A590DF9278C00D90B34 /* VM.cpp in Sources */,
</span><span class="cx">                                 FE5932A7183C5A2600A1ECCC /* VMEntryScope.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebuiltinsBuiltinExecutablescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -82,7 +82,7 @@
</span><span class="cx">     RefPtr&lt;SourceProvider&gt; sourceOverride = isParsingDefaultConstructor ? source.provider() : nullptr;
</span><span class="cx">     std::unique_ptr&lt;ProgramNode&gt; program = parse&lt;ProgramNode&gt;(
</span><span class="cx">         &amp;vm, source, Identifier(), builtinMode,
</span><del>-        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode, SuperBinding::NotNeeded, error,
</del><ins>+        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode, error,
</ins><span class="cx">         &amp;positionBeforeLastNewline, constructorKind);
</span><span class="cx"> 
</span><span class="cx">     if (!program) {
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx">     }
</span><span class="cx">     metadata-&gt;overrideName(name);
</span><span class="cx">     VariableEnvironment dummyTDZVariables;
</span><del>-    UnlinkedFunctionExecutable* functionExecutable = UnlinkedFunctionExecutable::create(&amp;vm, source, metadata, kind, constructAbility, GeneratorThisMode::NonEmpty, dummyTDZVariables, WTF::move(sourceOverride));
</del><ins>+    UnlinkedFunctionExecutable* functionExecutable = UnlinkedFunctionExecutable::create(&amp;vm, source, metadata, kind, constructAbility, dummyTDZVariables, WTF::move(sourceOverride));
</ins><span class="cx">     functionExecutable-&gt;setNameValue(vm, jsString(&amp;vm, name.string()));
</span><span class="cx">     return functionExecutable;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebuiltinsGeneratorPrototypejs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/builtins/GeneratorPrototype.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/builtins/GeneratorPrototype.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/builtins/GeneratorPrototype.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,93 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// 25.3.3.3 GeneratorResume ( generator, value )
-// 25.3.3.4 GeneratorResumeAbrupt(generator, abruptCompletion)
-function generatorResume(generator, sentValue, resumeMode)
-{
-    &quot;use strict&quot;;
-
-    // GeneratorState.
-    const Completed = -1;
-    const Executing = -2;
-
-    // ResumeMode.
-    const NormalMode = 0;
-    const ReturnMode = 1;
-    const ThrowMode = 2;
-
-    let state = generator.@generatorState;
-    let done = false;
-    let value = undefined;
-
-    if (typeof state !== 'number')
-        throw new @TypeError(&quot;|this| should be a generator&quot;);
-
-    if (state === Executing)
-        throw new @TypeError(&quot;Generator is executing&quot;);
-
-    if (state === Completed) {
-        if (resumeMode === ThrowMode)
-            throw sentValue;
-
-        done = true;
-        if (resumeMode === ReturnMode)
-            value = sentValue;
-    } else {
-        try {
-            generator.@generatorState = Executing;
-            value = generator.@generatorNext.@call(generator.@generatorThis, generator, state, sentValue, resumeMode);
-            if (generator.@generatorState === Executing) {
-                generator.@generatorState = Completed;
-                done = true;
-            }
-        } catch (error) {
-            generator.@generatorState = Completed;
-            throw error;
-        }
-    }
-    return { done, value };
-}
-
-function next(value)
-{
-    &quot;use strict&quot;;
-
-    return @generatorResume(this, value, /* NormalMode */ 0);
-}
-
-function return(value)
-{
-    &quot;use strict&quot;;
-
-    return @generatorResume(this, value, /* ReturnMode */ 1);
-}
-
-function throw(exception)
-{
-    &quot;use strict&quot;;
-
-    return @generatorResume(this, exception, /* ThrowMode */ 2);
-}
</del></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeBasicBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -59,7 +59,6 @@
</span><span class="cx">     case op_switch_char:
</span><span class="cx">     case op_switch_string:
</span><span class="cx">     case op_check_has_instance:
</span><del>-    case op_save:
</del><span class="cx">         return true;
</span><span class="cx">     default:
</span><span class="cx">         return false;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeListjson"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeList.json (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeList.json        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -90,8 +90,6 @@
</span><span class="cx">             { &quot;name&quot; : &quot;op_switch_string&quot;, &quot;length&quot; : 4 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_new_func&quot;, &quot;length&quot; : 4 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_new_func_exp&quot;, &quot;length&quot; : 4 },
</span><del>-            { &quot;name&quot; : &quot;op_new_generator_func&quot;, &quot;length&quot; : 4 },
-            { &quot;name&quot; : &quot;op_new_generator_func_exp&quot;, &quot;length&quot; : 4 },
</del><span class="cx">             { &quot;name&quot; : &quot;op_new_arrow_func_exp&quot;, &quot;length&quot; : 5 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_call&quot;, &quot;length&quot; : 9 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_tail_call&quot;, &quot;length&quot; : 9 },
</span><span class="lines">@@ -132,9 +130,7 @@
</span><span class="cx">             { &quot;name&quot; : &quot;op_load_arrowfunction_this&quot;, &quot;length&quot; : 2 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_assert&quot;, &quot;length&quot; : 3 },
</span><span class="cx">             { &quot;name&quot; : &quot;op_copy_rest&quot;, &quot;length&quot;: 4 },
</span><del>-            { &quot;name&quot; : &quot;op_get_rest_length&quot;, &quot;length&quot;: 3 },
-            { &quot;name&quot; : &quot;op_save&quot;, &quot;length&quot; : 4 },
-            { &quot;name&quot; : &quot;op_resume&quot;, &quot;length&quot; : 3 }
</del><ins>+            { &quot;name&quot; : &quot;op_get_rest_length&quot;, &quot;length&quot;: 3 }
</ins><span class="cx">         ]
</span><span class="cx">     },
</span><span class="cx">     {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeLivenessAnalysiscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx"> // Simplified interface to bytecode use/def, which determines defs first and then uses, and includes
</span><span class="cx"> // exception handlers in the uses.
</span><span class="cx"> template&lt;typename UseFunctor, typename DefFunctor&gt;
</span><del>-static void stepOverInstruction(CodeBlock* codeBlock, BytecodeBasicBlock* block, Vector&lt;std::unique_ptr&lt;BytecodeBasicBlock&gt;&gt;&amp; basicBlocks, unsigned bytecodeOffset, const UseFunctor&amp; use, const DefFunctor&amp; def)
</del><ins>+static void stepOverInstruction(CodeBlock* codeBlock, Vector&lt;std::unique_ptr&lt;BytecodeBasicBlock&gt;&gt;&amp; basicBlocks, unsigned bytecodeOffset, const UseFunctor&amp; use, const DefFunctor&amp; def)
</ins><span class="cx"> {
</span><span class="cx">     // This abstractly execute the instruction in reverse. Instructions logically first use operands and
</span><span class="cx">     // then define operands. This logical ordering is necessary for operations that use and def the same
</span><span class="lines">@@ -116,19 +116,19 @@
</span><span class="cx">     // first add it to the out set (the use), and then we'd remove it (the def).
</span><span class="cx">     
</span><span class="cx">     computeDefsForBytecodeOffset(
</span><del>-        codeBlock, block, bytecodeOffset,
</del><ins>+        codeBlock, bytecodeOffset,
</ins><span class="cx">         [&amp;] (CodeBlock* codeBlock, Instruction*, OpcodeID, int operand) {
</span><span class="cx">             if (isValidRegisterForLiveness(codeBlock, operand))
</span><span class="cx">                 def(VirtualRegister(operand).toLocal());
</span><span class="cx">         });
</span><span class="cx"> 
</span><span class="cx">     computeUsesForBytecodeOffset(
</span><del>-        codeBlock, block, bytecodeOffset,
</del><ins>+        codeBlock, bytecodeOffset,
</ins><span class="cx">         [&amp;] (CodeBlock* codeBlock, Instruction*, OpcodeID, int operand) {
</span><span class="cx">             if (isValidRegisterForLiveness(codeBlock, operand))
</span><span class="cx">                 use(VirtualRegister(operand).toLocal());
</span><span class="cx">         });
</span><del>-
</del><ins>+        
</ins><span class="cx">     // If we have an exception handler, we want the live-in variables of the 
</span><span class="cx">     // exception handler block to be included in the live-in of this particular bytecode.
</span><span class="cx">     if (HandlerInfo* handler = codeBlock-&gt;handlerForBytecodeOffset(bytecodeOffset)) {
</span><span class="lines">@@ -138,10 +138,10 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static void stepOverInstruction(CodeBlock* codeBlock, BytecodeBasicBlock* block, Vector&lt;std::unique_ptr&lt;BytecodeBasicBlock&gt;&gt;&amp; basicBlocks, unsigned bytecodeOffset, FastBitVector&amp; out)
</del><ins>+static void stepOverInstruction(CodeBlock* codeBlock, Vector&lt;std::unique_ptr&lt;BytecodeBasicBlock&gt;&gt;&amp; basicBlocks, unsigned bytecodeOffset, FastBitVector&amp; out)
</ins><span class="cx"> {
</span><span class="cx">     stepOverInstruction(
</span><del>-        codeBlock, block, basicBlocks, bytecodeOffset,
</del><ins>+        codeBlock, basicBlocks, bytecodeOffset,
</ins><span class="cx">         [&amp;] (unsigned bitIndex) {
</span><span class="cx">             // This is the use functor, so we set the bit.
</span><span class="cx">             out.set(bitIndex);
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx">         if (targetOffset &gt; bytecodeOffset)
</span><span class="cx">             break;
</span><span class="cx">         
</span><del>-        stepOverInstruction(codeBlock, block, basicBlocks, bytecodeOffset, out);
</del><ins>+        stepOverInstruction(codeBlock, basicBlocks, bytecodeOffset, out);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     result.set(out);
</span><span class="lines">@@ -180,7 +180,7 @@
</span><span class="cx"> void BytecodeLivenessAnalysis::runLivenessFixpoint()
</span><span class="cx"> {
</span><span class="cx">     UnlinkedCodeBlock* unlinkedCodeBlock = m_codeBlock-&gt;unlinkedCodeBlock();
</span><del>-    unsigned numberOfVariables = unlinkedCodeBlock-&gt;m_numCalleeLocals;
</del><ins>+    unsigned numberOfVariables = unlinkedCodeBlock-&gt;m_numCalleeRegisters;
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; m_basicBlocks.size(); i++) {
</span><span class="cx">         BytecodeBasicBlock* block = m_basicBlocks[i].get();
</span><span class="lines">@@ -248,7 +248,7 @@
</span><span class="cx">         
</span><span class="cx">         for (unsigned i = block-&gt;bytecodeOffsets().size(); i--;) {
</span><span class="cx">             unsigned bytecodeOffset = block-&gt;bytecodeOffsets()[i];
</span><del>-            stepOverInstruction(m_codeBlock, block, m_basicBlocks, bytecodeOffset, out);
</del><ins>+            stepOverInstruction(m_codeBlock, m_basicBlocks, bytecodeOffset, out);
</ins><span class="cx">             result.m_map[bytecodeOffset] = out;
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -271,7 +271,7 @@
</span><span class="cx">         for (unsigned i = block-&gt;bytecodeOffsets().size(); i--;) {
</span><span class="cx">             unsigned bytecodeOffset = block-&gt;bytecodeOffsets()[i];
</span><span class="cx">             stepOverInstruction(
</span><del>-                m_codeBlock, block, m_basicBlocks, bytecodeOffset,
</del><ins>+                m_codeBlock, m_basicBlocks, bytecodeOffset,
</ins><span class="cx">                 [&amp;] (unsigned index) {
</span><span class="cx">                     // This is for uses.
</span><span class="cx">                     if (out.get(index))
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeBytecodeUseDefh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename Functor&gt;
</span><span class="cx"> void computeUsesForBytecodeOffset(
</span><del>-    CodeBlock* codeBlock, BytecodeBasicBlock* block, unsigned bytecodeOffset, const Functor&amp; functor)
</del><ins>+    CodeBlock* codeBlock, unsigned bytecodeOffset, const Functor&amp; functor)
</ins><span class="cx"> {
</span><span class="cx">     Interpreter* interpreter = codeBlock-&gt;vm()-&gt;interpreter;
</span><span class="cx">     Instruction* instructionsBegin = codeBlock-&gt;instructions().begin();
</span><span class="lines">@@ -71,8 +71,7 @@
</span><span class="cx">     case op_jeq_null:
</span><span class="cx">     case op_jneq_null:
</span><span class="cx">     case op_dec:
</span><del>-    case op_inc:
-    case op_resume: {
</del><ins>+    case op_inc: {
</ins><span class="cx">         functor(codeBlock, instruction, opcodeID, instruction[1].u.operand);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -126,7 +125,6 @@
</span><span class="cx">     case op_get_property_enumerator:
</span><span class="cx">     case op_get_enumerable_length:
</span><span class="cx">     case op_new_func_exp:
</span><del>-    case op_new_generator_func_exp:
</del><span class="cx">     case op_new_arrow_func_exp:
</span><span class="cx">     case op_to_index_string:
</span><span class="cx">     case op_create_lexical_environment:
</span><span class="lines">@@ -155,7 +153,6 @@
</span><span class="cx">     case op_del_by_id:
</span><span class="cx">     case op_unsigned:
</span><span class="cx">     case op_new_func:
</span><del>-    case op_new_generator_func:
</del><span class="cx">     case op_get_parent_scope:
</span><span class="cx">     case op_create_scoped_arguments:
</span><span class="cx">     case op_get_from_arguments: {
</span><span class="lines">@@ -237,22 +234,6 @@
</span><span class="cx">             functor(codeBlock, instruction, opcodeID, lastArg + i);
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    case op_save: {
-        functor(codeBlock, instruction, opcodeID, instruction[1].u.operand);
-        unsigned mergePointBytecodeOffset = bytecodeOffset + instruction[3].u.operand;
-        BytecodeBasicBlock* mergePointBlock = nullptr;
-        for (BytecodeBasicBlock* successor : block-&gt;successors()) {
-            if (successor-&gt;leaderBytecodeOffset() == mergePointBytecodeOffset) {
-                mergePointBlock = successor;
-                break;
-            }
-        }
-        ASSERT(mergePointBlock);
-        mergePointBlock-&gt;in().forEachSetBit([&amp;](unsigned local) {
-            functor(codeBlock, instruction, opcodeID, virtualRegisterForLocal(local).offset());
-        });
-        return;
-    }
</del><span class="cx">     default:
</span><span class="cx">         RELEASE_ASSERT_NOT_REACHED();
</span><span class="cx">         break;
</span><span class="lines">@@ -260,7 +241,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename Functor&gt;
</span><del>-void computeDefsForBytecodeOffset(CodeBlock* codeBlock, BytecodeBasicBlock* block, unsigned bytecodeOffset, const Functor&amp; functor)
</del><ins>+void computeDefsForBytecodeOffset(CodeBlock* codeBlock, unsigned bytecodeOffset, const Functor&amp; functor)
</ins><span class="cx"> {
</span><span class="cx">     Interpreter* interpreter = codeBlock-&gt;vm()-&gt;interpreter;
</span><span class="cx">     Instruction* instructionsBegin = codeBlock-&gt;instructions().begin();
</span><span class="lines">@@ -275,7 +256,6 @@
</span><span class="cx">     case op_profile_did_call:
</span><span class="cx">     case op_throw:
</span><span class="cx">     case op_throw_static_error:
</span><del>-    case op_save:
</del><span class="cx">     case op_assert:
</span><span class="cx">     case op_debug:
</span><span class="cx">     case op_ret:
</span><span class="lines">@@ -336,8 +316,6 @@
</span><span class="cx">     case op_new_regexp:
</span><span class="cx">     case op_new_func:
</span><span class="cx">     case op_new_func_exp:
</span><del>-    case op_new_generator_func:
-    case op_new_generator_func_exp:
</del><span class="cx">     case op_new_arrow_func_exp:
</span><span class="cx">     case op_call_varargs:
</span><span class="cx">     case op_tail_call_varargs:
</span><span class="lines">@@ -414,15 +392,7 @@
</span><span class="cx">         for (unsigned i = codeBlock-&gt;m_numVars; i--;)
</span><span class="cx">             functor(codeBlock, instruction, opcodeID, virtualRegisterForLocal(i).offset());
</span><span class="cx">         return;
</span><del>-    }
-    case op_resume: {
-        RELEASE_ASSERT(block-&gt;successors().size() == 1);
-        block-&gt;successors()[0]-&gt;in().forEachSetBit([&amp;](unsigned local) {
-            functor(codeBlock, instruction, opcodeID, virtualRegisterForLocal(local).offset());
-        });
-        return;
-    }
-    }
</del><ins>+    } }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -585,7 +585,7 @@
</span><span class="cx">         &quot;: %lu m_instructions; %lu bytes; %d parameter(s); %d callee register(s); %d variable(s)&quot;,
</span><span class="cx">         static_cast&lt;unsigned long&gt;(instructions().size()),
</span><span class="cx">         static_cast&lt;unsigned long&gt;(instructions().size() * sizeof(Instruction)),
</span><del>-        m_numParameters, m_numCalleeLocals, m_numVars);
</del><ins>+        m_numParameters, m_numCalleeRegisters, m_numVars);
</ins><span class="cx">     if (needsActivation() &amp;&amp; codeType() == FunctionCode)
</span><span class="cx">         out.printf(&quot;; lexical environment in r%d&quot;, activationRegister().offset());
</span><span class="cx">     out.printf(&quot;\n&quot;);
</span><span class="lines">@@ -680,18 +680,6 @@
</span><span class="cx">         } while (i &lt; m_rareData-&gt;m_stringSwitchJumpTables.size());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (m_rareData &amp;&amp; !m_rareData-&gt;m_liveCalleeLocalsAtYield.isEmpty()) {
-        out.printf(&quot;\nLive Callee Locals:\n&quot;);
-        unsigned i = 0;
-        do {
-            const FastBitVector&amp; liveness = m_rareData-&gt;m_liveCalleeLocalsAtYield[i];
-            out.printf(&quot;  live%1u = &quot;, i);
-            liveness.dump(out);
-            out.printf(&quot;\n&quot;);
-            ++i;
-        } while (i &lt; m_rareData-&gt;m_liveCalleeLocalsAtYield.size());
-    }
-
</del><span class="cx">     out.printf(&quot;\n&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1315,14 +1303,6 @@
</span><span class="cx">             out.printf(&quot;%s, %s, f%d&quot;, registerName(r0).data(), registerName(r1).data(), f0);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        case op_new_generator_func: {
-            int r0 = (++it)-&gt;u.operand;
-            int r1 = (++it)-&gt;u.operand;
-            int f0 = (++it)-&gt;u.operand;
-            printLocationAndOp(out, exec, location, it, &quot;new_generator_func&quot;);
-            out.printf(&quot;%s, %s, f%d&quot;, registerName(r0).data(), registerName(r1).data(), f0);
-            break;
-        }
</del><span class="cx">         case op_new_arrow_func_exp: {
</span><span class="cx">             int r0 = (++it)-&gt;u.operand;
</span><span class="cx">             int r1 = (++it)-&gt;u.operand;
</span><span class="lines">@@ -1340,14 +1320,6 @@
</span><span class="cx">             out.printf(&quot;%s, %s, f%d&quot;, registerName(r0).data(), registerName(r1).data(), f0);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        case op_new_generator_func_exp: {
-            int r0 = (++it)-&gt;u.operand;
-            int r1 = (++it)-&gt;u.operand;
-            int f0 = (++it)-&gt;u.operand;
-            printLocationAndOp(out, exec, location, it, &quot;new_generator_func_exp&quot;);
-            out.printf(&quot;%s, %s, f%d&quot;, registerName(r0).data(), registerName(r1).data(), f0);
-            break;
-        }
</del><span class="cx">         case op_call: {
</span><span class="cx">             printCallOp(out, exec, location, it, &quot;call&quot;, DumpCaches, hasPrintedProfiling, callLinkInfos);
</span><span class="cx">             break;
</span><span class="lines">@@ -1536,27 +1508,6 @@
</span><span class="cx">             out.printf(&quot;%s, %d&quot;, debugHookName(debugHookID), hasBreakpointFlag);
</span><span class="cx">             break;
</span><span class="cx">         }
</span><del>-        case op_save: {
-            int generator = (++it)-&gt;u.operand;
-            unsigned liveCalleeLocalsIndex = (++it)-&gt;u.unsignedValue;
-            int offset = (++it)-&gt;u.operand;
-            const FastBitVector&amp; liveness = m_rareData-&gt;m_liveCalleeLocalsAtYield[liveCalleeLocalsIndex];
-            printLocationAndOp(out, exec, location, it, &quot;save&quot;);
-            out.printf(&quot;%s, &quot;, registerName(generator).data());
-            liveness.dump(out);
-            out.printf(&quot;(@live%1u), %d(-&gt;%d)&quot;, liveCalleeLocalsIndex, offset, location + offset);
-            break;
-        }
-        case op_resume: {
-            int generator = (++it)-&gt;u.operand;
-            unsigned liveCalleeLocalsIndex = (++it)-&gt;u.unsignedValue;
-            const FastBitVector&amp; liveness = m_rareData-&gt;m_liveCalleeLocalsAtYield[liveCalleeLocalsIndex];
-            printLocationAndOp(out, exec, location, it, &quot;resume&quot;);
-            out.printf(&quot;%s, &quot;, registerName(generator).data());
-            liveness.dump(out);
-            out.printf(&quot;(@live%1u)&quot;, liveCalleeLocalsIndex);
-            break;
-        }
</del><span class="cx">         case op_assert: {
</span><span class="cx">             int condition = (++it)-&gt;u.operand;
</span><span class="cx">             int line = (++it)-&gt;u.operand;
</span><span class="lines">@@ -1721,7 +1672,7 @@
</span><span class="cx">     : JSCell(*vm, structure)
</span><span class="cx">     , m_globalObject(other.m_globalObject)
</span><span class="cx">     , m_heap(other.m_heap)
</span><del>-    , m_numCalleeLocals(other.m_numCalleeLocals)
</del><ins>+    , m_numCalleeRegisters(other.m_numCalleeRegisters)
</ins><span class="cx">     , m_numVars(other.m_numVars)
</span><span class="cx">     , m_isConstructor(other.m_isConstructor)
</span><span class="cx">     , m_shouldAlwaysBeInlined(true)
</span><span class="lines">@@ -1778,7 +1729,6 @@
</span><span class="cx">         m_rareData-&gt;m_constantBuffers = other.m_rareData-&gt;m_constantBuffers;
</span><span class="cx">         m_rareData-&gt;m_switchJumpTables = other.m_rareData-&gt;m_switchJumpTables;
</span><span class="cx">         m_rareData-&gt;m_stringSwitchJumpTables = other.m_rareData-&gt;m_stringSwitchJumpTables;
</span><del>-        m_rareData-&gt;m_liveCalleeLocalsAtYield = other.m_rareData-&gt;m_liveCalleeLocalsAtYield;
</del><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     m_heap-&gt;m_codeBlocks.add(this);
</span><span class="lines">@@ -1789,7 +1739,7 @@
</span><span class="cx">     : JSCell(*vm, structure)
</span><span class="cx">     , m_globalObject(scope-&gt;globalObject()-&gt;vm(), this, scope-&gt;globalObject())
</span><span class="cx">     , m_heap(&amp;m_globalObject-&gt;vm().heap)
</span><del>-    , m_numCalleeLocals(unlinkedCodeBlock-&gt;m_numCalleeLocals)
</del><ins>+    , m_numCalleeRegisters(unlinkedCodeBlock-&gt;m_numCalleeRegisters)
</ins><span class="cx">     , m_numVars(unlinkedCodeBlock-&gt;m_numVars)
</span><span class="cx">     , m_isConstructor(unlinkedCodeBlock-&gt;isConstructor())
</span><span class="cx">     , m_shouldAlwaysBeInlined(true)
</span><span class="lines">@@ -1959,9 +1909,6 @@
</span><span class="cx">     // Bookkeep the strongly referenced module environments.
</span><span class="cx">     HashSet&lt;JSModuleEnvironment*&gt; stronglyReferencedModuleEnvironments;
</span><span class="cx"> 
</span><del>-    // Bookkeep the merge point bytecode offsets.
-    Vector&lt;size_t&gt; mergePointBytecodeOffsets;
-
</del><span class="cx">     RefCountedArray&lt;Instruction&gt; instructions(instructionCount);
</span><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; !instructionReader.atEnd(); ) {
</span><span class="lines">@@ -2250,15 +2197,6 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        case op_save: {
-            unsigned liveCalleeLocalsIndex = pc[2].u.index;
-            int offset = pc[3].u.operand;
-            if (liveCalleeLocalsIndex &gt;= mergePointBytecodeOffsets.size())
-                mergePointBytecodeOffsets.resize(liveCalleeLocalsIndex + 1);
-            mergePointBytecodeOffsets[liveCalleeLocalsIndex] = i + offset;
-            break;
-        }
-
</del><span class="cx">         default:
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="lines">@@ -2270,20 +2208,6 @@
</span><span class="cx"> 
</span><span class="cx">     m_instructions = WTF::move(instructions);
</span><span class="cx"> 
</span><del>-    // Perform bytecode liveness analysis to determine which locals are live and should be resumed when executing op_resume.
-    if (unlinkedCodeBlock-&gt;parseMode() == SourceParseMode::GeneratorBodyMode) {
-        if (size_t count = mergePointBytecodeOffsets.size()) {
-            createRareDataIfNecessary();
-            BytecodeLivenessAnalysis liveness(this);
-            m_rareData-&gt;m_liveCalleeLocalsAtYield.grow(count);
-            size_t liveCalleeLocalsIndex = 0;
-            for (size_t bytecodeOffset : mergePointBytecodeOffsets) {
-                m_rareData-&gt;m_liveCalleeLocalsAtYield[liveCalleeLocalsIndex] = liveness.getLivenessInfoAtBytecodeOffset(bytecodeOffset);
-                ++liveCalleeLocalsIndex;
-            }
-        }
-    }
-
</del><span class="cx">     // Set optimization thresholds only after m_instructions is initialized, since these
</span><span class="cx">     // rely on the instruction count (and are in theory permitted to also inspect the
</span><span class="cx">     // instruction stream to more accurate assess the cost of tier-up).
</span><span class="lines">@@ -2307,7 +2231,7 @@
</span><span class="cx">     : JSCell(*vm, structure)
</span><span class="cx">     , m_globalObject(globalObject-&gt;vm(), this, globalObject)
</span><span class="cx">     , m_heap(&amp;m_globalObject-&gt;vm().heap)
</span><del>-    , m_numCalleeLocals(0)
</del><ins>+    , m_numCalleeRegisters(0)
</ins><span class="cx">     , m_numVars(0)
</span><span class="cx">     , m_isConstructor(false)
</span><span class="cx">     , m_shouldAlwaysBeInlined(false)
</span><span class="lines">@@ -3134,7 +3058,6 @@
</span><span class="cx">         if (m_rareData) {
</span><span class="cx">             m_rareData-&gt;m_switchJumpTables.shrinkToFit();
</span><span class="cx">             m_rareData-&gt;m_stringSwitchJumpTables.shrinkToFit();
</span><del>-            m_rareData-&gt;m_liveCalleeLocalsAtYield.shrinkToFit();
</del><span class="cx">         }
</span><span class="cx">     } // else don't shrink these, because we would have already pointed pointers into these tables.
</span><span class="cx"> }
</span><span class="lines">@@ -4106,7 +4029,7 @@
</span><span class="cx">     
</span><span class="cx">     FastBitVector liveAtHead = liveness.getLivenessInfoAtBytecodeOffset(0);
</span><span class="cx">     
</span><del>-    if (liveAtHead.numBits() != static_cast&lt;size_t&gt;(m_numCalleeLocals)) {
</del><ins>+    if (liveAtHead.numBits() != static_cast&lt;size_t&gt;(m_numCalleeRegisters)) {
</ins><span class="cx">         beginValidationDidFail();
</span><span class="cx">         dataLog(&quot;    Wrong number of bits in result!\n&quot;);
</span><span class="cx">         dataLog(&quot;    Result: &quot;, liveAtHead, &quot;\n&quot;);
</span><span class="lines">@@ -4114,7 +4037,7 @@
</span><span class="cx">         endValidationDidFail();
</span><span class="cx">     }
</span><span class="cx">     
</span><del>-    for (unsigned i = m_numCalleeLocals; i--;) {
</del><ins>+    for (unsigned i = m_numCalleeRegisters; i--;) {
</ins><span class="cx">         VirtualRegister reg = virtualRegisterForLocal(i);
</span><span class="cx">         
</span><span class="cx">         if (liveAtHead.get(i)) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -69,7 +69,6 @@
</span><span class="cx"> #include &quot;VirtualRegister.h&quot;
</span><span class="cx"> #include &quot;Watchpoint.h&quot;
</span><span class="cx"> #include &lt;wtf/Bag.h&gt;
</span><del>-#include &lt;wtf/FastBitVector.h&gt;
</del><span class="cx"> #include &lt;wtf/FastMalloc.h&gt;
</span><span class="cx"> #include &lt;wtf/RefCountedArray.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="lines">@@ -142,8 +141,6 @@
</span><span class="cx">     int numParameters() const { return m_numParameters; }
</span><span class="cx">     void setNumParameters(int newValue);
</span><span class="cx"> 
</span><del>-    int numCalleeLocals() const { return m_numCalleeLocals; }
-
</del><span class="cx">     int* addressOfNumParameters() { return &amp;m_numParameters; }
</span><span class="cx">     static ptrdiff_t offsetOfNumParameters() { return OBJECT_OFFSETOF(CodeBlock, m_numParameters); }
</span><span class="cx"> 
</span><span class="lines">@@ -657,18 +654,6 @@
</span><span class="cx">     StringJumpTable&amp; addStringSwitchJumpTable() { createRareDataIfNecessary(); m_rareData-&gt;m_stringSwitchJumpTables.append(StringJumpTable()); return m_rareData-&gt;m_stringSwitchJumpTables.last(); }
</span><span class="cx">     StringJumpTable&amp; stringSwitchJumpTable(int tableIndex) { RELEASE_ASSERT(m_rareData); return m_rareData-&gt;m_stringSwitchJumpTables[tableIndex]; }
</span><span class="cx"> 
</span><del>-    // Live callee registers at yield points.
-    const FastBitVector&amp; liveCalleeLocalsAtYield(unsigned index) const
-    {
-        RELEASE_ASSERT(m_rareData);
-        return m_rareData-&gt;m_liveCalleeLocalsAtYield[index];
-    }
-    FastBitVector&amp; liveCalleeLocalsAtYield(unsigned index)
-    {
-        RELEASE_ASSERT(m_rareData);
-        return m_rareData-&gt;m_liveCalleeLocalsAtYield[index];
-    }
-
</del><span class="cx">     EvalCodeCache&amp; evalCodeCache() { createRareDataIfNecessary(); return m_rareData-&gt;m_evalCodeCache; }
</span><span class="cx"> 
</span><span class="cx">     enum ShrinkMode {
</span><span class="lines">@@ -870,7 +855,7 @@
</span><span class="cx">     // FIXME: Make these remaining members private.
</span><span class="cx"> 
</span><span class="cx">     int m_numLocalRegistersForCalleeSaves;
</span><del>-    int m_numCalleeLocals;
</del><ins>+    int m_numCalleeRegisters;
</ins><span class="cx">     int m_numVars;
</span><span class="cx">     bool m_isConstructor : 1;
</span><span class="cx">     
</span><span class="lines">@@ -915,8 +900,6 @@
</span><span class="cx">         Vector&lt;SimpleJumpTable&gt; m_switchJumpTables;
</span><span class="cx">         Vector&lt;StringJumpTable&gt; m_stringSwitchJumpTables;
</span><span class="cx"> 
</span><del>-        Vector&lt;FastBitVector&gt; m_liveCalleeLocalsAtYield;
-
</del><span class="cx">         EvalCodeCache m_evalCodeCache;
</span><span class="cx">     };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeEvalCodeCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/EvalCodeCache.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/EvalCodeCache.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/EvalCodeCache.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include &quot;JSScope.h&quot;
</span><span class="cx"> #include &quot;Options.h&quot;
</span><span class="cx"> #include &quot;SourceCode.h&quot;
</span><del>-#include &quot;SourceCodeKey.h&quot;
</del><span class="cx"> #include &lt;wtf/HashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/RefPtr.h&gt;
</span><span class="cx"> #include &lt;wtf/text/StringHash.h&gt;
</span><span class="lines">@@ -45,29 +44,23 @@
</span><span class="cx"> 
</span><span class="cx">     class EvalCodeCache {
</span><span class="cx">     public:
</span><del>-        EvalExecutable* tryGet(bool inStrictContext, const SourceCode&amp; evalSource, ThisTDZMode thisTDZMode, JSScope* scope)
</del><ins>+        EvalExecutable* tryGet(bool inStrictContext, const String&amp; evalSource, JSScope* scope)
</ins><span class="cx">         {
</span><del>-            if (isCacheable(inStrictContext, evalSource, scope)) {
-                ASSERT(!inStrictContext);
-                SourceCodeKey sourceCodeKey(evalSource, String(), SourceCodeKey::EvalType, JSParserBuiltinMode::NotBuiltin, JSParserStrictMode::NotStrict, thisTDZMode);
-                return m_cacheMap.get(sourceCodeKey).get();
-            }
-            return nullptr;
</del><ins>+            if (isCacheable(inStrictContext, evalSource, scope))
+                return m_cacheMap.get(evalSource.impl()).get();
+            return 0;
</ins><span class="cx">         }
</span><span class="cx">         
</span><del>-        EvalExecutable* getSlow(ExecState* exec, JSCell* owner, bool inStrictContext, ThisTDZMode thisTDZMode, const SourceCode&amp; evalSource, JSScope* scope)
</del><ins>+        EvalExecutable* getSlow(ExecState* exec, JSCell* owner, bool inStrictContext, ThisTDZMode thisTDZMode, const String&amp; evalSource, JSScope* scope)
</ins><span class="cx">         {
</span><span class="cx">             VariableEnvironment variablesUnderTDZ;
</span><span class="cx">             JSScope::collectVariablesUnderTDZ(scope, variablesUnderTDZ);
</span><del>-            EvalExecutable* evalExecutable = EvalExecutable::create(exec, evalSource, inStrictContext, thisTDZMode, &amp;variablesUnderTDZ);
</del><ins>+            EvalExecutable* evalExecutable = EvalExecutable::create(exec, makeSource(evalSource), inStrictContext, thisTDZMode, &amp;variablesUnderTDZ);
</ins><span class="cx">             if (!evalExecutable)
</span><del>-                return nullptr;
</del><ins>+                return 0;
</ins><span class="cx"> 
</span><del>-            if (isCacheable(inStrictContext, evalSource, scope) &amp;&amp; m_cacheMap.size() &lt; maxCacheEntries) {
-                ASSERT(!inStrictContext);
-                SourceCodeKey sourceCodeKey(evalSource, String(), SourceCodeKey::EvalType, JSParserBuiltinMode::NotBuiltin, JSParserStrictMode::NotStrict, thisTDZMode);
-                m_cacheMap.set(sourceCodeKey, WriteBarrier&lt;EvalExecutable&gt;(exec-&gt;vm(), owner, evalExecutable));
-            }
</del><ins>+            if (isCacheable(inStrictContext, evalSource, scope) &amp;&amp; m_cacheMap.size() &lt; maxCacheEntries)
+                m_cacheMap.set(evalSource.impl(), WriteBarrier&lt;EvalExecutable&gt;(exec-&gt;vm(), owner, evalExecutable));
</ins><span class="cx">             
</span><span class="cx">             return evalExecutable;
</span><span class="cx">         }
</span><span class="lines">@@ -87,17 +80,17 @@
</span><span class="cx">             return scope-&gt;isGlobalLexicalEnvironment() || scope-&gt;isFunctionNameScopeObject() || scope-&gt;isVarScope();
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        ALWAYS_INLINE bool isCacheable(bool inStrictContext, const SourceCode&amp; evalSource, JSScope* scope)
</del><ins>+        ALWAYS_INLINE bool isCacheable(bool inStrictContext, const String&amp; evalSource, JSScope* scope)
</ins><span class="cx">         {
</span><span class="cx">             // If eval() is called and it has access to a lexical scope, we can't soundly cache it.
</span><span class="cx">             // If the eval() only has access to the &quot;var&quot; scope, then we can cache it.
</span><span class="cx">             return !inStrictContext 
</span><del>-                &amp;&amp; static_cast&lt;size_t&gt;(evalSource.length()) &lt; Options::maximumEvalCacheableSourceLength()
</del><ins>+                &amp;&amp; evalSource.length() &lt; Options::maximumEvalCacheableSourceLength() 
</ins><span class="cx">                 &amp;&amp; isCacheableScope(scope);
</span><span class="cx">         }
</span><span class="cx">         static const int maxCacheEntries = 64;
</span><span class="cx"> 
</span><del>-        typedef HashMap&lt;SourceCodeKey, WriteBarrier&lt;EvalExecutable&gt;, SourceCodeKeyHash, SourceCodeKeyHashTraits&gt; EvalCacheMap;
</del><ins>+        typedef HashMap&lt;RefPtr&lt;StringImpl&gt;, WriteBarrier&lt;EvalExecutable&gt;&gt; EvalCacheMap;
</ins><span class="cx">         EvalCacheMap m_cacheMap;
</span><span class="cx">     };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeExecutableInfoh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/ExecutableInfo.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/ExecutableInfo.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/ExecutableInfo.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -26,28 +26,21 @@
</span><span class="cx"> #ifndef ExecutableInfo_h
</span><span class="cx"> #define ExecutableInfo_h
</span><span class="cx"> 
</span><del>-#include &quot;GeneratorThisMode.h&quot;
</del><span class="cx"> #include &quot;ParserModes.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><del>-// FIXME: These flags, ParserModes and propagation to XXXCodeBlocks should be reorganized.
-// https://bugs.webkit.org/show_bug.cgi?id=151547
</del><span class="cx"> struct ExecutableInfo {
</span><del>-    ExecutableInfo(bool needsActivation, bool usesEval, bool isStrictMode, bool isConstructor, bool isBuiltinFunction, ConstructorKind constructorKind, GeneratorThisMode generatorThisMode, SuperBinding superBinding, SourceParseMode parseMode)
</del><ins>+    ExecutableInfo(bool needsActivation, bool usesEval, bool isStrictMode, bool isConstructor, bool isBuiltinFunction, ConstructorKind constructorKind, bool isArrowFunction)
</ins><span class="cx">         : m_needsActivation(needsActivation)
</span><span class="cx">         , m_usesEval(usesEval)
</span><span class="cx">         , m_isStrictMode(isStrictMode)
</span><span class="cx">         , m_isConstructor(isConstructor)
</span><span class="cx">         , m_isBuiltinFunction(isBuiltinFunction)
</span><del>-        , m_generatorThisMode(static_cast&lt;unsigned&gt;(generatorThisMode))
</del><span class="cx">         , m_constructorKind(static_cast&lt;unsigned&gt;(constructorKind))
</span><del>-        , m_superBinding(static_cast&lt;unsigned&gt;(superBinding))
-        , m_parseMode(parseMode)
</del><ins>+        , m_isArrowFunction(isArrowFunction)
</ins><span class="cx">     {
</span><span class="cx">         ASSERT(m_constructorKind == static_cast&lt;unsigned&gt;(constructorKind));
</span><del>-        ASSERT(m_superBinding == static_cast&lt;unsigned&gt;(superBinding));
-        ASSERT(m_generatorThisMode == static_cast&lt;unsigned&gt;(generatorThisMode));
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool needsActivation() const { return m_needsActivation; }
</span><span class="lines">@@ -55,10 +48,8 @@
</span><span class="cx">     bool isStrictMode() const { return m_isStrictMode; }
</span><span class="cx">     bool isConstructor() const { return m_isConstructor; }
</span><span class="cx">     bool isBuiltinFunction() const { return m_isBuiltinFunction; }
</span><del>-    GeneratorThisMode generatorThisMode() const { return static_cast&lt;GeneratorThisMode&gt;(m_generatorThisMode); }
</del><span class="cx">     ConstructorKind constructorKind() const { return static_cast&lt;ConstructorKind&gt;(m_constructorKind); }
</span><del>-    SuperBinding superBinding() const { return static_cast&lt;SuperBinding&gt;(m_superBinding); }
-    SourceParseMode parseMode() const { return m_parseMode; }
</del><ins>+    bool isArrowFunction() const { return m_isArrowFunction; }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     unsigned m_needsActivation : 1;
</span><span class="lines">@@ -66,10 +57,8 @@
</span><span class="cx">     unsigned m_isStrictMode : 1;
</span><span class="cx">     unsigned m_isConstructor : 1;
</span><span class="cx">     unsigned m_isBuiltinFunction : 1;
</span><del>-    unsigned m_generatorThisMode : 1;
</del><span class="cx">     unsigned m_constructorKind : 2;
</span><del>-    unsigned m_superBinding : 1;
-    SourceParseMode m_parseMode;
</del><ins>+    unsigned m_isArrowFunction : 1;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodePreciseJumpTargetscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/PreciseJumpTargets.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -54,7 +54,6 @@
</span><span class="cx">     case op_jnlesseq:
</span><span class="cx">     case op_jngreater:
</span><span class="cx">     case op_jngreatereq:
</span><del>-    case op_save: // The jump of op_save is purely for calculating liveness.
</del><span class="cx">         out.append(bytecodeOffset + current[3].u.operand);
</span><span class="cx">         break;
</span><span class="cx">     case op_switch_imm:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> UnlinkedCodeBlock::UnlinkedCodeBlock(VM* vm, Structure* structure, CodeType codeType, const ExecutableInfo&amp; info)
</span><span class="cx">     : Base(*vm, structure)
</span><span class="cx">     , m_numVars(0)
</span><del>-    , m_numCalleeLocals(0)
</del><ins>+    , m_numCalleeRegisters(0)
</ins><span class="cx">     , m_numParameters(0)
</span><span class="cx">     , m_vm(vm)
</span><span class="cx">     , m_globalObjectRegister(VirtualRegister())
</span><span class="lines">@@ -65,12 +65,10 @@
</span><span class="cx">     , m_hasCapturedVariables(false)
</span><span class="cx">     , m_isBuiltinFunction(info.isBuiltinFunction())
</span><span class="cx">     , m_constructorKind(static_cast&lt;unsigned&gt;(info.constructorKind()))
</span><del>-    , m_generatorThisMode(static_cast&lt;unsigned&gt;(info.generatorThisMode()))
-    , m_superBinding(static_cast&lt;unsigned&gt;(info.superBinding()))
</del><ins>+    , m_isArrowFunction(info.isArrowFunction())
</ins><span class="cx">     , m_firstLine(0)
</span><span class="cx">     , m_lineCount(0)
</span><span class="cx">     , m_endColumn(UINT_MAX)
</span><del>-    , m_parseMode(info.parseMode())
</del><span class="cx">     , m_features(0)
</span><span class="cx">     , m_codeType(codeType)
</span><span class="cx">     , m_arrayProfileCount(0)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include &quot;CodeType.h&quot;
</span><span class="cx"> #include &quot;ConstructAbility.h&quot;
</span><span class="cx"> #include &quot;ExpressionRangeInfo.h&quot;
</span><del>-#include &quot;GeneratorThisMode.h&quot;
</del><span class="cx"> #include &quot;HandlerInfo.h&quot;
</span><span class="cx"> #include &quot;Identifier.h&quot;
</span><span class="cx"> #include &quot;JSCell.h&quot;
</span><span class="lines">@@ -42,7 +41,6 @@
</span><span class="cx"> #include &quot;UnlinkedFunctionExecutable.h&quot;
</span><span class="cx"> #include &quot;VariableEnvironment.h&quot;
</span><span class="cx"> #include &quot;VirtualRegister.h&quot;
</span><del>-#include &lt;wtf/FastBitVector.h&gt;
</del><span class="cx"> #include &lt;wtf/RefCountedArray.h&gt;
</span><span class="cx"> #include &lt;wtf/Vector.h&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -118,7 +116,7 @@
</span><span class="cx">     bool isConstructor() const { return m_isConstructor; }
</span><span class="cx">     bool isStrictMode() const { return m_isStrictMode; }
</span><span class="cx">     bool usesEval() const { return m_usesEval; }
</span><del>-    SourceParseMode parseMode() const { return m_parseMode; }
</del><ins>+    bool isArrowFunction() const { return m_isArrowFunction; }
</ins><span class="cx"> 
</span><span class="cx">     bool needsFullScopeChain() const { return m_needsFullScopeChain; }
</span><span class="cx"> 
</span><span class="lines">@@ -204,8 +202,6 @@
</span><span class="cx">     bool isBuiltinFunction() const { return m_isBuiltinFunction; }
</span><span class="cx"> 
</span><span class="cx">     ConstructorKind constructorKind() const { return static_cast&lt;ConstructorKind&gt;(m_constructorKind); }
</span><del>-    GeneratorThisMode generatorThisMode() const { return static_cast&lt;GeneratorThisMode&gt;(m_generatorThisMode); }
-    SuperBinding superBinding() const { return static_cast&lt;SuperBinding&gt;(m_superBinding); }
</del><span class="cx"> 
</span><span class="cx">     void shrinkToFit()
</span><span class="cx">     {
</span><span class="lines">@@ -236,7 +232,7 @@
</span><span class="cx"> 
</span><span class="cx">     int m_numVars;
</span><span class="cx">     int m_numCapturedVars;
</span><del>-    int m_numCalleeLocals;
</del><ins>+    int m_numCalleeRegisters;
</ins><span class="cx"> 
</span><span class="cx">     // Jump Tables
</span><span class="cx"> 
</span><span class="lines">@@ -391,14 +387,12 @@
</span><span class="cx">     unsigned m_hasCapturedVariables : 1;
</span><span class="cx">     unsigned m_isBuiltinFunction : 1;
</span><span class="cx">     unsigned m_constructorKind : 2;
</span><del>-    unsigned m_generatorThisMode : 1;
-    unsigned m_superBinding : 1;
</del><ins>+    unsigned m_isArrowFunction : 1;
</ins><span class="cx"> 
</span><span class="cx">     unsigned m_firstLine;
</span><span class="cx">     unsigned m_lineCount;
</span><span class="cx">     unsigned m_endColumn;
</span><span class="cx"> 
</span><del>-    SourceParseMode m_parseMode;
</del><span class="cx">     CodeFeatures m_features;
</span><span class="cx">     CodeType m_codeType;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -50,13 +50,13 @@
</span><span class="cx"> static UnlinkedFunctionCodeBlock* generateUnlinkedFunctionCodeBlock(
</span><span class="cx">     VM&amp; vm, UnlinkedFunctionExecutable* executable, const SourceCode&amp; source,
</span><span class="cx">     CodeSpecializationKind kind, DebuggerMode debuggerMode, ProfilerMode profilerMode,
</span><del>-    UnlinkedFunctionKind functionKind, ParserError&amp; error, SourceParseMode parseMode)
</del><ins>+    UnlinkedFunctionKind functionKind, ParserError&amp; error, bool isArrowFunction)
</ins><span class="cx"> {
</span><span class="cx">     JSParserBuiltinMode builtinMode = executable-&gt;isBuiltinFunction() ? JSParserBuiltinMode::Builtin : JSParserBuiltinMode::NotBuiltin;
</span><span class="cx">     JSParserStrictMode strictMode = executable-&gt;isInStrictContext() ? JSParserStrictMode::Strict : JSParserStrictMode::NotStrict;
</span><span class="cx">     ASSERT(isFunctionParseMode(executable-&gt;parseMode()));
</span><span class="cx">     std::unique_ptr&lt;FunctionNode&gt; function = parse&lt;FunctionNode&gt;(
</span><del>-        &amp;vm, source, executable-&gt;name(), builtinMode, strictMode, executable-&gt;parseMode(), executable-&gt;superBinding(), error, nullptr);
</del><ins>+        &amp;vm, source, executable-&gt;name(), builtinMode, strictMode, executable-&gt;parseMode(), error, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     if (!function) {
</span><span class="cx">         ASSERT(error.isValid());
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx">     executable-&gt;recordParse(function-&gt;features(), function-&gt;hasCapturedVariables());
</span><span class="cx">     
</span><span class="cx">     UnlinkedFunctionCodeBlock* result = UnlinkedFunctionCodeBlock::create(&amp;vm, FunctionCode,
</span><del>-        ExecutableInfo(function-&gt;needsActivation(), function-&gt;usesEval(), function-&gt;isStrictMode(), kind == CodeForConstruct, functionKind == UnlinkedBuiltinFunction, executable-&gt;constructorKind(), executable-&gt;generatorThisMode(), executable-&gt;superBinding(), parseMode));
</del><ins>+        ExecutableInfo(function-&gt;needsActivation(), function-&gt;usesEval(), function-&gt;isStrictMode(), kind == CodeForConstruct, functionKind == UnlinkedBuiltinFunction, executable-&gt;constructorKind(), isArrowFunction));
</ins><span class="cx">     auto generator(std::make_unique&lt;BytecodeGenerator&gt;(vm, function.get(), result, debuggerMode, profilerMode, executable-&gt;parentScopeTDZVariables()));
</span><span class="cx">     error = generator-&gt;generate();
</span><span class="cx">     if (error.isValid())
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-UnlinkedFunctionExecutable::UnlinkedFunctionExecutable(VM* vm, Structure* structure, const SourceCode&amp; source, RefPtr&lt;SourceProvider&gt;&amp;&amp; sourceOverride, FunctionMetadataNode* node, UnlinkedFunctionKind kind, ConstructAbility constructAbility, GeneratorThisMode generatorThisMode, VariableEnvironment&amp; parentScopeTDZVariables)
</del><ins>+UnlinkedFunctionExecutable::UnlinkedFunctionExecutable(VM* vm, Structure* structure, const SourceCode&amp; source, RefPtr&lt;SourceProvider&gt;&amp;&amp; sourceOverride, FunctionMetadataNode* node, UnlinkedFunctionKind kind, ConstructAbility constructAbility, VariableEnvironment&amp; parentScopeTDZVariables)
</ins><span class="cx">     : Base(*vm, structure)
</span><span class="cx">     , m_name(node-&gt;ident())
</span><span class="cx">     , m_inferredName(node-&gt;inferredName())
</span><span class="lines">@@ -99,8 +99,7 @@
</span><span class="cx">     , m_constructAbility(static_cast&lt;unsigned&gt;(constructAbility))
</span><span class="cx">     , m_constructorKind(static_cast&lt;unsigned&gt;(node-&gt;constructorKind()))
</span><span class="cx">     , m_functionMode(node-&gt;functionMode())
</span><del>-    , m_generatorThisMode(static_cast&lt;unsigned&gt;(generatorThisMode))
-    , m_superBinding(static_cast&lt;unsigned&gt;(node-&gt;superBinding()))
</del><ins>+    , m_isArrowFunction(node-&gt;isArrowFunction())
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(m_constructorKind == static_cast&lt;unsigned&gt;(node-&gt;constructorKind()));
</span><span class="cx">     m_parentScopeTDZVariables.swap(parentScopeTDZVariables);
</span><span class="lines">@@ -181,7 +180,7 @@
</span><span class="cx"> 
</span><span class="cx"> UnlinkedFunctionCodeBlock* UnlinkedFunctionExecutable::unlinkedCodeBlockFor(
</span><span class="cx">     VM&amp; vm, const SourceCode&amp; source, CodeSpecializationKind specializationKind, 
</span><del>-    DebuggerMode debuggerMode, ProfilerMode profilerMode, ParserError&amp; error, SourceParseMode parseMode)
</del><ins>+    DebuggerMode debuggerMode, ProfilerMode profilerMode, ParserError&amp; error, bool isArrowFunction)
</ins><span class="cx"> {
</span><span class="cx">     switch (specializationKind) {
</span><span class="cx">     case CodeForCall:
</span><span class="lines">@@ -197,7 +196,7 @@
</span><span class="cx">     UnlinkedFunctionCodeBlock* result = generateUnlinkedFunctionCodeBlock(
</span><span class="cx">         vm, this, source, specializationKind, debuggerMode, profilerMode, 
</span><span class="cx">         isBuiltinFunction() ? UnlinkedBuiltinFunction : UnlinkedNormalFunction, 
</span><del>-        error, parseMode);
</del><ins>+        error, isArrowFunction);
</ins><span class="cx">     
</span><span class="cx">     if (error.isValid())
</span><span class="cx">         return nullptr;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include &quot;CodeType.h&quot;
</span><span class="cx"> #include &quot;ConstructAbility.h&quot;
</span><span class="cx"> #include &quot;ExpressionRangeInfo.h&quot;
</span><del>-#include &quot;GeneratorThisMode.h&quot;
</del><span class="cx"> #include &quot;HandlerInfo.h&quot;
</span><span class="cx"> #include &quot;Identifier.h&quot;
</span><span class="cx"> #include &quot;JSCell.h&quot;
</span><span class="lines">@@ -66,10 +65,10 @@
</span><span class="cx">     typedef JSCell Base;
</span><span class="cx">     static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
</span><span class="cx"> 
</span><del>-    static UnlinkedFunctionExecutable* create(VM* vm, const SourceCode&amp; source, FunctionMetadataNode* node, UnlinkedFunctionKind unlinkedFunctionKind, ConstructAbility constructAbility, GeneratorThisMode generatorThisMode, VariableEnvironment&amp; parentScopeTDZVariables, RefPtr&lt;SourceProvider&gt;&amp;&amp; sourceOverride = nullptr)
</del><ins>+    static UnlinkedFunctionExecutable* create(VM* vm, const SourceCode&amp; source, FunctionMetadataNode* node, UnlinkedFunctionKind unlinkedFunctionKind, ConstructAbility constructAbility, VariableEnvironment&amp; parentScopeTDZVariables, RefPtr&lt;SourceProvider&gt;&amp;&amp; sourceOverride = nullptr)
</ins><span class="cx">     {
</span><span class="cx">         UnlinkedFunctionExecutable* instance = new (NotNull, allocateCell&lt;UnlinkedFunctionExecutable&gt;(vm-&gt;heap))
</span><del>-            UnlinkedFunctionExecutable(vm, vm-&gt;unlinkedFunctionExecutableStructure.get(), source, WTF::move(sourceOverride), node, unlinkedFunctionKind, constructAbility, generatorThisMode, parentScopeTDZVariables);
</del><ins>+            UnlinkedFunctionExecutable(vm, vm-&gt;unlinkedFunctionExecutableStructure.get(), source, WTF::move(sourceOverride), node, unlinkedFunctionKind, constructAbility, parentScopeTDZVariables);
</ins><span class="cx">         instance-&gt;finishCreation(*vm);
</span><span class="cx">         return instance;
</span><span class="cx">     }
</span><span class="lines">@@ -83,8 +82,6 @@
</span><span class="cx">     bool isInStrictContext() const { return m_isInStrictContext; }
</span><span class="cx">     FunctionMode functionMode() const { return static_cast&lt;FunctionMode&gt;(m_functionMode); }
</span><span class="cx">     ConstructorKind constructorKind() const { return static_cast&lt;ConstructorKind&gt;(m_constructorKind); }
</span><del>-    GeneratorThisMode generatorThisMode() const { return static_cast&lt;GeneratorThisMode&gt;(m_generatorThisMode); }
-    SuperBinding superBinding() const { return static_cast&lt;SuperBinding&gt;(m_superBinding); }
</del><span class="cx"> 
</span><span class="cx">     unsigned unlinkedFunctionNameStart() const { return m_unlinkedFunctionNameStart; }
</span><span class="cx">     unsigned unlinkedBodyStartColumn() const { return m_unlinkedBodyStartColumn; }
</span><span class="lines">@@ -98,7 +95,7 @@
</span><span class="cx"> 
</span><span class="cx">     UnlinkedFunctionCodeBlock* unlinkedCodeBlockFor(
</span><span class="cx">         VM&amp;, const SourceCode&amp;, CodeSpecializationKind, DebuggerMode, ProfilerMode, 
</span><del>-        ParserError&amp;, SourceParseMode);
</del><ins>+        ParserError&amp;, bool);
</ins><span class="cx"> 
</span><span class="cx">     static UnlinkedFunctionExecutable* fromGlobalCode(
</span><span class="cx">         const Identifier&amp;, ExecState&amp;, const SourceCode&amp;, JSObject*&amp; exception, 
</span><span class="lines">@@ -128,9 +125,10 @@
</span><span class="cx">     ConstructAbility constructAbility() const { return static_cast&lt;ConstructAbility&gt;(m_constructAbility); }
</span><span class="cx">     bool isClassConstructorFunction() const { return constructorKind() != ConstructorKind::None; }
</span><span class="cx">     const VariableEnvironment* parentScopeTDZVariables() const { return &amp;m_parentScopeTDZVariables; }
</span><ins>+    bool isArrowFunction() const { return m_isArrowFunction; }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    UnlinkedFunctionExecutable(VM*, Structure*, const SourceCode&amp;, RefPtr&lt;SourceProvider&gt;&amp;&amp; sourceOverride, FunctionMetadataNode*, UnlinkedFunctionKind, ConstructAbility, GeneratorThisMode, VariableEnvironment&amp;);
</del><ins>+    UnlinkedFunctionExecutable(VM*, Structure*, const SourceCode&amp;, RefPtr&lt;SourceProvider&gt;&amp;&amp; sourceOverride, FunctionMetadataNode*, UnlinkedFunctionKind, ConstructAbility, VariableEnvironment&amp;);
</ins><span class="cx">     WriteBarrier&lt;UnlinkedFunctionCodeBlock&gt; m_unlinkedCodeBlockForCall;
</span><span class="cx">     WriteBarrier&lt;UnlinkedFunctionCodeBlock&gt; m_unlinkedCodeBlockForConstruct;
</span><span class="cx"> 
</span><span class="lines">@@ -160,8 +158,7 @@
</span><span class="cx">     unsigned m_constructAbility: 1;
</span><span class="cx">     unsigned m_constructorKind : 2;
</span><span class="cx">     unsigned m_functionMode : 1; // FunctionMode
</span><del>-    unsigned m_generatorThisMode : 1;
-    unsigned m_superBinding : 1;
</del><ins>+    unsigned m_isArrowFunction : 1;
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     void finishCreation(VM&amp; vm)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -32,10 +32,8 @@
</span><span class="cx"> #include &quot;BytecodeGenerator.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;BuiltinExecutables.h&quot;
</span><del>-#include &quot;BytecodeLivenessAnalysis.h&quot;
</del><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><del>-#include &quot;JSGeneratorFunction.h&quot;
</del><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><span class="cx"> #include &quot;JSTemplateRegistryKey.h&quot;
</span><span class="cx"> #include &quot;LowLevelInterpreter.h&quot;
</span><span class="lines">@@ -229,33 +227,9 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    SourceParseMode parseMode = codeBlock-&gt;parseMode();
</del><span class="cx">     bool shouldCaptureSomeOfTheThings = m_shouldEmitDebugHooks || m_codeBlock-&gt;needsFullScopeChain();
</span><span class="cx">     bool shouldCaptureAllOfTheThings = m_shouldEmitDebugHooks || codeBlock-&gt;usesEval();
</span><span class="cx">     bool needsArguments = functionNode-&gt;usesArguments() || codeBlock-&gt;usesEval();
</span><del>-
-    // Generator never provides &quot;arguments&quot;. &quot;arguments&quot; reference will be resolved in an upper generator function scope.
-    if (parseMode == SourceParseMode::GeneratorBodyMode)
-        needsArguments = false;
-
-    if (parseMode == SourceParseMode::GeneratorWrapperFunctionMode &amp;&amp; needsArguments) {
-        // Generator does not provide &quot;arguments&quot;. Instead, wrapping GeneratorFunction provides &quot;arguments&quot;.
-        // This is because arguments of a generator should be evaluated before starting it.
-        // To workaround it, we evaluate these arguments as arguments of a wrapping generator function, and reference it from a generator.
-        //
-        //    function *gen(a, b = hello())
-        //    {
-        //        return {
-        //            @generatorNext: function (@generator, @generatorState, @generatorValue, @generatorResumeMode)
-        //            {
-        //                arguments;  // This `arguments` should reference to the gen's arguments.
-        //                ...
-        //            }
-        //        }
-        //    }
-        shouldCaptureSomeOfTheThings = true;
-    }
-
</del><span class="cx">     if (shouldCaptureAllOfTheThings)
</span><span class="cx">         functionNode-&gt;varDeclarations().markAllVariablesAsCaptured();
</span><span class="cx">     
</span><span class="lines">@@ -280,33 +254,14 @@
</span><span class="cx">     allocateAndEmitScope();
</span><span class="cx">     
</span><span class="cx">     m_calleeRegister.setIndex(JSStack::Callee);
</span><del>-
-    initializeParameters(parameters);
-
-    // Before emitting a scope creation, emit a generator prologue that contains jump based on a generator's state.
-    if (parseMode == SourceParseMode::GeneratorBodyMode) {
-        m_generatorRegister = &amp;m_parameters[1];
-        if (generatorThisMode() == GeneratorThisMode::Empty)
-            emitMoveEmptyValue(&amp;m_thisRegister);
-
-        // Jump with switch_imm based on @generatorState. We don't take the coroutine styled generator implementation.
-        // When calling `next()`, we would like to enter the same prologue instead of jumping based on the saved instruction pointer.
-        // It's suitale for inlining, because it just inlines one `next` function implementation.
-
-        beginGenerator(generatorStateRegister());
-
-        // Initial state.
-        emitGeneratorStateLabel();
-    }
-
</del><ins>+    
</ins><span class="cx">     if (functionNameIsInScope(functionNode-&gt;ident(), functionNode-&gt;functionMode())) {
</span><del>-        ASSERT(parseMode != SourceParseMode::GeneratorBodyMode);
</del><span class="cx">         bool isDynamicScope = functionNameScopeIsDynamic(codeBlock-&gt;usesEval(), codeBlock-&gt;isStrictMode());
</span><span class="cx">         bool isFunctionNameCaptured = captures(functionNode-&gt;ident().impl());
</span><span class="cx">         bool markAsCaptured = isDynamicScope || isFunctionNameCaptured;
</span><span class="cx">         emitPushFunctionNameScope(functionNode-&gt;ident(), &amp;m_calleeRegister, markAsCaptured);
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     if (shouldCaptureSomeOfTheThings) {
</span><span class="cx">         m_lexicalEnvironmentRegister = addVar();
</span><span class="cx">         // We can allocate the &quot;var&quot; environment if we don't have default parameter expressions. If we have
</span><span class="lines">@@ -316,6 +271,19 @@
</span><span class="cx">             initializeVarLexicalEnvironment(symbolTableConstantIndex);
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    // Make sure the code block knows about all of our parameters, and make sure that parameters
+    // needing destructuring are noted.
+    m_parameters.grow(parameters.size() + 1); // reserve space for &quot;this&quot;
+    m_thisRegister.setIndex(initializeNextParameter()-&gt;index()); // this
+    for (unsigned i = 0; i &lt; parameters.size(); ++i) {
+        auto pattern = parameters.at(i).first;
+        if (pattern-&gt;isRestParameter()) {
+            RELEASE_ASSERT(!m_restParameter);
+            m_restParameter = static_cast&lt;RestParameterNode*&gt;(pattern);
+        } else
+            initializeNextParameter();
+    }
+    
</ins><span class="cx">     // Figure out some interesting facts about our arguments.
</span><span class="cx">     bool capturesAnyArgumentByName = false;
</span><span class="cx">     if (functionNode-&gt;hasCapturedVariables()) {
</span><span class="lines">@@ -508,36 +476,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_newTargetRegister = addVar();
</span><del>-    switch (parseMode) {
-    case SourceParseMode::ArrowFunctionMode: {
-        if (functionNode-&gt;usesThis() || codeBlock-&gt;usesEval())
-            emitLoadArrowFunctionThis(&amp;m_thisRegister);
-        break;
-    }
-
-    case SourceParseMode::GeneratorWrapperFunctionMode: {
-        m_generatorRegister = addVar();
-
-        // FIXME: Emit to_this only when Generator uses it.
-        // https://bugs.webkit.org/show_bug.cgi?id=151586
-        m_codeBlock-&gt;addPropertyAccessInstruction(instructions().size());
-        emitOpcode(op_to_this);
-        instructions().append(kill(&amp;m_thisRegister));
-        instructions().append(0);
-        instructions().append(0);
-
-        emitMove(m_generatorRegister, &amp;m_calleeRegister);
-        emitCreateThis(m_generatorRegister);
-        break;
-    }
-
-    case SourceParseMode::GeneratorBodyMode: {
-        // |this| is already filled correctly before here.
-        emitLoad(m_newTargetRegister, jsUndefined());
-        break;
-    }
-
-    default: {
</del><ins>+    if (!codeBlock-&gt;isArrowFunction()) {
</ins><span class="cx">         if (isConstructor()) {
</span><span class="cx">             emitMove(m_newTargetRegister, &amp;m_thisRegister);
</span><span class="cx">             if (constructorKind() == ConstructorKind::Derived)
</span><span class="lines">@@ -553,9 +492,10 @@
</span><span class="cx">             instructions().append(0);
</span><span class="cx">             instructions().append(0);
</span><span class="cx">         }
</span><del>-        break;
</del><ins>+    } else {
+        if (functionNode-&gt;usesThis() || codeBlock-&gt;usesEval())
+            emitLoadArrowFunctionThis(&amp;m_thisRegister);
</ins><span class="cx">     }
</span><del>-    }
</del><span class="cx"> 
</span><span class="cx">     // All &quot;addVar()&quot;s needs to happen before &quot;initializeDefaultParameterValuesAndSetupFunctionScopeStack()&quot; is called
</span><span class="cx">     // because a function's default parameter ExpressionNodes will use temporary registers.
</span><span class="lines">@@ -859,22 +799,6 @@
</span><span class="cx">     return &amp;parameter;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BytecodeGenerator::initializeParameters(FunctionParameters&amp; parameters)
-{
-    // Make sure the code block knows about all of our parameters, and make sure that parameters
-    // needing destructuring are noted.
-    m_parameters.grow(parameters.size() + 1); // reserve space for &quot;this&quot;
-    m_thisRegister.setIndex(initializeNextParameter()-&gt;index()); // this
-    for (unsigned i = 0; i &lt; parameters.size(); ++i) {
-        auto pattern = parameters.at(i).first;
-        if (pattern-&gt;isRestParameter()) {
-            RELEASE_ASSERT(!m_restParameter);
-            m_restParameter = static_cast&lt;RestParameterNode*&gt;(pattern);
-        } else
-            initializeNextParameter();
-    }
-}
-
</del><span class="cx"> void BytecodeGenerator::initializeVarLexicalEnvironment(int symbolTableConstantIndex)
</span><span class="cx"> {
</span><span class="cx">     RELEASE_ASSERT(m_lexicalEnvironmentRegister);
</span><span class="lines">@@ -902,17 +826,17 @@
</span><span class="cx"> 
</span><span class="cx"> RegisterID* BytecodeGenerator::newRegister()
</span><span class="cx"> {
</span><del>-    m_calleeLocals.append(virtualRegisterForLocal(m_calleeLocals.size()));
-    int numCalleeLocals = max&lt;int&gt;(m_codeBlock-&gt;m_numCalleeLocals, m_calleeLocals.size());
-    numCalleeLocals = WTF::roundUpToMultipleOf(stackAlignmentRegisters(), numCalleeLocals);
-    m_codeBlock-&gt;m_numCalleeLocals = numCalleeLocals;
-    return &amp;m_calleeLocals.last();
</del><ins>+    m_calleeRegisters.append(virtualRegisterForLocal(m_calleeRegisters.size()));
+    int numCalleeRegisters = max&lt;int&gt;(m_codeBlock-&gt;m_numCalleeRegisters, m_calleeRegisters.size());
+    numCalleeRegisters = WTF::roundUpToMultipleOf(stackAlignmentRegisters(), numCalleeRegisters);
+    m_codeBlock-&gt;m_numCalleeRegisters = numCalleeRegisters;
+    return &amp;m_calleeRegisters.last();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void BytecodeGenerator::reclaimFreeRegisters()
</span><span class="cx"> {
</span><del>-    while (m_calleeLocals.size() &amp;&amp; !m_calleeLocals.last().refCount())
-        m_calleeLocals.removeLast();
</del><ins>+    while (m_calleeRegisters.size() &amp;&amp; !m_calleeRegisters.last().refCount())
+        m_calleeRegisters.removeLast();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RegisterID* BytecodeGenerator::newBlockScopeVariable()
</span><span class="lines">@@ -1991,7 +1915,7 @@
</span><span class="cx">         varOffset = VarOffset(symbolTable-&gt;takeNextScopeOffset(locker));
</span><span class="cx">     else {
</span><span class="cx">         ASSERT(varKind == VarKind::Stack);
</span><del>-        varOffset = VarOffset(virtualRegisterForLocal(m_calleeLocals.size()));
</del><ins>+        varOffset = VarOffset(virtualRegisterForLocal(m_calleeRegisters.size()));
</ins><span class="cx">     }
</span><span class="cx">     SymbolTableEntry newEntry(varOffset, 0);
</span><span class="cx">     symbolTable-&gt;add(locker, property.impl(), newEntry);
</span><span class="lines">@@ -2388,12 +2312,12 @@
</span><span class="cx"> RegisterID* BytecodeGenerator::emitCreateThis(RegisterID* dst)
</span><span class="cx"> {
</span><span class="cx">     size_t begin = instructions().size();
</span><del>-    m_staticPropertyAnalyzer.createThis(dst-&gt;index(), begin + 3);
</del><ins>+    m_staticPropertyAnalyzer.createThis(m_thisRegister.index(), begin + 3);
</ins><span class="cx"> 
</span><span class="cx">     m_codeBlock-&gt;addPropertyAccessInstruction(instructions().size());
</span><span class="cx">     emitOpcode(op_create_this); 
</span><del>-    instructions().append(dst-&gt;index());
-    instructions().append(dst-&gt;index());
</del><ins>+    instructions().append(m_thisRegister.index()); 
+    instructions().append(m_thisRegister.index()); 
</ins><span class="cx">     instructions().append(0);
</span><span class="cx">     instructions().append(0);
</span><span class="cx">     return dst;
</span><span class="lines">@@ -2557,6 +2481,20 @@
</span><span class="cx">     return dst;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+RegisterID* BytecodeGenerator::emitNewFunction(RegisterID* dst, FunctionMetadataNode* function)
+{
+    return emitNewFunctionInternal(dst, m_codeBlock-&gt;addFunctionDecl(makeFunction(function)));
+}
+
+RegisterID* BytecodeGenerator::emitNewFunctionInternal(RegisterID* dst, unsigned index)
+{
+    emitOpcode(op_new_func);
+    instructions().append(dst-&gt;index());
+    instructions().append(scopeRegister()-&gt;index());
+    instructions().append(index);
+    return dst;
+}
+
</ins><span class="cx"> RegisterID* BytecodeGenerator::emitNewRegExp(RegisterID* dst, RegExp* regExp)
</span><span class="cx"> {
</span><span class="cx">     emitOpcode(op_new_regexp);
</span><span class="lines">@@ -2565,25 +2503,13 @@
</span><span class="cx">     return dst;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BytecodeGenerator::emitNewFunctionExpressionCommon(RegisterID* dst, BaseFuncExprNode* func)
</del><ins>+void BytecodeGenerator::emitNewFunctionCommon(RegisterID* dst, BaseFuncExprNode* func, OpcodeID opcodeID)
</ins><span class="cx"> {
</span><ins>+
+    ASSERT(opcodeID == op_new_func_exp || opcodeID == op_new_arrow_func_exp);
+    
</ins><span class="cx">     FunctionMetadataNode* function = func-&gt;metadata();
</span><span class="cx">     unsigned index = m_codeBlock-&gt;addFunctionExpr(makeFunction(function));
</span><del>-
-    OpcodeID opcodeID = op_new_func_exp;
-    switch (function-&gt;parseMode()) {
-    case SourceParseMode::GeneratorWrapperFunctionMode: {
-        opcodeID = op_new_generator_func_exp;
-        break;
-    }
-    case SourceParseMode::ArrowFunctionMode: {
-        opcodeID = op_new_arrow_func_exp;
-        break;
-    }
-    default: {
-        break;
-    }
-    }
</del><span class="cx">     
</span><span class="cx">     emitOpcode(opcodeID);
</span><span class="cx">     instructions().append(dst-&gt;index());
</span><span class="lines">@@ -2596,18 +2522,17 @@
</span><span class="cx"> 
</span><span class="cx"> RegisterID* BytecodeGenerator::emitNewFunctionExpression(RegisterID* dst, FuncExprNode* func)
</span><span class="cx"> {
</span><del>-    emitNewFunctionExpressionCommon(dst, func);
</del><ins>+    emitNewFunctionCommon(dst, func, op_new_func_exp);
</ins><span class="cx">     return dst;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> RegisterID* BytecodeGenerator::emitNewArrowFunctionExpression(RegisterID* dst, ArrowFuncExprNode* func)
</span><span class="cx"> {
</span><del>-    ASSERT(func-&gt;metadata()-&gt;parseMode() == SourceParseMode::ArrowFunctionMode);
</del><span class="cx">     bool isClassConstructor = m_codeBlock-&gt;isConstructor() &amp;&amp; constructorKind() != ConstructorKind::None;
</span><del>-    if (isClassConstructor || generatorThisMode() == GeneratorThisMode::Empty)
</del><ins>+    if (isClassConstructor)
</ins><span class="cx">         emitTDZCheck(thisRegister());
</span><span class="cx">     
</span><del>-    emitNewFunctionExpressionCommon(dst, func);
</del><ins>+    emitNewFunctionCommon(dst, func, op_new_arrow_func_exp);
</ins><span class="cx">     return dst;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2625,19 +2550,6 @@
</span><span class="cx">     return dst;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RegisterID* BytecodeGenerator::emitNewFunction(RegisterID* dst, FunctionMetadataNode* function)
-{
-    unsigned index = m_codeBlock-&gt;addFunctionDecl(makeFunction(function));
-    if (function-&gt;parseMode() == SourceParseMode::GeneratorWrapperFunctionMode)
-        emitOpcode(op_new_generator_func);
-    else
-        emitOpcode(op_new_func);
-    instructions().append(dst-&gt;index());
-    instructions().append(scopeRegister()-&gt;index());
-    instructions().append(index);
-    return dst;
-}
-
</del><span class="cx"> RegisterID* BytecodeGenerator::emitCall(RegisterID* dst, RegisterID* func, ExpectedFunction expectedFunction, CallArguments&amp; callArguments, const JSTextPosition&amp; divot, const JSTextPosition&amp; divotStart, const JSTextPosition&amp; divotEnd)
</span><span class="cx"> {
</span><span class="cx">     return emitCall(op_call, dst, func, expectedFunction, callArguments, divot, divotStart, divotEnd);
</span><span class="lines">@@ -3861,24 +3773,6 @@
</span><span class="cx">     return dst;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-RegisterID* BytecodeGenerator::emitIteratorNextWithValue(RegisterID* dst, RegisterID* iterator, RegisterID* value, const ThrowableExpressionData* node)
-{
-    {
-        RefPtr&lt;RegisterID&gt; next = emitGetById(newTemporary(), iterator, propertyNames().next);
-        CallArguments nextArguments(*this, nullptr, 1);
-        emitMove(nextArguments.thisRegister(), iterator);
-        emitMove(nextArguments.argumentRegister(0), value);
-        emitCall(dst, next.get(), NoExpectedFunction, nextArguments, node-&gt;divot(), node-&gt;divotStart(), node-&gt;divotEnd());
-    }
-    {
-        RefPtr&lt;Label&gt; typeIsObject = newLabel();
-        emitJumpIfTrue(emitIsObject(newTemporary(), dst), typeIsObject.get());
-        emitThrowTypeError(ASCIILiteral(&quot;Iterator result interface is not an object.&quot;));
-        emitLabel(typeIsObject.get());
-    }
-    return dst;
-}
-
</del><span class="cx"> void BytecodeGenerator::emitIteratorClose(RegisterID* iterator, const ThrowableExpressionData* node)
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;Label&gt; done = newLabel();
</span><span class="lines">@@ -3974,228 +3868,4 @@
</span><span class="cx">     emitLabel(target.get());
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void BytecodeGenerator::emitYieldPoint(RegisterID* argument)
-{
-    RefPtr&lt;Label&gt; mergePoint = newLabel();
-    size_t yieldPointIndex = m_generatorResumeLabels.size();
-    emitGeneratorStateChange(yieldPointIndex);
-    // First yield point is used for initial sequence.
-    unsigned liveCalleeLocalsIndex = yieldPointIndex - 1;
-    emitSave(mergePoint.get(), liveCalleeLocalsIndex);
-    emitReturn(argument);
-    emitResume(mergePoint.get(), liveCalleeLocalsIndex);
-}
-
-void BytecodeGenerator::emitSave(Label* mergePoint, unsigned liveCalleeLocalsIndex)
-{
-    size_t begin = instructions().size();
-    emitOpcode(op_save);
-    instructions().append(m_generatorRegister-&gt;index());
-    instructions().append(liveCalleeLocalsIndex);
-    instructions().append(mergePoint-&gt;bind(begin, instructions().size()));
-}
-
-void BytecodeGenerator::emitResume(Label* mergePoint, unsigned liveCalleeLocalsIndex)
-{
-    emitGeneratorStateLabel();
-    emitOpcode(op_resume);
-    instructions().append(m_generatorRegister-&gt;index());
-    instructions().append(liveCalleeLocalsIndex);
-    emitLabel(mergePoint);
-}
-
-RegisterID* BytecodeGenerator::emitYield(RegisterID* argument)
-{
-    emitYieldPoint(argument);
-
-    RefPtr&lt;Label&gt; normalLabel = newLabel();
-    RefPtr&lt;RegisterID&gt; condition = newTemporary();
-    emitEqualityOp(op_stricteq, condition.get(), generatorResumeModeRegister(), emitLoad(nullptr, jsNumber(static_cast&lt;int32_t&gt;(JSGeneratorFunction::GeneratorResumeMode::NormalMode))));
-    emitJumpIfTrue(condition.get(), normalLabel.get());
-
-    RefPtr&lt;Label&gt; throwLabel = newLabel();
-    emitEqualityOp(op_stricteq, condition.get(), generatorResumeModeRegister(), emitLoad(nullptr, jsNumber(static_cast&lt;int32_t&gt;(JSGeneratorFunction::GeneratorResumeMode::ThrowMode))));
-    emitJumpIfTrue(condition.get(), throwLabel.get());
-    // Return.
-    {
-        RefPtr&lt;RegisterID&gt; returnRegister = generatorValueRegister();
-        if (isInFinallyBlock()) {
-            returnRegister = emitMove(newTemporary(), returnRegister.get());
-            emitPopScopes(scopeRegister(), 0);
-        }
-        emitReturn(returnRegister.get());
-    }
-
-    // Throw.
-    emitLabel(throwLabel.get());
-    emitThrow(generatorValueRegister());
-
-    // Normal.
-    emitLabel(normalLabel.get());
-    return generatorValueRegister();
-}
-
-RegisterID* BytecodeGenerator::emitDelegateYield(RegisterID* argument, ThrowableExpressionData* node)
-{
-    RefPtr&lt;RegisterID&gt; value = newTemporary();
-    {
-        RefPtr&lt;RegisterID&gt; iterator = emitGetById(newTemporary(), argument, propertyNames().iteratorSymbol);
-        {
-            CallArguments args(*this, nullptr);
-            emitMove(args.thisRegister(), argument);
-            emitCall(iterator.get(), iterator.get(), NoExpectedFunction, args, node-&gt;divot(), node-&gt;divotStart(), node-&gt;divotEnd());
-        }
-
-        RefPtr&lt;Label&gt; loopDone = newLabel();
-        {
-            RefPtr&lt;Label&gt; nextElement = newLabel();
-            emitLoad(value.get(), jsUndefined());
-
-            emitJump(nextElement.get());
-
-            RefPtr&lt;Label&gt; loopStart = newLabel();
-            emitLabel(loopStart.get());
-            emitLoopHint();
-
-            {
-                emitYieldPoint(value.get());
-
-                RefPtr&lt;Label&gt; normalLabel = newLabel();
-                RefPtr&lt;Label&gt; returnLabel = newLabel();
-                {
-                    RefPtr&lt;RegisterID&gt; condition = newTemporary();
-                    emitEqualityOp(op_stricteq, condition.get(), generatorResumeModeRegister(), emitLoad(nullptr, jsNumber(static_cast&lt;int32_t&gt;(JSGeneratorFunction::GeneratorResumeMode::NormalMode))));
-                    emitJumpIfTrue(condition.get(), normalLabel.get());
-
-                    emitEqualityOp(op_stricteq, condition.get(), generatorResumeModeRegister(), emitLoad(nullptr, jsNumber(static_cast&lt;int32_t&gt;(JSGeneratorFunction::GeneratorResumeMode::ReturnMode))));
-                    emitJumpIfTrue(condition.get(), returnLabel.get());
-
-                    // Fallthrough to ThrowMode.
-                }
-
-                RefPtr&lt;Label&gt; returnSequence = newLabel();
-                RefPtr&lt;Label&gt; returnWithIteratorResult = newLabel();
-                RefPtr&lt;RegisterID&gt; returnIteratorResult = newTemporary();
-                // Throw.
-                {
-                    RefPtr&lt;Label&gt; throwMethodFound = newLabel();
-                    RefPtr&lt;RegisterID&gt; throwMethod = emitGetById(newTemporary(), iterator.get(), propertyNames().throwKeyword);
-                    emitJumpIfFalse(emitIsUndefined(newTemporary(), throwMethod.get()), throwMethodFound.get());
-
-                    emitIteratorClose(iterator.get(), node);
-                    emitThrowTypeError(ASCIILiteral(&quot;Delegated generator does not have a 'throw' method.&quot;));
-
-                    emitLabel(throwMethodFound.get());
-                    CallArguments throwArguments(*this, nullptr, 1);
-                    emitMove(throwArguments.thisRegister(), iterator.get());
-                    emitMove(throwArguments.argumentRegister(0), generatorValueRegister());
-                    emitCall(returnIteratorResult.get(), throwMethod.get(), NoExpectedFunction, throwArguments, node-&gt;divot(), node-&gt;divotStart(), node-&gt;divotEnd());
-                    emitJump(returnWithIteratorResult.get());
-                }
-
-                // Return.
-                emitLabel(returnLabel.get());
-                {
-                    RefPtr&lt;Label&gt; returnMethodFound = newLabel();
-                    RefPtr&lt;RegisterID&gt; returnMethod = emitGetById(newTemporary(), iterator.get(), propertyNames().returnKeyword);
-                    emitJumpIfFalse(emitIsUndefined(newTemporary(), returnMethod.get()), returnMethodFound.get());
-
-                    emitMove(value.get(), generatorValueRegister());
-                    emitJump(returnSequence.get());
-
-                    emitLabel(returnMethodFound.get());
-                    CallArguments returnArguments(*this, nullptr, 1);
-                    emitMove(returnArguments.thisRegister(), iterator.get());
-                    emitMove(returnArguments.argumentRegister(0), generatorValueRegister());
-                    emitCall(returnIteratorResult.get(), returnMethod.get(), NoExpectedFunction, returnArguments, node-&gt;divot(), node-&gt;divotStart(), node-&gt;divotEnd());
-
-                    // Fallthrough to returnWithIteratorResult.
-                }
-
-                emitLabel(returnWithIteratorResult.get());
-                {
-                    RefPtr&lt;Label&gt; returnIteratorResultIsObject = newLabel();
-                    emitJumpIfTrue(emitIsObject(newTemporary(), returnIteratorResult.get()), returnIteratorResultIsObject.get());
-                    emitThrowTypeError(ASCIILiteral(&quot;Iterator result interface is not an object.&quot;));
-
-                    emitLabel(returnIteratorResultIsObject.get());
-                    RefPtr&lt;Label&gt; returnFromGenerator = newLabel();
-                    emitJumpIfTrue(emitGetById(newTemporary(), returnIteratorResult.get(), propertyNames().done), returnFromGenerator.get());
-
-                    emitGetById(value.get(), returnIteratorResult.get(), propertyNames().value);
-                    emitJump(loopStart.get());
-
-                    emitLabel(returnFromGenerator.get());
-                    emitGetById(value.get(), returnIteratorResult.get(), propertyNames().value);
-
-                    // Fallthrough to returnSequence.
-                }
-
-                emitLabel(returnSequence.get());
-                {
-                    if (isInFinallyBlock())
-                        emitPopScopes(scopeRegister(), 0);
-                    emitReturn(value.get());
-                }
-
-                // Normal.
-                emitLabel(normalLabel.get());
-                emitMove(value.get(), generatorValueRegister());
-            }
-
-            emitLabel(nextElement.get());
-            {
-                emitIteratorNextWithValue(value.get(), iterator.get(), value.get(), node);
-                emitJumpIfTrue(emitGetById(newTemporary(), value.get(), propertyNames().done), loopDone.get());
-                emitGetById(value.get(), value.get(), propertyNames().value);
-                emitJump(loopStart.get());
-            }
-        }
-        emitLabel(loopDone.get());
-    }
-
-    emitGetById(value.get(), value.get(), propertyNames().value);
-    return value.get();
-}
-
-
-void BytecodeGenerator::emitGeneratorStateChange(int32_t state)
-{
-    RegisterID* completedState = emitLoad(nullptr, jsNumber(state));
-    emitPutById(generatorRegister(), propertyNames().generatorStatePrivateName, completedState);
-}
-
-void BytecodeGenerator::emitGeneratorStateLabel()
-{
-    RefPtr&lt;Label&gt; label = newLabel();
-    m_generatorResumeLabels.append(label.get());
-    emitLabel(label.get());
-}
-
-void BytecodeGenerator::beginGenerator(RegisterID* state)
-{
-    beginSwitch(state, SwitchInfo::SwitchImmediate);
-}
-
-void BytecodeGenerator::endGenerator(Label* defaultLabel)
-{
-    SwitchInfo switchInfo = m_switchContextStack.last();
-    m_switchContextStack.removeLast();
-
-    instructions()[switchInfo.bytecodeOffset + 1] = m_codeBlock-&gt;numberOfSwitchJumpTables();
-    instructions()[switchInfo.bytecodeOffset + 2] = defaultLabel-&gt;bind(switchInfo.bytecodeOffset, switchInfo.bytecodeOffset + 3);
-
-    UnlinkedSimpleJumpTable&amp; jumpTable = m_codeBlock-&gt;addSwitchJumpTable();
-    int32_t switchAddress = switchInfo.bytecodeOffset;
-    jumpTable.min = 0;
-    jumpTable.branchOffsets.resize(m_generatorResumeLabels.size() + 1);
-    jumpTable.branchOffsets.fill(0);
-    for (uint32_t i = 0; i &lt; m_generatorResumeLabels.size(); ++i) {
-        // We're emitting this after the clause labels should have been fixed, so
-        // the labels should not be &quot;forward&quot; references
-        ASSERT(!m_generatorResumeLabels[i]-&gt;isForward());
-        jumpTable.add(i, m_generatorResumeLabels[i]-&gt;bind(switchAddress, switchAddress + 3));
-    }
-}
-
</del><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerBytecodeGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> #define BytecodeGenerator_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><del>-#include &quot;GeneratorThisMode.h&quot;
</del><span class="cx"> #include &lt;wtf/HashTraits.h&gt;
</span><span class="cx"> #include &quot;Instruction.h&quot;
</span><span class="cx"> #include &quot;Label.h&quot;
</span><span class="lines">@@ -281,8 +280,6 @@
</span><span class="cx"> 
</span><span class="cx">         bool isConstructor() const { return m_codeBlock-&gt;isConstructor(); }
</span><span class="cx">         ConstructorKind constructorKind() const { return m_codeBlock-&gt;constructorKind(); }
</span><del>-        GeneratorThisMode generatorThisMode() const { return m_codeBlock-&gt;generatorThisMode(); }
-        SuperBinding superBinding() const { return m_codeBlock-&gt;superBinding(); }
</del><span class="cx"> 
</span><span class="cx">         ParserError generate();
</span><span class="cx"> 
</span><span class="lines">@@ -300,8 +297,6 @@
</span><span class="cx"> 
</span><span class="cx">         RegisterID* scopeRegister() { return m_scopeRegister; }
</span><span class="cx"> 
</span><del>-        RegisterID* generatorRegister() { return m_generatorRegister; }
-
</del><span class="cx">         // Returns the next available temporary register. Registers returned by
</span><span class="cx">         // newTemporary require a modified form of reference counting: any
</span><span class="cx">         // register with a refcount of 0 is considered &quot;available&quot;, meaning that
</span><span class="lines">@@ -505,8 +500,10 @@
</span><span class="cx">         RegisterID* emitNewArrayWithSize(RegisterID* dst, RegisterID* length);
</span><span class="cx"> 
</span><span class="cx">         RegisterID* emitNewFunction(RegisterID* dst, FunctionMetadataNode*);
</span><ins>+        RegisterID* emitNewFunctionInternal(RegisterID* dst, unsigned index);
</ins><span class="cx">         RegisterID* emitNewFunctionExpression(RegisterID* dst, FuncExprNode* func);
</span><span class="cx">         RegisterID* emitNewDefaultConstructor(RegisterID* dst, ConstructorKind, const Identifier&amp; name);
</span><ins>+        void emitNewFunctionCommon(RegisterID*, BaseFuncExprNode*, OpcodeID);
</ins><span class="cx">         RegisterID* emitNewArrowFunctionExpression(RegisterID*, ArrowFuncExprNode*);
</span><span class="cx">         RegisterID* emitNewRegExp(RegisterID* dst, RegExp*);
</span><span class="cx"> 
</span><span class="lines">@@ -601,7 +598,6 @@
</span><span class="cx">         void emitRequireObjectCoercible(RegisterID* value, const String&amp; error);
</span><span class="cx"> 
</span><span class="cx">         RegisterID* emitIteratorNext(RegisterID* dst, RegisterID* iterator, const ThrowableExpressionData* node);
</span><del>-        RegisterID* emitIteratorNextWithValue(RegisterID* dst, RegisterID* iterator, RegisterID* value, const ThrowableExpressionData* node);
</del><span class="cx">         void emitIteratorClose(RegisterID* iterator, const ThrowableExpressionData* node);
</span><span class="cx"> 
</span><span class="cx">         RegisterID* emitRestParameter(RegisterID* result, unsigned numParametersToSkip);
</span><span class="lines">@@ -650,28 +646,12 @@
</span><span class="cx">         void beginSwitch(RegisterID*, SwitchInfo::SwitchType);
</span><span class="cx">         void endSwitch(uint32_t clauseCount, RefPtr&lt;Label&gt;*, ExpressionNode**, Label* defaultLabel, int32_t min, int32_t range);
</span><span class="cx"> 
</span><del>-        void emitYieldPoint(RegisterID*);
-        void emitSave(Label* mergePoint, unsigned liveCalleeLocalsIndex);
-        void emitResume(Label* mergePoint, unsigned liveCalleeLocalsIndex);
-
-        void emitGeneratorStateLabel();
-        void emitGeneratorStateChange(int32_t state);
-        RegisterID* emitYield(RegisterID* argument);
-        RegisterID* emitDelegateYield(RegisterID* argument, ThrowableExpressionData*);
-        void beginGenerator(RegisterID*);
-        void endGenerator(Label* defaultLabel);
-        RegisterID* generatorStateRegister() { return &amp;m_parameters[2]; }
-        RegisterID* generatorValueRegister() { return &amp;m_parameters[3]; }
-        RegisterID* generatorResumeModeRegister() { return &amp;m_parameters[4]; }
-
</del><span class="cx">         CodeType codeType() const { return m_codeType; }
</span><span class="cx"> 
</span><span class="cx">         bool shouldEmitProfileHooks() { return m_shouldEmitProfileHooks; }
</span><span class="cx">         bool shouldEmitDebugHooks() { return m_shouldEmitDebugHooks; }
</span><span class="cx">         
</span><span class="cx">         bool isStrictMode() const { return m_codeBlock-&gt;isStrictMode(); }
</span><del>-
-        SourceParseMode parseMode() const { return m_codeBlock-&gt;parseMode(); }
</del><span class="cx">         
</span><span class="cx">         bool isBuiltinFunction() const { return m_isBuiltinFunction; }
</span><span class="cx"> 
</span><span class="lines">@@ -689,7 +669,6 @@
</span><span class="cx">         void emitPopScope(RegisterID* dst, RegisterID* scope);
</span><span class="cx">         RegisterID* emitGetParentScope(RegisterID* dst, RegisterID* scope);
</span><span class="cx">         void emitPushFunctionNameScope(const Identifier&amp; property, RegisterID* value, bool isCaptured);
</span><del>-        void emitNewFunctionExpressionCommon(RegisterID*, BaseFuncExprNode*);
</del><span class="cx"> 
</span><span class="cx">     public:
</span><span class="cx">         void pushLexicalScope(VariableEnvironmentNode*, bool canOptimizeTDZChecks, RegisterID** constantSymbolTableResult = nullptr);
</span><span class="lines">@@ -753,7 +732,7 @@
</span><span class="cx">         RegisterID&amp; registerFor(VirtualRegister reg)
</span><span class="cx">         {
</span><span class="cx">             if (reg.isLocal())
</span><del>-                return m_calleeLocals[reg.toLocal()];
</del><ins>+                return m_calleeRegisters[reg.toLocal()];
</ins><span class="cx"> 
</span><span class="cx">             if (reg.offset() == JSStack::Callee)
</span><span class="cx">                 return m_calleeRegister;
</span><span class="lines">@@ -775,22 +754,12 @@
</span><span class="cx">             VariableEnvironment variablesUnderTDZ;
</span><span class="cx">             getVariablesUnderTDZ(variablesUnderTDZ);
</span><span class="cx"> 
</span><del>-            // FIXME: These flags, ParserModes and propagation to XXXCodeBlocks should be reorganized.
-            // https://bugs.webkit.org/show_bug.cgi?id=151547
</del><span class="cx">             SourceParseMode parseMode = metadata-&gt;parseMode();
</span><span class="cx">             ConstructAbility constructAbility = ConstructAbility::CanConstruct;
</span><del>-            if (parseMode == SourceParseMode::GetterMode || parseMode == SourceParseMode::SetterMode || parseMode == SourceParseMode::ArrowFunctionMode)
</del><ins>+            if (parseMode == SourceParseMode::GetterMode || parseMode == SourceParseMode::SetterMode || parseMode == SourceParseMode::ArrowFunctionMode || (parseMode == SourceParseMode::MethodMode &amp;&amp; metadata-&gt;constructorKind() == ConstructorKind::None))
</ins><span class="cx">                 constructAbility = ConstructAbility::CannotConstruct;
</span><del>-            else if (parseMode == SourceParseMode::MethodMode &amp;&amp; metadata-&gt;constructorKind() == ConstructorKind::None)
-                constructAbility = ConstructAbility::CannotConstruct;
-            else if (parseMode == SourceParseMode::GeneratorWrapperFunctionMode &amp;&amp; metadata-&gt;superBinding() == SuperBinding::Needed)
-                constructAbility = ConstructAbility::CannotConstruct;
</del><span class="cx"> 
</span><del>-            GeneratorThisMode generatorThisMode = GeneratorThisMode::NonEmpty;
-            if (parseMode == SourceParseMode::GeneratorBodyMode &amp;&amp; isConstructor())
-                generatorThisMode = GeneratorThisMode::Empty;
-
-            return UnlinkedFunctionExecutable::create(m_vm, m_scopeNode-&gt;source(), metadata, isBuiltinFunction() ? UnlinkedBuiltinFunction : UnlinkedNormalFunction, constructAbility, generatorThisMode, variablesUnderTDZ);
</del><ins>+            return UnlinkedFunctionExecutable::create(m_vm, m_scopeNode-&gt;source(), metadata, isBuiltinFunction() ? UnlinkedBuiltinFunction : UnlinkedNormalFunction, constructAbility, variablesUnderTDZ);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         void getVariablesUnderTDZ(VariableEnvironment&amp;);
</span><span class="lines">@@ -798,7 +767,6 @@
</span><span class="cx">         RegisterID* emitConstructVarargs(RegisterID* dst, RegisterID* func, RegisterID* thisRegister, RegisterID* arguments, RegisterID* firstFreeRegister, int32_t firstVarArgOffset, RegisterID* profileHookRegister, const JSTextPosition&amp; divot, const JSTextPosition&amp; divotStart, const JSTextPosition&amp; divotEnd);
</span><span class="cx">         RegisterID* emitCallVarargs(OpcodeID, RegisterID* dst, RegisterID* func, RegisterID* thisRegister, RegisterID* arguments, RegisterID* firstFreeRegister, int32_t firstVarArgOffset, RegisterID* profileHookRegister, const JSTextPosition&amp; divot, const JSTextPosition&amp; divotStart, const JSTextPosition&amp; divotEnd);
</span><span class="cx"> 
</span><del>-        void initializeParameters(FunctionParameters&amp;);
</del><span class="cx">         void initializeVarLexicalEnvironment(int symbolTableConstantIndex);
</span><span class="cx">         void initializeDefaultParameterValuesAndSetupFunctionScopeStack(FunctionParameters&amp;, FunctionNode*, SymbolTable*, int symbolTableConstantIndex, const std::function&lt;bool (UniquedStringImpl*)&gt;&amp; captures);
</span><span class="cx"> 
</span><span class="lines">@@ -838,7 +806,6 @@
</span><span class="cx">         RegisterID* m_topMostScope { nullptr };
</span><span class="cx">         RegisterID* m_argumentsRegister { nullptr };
</span><span class="cx">         RegisterID* m_lexicalEnvironmentRegister { nullptr };
</span><del>-        RegisterID* m_generatorRegister { nullptr };
</del><span class="cx">         RegisterID* m_emptyValueRegister { nullptr };
</span><span class="cx">         RegisterID* m_globalObjectRegister { nullptr };
</span><span class="cx">         RegisterID* m_newTargetRegister { nullptr };
</span><span class="lines">@@ -846,7 +813,7 @@
</span><span class="cx"> 
</span><span class="cx">         SegmentedVector&lt;RegisterID*, 16&gt; m_localRegistersForCalleeSaveRegisters;
</span><span class="cx">         SegmentedVector&lt;RegisterID, 32&gt; m_constantPoolRegisters;
</span><del>-        SegmentedVector&lt;RegisterID, 32&gt; m_calleeLocals;
</del><ins>+        SegmentedVector&lt;RegisterID, 32&gt; m_calleeRegisters;
</ins><span class="cx">         SegmentedVector&lt;RegisterID, 32&gt; m_parameters;
</span><span class="cx">         SegmentedVector&lt;Label, 32&gt; m_labels;
</span><span class="cx">         LabelScopeStore m_labelScopes;
</span><span class="lines">@@ -862,7 +829,6 @@
</span><span class="cx">         Vector&lt;SwitchInfo&gt; m_switchContextStack;
</span><span class="cx">         Vector&lt;std::unique_ptr&lt;ForInContext&gt;&gt; m_forInContextStack;
</span><span class="cx">         Vector&lt;TryContext&gt; m_tryContextStack;
</span><del>-        Vector&lt;RefPtr&lt;Label&gt;&gt; m_generatorResumeLabels;
</del><span class="cx">         enum FunctionVariableType : uint8_t { NormalFunctionVariable, GlobalFunctionVariable };
</span><span class="cx">         Vector&lt;std::pair&lt;FunctionMetadataNode*, FunctionVariableType&gt;&gt; m_functionsToInitialize;
</span><span class="cx">         bool m_needToInitializeArguments { false };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerNodesCodegencpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include &quot;Debugger.h&quot;
</span><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><del>-#include &quot;JSGeneratorFunction.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSONObject.h&quot;
</span><span class="cx"> #include &quot;LabelScope.h&quot;
</span><span class="lines">@@ -146,7 +145,7 @@
</span><span class="cx"> 
</span><span class="cx"> RegisterID* ThisNode::emitBytecode(BytecodeGenerator&amp; generator, RegisterID* dst)
</span><span class="cx"> {
</span><del>-    if (m_shouldAlwaysEmitTDZCheck || generator.constructorKind() == ConstructorKind::Derived || generator.generatorThisMode() == GeneratorThisMode::Empty)
</del><ins>+    if (m_shouldAlwaysEmitTDZCheck || generator.constructorKind() == ConstructorKind::Derived)
</ins><span class="cx">         generator.emitTDZCheck(generator.thisRegister());
</span><span class="cx"> 
</span><span class="cx">     if (dst == generator.ignoredResult())
</span><span class="lines">@@ -171,16 +170,12 @@
</span><span class="cx">     return generator.emitGetById(generator.finalDestination(dst), &amp;callee, generator.propertyNames().underscoreProto);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-static RegisterID* emitHomeObjectForCallee(BytecodeGenerator&amp; generator)
</del><ins>+static RegisterID* emitSuperBaseForCallee(BytecodeGenerator&amp; generator)
</ins><span class="cx"> {
</span><span class="cx">     RegisterID callee;
</span><span class="cx">     callee.setIndex(JSStack::Callee);
</span><del>-    return generator.emitGetById(generator.newTemporary(), &amp;callee, generator.propertyNames().homeObjectPrivateName);
-}
</del><span class="cx"> 
</span><del>-static RegisterID* emitSuperBaseForCallee(BytecodeGenerator&amp; generator)
-{
-    RefPtr&lt;RegisterID&gt; homeObject = emitHomeObjectForCallee(generator);
</del><ins>+    RefPtr&lt;RegisterID&gt; homeObject = generator.emitGetById(generator.newTemporary(), &amp;callee, generator.propertyNames().homeObjectPrivateName);
</ins><span class="cx">     return generator.emitGetById(generator.newTemporary(), homeObject.get(), generator.propertyNames().underscoreProto);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2589,7 +2584,6 @@
</span><span class="cx">         dst = 0;
</span><span class="cx"> 
</span><span class="cx">     RefPtr&lt;RegisterID&gt; returnRegister = m_value ? generator.emitNodeInTailPosition(dst, m_value) : generator.emitLoad(dst, jsUndefined());
</span><del>-
</del><span class="cx">     generator.emitProfileType(returnRegister.get(), ProfileTypeBytecodeFunctionReturnStatement, divotStart(), divotEnd());
</span><span class="cx">     if (generator.isInFinallyBlock()) {
</span><span class="cx">         returnRegister = generator.emitMove(generator.newTemporary(), returnRegister.get());
</span><span class="lines">@@ -2972,96 +2966,27 @@
</span><span class="cx"> 
</span><span class="cx">     generator.emitProfileControlFlow(startStartOffset());
</span><span class="cx">     generator.emitDebugHook(DidEnterCallFrame, startLine(), startStartOffset(), startLineStartOffset());
</span><ins>+    emitStatementsBytecode(generator, generator.ignoredResult());
</ins><span class="cx"> 
</span><del>-    switch (generator.parseMode()) {
-    case SourceParseMode::GeneratorWrapperFunctionMode: {
-        StatementNode* singleStatement = this-&gt;singleStatement();
-        ASSERT(singleStatement-&gt;isExprStatement());
-        ExprStatementNode* exprStatement = static_cast&lt;ExprStatementNode*&gt;(singleStatement);
-        ExpressionNode* expr = exprStatement-&gt;expr();
-        ASSERT(expr-&gt;isFuncExprNode());
-        FuncExprNode* funcExpr = static_cast&lt;FuncExprNode*&gt;(expr);
</del><ins>+    StatementNode* singleStatement = this-&gt;singleStatement();
+    ReturnNode* returnNode = 0;
</ins><span class="cx"> 
</span><del>-        RefPtr&lt;RegisterID&gt; next = generator.newTemporary();
-        generator.emitNode(next.get(), funcExpr);
</del><ins>+    // Check for a return statement at the end of a function composed of a single block.
+    if (singleStatement &amp;&amp; singleStatement-&gt;isBlock()) {
+        StatementNode* lastStatementInBlock = static_cast&lt;BlockNode*&gt;(singleStatement)-&gt;lastStatement();
+        if (lastStatementInBlock &amp;&amp; lastStatementInBlock-&gt;isReturnNode())
+            returnNode = static_cast&lt;ReturnNode*&gt;(lastStatementInBlock);
+    }
</ins><span class="cx"> 
</span><del>-        if (generator.superBinding() == SuperBinding::Needed) {
-            RefPtr&lt;RegisterID&gt; homeObject = emitHomeObjectForCallee(generator);
-            emitPutHomeObject(generator, next.get(), homeObject.get());
-        }
-
-        // FIXME: Currently, we just create an object and store generator related fields as its properties for ease.
-        // But to make it efficient, we will introduce JSGenerator class, add opcode new_generator and use its C++ fields instead of these private properties.
-        // https://bugs.webkit.org/show_bug.cgi?id=151545
-
-        generator.emitDirectPutById(generator.generatorRegister(), generator.propertyNames().generatorNextPrivateName, next.get(), PropertyNode::KnownDirect);
-
-        generator.emitDirectPutById(generator.generatorRegister(), generator.propertyNames().generatorThisPrivateName, generator.thisRegister(), PropertyNode::KnownDirect);
-
-        RegisterID* initialState = generator.emitLoad(nullptr, jsNumber(0));
-        generator.emitDirectPutById(generator.generatorRegister(), generator.propertyNames().generatorStatePrivateName, initialState, PropertyNode::KnownDirect);
-
-        generator.emitDirectPutById(generator.generatorRegister(), generator.propertyNames().generatorFramePrivateName, generator.emitLoad(nullptr, jsNull()), PropertyNode::KnownDirect);
-
</del><ins>+    // If there is no return we must automatically insert one.
+    if (!returnNode) {
+        RegisterID* r0 = generator.isConstructor() ? generator.thisRegister() : generator.emitLoad(0, jsUndefined());
+        generator.emitProfileType(r0, ProfileTypeBytecodeFunctionReturnStatement); // Do not emit expression info for this profile because it's not in the user's source code.
</ins><span class="cx">         ASSERT(startOffset() &gt;= lineStartOffset());
</span><span class="cx">         generator.emitDebugHook(WillLeaveCallFrame, lastLine(), startOffset(), lineStartOffset());
</span><del>-        generator.emitReturn(generator.generatorRegister());
-        break;
</del><ins>+        generator.emitReturn(r0);
+        return;
</ins><span class="cx">     }
</span><del>-
-    case SourceParseMode::GeneratorBodyMode: {
-        RefPtr&lt;Label&gt; generatorBodyLabel = generator.newLabel();
-        {
-            RefPtr&lt;RegisterID&gt; condition = generator.newTemporary();
-            generator.emitEqualityOp(op_stricteq, condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast&lt;int32_t&gt;(JSGeneratorFunction::GeneratorResumeMode::NormalMode))));
-            generator.emitJumpIfTrue(condition.get(), generatorBodyLabel.get());
-
-            RefPtr&lt;Label&gt; throwLabel = generator.newLabel();
-            generator.emitEqualityOp(op_stricteq, condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast&lt;int32_t&gt;(JSGeneratorFunction::GeneratorResumeMode::ThrowMode))));
-            generator.emitJumpIfTrue(condition.get(), throwLabel.get());
-
-            generator.emitReturn(generator.generatorValueRegister());
-
-            generator.emitLabel(throwLabel.get());
-            generator.emitThrow(generator.generatorValueRegister());
-        }
-
-        generator.emitLabel(generatorBodyLabel.get());
-
-        emitStatementsBytecode(generator, generator.ignoredResult());
-
-        RefPtr&lt;Label&gt; done = generator.newLabel();
-        generator.emitLabel(done.get());
-        generator.emitReturn(generator.emitLoad(nullptr, jsUndefined()));
-        generator.endGenerator(done.get());
-        break;
-    }
-
-    default: {
-        emitStatementsBytecode(generator, generator.ignoredResult());
-
-        StatementNode* singleStatement = this-&gt;singleStatement();
-        ReturnNode* returnNode = 0;
-
-        // Check for a return statement at the end of a function composed of a single block.
-        if (singleStatement &amp;&amp; singleStatement-&gt;isBlock()) {
-            StatementNode* lastStatementInBlock = static_cast&lt;BlockNode*&gt;(singleStatement)-&gt;lastStatement();
-            if (lastStatementInBlock &amp;&amp; lastStatementInBlock-&gt;isReturnNode())
-                returnNode = static_cast&lt;ReturnNode*&gt;(lastStatementInBlock);
-        }
-
-        // If there is no return we must automatically insert one.
-        if (!returnNode) {
-            RegisterID* r0 = generator.isConstructor() ? generator.thisRegister() : generator.emitLoad(0, jsUndefined());
-            generator.emitProfileType(r0, ProfileTypeBytecodeFunctionReturnStatement); // Do not emit expression info for this profile because it's not in the user's source code.
-            ASSERT(startOffset() &gt;= lineStartOffset());
-            generator.emitDebugHook(WillLeaveCallFrame, lastLine(), startOffset(), lineStartOffset());
-            generator.emitReturn(r0);
-            return;
-        }
-        break;
-    }
-    }
</del><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ FuncDeclNode ---------------------------------
</span><span class="lines">@@ -3088,24 +3013,11 @@
</span><span class="cx"> 
</span><span class="cx"> RegisterID* YieldExprNode::emitBytecode(BytecodeGenerator&amp; generator, RegisterID* dst)
</span><span class="cx"> {
</span><del>-    if (!delegate()) {
-        RefPtr&lt;RegisterID&gt; arg = nullptr;
-        if (argument()) {
-            arg = generator.newTemporary();
-            generator.emitNode(arg.get(), argument());
-        } else
-            arg = generator.emitLoad(nullptr, jsUndefined());
-        RefPtr&lt;RegisterID&gt; value = generator.emitYield(arg.get());
-        if (dst == generator.ignoredResult())
-            return nullptr;
-        return generator.emitMove(generator.finalDestination(dst), value.get());
-    }
-    RefPtr&lt;RegisterID&gt; arg = generator.newTemporary();
-    generator.emitNode(arg.get(), argument());
-    RefPtr&lt;RegisterID&gt; value = generator.emitDelegateYield(arg.get(), this);
</del><ins>+    // FIXME: This is just a stub. When completing ES6 Generators, we need to implement it.
+    generator.emitThrowTypeError(ASCIILiteral(&quot;Not implemented yet.&quot;));
</ins><span class="cx">     if (dst == generator.ignoredResult())
</span><del>-        return nullptr;
-    return generator.emitMove(generator.finalDestination(dst), value.get());
</del><ins>+        return 0;
+    return generator.emitLoad(dst, jsUndefined());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ------------------------------ ClassDeclNode ---------------------------------
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx">         , m_constantNaN(graph.freeze(jsNumber(PNaN)))
</span><span class="cx">         , m_constantOne(graph.freeze(jsNumber(1)))
</span><span class="cx">         , m_numArguments(m_codeBlock-&gt;numParameters())
</span><del>-        , m_numLocals(m_codeBlock-&gt;m_numCalleeLocals)
</del><ins>+        , m_numLocals(m_codeBlock-&gt;m_numCalleeRegisters)
</ins><span class="cx">         , m_parameterSlots(0)
</span><span class="cx">         , m_numPassedVarArgs(0)
</span><span class="cx">         , m_inlineStackTop(0)
</span><span class="lines">@@ -1413,7 +1413,7 @@
</span><span class="cx">     
</span><span class="cx">     ensureLocals(
</span><span class="cx">         VirtualRegister(inlineCallFrameStart).toLocal() + 1 +
</span><del>-        JSStack::CallFrameHeaderSize + codeBlock-&gt;m_numCalleeLocals);
</del><ins>+        JSStack::CallFrameHeaderSize + codeBlock-&gt;m_numCalleeRegisters);
</ins><span class="cx">     
</span><span class="cx">     size_t argumentPositionStart = m_graph.m_argumentPositions.size();
</span><span class="cx"> 
</span><span class="lines">@@ -2927,7 +2927,7 @@
</span><span class="cx">     
</span><span class="cx">     // Start with a register offset that corresponds to the last in-use register.
</span><span class="cx">     int registerOffset = virtualRegisterForLocal(
</span><del>-        m_inlineStackTop-&gt;m_profiledBlock-&gt;m_numCalleeLocals - 1).offset();
</del><ins>+        m_inlineStackTop-&gt;m_profiledBlock-&gt;m_numCalleeRegisters - 1).offset();
</ins><span class="cx">     registerOffset -= numberOfParameters;
</span><span class="cx">     registerOffset -= JSStack::CallFrameHeaderSize;
</span><span class="cx">     
</span><span class="lines">@@ -3096,7 +3096,7 @@
</span><span class="cx">     
</span><span class="cx">         // Start with a register offset that corresponds to the last in-use register.
</span><span class="cx">         int registerOffset = virtualRegisterForLocal(
</span><del>-            m_inlineStackTop-&gt;m_profiledBlock-&gt;m_numCalleeLocals - 1).offset();
</del><ins>+            m_inlineStackTop-&gt;m_profiledBlock-&gt;m_numCalleeRegisters - 1).offset();
</ins><span class="cx">         registerOffset -= numberOfParameters;
</span><span class="cx">         registerOffset -= JSStack::CallFrameHeaderSize;
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGForAllKillsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGForAllKills.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGForAllKills.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/dfg/DFGForAllKills.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx">         const FastBitVector&amp; liveBefore = fullLiveness.getLiveness(before.bytecodeIndex);
</span><span class="cx">         const FastBitVector&amp; liveAfter = fullLiveness.getLiveness(after.bytecodeIndex);
</span><span class="cx">         
</span><del>-        for (unsigned relativeLocal = codeBlock-&gt;m_numCalleeLocals; relativeLocal--;) {
</del><ins>+        for (unsigned relativeLocal = codeBlock-&gt;m_numCalleeRegisters; relativeLocal--;) {
</ins><span class="cx">             if (liveBefore.get(relativeLocal) &amp;&amp; !liveAfter.get(relativeLocal))
</span><span class="cx">                 functor(virtualRegisterForLocal(relativeLocal) + stackOffset);
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGGraphh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGGraph.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGGraph.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/dfg/DFGGraph.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -738,7 +738,7 @@
</span><span class="cx">             CodeBlock* codeBlock = baselineCodeBlockFor(inlineCallFrame);
</span><span class="cx">             FullBytecodeLiveness&amp; fullLiveness = livenessFor(codeBlock);
</span><span class="cx">             const FastBitVector&amp; liveness = fullLiveness.getLiveness(codeOriginPtr-&gt;bytecodeIndex);
</span><del>-            for (unsigned relativeLocal = codeBlock-&gt;m_numCalleeLocals; relativeLocal--;) {
</del><ins>+            for (unsigned relativeLocal = codeBlock-&gt;m_numCalleeRegisters; relativeLocal--;) {
</ins><span class="cx">                 VirtualRegister reg = stackOffset + virtualRegisterForLocal(relativeLocal);
</span><span class="cx">                 
</span><span class="cx">                 // Don't report if our callee already reported.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGOSREntrypointCreationPhasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -93,8 +93,8 @@
</span><span class="cx">         // We'd really like to use an unset origin, but ThreadedCPS won't allow that.
</span><span class="cx">         NodeOrigin origin = NodeOrigin(CodeOrigin(0), CodeOrigin(0), false);
</span><span class="cx">         
</span><del>-        Vector&lt;Node*&gt; locals(baseline-&gt;m_numCalleeLocals);
-        for (int local = 0; local &lt; baseline-&gt;m_numCalleeLocals; ++local) {
</del><ins>+        Vector&lt;Node*&gt; locals(baseline-&gt;m_numCalleeRegisters);
+        for (int local = 0; local &lt; baseline-&gt;m_numCalleeRegisters; ++local) {
</ins><span class="cx">             Node* previousHead = target-&gt;variablesAtHead.local(local);
</span><span class="cx">             if (!previousHead)
</span><span class="cx">                 continue;
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">             m_graph.m_arguments[argument] = node;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        for (int local = 0; local &lt; baseline-&gt;m_numCalleeLocals; ++local) {
</del><ins>+        for (int local = 0; local &lt; baseline-&gt;m_numCalleeRegisters; ++local) {
</ins><span class="cx">             Node* previousHead = target-&gt;variablesAtHead.local(local);
</span><span class="cx">             if (!previousHead)
</span><span class="cx">                 continue;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGVariableEventStreamcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/dfg/DFGVariableEventStream.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -123,9 +123,9 @@
</span><span class="cx">     
</span><span class="cx">     unsigned numVariables;
</span><span class="cx">     if (codeOrigin.inlineCallFrame)
</span><del>-        numVariables = baselineCodeBlockForInlineCallFrame(codeOrigin.inlineCallFrame)-&gt;m_numCalleeLocals + VirtualRegister(codeOrigin.inlineCallFrame-&gt;stackOffset).toLocal() + 1;
</del><ins>+        numVariables = baselineCodeBlockForInlineCallFrame(codeOrigin.inlineCallFrame)-&gt;m_numCalleeRegisters + VirtualRegister(codeOrigin.inlineCallFrame-&gt;stackOffset).toLocal() + 1;
</ins><span class="cx">     else
</span><del>-        numVariables = baselineCodeBlock-&gt;m_numCalleeLocals;
</del><ins>+        numVariables = baselineCodeBlock-&gt;m_numCalleeRegisters;
</ins><span class="cx">     
</span><span class="cx">     // Crazy special case: if we're at index == 0 then this must be an argument check
</span><span class="cx">     // failure, in which case all variables are already set up. The recoveries should
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLForOSREntryJITCodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -45,9 +45,9 @@
</span><span class="cx">     return this;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ForOSREntryJITCode::initializeEntryBuffer(VM&amp; vm, unsigned numCalleeLocals)
</del><ins>+void ForOSREntryJITCode::initializeEntryBuffer(VM&amp; vm, unsigned numCalleeRegisters)
</ins><span class="cx"> {
</span><del>-    m_entryBuffer = vm.scratchBufferForSize(numCalleeLocals * sizeof(EncodedJSValue));
</del><ins>+    m_entryBuffer = vm.scratchBufferForSize(numCalleeRegisters * sizeof(EncodedJSValue));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } } // namespace JSC::FTL
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLForOSREntryJITCodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx">     ForOSREntryJITCode();
</span><span class="cx">     ~ForOSREntryJITCode();
</span><span class="cx">     
</span><del>-    void initializeEntryBuffer(VM&amp;, unsigned numCalleeLocals);
</del><ins>+    void initializeEntryBuffer(VM&amp;, unsigned numCalleeRegisters);
</ins><span class="cx">     ScratchBuffer* entryBuffer() const { return m_entryBuffer; }
</span><span class="cx">     
</span><span class="cx">     void setBytecodeIndex(unsigned value) { m_bytecodeIndex = value; }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLOSREntrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLOSREntry.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLOSREntry.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/ftl/FTLOSREntry.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     RELEASE_ASSERT(
</span><del>-        static_cast&lt;int&gt;(values.numberOfLocals()) == baseline-&gt;m_numCalleeLocals);
</del><ins>+        static_cast&lt;int&gt;(values.numberOfLocals()) == baseline-&gt;m_numCalleeRegisters);
</ins><span class="cx">     
</span><span class="cx">     EncodedJSValue* scratch = static_cast&lt;EncodedJSValue*&gt;(
</span><span class="cx">         entryCode-&gt;entryBuffer()-&gt;dataBuffer());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLStatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLState.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLState.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/ftl/FTLState.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx">     }
</span><span class="cx">     case FTLForOSREntryMode: {
</span><span class="cx">         RefPtr&lt;ForOSREntryJITCode&gt; code = adoptRef(new ForOSREntryJITCode());
</span><del>-        code-&gt;initializeEntryBuffer(graph.m_vm, graph.m_profiledBlock-&gt;m_numCalleeLocals);
</del><ins>+        code-&gt;initializeEntryBuffer(graph.m_vm, graph.m_profiledBlock-&gt;m_numCalleeRegisters);
</ins><span class="cx">         code-&gt;setBytecodeIndex(graph.m_plan.osrEntryBytecodeIndex);
</span><span class="cx">         jitCode = code;
</span><span class="cx">         break;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapMarkedBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/MarkedBlock.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/MarkedBlock.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/heap/MarkedBlock.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -155,7 +155,6 @@
</span><span class="cx">         bool testAndSetMarked(const void*);
</span><span class="cx">         bool isLive(const JSCell*);
</span><span class="cx">         bool isLiveCell(const void*);
</span><del>-        bool isAtom(const void*);
</del><span class="cx">         bool isMarkedOrNewlyAllocated(const JSCell*);
</span><span class="cx">         void setMarked(const void*);
</span><span class="cx">         void clearMarked(const void*);
</span><span class="lines">@@ -389,7 +388,7 @@
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    inline bool MarkedBlock::isAtom(const void* p)
</del><ins>+    inline bool MarkedBlock::isLiveCell(const void* p)
</ins><span class="cx">     {
</span><span class="cx">         ASSERT(MarkedBlock::isAtomAligned(p));
</span><span class="cx">         size_t atomNumber = this-&gt;atomNumber(p);
</span><span class="lines">@@ -400,13 +399,7 @@
</span><span class="cx">             return false;
</span><span class="cx">         if (atomNumber &gt;= m_endAtom) // Filters pointers into invalid cells out of the range.
</span><span class="cx">             return false;
</span><del>-        return true;
-    }
</del><span class="cx"> 
</span><del>-    inline bool MarkedBlock::isLiveCell(const void* p)
-    {
-        if (!isAtom(p))
-            return false;
</del><span class="cx">         return isLive(static_cast&lt;const JSCell*&gt;(p));
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterInterpretercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -153,17 +153,8 @@
</span><span class="cx">     CallFrame* callerFrame = callFrame-&gt;callerFrame();
</span><span class="cx">     CodeBlock* callerCodeBlock = callerFrame-&gt;codeBlock();
</span><span class="cx">     JSScope* callerScopeChain = callerFrame-&gt;uncheckedR(callerCodeBlock-&gt;scopeRegister().offset()).Register::scope();
</span><del>-    UnlinkedCodeBlock* callerUnlinkedCodeBlock = callerCodeBlock-&gt;unlinkedCodeBlock();
</del><ins>+    EvalExecutable* eval = callerCodeBlock-&gt;evalCodeCache().tryGet(callerCodeBlock-&gt;isStrictMode(), programSource, callerScopeChain);
</ins><span class="cx"> 
</span><del>-    ThisTDZMode thisTDZMode = ThisTDZMode::CheckIfNeeded;
-    if (callerUnlinkedCodeBlock-&gt;constructorKind() == ConstructorKind::Derived)
-        thisTDZMode = ThisTDZMode::AlwaysCheck;
-    if (callerUnlinkedCodeBlock-&gt;parseMode() == SourceParseMode::GeneratorBodyMode &amp;&amp; callerUnlinkedCodeBlock-&gt;generatorThisMode() == GeneratorThisMode::Empty)
-        thisTDZMode = ThisTDZMode::AlwaysCheck;
-
-    SourceCode sourceCode(makeSource(programSource));
-    EvalExecutable* eval = callerCodeBlock-&gt;evalCodeCache().tryGet(callerCodeBlock-&gt;isStrictMode(), sourceCode, thisTDZMode, callerScopeChain);
-
</del><span class="cx">     if (!eval) {
</span><span class="cx">         if (!callerCodeBlock-&gt;isStrictMode()) {
</span><span class="cx">             if (programSource.is8Bit()) {
</span><span class="lines">@@ -180,7 +171,8 @@
</span><span class="cx">         // If the literal parser bailed, it should not have thrown exceptions.
</span><span class="cx">         ASSERT(!callFrame-&gt;vm().exception());
</span><span class="cx"> 
</span><del>-        eval = callerCodeBlock-&gt;evalCodeCache().getSlow(callFrame, callerCodeBlock, callerCodeBlock-&gt;isStrictMode(), thisTDZMode, sourceCode, callerScopeChain);
</del><ins>+        ThisTDZMode thisTDZMode = callerCodeBlock-&gt;unlinkedCodeBlock()-&gt;constructorKind() == ConstructorKind::Derived ? ThisTDZMode::AlwaysCheck : ThisTDZMode::CheckIfNeeded;
+        eval = callerCodeBlock-&gt;evalCodeCache().getSlow(callFrame, callerCodeBlock, callerCodeBlock-&gt;isStrictMode(), thisTDZMode, programSource, callerScopeChain);
</ins><span class="cx">         if (!eval)
</span><span class="cx">             return jsUndefined();
</span><span class="cx">     }
</span><span class="lines">@@ -418,7 +410,7 @@
</span><span class="cx">     }
</span><span class="cx">     dataLogF(&quot;-----------------------------------------------------------------------------\n&quot;);
</span><span class="cx"> 
</span><del>-    end = it - codeBlock-&gt;m_numCalleeLocals + codeBlock-&gt;m_numVars;
</del><ins>+    end = it - codeBlock-&gt;m_numCalleeRegisters + codeBlock-&gt;m_numVars;
</ins><span class="cx">     if (it != end) {
</span><span class="cx">         do {
</span><span class="cx">             JSValue v = (*it).jsValue();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/jit/JIT.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -215,8 +215,6 @@
</span><span class="cx">         DEFINE_OP(op_get_rest_length)
</span><span class="cx">         DEFINE_OP(op_check_tdz)
</span><span class="cx">         DEFINE_OP(op_assert)
</span><del>-        DEFINE_OP(op_save)
-        DEFINE_OP(op_resume)
</del><span class="cx">         DEFINE_OP(op_debug)
</span><span class="cx">         DEFINE_OP(op_del_by_id)
</span><span class="cx">         DEFINE_OP(op_div)
</span><span class="lines">@@ -263,8 +261,6 @@
</span><span class="cx">         DEFINE_OP(op_new_array_buffer)
</span><span class="cx">         DEFINE_OP(op_new_func)
</span><span class="cx">         DEFINE_OP(op_new_func_exp)
</span><del>-        DEFINE_OP(op_new_generator_func)
-        DEFINE_OP(op_new_generator_func_exp)
</del><span class="cx">         DEFINE_OP(op_new_arrow_func_exp) 
</span><span class="cx">         DEFINE_OP(op_new_object)
</span><span class="cx">         DEFINE_OP(op_new_regexp)
</span><span class="lines">@@ -768,9 +764,9 @@
</span><span class="cx"> 
</span><span class="cx"> unsigned JIT::frameRegisterCountFor(CodeBlock* codeBlock)
</span><span class="cx"> {
</span><del>-    ASSERT(static_cast&lt;unsigned&gt;(codeBlock-&gt;m_numCalleeLocals) == WTF::roundUpToMultipleOf(stackAlignmentRegisters(), static_cast&lt;unsigned&gt;(codeBlock-&gt;m_numCalleeLocals)));
</del><ins>+    ASSERT(static_cast&lt;unsigned&gt;(codeBlock-&gt;m_numCalleeRegisters) == WTF::roundUpToMultipleOf(stackAlignmentRegisters(), static_cast&lt;unsigned&gt;(codeBlock-&gt;m_numCalleeRegisters)));
</ins><span class="cx"> 
</span><del>-    return roundLocalRegisterCountForFramePointerOffset(codeBlock-&gt;m_numCalleeLocals + maxFrameExtentForSlowPathCallInRegisters);
</del><ins>+    return roundLocalRegisterCountForFramePointerOffset(codeBlock-&gt;m_numCalleeRegisters + maxFrameExtentForSlowPathCallInRegisters);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> int JIT::stackPointerOffsetFor(CodeBlock* codeBlock)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/jit/JIT.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -494,8 +494,6 @@
</span><span class="cx">         void emit_op_get_rest_length(Instruction*);
</span><span class="cx">         void emit_op_check_tdz(Instruction*);
</span><span class="cx">         void emit_op_assert(Instruction*);
</span><del>-        void emit_op_save(Instruction*);
-        void emit_op_resume(Instruction*);
</del><span class="cx">         void emit_op_debug(Instruction*);
</span><span class="cx">         void emit_op_del_by_id(Instruction*);
</span><span class="cx">         void emit_op_div(Instruction*);
</span><span class="lines">@@ -544,8 +542,6 @@
</span><span class="cx">         void emit_op_new_array_buffer(Instruction*);
</span><span class="cx">         void emit_op_new_func(Instruction*);
</span><span class="cx">         void emit_op_new_func_exp(Instruction*);
</span><del>-        void emit_op_new_generator_func(Instruction*);
-        void emit_op_new_generator_func_exp(Instruction*);
</del><span class="cx">         void emit_op_new_arrow_func_exp(Instruction*);
</span><span class="cx">         void emit_op_new_object(Instruction*);
</span><span class="cx">         void emit_op_new_regexp(Instruction*);
</span><span class="lines">@@ -665,7 +661,6 @@
</span><span class="cx">         void emitRightShift(Instruction*, bool isUnsigned);
</span><span class="cx">         void emitRightShiftSlowCase(Instruction*, Vector&lt;SlowCaseEntry&gt;::iterator&amp;, bool isUnsigned);
</span><span class="cx"> 
</span><del>-        void emitNewFuncCommon(Instruction*);
</del><span class="cx">         void emitNewFuncExprCommon(Instruction*);
</span><span class="cx">         void emitVarInjectionCheck(bool needsVarInjectionChecks);
</span><span class="cx">         void emitResolveClosure(int dst, int scope, bool needsVarInjectionChecks, unsigned depth);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOpcodescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -967,7 +967,7 @@
</span><span class="cx">     callOperation(operationNewRegexp, currentInstruction[1].u.operand, m_codeBlock-&gt;regexp(currentInstruction[2].u.operand));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emitNewFuncCommon(Instruction* currentInstruction)
</del><ins>+void JIT::emit_op_new_func(Instruction* currentInstruction)
</ins><span class="cx"> {
</span><span class="cx">     Jump lazyJump;
</span><span class="cx">     int dst = currentInstruction[1].u.operand;
</span><span class="lines">@@ -978,26 +978,14 @@
</span><span class="cx">     emitLoadPayload(currentInstruction[2].u.operand, regT0);
</span><span class="cx"> #endif
</span><span class="cx">     FunctionExecutable* funcExec = m_codeBlock-&gt;functionDecl(currentInstruction[3].u.operand);
</span><del>-
-    OpcodeID opcodeID = m_vm-&gt;interpreter-&gt;getOpcodeID(currentInstruction-&gt;u.opcode);
-    if (opcodeID == op_new_func)
-        callOperation(operationNewFunction, dst, regT0, funcExec);
-    else {
-        ASSERT(opcodeID == op_new_generator_func);
-        callOperation(operationNewGeneratorFunction, dst, regT0, funcExec);
-    }
</del><ins>+    callOperation(operationNewFunction, dst, regT0, funcExec);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_new_func(Instruction* currentInstruction)
</del><ins>+void JIT::emit_op_new_func_exp(Instruction* currentInstruction)
</ins><span class="cx"> {
</span><del>-    emitNewFuncCommon(currentInstruction);
</del><ins>+    emitNewFuncExprCommon(currentInstruction);
</ins><span class="cx"> }
</span><del>-
-void JIT::emit_op_new_generator_func(Instruction* currentInstruction)
-{
-    emitNewFuncCommon(currentInstruction);
-}
-
</del><ins>+    
</ins><span class="cx"> void JIT::emitNewFuncExprCommon(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     OpcodeID opcodeID = m_vm-&gt;interpreter-&gt;getOpcodeID(currentInstruction-&gt;u.opcode);
</span><span class="lines">@@ -1030,27 +1018,11 @@
</span><span class="cx"> #else 
</span><span class="cx">         callOperation(operationNewArrowFunction, dst, regT0, function, regT3, regT2);
</span><span class="cx"> #endif
</span><del>-    else {
-        if (opcodeID == op_new_func_exp)
-            callOperation(operationNewFunction, dst, regT0, function);
-        else {
-            ASSERT(opcodeID == op_new_generator_func_exp);
-            callOperation(operationNewGeneratorFunction, dst, regT0, function);
-        }
-    }
</del><ins>+    else
+        callOperation(operationNewFunction, dst, regT0, function);
</ins><span class="cx">     done.link(this);
</span><span class="cx"> }
</span><del>-
-void JIT::emit_op_new_func_exp(Instruction* currentInstruction)
-{
-    emitNewFuncExprCommon(currentInstruction);
-}
-
-void JIT::emit_op_new_generator_func_exp(Instruction* currentInstruction)
-{
-    emitNewFuncExprCommon(currentInstruction);
-}
-
</del><ins>+    
</ins><span class="cx"> void JIT::emit_op_new_arrow_func_exp(Instruction* currentInstruction)
</span><span class="cx"> {
</span><span class="cx">     emitNewFuncExprCommon(currentInstruction);
</span><span class="lines">@@ -1462,18 +1434,6 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void JIT::emit_op_save(Instruction* currentInstruction)
-{
-    JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_save);
-    slowPathCall.call();
-}
-
-void JIT::emit_op_resume(Instruction* currentInstruction)
-{
-    JITSlowPathCall slowPathCall(this, currentInstruction, slow_path_resume);
-    slowPathCall.call();
-}
-
</del><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="cx"> #endif // ENABLE(JIT)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -45,7 +45,6 @@
</span><span class="cx"> #include &quot;JITToDFGDeferredCompilationCallback.h&quot;
</span><span class="cx"> #include &quot;JSArrowFunction.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><del>-#include &quot;JSGeneratorFunction.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><span class="cx"> #include &quot;JSPropertyNameEnumerator.h&quot;
</span><span class="lines">@@ -988,43 +987,24 @@
</span><span class="cx">     return JSValue::encode(constructArrayWithSizeQuirk(exec, profile, exec-&gt;lexicalGlobalObject(), sizeValue));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-}
-
-template&lt;typename FunctionType&gt;
-static EncodedJSValue operationNewFunctionCommon(ExecState* exec, JSScope* scope, JSCell* functionExecutable, bool isInvalidated)
</del><ins>+EncodedJSValue JIT_OPERATION operationNewFunction(ExecState* exec, JSScope* scope, JSCell* functionExecutable)
</ins><span class="cx"> {
</span><span class="cx">     ASSERT(functionExecutable-&gt;inherits(FunctionExecutable::info()));
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     NativeCallFrameTracer tracer(&amp;vm, exec);
</span><del>-    if (isInvalidated)
-        return JSValue::encode(FunctionType::createWithInvalidatedReallocationWatchpoint(vm, static_cast&lt;FunctionExecutable*&gt;(functionExecutable), scope));
-    return JSValue::encode(FunctionType::create(vm, static_cast&lt;FunctionExecutable*&gt;(functionExecutable), scope));
</del><ins>+    return JSValue::encode(JSFunction::create(vm, static_cast&lt;FunctionExecutable*&gt;(functionExecutable), scope));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-extern &quot;C&quot; {
-
-EncodedJSValue JIT_OPERATION operationNewFunction(ExecState* exec, JSScope* scope, JSCell* functionExecutable)
-{
-    return operationNewFunctionCommon&lt;JSFunction&gt;(exec, scope, functionExecutable, false);
-}
-
</del><span class="cx"> EncodedJSValue JIT_OPERATION operationNewFunctionWithInvalidatedReallocationWatchpoint(ExecState* exec, JSScope* scope, JSCell* functionExecutable)
</span><span class="cx"> {
</span><del>-    return operationNewFunctionCommon&lt;JSFunction&gt;(exec, scope, functionExecutable, true);
</del><ins>+    ASSERT(functionExecutable-&gt;inherits(FunctionExecutable::info()));
+    VM&amp; vm = exec-&gt;vm();
+    NativeCallFrameTracer tracer(&amp;vm, exec);
+    return JSValue::encode(JSFunction::createWithInvalidatedReallocationWatchpoint(vm, static_cast&lt;FunctionExecutable*&gt;(functionExecutable), scope));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EncodedJSValue JIT_OPERATION operationNewGeneratorFunction(ExecState* exec, JSScope* scope, JSCell* functionExecutable)
</del><ins>+EncodedJSValue static operationNewFunctionCommon(ExecState* exec, JSScope* scope, JSCell* functionExecutable, EncodedJSValue thisValue, bool isInvalidated)
</ins><span class="cx"> {
</span><del>-    return operationNewFunctionCommon&lt;JSGeneratorFunction&gt;(exec, scope, functionExecutable, false);
-}
-
-EncodedJSValue JIT_OPERATION operationNewGeneratorFunctionWithInvalidatedReallocationWatchpoint(ExecState* exec, JSScope* scope, JSCell* functionExecutable)
-{
-    return operationNewFunctionCommon&lt;JSGeneratorFunction&gt;(exec, scope, functionExecutable, true);
-}
-
-EncodedJSValue static operationNewArrowFunctionCommon(ExecState* exec, JSScope* scope, JSCell* functionExecutable, EncodedJSValue thisValue, bool isInvalidated)
-{
</del><span class="cx">     ASSERT(functionExecutable-&gt;inherits(FunctionExecutable::info()));
</span><span class="cx">     FunctionExecutable* executable = static_cast&lt;FunctionExecutable*&gt;(functionExecutable);
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="lines">@@ -1039,12 +1019,12 @@
</span><span class="cx">     
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationNewArrowFunctionWithInvalidatedReallocationWatchpoint(ExecState* exec, JSScope* scope, JSCell* functionExecutable, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return operationNewArrowFunctionCommon(exec, scope, functionExecutable, thisValue, true);
</del><ins>+    return operationNewFunctionCommon(exec, scope, functionExecutable, thisValue, true);
</ins><span class="cx"> }
</span><span class="cx">     
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationNewArrowFunction(ExecState* exec, JSScope* scope, JSCell* functionExecutable, EncodedJSValue thisValue)
</span><span class="cx"> {
</span><del>-    return operationNewArrowFunctionCommon(exec, scope, functionExecutable, thisValue, false);
</del><ins>+    return operationNewFunctionCommon(exec, scope, functionExecutable, thisValue, false);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSCell* JIT_OPERATION operationNewObject(ExecState* exec, Structure* structure)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -301,8 +301,6 @@
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationNewArrayWithSizeAndProfile(ExecState*, ArrayAllocationProfile*, EncodedJSValue size) WTF_INTERNAL;
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationNewFunction(ExecState*, JSScope*, JSCell*) WTF_INTERNAL;
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationNewFunctionWithInvalidatedReallocationWatchpoint(ExecState*, JSScope*, JSCell*) WTF_INTERNAL;
</span><del>-EncodedJSValue JIT_OPERATION operationNewGeneratorFunction(ExecState*, JSScope*, JSCell*) WTF_INTERNAL;
-EncodedJSValue JIT_OPERATION operationNewGeneratorFunctionWithInvalidatedReallocationWatchpoint(ExecState*, JSScope*, JSCell*) WTF_INTERNAL;
</del><span class="cx"> EncodedJSValue JIT_OPERATION operationNewArrowFunction(ExecState*, JSScope*, JSCell*, EncodedJSValue) WTF_INTERNAL;
</span><span class="cx"> EncodedJSValue JIT_OPERATION operationNewArrowFunctionWithInvalidatedReallocationWatchpoint(ExecState*, JSScope*, JSCell*, EncodedJSValue) WTF_INTERNAL;
</span><span class="cx"> JSCell* JIT_OPERATION operationNewObject(ExecState*, Structure*) WTF_INTERNAL;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntEntrypointcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -134,9 +134,9 @@
</span><span class="cx"> 
</span><span class="cx"> unsigned frameRegisterCountFor(CodeBlock* codeBlock)
</span><span class="cx"> {
</span><del>-    ASSERT(static_cast&lt;unsigned&gt;(codeBlock-&gt;m_numCalleeLocals) == WTF::roundUpToMultipleOf(stackAlignmentRegisters(), static_cast&lt;unsigned&gt;(codeBlock-&gt;m_numCalleeLocals)));
</del><ins>+    ASSERT(static_cast&lt;unsigned&gt;(codeBlock-&gt;m_numCalleeRegisters) == WTF::roundUpToMultipleOf(stackAlignmentRegisters(), static_cast&lt;unsigned&gt;(codeBlock-&gt;m_numCalleeRegisters)));
</ins><span class="cx"> 
</span><del>-    return roundLocalRegisterCountForFramePointerOffset(codeBlock-&gt;m_numCalleeLocals + maxFrameExtentForSlowPathCallInRegisters);
</del><ins>+    return roundLocalRegisterCountForFramePointerOffset(codeBlock-&gt;m_numCalleeRegisters + maxFrameExtentForSlowPathCallInRegisters);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } } // namespace JSC::LLInt
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> #include &quot;JSLexicalEnvironment.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;JSCJSValue.h&quot;
</span><del>-#include &quot;JSGeneratorFunction.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObjectFunctions.h&quot;
</span><span class="cx"> #include &quot;JSStackInlines.h&quot;
</span><span class="cx"> #include &quot;JSString.h&quot;
</span><span class="lines">@@ -225,9 +224,9 @@
</span><span class="cx">     JSFunction* callee = jsCast&lt;JSFunction*&gt;(exec-&gt;callee());
</span><span class="cx">     FunctionExecutable* executable = callee-&gt;jsExecutable();
</span><span class="cx">     CodeBlock* codeBlock = executable-&gt;codeBlockFor(kind);
</span><del>-    dataLogF(&quot;%p / %p: in %s of function %p, executable %p; numVars = %u, numParameters = %u, numCalleeLocals = %u, caller = %p.\n&quot;,
</del><ins>+    dataLogF(&quot;%p / %p: in %s of function %p, executable %p; numVars = %u, numParameters = %u, numCalleeRegisters = %u, caller = %p.\n&quot;,
</ins><span class="cx">             codeBlock, exec, comment, callee, executable,
</span><del>-            codeBlock-&gt;m_numVars, codeBlock-&gt;numParameters(), codeBlock-&gt;m_numCalleeLocals,
</del><ins>+            codeBlock-&gt;m_numVars, codeBlock-&gt;numParameters(), codeBlock-&gt;m_numCalleeRegisters,
</ins><span class="cx">             exec-&gt;callerFrame());
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -459,7 +458,7 @@
</span><span class="cx"> #if LLINT_SLOW_PATH_TRACING
</span><span class="cx">     dataLogF(&quot;Checking stack height with exec = %p.\n&quot;, exec);
</span><span class="cx">     dataLogF(&quot;CodeBlock = %p.\n&quot;, exec-&gt;codeBlock());
</span><del>-    dataLogF(&quot;Num callee registers = %u.\n&quot;, exec-&gt;codeBlock()-&gt;m_numCalleeLocals);
</del><ins>+    dataLogF(&quot;Num callee registers = %u.\n&quot;, exec-&gt;codeBlock()-&gt;m_numCalleeRegisters);
</ins><span class="cx">     dataLogF(&quot;Num vars = %u.\n&quot;, exec-&gt;codeBlock()-&gt;m_numVars);
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="lines">@@ -1042,18 +1041,6 @@
</span><span class="cx">     LLINT_RETURN(JSFunction::create(vm, codeBlock-&gt;functionDecl(pc[3].u.operand), scope));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LLINT_SLOW_PATH_DECL(slow_path_new_generator_func)
-{
-    LLINT_BEGIN();
-    CodeBlock* codeBlock = exec-&gt;codeBlock();
-    ASSERT(codeBlock-&gt;codeType() != FunctionCode || !codeBlock-&gt;needsActivation() || exec-&gt;hasActivation());
-    JSScope* scope = exec-&gt;uncheckedR(pc[2].u.operand).Register::scope();
-#if LLINT_SLOW_PATH_TRACING
-    dataLogF(&quot;Creating function!\n&quot;);
-#endif
-    LLINT_RETURN(JSGeneratorFunction::create(vm, codeBlock-&gt;functionDecl(pc[3].u.operand), scope));
-}
-
</del><span class="cx"> LLINT_SLOW_PATH_DECL(slow_path_new_func_exp)
</span><span class="cx"> {
</span><span class="cx">     LLINT_BEGIN();
</span><span class="lines">@@ -1065,17 +1052,6 @@
</span><span class="cx">     LLINT_RETURN(JSFunction::create(vm, executable, scope));
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-LLINT_SLOW_PATH_DECL(slow_path_new_generator_func_exp)
-{
-    LLINT_BEGIN();
-
-    CodeBlock* codeBlock = exec-&gt;codeBlock();
-    JSScope* scope = exec-&gt;uncheckedR(pc[2].u.operand).Register::scope();
-    FunctionExecutable* executable = codeBlock-&gt;functionExpr(pc[3].u.operand);
-
-    LLINT_RETURN(JSGeneratorFunction::create(vm, executable, scope));
-}
-
</del><span class="cx"> LLINT_SLOW_PATH_DECL(slow_path_new_arrow_func_exp)
</span><span class="cx"> {
</span><span class="cx">     LLINT_BEGIN();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -99,8 +99,6 @@
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_switch_string);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_func);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_func_exp);
</span><del>-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_generator_func);
-LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_generator_func_exp);
</del><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_new_arrow_func_exp);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_call);
</span><span class="cx"> LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_construct);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLowLevelInterpreterasm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -697,7 +697,7 @@
</span><span class="cx"> end
</span><span class="cx"> 
</span><span class="cx"> macro getFrameRegisterSizeForCodeBlock(codeBlock, size)
</span><del>-    loadi CodeBlock::m_numCalleeLocals[codeBlock], size
</del><ins>+    loadi CodeBlock::m_numCalleeRegisters[codeBlock], size
</ins><span class="cx">     lshiftp 3, size
</span><span class="cx">     addp maxFrameExtentForSlowPathCall, size
</span><span class="cx"> end
</span><span class="lines">@@ -1227,12 +1227,6 @@
</span><span class="cx">     dispatch(4)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_new_generator_func:
-    traceExecution()
-    callSlowPath(_llint_slow_path_new_generator_func)
-    dispatch(4)
-
-
</del><span class="cx"> _llint_op_new_array:
</span><span class="cx">     traceExecution()
</span><span class="cx">     callSlowPath(_llint_slow_path_new_array)
</span><span class="lines">@@ -1464,11 +1458,6 @@
</span><span class="cx">     callSlowPath(_llint_slow_path_new_func_exp)
</span><span class="cx">     dispatch(4)
</span><span class="cx"> 
</span><del>-_llint_op_new_generator_func_exp:
-    traceExecution()
-    callSlowPath(_llint_slow_path_new_generator_func_exp)
-    dispatch(4)
-
</del><span class="cx"> _llint_op_new_arrow_func_exp:
</span><span class="cx">     traceExecution()
</span><span class="cx">     callSlowPath(_llint_slow_path_new_arrow_func_exp)
</span><span class="lines">@@ -1584,18 +1573,6 @@
</span><span class="cx">     dispatch(3)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-_llint_op_save:
-    traceExecution()
-    callSlowPath(_slow_path_save)
-    dispatch(4)
-
-
-_llint_op_resume:
-    traceExecution()
-    callSlowPath(_slow_path_resume)
-    dispatch(3)
-
-
</del><span class="cx"> _llint_op_create_lexical_environment:
</span><span class="cx">     traceExecution()
</span><span class="cx">     callSlowPath(_slow_path_create_lexical_environment)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserASTBuilderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/ASTBuilder.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/ASTBuilder.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/parser/ASTBuilder.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -341,11 +341,9 @@
</span><span class="cx">         return new (m_parserArena) YieldExprNode(location, nullptr, /* delegate */ false);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    YieldExprNode* createYield(const JSTokenLocation&amp; location, ExpressionNode* argument, bool delegate, const JSTextPosition&amp; start, const JSTextPosition&amp; divot, const JSTextPosition&amp; end)
</del><ins>+    YieldExprNode* createYield(const JSTokenLocation&amp; location, ExpressionNode* argument, bool delegate)
</ins><span class="cx">     {
</span><del>-        YieldExprNode* node = new (m_parserArena) YieldExprNode(location, argument, delegate);
-        setExceptionLocation(node, start, divot, end);
-        return node;
</del><ins>+        return new (m_parserArena) YieldExprNode(location, argument, delegate);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ClassExprNode* createClassExpr(const JSTokenLocation&amp; location, const Identifier&amp; name, VariableEnvironment&amp; classEnvironment, ExpressionNode* constructor,
</span><span class="lines">@@ -366,12 +364,12 @@
</span><span class="cx">         const JSTokenLocation&amp; startLocation, const JSTokenLocation&amp; endLocation, 
</span><span class="cx">         unsigned startColumn, unsigned endColumn, int functionKeywordStart, 
</span><span class="cx">         int functionNameStart, int parametersStart, bool inStrictContext, 
</span><del>-        ConstructorKind constructorKind, SuperBinding superBinding, unsigned parameterCount, SourceParseMode mode, bool isArrowFunctionBodyExpression)
</del><ins>+        ConstructorKind constructorKind, unsigned parameterCount, SourceParseMode mode, bool isArrowFunction, bool isArrowFunctionBodyExpression)
</ins><span class="cx">     {
</span><span class="cx">         return new (m_parserArena) FunctionMetadataNode(
</span><span class="cx">             m_parserArena, startLocation, endLocation, startColumn, endColumn, 
</span><span class="cx">             functionKeywordStart, functionNameStart, parametersStart, 
</span><del>-            inStrictContext, constructorKind, superBinding, parameterCount, mode, isArrowFunctionBodyExpression);
</del><ins>+            inStrictContext, constructorKind, parameterCount, mode, isArrowFunction, isArrowFunctionBodyExpression);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ExpressionNode* createArrowFunctionExpr(const JSTokenLocation&amp; location, const ParserFunctionInfo&lt;ASTBuilder&gt;&amp; functionInfo)
</span><span class="lines">@@ -893,9 +891,6 @@
</span><span class="cx">     {
</span><span class="cx">         node-&gt;setStartOffset(offset);
</span><span class="cx">     }
</span><del>-
-
-    void propagateArgumentsUse() { usesArguments(); }
</del><span class="cx">     
</span><span class="cx"> private:
</span><span class="cx">     struct Scope {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserNodescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Nodes.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Nodes.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/parser/Nodes.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx">     ParserArena&amp;, const JSTokenLocation&amp; startLocation, 
</span><span class="cx">     const JSTokenLocation&amp; endLocation, unsigned startColumn, unsigned endColumn, 
</span><span class="cx">     int functionKeywordStart, int functionNameStart, int parametersStart, bool isInStrictContext, 
</span><del>-    ConstructorKind constructorKind, SuperBinding superBinding, unsigned parameterCount, SourceParseMode mode, bool isArrowFunctionBodyExpression)
</del><ins>+    ConstructorKind constructorKind, unsigned parameterCount, SourceParseMode mode, bool isArrowFunction, bool isArrowFunctionBodyExpression)
</ins><span class="cx">         : Node(endLocation)
</span><span class="cx">         , m_startColumn(startColumn)
</span><span class="cx">         , m_endColumn(endColumn)
</span><span class="lines">@@ -162,11 +162,10 @@
</span><span class="cx">         , m_parameterCount(parameterCount)
</span><span class="cx">         , m_parseMode(mode)
</span><span class="cx">         , m_isInStrictContext(isInStrictContext)
</span><del>-        , m_superBinding(static_cast&lt;unsigned&gt;(superBinding))
</del><span class="cx">         , m_constructorKind(static_cast&lt;unsigned&gt;(constructorKind))
</span><ins>+        , m_isArrowFunction(isArrowFunction)
</ins><span class="cx">         , m_isArrowFunctionBodyExpression(isArrowFunctionBodyExpression)
</span><span class="cx"> {
</span><del>-    ASSERT(m_superBinding == static_cast&lt;unsigned&gt;(superBinding));
</del><span class="cx">     ASSERT(m_constructorKind == static_cast&lt;unsigned&gt;(constructorKind));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserNodesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Nodes.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Nodes.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/parser/Nodes.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1817,7 +1817,7 @@
</span><span class="cx">             ParserArena&amp;, const JSTokenLocation&amp; start, const JSTokenLocation&amp; end, 
</span><span class="cx">             unsigned startColumn, unsigned endColumn, int functionKeywordStart, 
</span><span class="cx">             int functionNameStart, int parametersStart, bool isInStrictContext, 
</span><del>-            ConstructorKind, SuperBinding, unsigned, SourceParseMode, bool isArrowFunctionBodyExpression);
</del><ins>+            ConstructorKind, unsigned, SourceParseMode, bool isArrowFunction, bool isArrowFunctionBodyExpression);
</ins><span class="cx"> 
</span><span class="cx">         void finishParsing(const SourceCode&amp;, const Identifier&amp;, FunctionMode);
</span><span class="cx">         
</span><span class="lines">@@ -1842,8 +1842,8 @@
</span><span class="cx"> 
</span><span class="cx">         int startStartOffset() const { return m_startStartOffset; }
</span><span class="cx">         bool isInStrictContext() const { return m_isInStrictContext; }
</span><del>-        SuperBinding superBinding() { return static_cast&lt;SuperBinding&gt;(m_superBinding); }
</del><span class="cx">         ConstructorKind constructorKind() { return static_cast&lt;ConstructorKind&gt;(m_constructorKind); }
</span><ins>+        bool isArrowFunction() const { return m_isArrowFunction; }
</ins><span class="cx">         bool isArrowFunctionBodyExpression() const { return m_isArrowFunctionBodyExpression; }
</span><span class="cx"> 
</span><span class="cx">         void setLoc(unsigned firstLine, unsigned lastLine, int startOffset, int lineStartOffset)
</span><span class="lines">@@ -1869,8 +1869,8 @@
</span><span class="cx">         int m_lastLine;
</span><span class="cx">         SourceParseMode m_parseMode;
</span><span class="cx">         unsigned m_isInStrictContext : 1;
</span><del>-        unsigned m_superBinding : 1;
</del><span class="cx">         unsigned m_constructorKind : 2;
</span><ins>+        unsigned m_isArrowFunction : 1;
</ins><span class="cx">         unsigned m_isArrowFunctionBodyExpression : 1;
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="lines">@@ -1932,7 +1932,7 @@
</span><span class="cx">         virtual bool isArrowFuncExprNode() const override { return true; }
</span><span class="cx">     };
</span><span class="cx"> 
</span><del>-    class YieldExprNode final : public ExpressionNode, public ThrowableExpressionData {
</del><ins>+    class YieldExprNode final : public ExpressionNode {
</ins><span class="cx">     public:
</span><span class="cx">         YieldExprNode(const JSTokenLocation&amp;, ExpressionNode* argument, bool delegate);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Parser.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Parser.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/parser/Parser.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -194,7 +194,7 @@
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><span class="cx"> Parser&lt;LexerType&gt;::Parser(
</span><span class="cx">     VM* vm, const SourceCode&amp; source, JSParserBuiltinMode builtinMode, 
</span><del>-    JSParserStrictMode strictMode, SourceParseMode parseMode, SuperBinding superBinding,
</del><ins>+    JSParserStrictMode strictMode, SourceParseMode parseMode, 
</ins><span class="cx">     ConstructorKind defaultConstructorKind, ThisTDZMode thisTDZMode)
</span><span class="cx">     : m_vm(vm)
</span><span class="cx">     , m_source(&amp;source)
</span><span class="lines">@@ -210,7 +210,6 @@
</span><span class="cx">     , m_lastFunctionName(nullptr)
</span><span class="cx">     , m_sourceElements(0)
</span><span class="cx">     , m_parsingBuiltin(builtinMode == JSParserBuiltinMode::Builtin)
</span><del>-    , m_superBinding(superBinding)
</del><span class="cx">     , m_defaultConstructorKind(defaultConstructorKind)
</span><span class="cx">     , m_thisTDZMode(thisTDZMode)
</span><span class="cx"> {
</span><span class="lines">@@ -250,10 +249,7 @@
</span><span class="cx">     bool isArrowFunctionBodyExpression = false;
</span><span class="cx">     if (m_lexer-&gt;isReparsingFunction()) {
</span><span class="cx">         ParserFunctionInfo&lt;ASTBuilder&gt; functionInfo;
</span><del>-        if (parseMode == SourceParseMode::GeneratorBodyMode)
-            functionInfo.parameters = createGeneratorParameters(context);
-        else
-            parseFunctionParameters(context, parseMode, functionInfo);
</del><ins>+        parseFunctionParameters(context, parseMode, functionInfo);
</ins><span class="cx">         m_parameters = functionInfo.parameters;
</span><span class="cx"> 
</span><span class="cx">         if (parseMode == SourceParseMode::ArrowFunctionMode &amp;&amp; !hasError()) {
</span><span class="lines">@@ -277,12 +273,8 @@
</span><span class="cx">             sourceElements = parseArrowFunctionSingleExpressionBodySourceElements(context);
</span><span class="cx">         else if (isModuleParseMode(parseMode))
</span><span class="cx">             sourceElements = parseModuleSourceElements(context, parseMode);
</span><del>-        else {
-            if (parseMode == SourceParseMode::GeneratorWrapperFunctionMode)
-                sourceElements = parseGeneratorFunctionSourceElements(context, CheckForStrictMode);
-            else
-                sourceElements = parseSourceElements(context, CheckForStrictMode);
-        }
</del><ins>+        else
+            sourceElements = parseSourceElements(context, CheckForStrictMode);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool validEnding;
</span><span class="lines">@@ -309,14 +301,7 @@
</span><span class="cx">     VariableEnvironment&amp; varDeclarations = scope-&gt;declaredVariables();
</span><span class="cx">     for (auto&amp; entry : capturedVariables)
</span><span class="cx">         varDeclarations.markVariableAsCaptured(entry);
</span><del>-
-    IdentifierSet usedVariables;
-    scope-&gt;getUsedVariables(usedVariables);
-    if (parseMode == SourceParseMode::GeneratorWrapperFunctionMode) {
-        if (usedVariables.contains(m_vm-&gt;propertyNames-&gt;arguments.impl()))
-            context.propagateArgumentsUse();
-    }
-
</del><ins>+    
</ins><span class="cx">     CodeFeatures features = context.features();
</span><span class="cx">     if (scope-&gt;strictMode())
</span><span class="cx">         features |= StrictModeFeature;
</span><span class="lines">@@ -326,9 +311,10 @@
</span><span class="cx">         features |= ModifiedParameterFeature;
</span><span class="cx">     if (modifiedArguments)
</span><span class="cx">         features |= ModifiedArgumentsFeature;
</span><del>-
</del><span class="cx">     Vector&lt;RefPtr&lt;UniquedStringImpl&gt;&gt; closedVariables;
</span><span class="cx">     if (m_parsingBuiltin) {
</span><ins>+        IdentifierSet usedVariables;
+        scope-&gt;getUsedVariables(usedVariables);
</ins><span class="cx">         // FIXME: This needs to be changed if we want to allow builtins to use lexical declarations.
</span><span class="cx">         for (const auto&amp; variable : usedVariables) {
</span><span class="cx">             Identifier identifier = Identifier::fromUid(m_vm, variable.get());
</span><span class="lines">@@ -472,45 +458,6 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;class TreeBuilder&gt; TreeSourceElements Parser&lt;LexerType&gt;::parseGeneratorFunctionSourceElements(TreeBuilder&amp; context, SourceElementsMode mode)
-{
-    auto sourceElements = context.createSourceElements();
-
-    unsigned functionKeywordStart = tokenStart();
-    JSTokenLocation startLocation(tokenLocation());
-    JSTextPosition start = tokenStartPosition();
-    unsigned startColumn = tokenColumn();
-    int functionNameStart = m_token.m_location.startOffset;
-    int parametersStart = m_token.m_location.startOffset;
-
-    ParserFunctionInfo&lt;TreeBuilder&gt; info;
-    info.name = &amp;m_vm-&gt;propertyNames-&gt;nullIdentifier;
-    info.parameters = createGeneratorParameters(context);
-    info.startOffset = parametersStart;
-    info.startLine = tokenLine();
-    info.parameterCount = 4; // generator, state, value, resume mode
-
-    {
-        AutoPopScopeRef generatorBodyScope(this, pushScope());
-        generatorBodyScope-&gt;setSourceParseMode(SourceParseMode::GeneratorBodyMode);
-        SyntaxChecker generatorFunctionContext(const_cast&lt;VM*&gt;(m_vm), m_lexer.get());
-        failIfFalse(parseSourceElements(generatorFunctionContext, mode), &quot;Cannot parse the body of a generator&quot;);
-        popScope(generatorBodyScope, TreeBuilder::NeedsFreeVariableInfo);
-    }
-    info.body = context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, tokenColumn(), functionKeywordStart, functionNameStart, parametersStart, strictMode(), ConstructorKind::None, m_superBinding, info.parameterCount, SourceParseMode::GeneratorBodyMode, false);
-
-    info.endLine = tokenLine();
-    info.endOffset = m_token.m_data.offset;
-    info.bodyStartColumn = startColumn;
-
-    auto functionExpr = context.createFunctionExpr(startLocation, info);
-    auto statement = context.createExprStatement(startLocation, functionExpr, start, m_lastTokenEndPosition.line);
-    context.appendStatement(sourceElements, statement);
-
-    return sourceElements;
-}
-
-template &lt;typename LexerType&gt;
</del><span class="cx"> template &lt;class TreeBuilder&gt; TreeStatement Parser&lt;LexerType&gt;::parseStatementListItem(TreeBuilder&amp; context, const Identifier*&amp; directive, unsigned* directiveLiteralLength)
</span><span class="cx"> {
</span><span class="cx">     // The grammar is documented here:
</span><span class="lines">@@ -1653,14 +1600,15 @@
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><span class="cx"> template &lt;class TreeBuilder&gt; TreeFunctionBody Parser&lt;LexerType&gt;::parseFunctionBody(
</span><span class="cx">     TreeBuilder&amp; context, const JSTokenLocation&amp; startLocation, int startColumn, int functionKeywordStart, int functionNameStart, int parametersStart, 
</span><del>-    ConstructorKind constructorKind, SuperBinding superBinding, FunctionBodyType bodyType, unsigned parameterCount, SourceParseMode parseMode)
</del><ins>+    ConstructorKind constructorKind, FunctionBodyType bodyType, unsigned parameterCount, SourceParseMode parseMode)
</ins><span class="cx"> {
</span><ins>+    bool isArrowFunction = FunctionBodyType::StandardFunctionBodyBlock != bodyType;
</ins><span class="cx">     bool isArrowFunctionBodyExpression = bodyType == ArrowFunctionBodyExpression;
</span><span class="cx">     if (!isArrowFunctionBodyExpression) {
</span><span class="cx">         next();
</span><span class="cx">         if (match(CLOSEBRACE)) {
</span><span class="cx">             unsigned endColumn = tokenColumn();
</span><del>-            return context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, endColumn, functionKeywordStart, functionNameStart, parametersStart, strictMode(), constructorKind, superBinding, parameterCount, parseMode, isArrowFunctionBodyExpression);
</del><ins>+            return context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, endColumn, functionKeywordStart, functionNameStart, parametersStart, strictMode(), constructorKind, parameterCount, parseMode, isArrowFunction, isArrowFunctionBodyExpression);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1672,7 +1620,7 @@
</span><span class="cx">     else
</span><span class="cx">         failIfFalse(parseSourceElements(syntaxChecker, CheckForStrictMode), bodyType == StandardFunctionBodyBlock ? &quot;Cannot parse body of this function&quot; : &quot;Cannot parse body of this arrow function&quot;);
</span><span class="cx">     unsigned endColumn = tokenColumn();
</span><del>-    return context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, endColumn, functionKeywordStart, functionNameStart, parametersStart, strictMode(), constructorKind, superBinding, parameterCount, parseMode, isArrowFunctionBodyExpression);
</del><ins>+    return context.createFunctionMetadata(startLocation, tokenLocation(), startColumn, endColumn, functionKeywordStart, functionNameStart, parametersStart, strictMode(), constructorKind, parameterCount, parseMode, isArrowFunction, isArrowFunctionBodyExpression);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static const char* stringForFunctionMode(SourceParseMode mode)
</span><span class="lines">@@ -1686,10 +1634,8 @@
</span><span class="cx">         return &quot;function&quot;;
</span><span class="cx">     case SourceParseMode::MethodMode:
</span><span class="cx">         return &quot;method&quot;;
</span><del>-    case SourceParseMode::GeneratorBodyMode:
</del><ins>+    case SourceParseMode::GeneratorMode:
</ins><span class="cx">         return &quot;generator&quot;;
</span><del>-    case SourceParseMode::GeneratorWrapperFunctionMode:
-        return &quot;generator function&quot;;
</del><span class="cx">     case SourceParseMode::ArrowFunctionMode:
</span><span class="cx">         return &quot;arrow function&quot;;
</span><span class="cx">     case SourceParseMode::ProgramMode:
</span><span class="lines">@@ -1768,37 +1714,6 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><del>-template &lt;class TreeBuilder&gt; typename TreeBuilder::FormalParameterList Parser&lt;LexerType&gt;::createGeneratorParameters(TreeBuilder&amp; context)
-{
-    auto parameters = context.createFormalParameterList();
-
-    JSTokenLocation location(tokenLocation());
-    JSTextPosition position = tokenStartPosition();
-
-    // @generator
-    declareParameter(&amp;m_vm-&gt;propertyNames-&gt;generatorPrivateName);
-    auto generator = context.createBindingLocation(location, m_vm-&gt;propertyNames-&gt;generatorPrivateName, position, position, AssignmentContext::DeclarationStatement);
-    context.appendParameter(parameters, generator, 0);
-
-    // @generatorState
-    declareParameter(&amp;m_vm-&gt;propertyNames-&gt;generatorStatePrivateName);
-    auto generatorState = context.createBindingLocation(location, m_vm-&gt;propertyNames-&gt;generatorStatePrivateName, position, position, AssignmentContext::DeclarationStatement);
-    context.appendParameter(parameters, generatorState, 0);
-
-    // @generatorValue
-    declareParameter(&amp;m_vm-&gt;propertyNames-&gt;generatorValuePrivateName);
-    auto generatorValue = context.createBindingLocation(location, m_vm-&gt;propertyNames-&gt;generatorValuePrivateName, position, position, AssignmentContext::DeclarationStatement);
-    context.appendParameter(parameters, generatorValue, 0);
-
-    // @generatorResumeMode
-    declareParameter(&amp;m_vm-&gt;propertyNames-&gt;generatorResumeModePrivateName);
-    auto generatorResumeMode = context.createBindingLocation(location, m_vm-&gt;propertyNames-&gt;generatorResumeModePrivateName, position, position, AssignmentContext::DeclarationStatement);
-    context.appendParameter(parameters, generatorResumeMode, 0);
-
-    return parameters;
-}
-
-template &lt;typename LexerType&gt;
</del><span class="cx"> template &lt;class TreeBuilder&gt; bool Parser&lt;LexerType&gt;::parseFunctionInfo(TreeBuilder&amp; context, FunctionRequirements requirements, SourceParseMode mode, bool nameIsInContainingScope, ConstructorKind constructorKind, SuperBinding expectedSuperBinding, int functionKeywordStart, ParserFunctionInfo&lt;TreeBuilder&gt;&amp; functionInfo, FunctionDefinitionType functionDefinitionType)
</span><span class="cx"> {
</span><span class="cx">     RELEASE_ASSERT(isFunctionParseMode(mode));
</span><span class="lines">@@ -1909,10 +1824,12 @@
</span><span class="cx">             endLocation.startOffset - endLocation.lineStartOffset;
</span><span class="cx">         unsigned currentLineStartOffset = m_token.m_location.lineStartOffset;
</span><span class="cx">         
</span><ins>+        bool isArrowFunction = mode == SourceParseMode::ArrowFunctionMode;
+        
</ins><span class="cx">         functionInfo.body = context.createFunctionMetadata(
</span><span class="cx">             startLocation, endLocation, functionInfo.bodyStartColumn, bodyEndColumn, 
</span><span class="cx">             functionKeywordStart, functionNameStart, parametersStart, 
</span><del>-            cachedInfo-&gt;strictMode, constructorKind, expectedSuperBinding, cachedInfo-&gt;parameterCount, mode, functionBodyType == ArrowFunctionBodyExpression);
</del><ins>+            cachedInfo-&gt;strictMode, constructorKind, cachedInfo-&gt;parameterCount, mode, isArrowFunction,  functionBodyType == ArrowFunctionBodyExpression);
</ins><span class="cx">         
</span><span class="cx">         functionScope-&gt;restoreFromSourceProviderCache(cachedInfo);
</span><span class="cx">         popScope(functionScope, TreeBuilder::NeedsFreeVariableInfo);
</span><span class="lines">@@ -1926,7 +1843,7 @@
</span><span class="cx">         m_lexer-&gt;setLineNumber(m_token.m_location.line);
</span><span class="cx">         functionInfo.endOffset = cachedInfo-&gt;endFunctionOffset;
</span><span class="cx"> 
</span><del>-        if (mode == SourceParseMode::ArrowFunctionMode)
</del><ins>+        if (isArrowFunction)
</ins><span class="cx">             functionBodyType = cachedInfo-&gt;isBodyArrowExpression ?  ArrowFunctionBodyExpression : ArrowFunctionBodyBlock;
</span><span class="cx">         else
</span><span class="cx">             functionBodyType = StandardFunctionBodyBlock;
</span><span class="lines">@@ -1948,33 +1865,14 @@
</span><span class="cx">     
</span><span class="cx">     m_lastFunctionName = lastFunctionName;
</span><span class="cx">     ParserState oldState = saveState();
</span><del>-
-    auto performParsingFunctionBody = [&amp;] {
-        return parseFunctionBody(context, startLocation, startColumn, functionKeywordStart, functionNameStart, parametersStart, constructorKind, expectedSuperBinding, functionBodyType, functionInfo.parameterCount, mode);
-    };
-
-    if (mode == SourceParseMode::GeneratorWrapperFunctionMode) {
-        AutoPopScopeRef generatorBodyScope(this, pushScope());
-        generatorBodyScope-&gt;setSourceParseMode(SourceParseMode::GeneratorBodyMode);
-        functionInfo.body = performParsingFunctionBody();
-
-        // When a generator has a &quot;use strict&quot; directive, a generator function wrapping it should be strict mode.
-        if  (generatorBodyScope-&gt;strictMode())
-            functionScope-&gt;setStrictMode();
-
-        semanticFailIfTrue(generatorBodyScope-&gt;hasDirectSuper(), &quot;Cannot call super() outside of a class constructor&quot;);
-        if (generatorBodyScope-&gt;needsSuperBinding())
-            semanticFailIfTrue(expectedSuperBinding == SuperBinding::NotNeeded, &quot;super can only be used in a method of a derived class&quot;);
-
-        popScope(generatorBodyScope, TreeBuilder::NeedsFreeVariableInfo);
-    } else
-        functionInfo.body = performParsingFunctionBody();
</del><span class="cx">     
</span><ins>+    functionInfo.body = parseFunctionBody(context, startLocation, startColumn, functionKeywordStart, functionNameStart, parametersStart, constructorKind, functionBodyType, functionInfo.parameterCount, mode);
+    
</ins><span class="cx">     restoreState(oldState);
</span><span class="cx">     failIfFalse(functionInfo.body, &quot;Cannot parse the body of this &quot;, stringForFunctionMode(mode));
</span><span class="cx">     context.setEndOffset(functionInfo.body, m_lexer-&gt;currentOffset());
</span><span class="cx">     if (functionScope-&gt;strictMode() &amp;&amp; functionInfo.name) {
</span><del>-        RELEASE_ASSERT(mode == SourceParseMode::NormalFunctionMode || mode == SourceParseMode::MethodMode || mode == SourceParseMode::ArrowFunctionMode || mode == SourceParseMode::GeneratorBodyMode || mode == SourceParseMode::GeneratorWrapperFunctionMode);
</del><ins>+        RELEASE_ASSERT(mode == SourceParseMode::NormalFunctionMode || mode == SourceParseMode::MethodMode || mode == SourceParseMode::ArrowFunctionMode || mode == SourceParseMode::GeneratorMode);
</ins><span class="cx">         semanticFailIfTrue(m_vm-&gt;propertyNames-&gt;arguments == *functionInfo.name, &quot;'&quot;, functionInfo.name-&gt;impl(), &quot;' is not a valid function name in strict mode&quot;);
</span><span class="cx">         semanticFailIfTrue(m_vm-&gt;propertyNames-&gt;eval == *functionInfo.name, &quot;'&quot;, functionInfo.name-&gt;impl(), &quot;' is not a valid function name in strict mode&quot;);
</span><span class="cx">     }
</span><span class="lines">@@ -2042,7 +1940,7 @@
</span><span class="cx">     SourceParseMode parseMode = SourceParseMode::NormalFunctionMode;
</span><span class="cx"> #if ENABLE(ES6_GENERATORS)
</span><span class="cx">     if (consume(TIMES))
</span><del>-        parseMode = SourceParseMode::GeneratorWrapperFunctionMode;
</del><ins>+        parseMode = SourceParseMode::GeneratorMode;
</ins><span class="cx"> #endif
</span><span class="cx">     failIfFalse((parseFunctionInfo(context, FunctionNeedsName, parseMode, true, ConstructorKind::None, SuperBinding::NotNeeded, functionKeywordStart, functionInfo, FunctionDefinitionType::Declaration)), &quot;Cannot parse this function&quot;);
</span><span class="cx">     failIfFalse(functionInfo.name, &quot;Function statements must have a name&quot;);
</span><span class="lines">@@ -2193,7 +2091,7 @@
</span><span class="cx">             SourceParseMode parseMode = SourceParseMode::MethodMode;
</span><span class="cx">             if (isGenerator) {
</span><span class="cx">                 isConstructor = false;
</span><del>-                parseMode = SourceParseMode::GeneratorWrapperFunctionMode;
</del><ins>+                parseMode = SourceParseMode::GeneratorMode;
</ins><span class="cx">                 semanticFailIfTrue(*ident == m_vm-&gt;propertyNames-&gt;prototype, &quot;Cannot declare a generator named 'prototype'&quot;);
</span><span class="cx">                 semanticFailIfTrue(*ident == m_vm-&gt;propertyNames-&gt;constructor, &quot;Cannot declare a generator named 'constructor'&quot;);
</span><span class="cx">             }
</span><span class="lines">@@ -2859,7 +2757,7 @@
</span><span class="cx">     SavePoint savePoint = createSavePoint();
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(ES6_GENERATORS)
</span><del>-    if (match(YIELD) &amp;&amp; !isYIELDMaskedAsIDENT(currentScope()-&gt;isGenerator()))
</del><ins>+    if (match(YIELD))
</ins><span class="cx">         return parseYieldExpression(context);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -2964,7 +2862,6 @@
</span><span class="cx">     failIfTrue(m_functionParsePhase == FunctionParsePhase::Parameters, &quot;Cannot use yield expression within parameters&quot;);
</span><span class="cx"> 
</span><span class="cx">     JSTokenLocation location(tokenLocation());
</span><del>-    JSTextPosition divotStart = tokenStartPosition();
</del><span class="cx">     ASSERT(match(YIELD));
</span><span class="cx">     SavePoint savePoint = createSavePoint();
</span><span class="cx">     next();
</span><span class="lines">@@ -2972,14 +2869,13 @@
</span><span class="cx">         return context.createYield(location);
</span><span class="cx"> 
</span><span class="cx">     bool delegate = consume(TIMES);
</span><del>-    JSTextPosition argumentStart = tokenStartPosition();
</del><span class="cx">     TreeExpression argument = parseAssignmentExpression(context);
</span><span class="cx">     if (!argument) {
</span><span class="cx">         restoreSavePoint(savePoint);
</span><span class="cx">         next();
</span><span class="cx">         return context.createYield(location);
</span><span class="cx">     }
</span><del>-    return context.createYield(location, argument, delegate, divotStart, argumentStart, lastTokenEndPosition());
</del><ins>+    return context.createYield(location, argument, delegate);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> template &lt;typename LexerType&gt;
</span><span class="lines">@@ -3171,7 +3067,7 @@
</span><span class="cx">     JSTokenLocation methodLocation(tokenLocation());
</span><span class="cx">     unsigned methodStart = tokenStart();
</span><span class="cx">     ParserFunctionInfo&lt;TreeBuilder&gt; methodInfo;
</span><del>-    SourceParseMode parseMode = isGenerator ? SourceParseMode::GeneratorWrapperFunctionMode : SourceParseMode::MethodMode;
</del><ins>+    SourceParseMode parseMode = isGenerator ? SourceParseMode::GeneratorMode : SourceParseMode::MethodMode;
</ins><span class="cx">     failIfFalse((parseFunctionInfo(context, FunctionNoRequirements, parseMode, false, ConstructorKind::None, SuperBinding::NotNeeded, methodStart, methodInfo, FunctionDefinitionType::Method)), &quot;Cannot parse this method&quot;);
</span><span class="cx">     methodInfo.name = methodName;
</span><span class="cx">     return context.createFunctionExpr(methodLocation, methodInfo);
</span><span class="lines">@@ -3424,7 +3320,7 @@
</span><span class="cx">     SourceParseMode parseMode = SourceParseMode::NormalFunctionMode;
</span><span class="cx"> #if ENABLE(ES6_GENERATORS)
</span><span class="cx">     if (consume(TIMES))
</span><del>-        parseMode = SourceParseMode::GeneratorWrapperFunctionMode;
</del><ins>+        parseMode = SourceParseMode::GeneratorMode;
</ins><span class="cx"> #endif
</span><span class="cx">     failIfFalse((parseFunctionInfo(context, FunctionNoRequirements, parseMode, false, ConstructorKind::None, SuperBinding::NotNeeded, functionKeywordStart, functionInfo, FunctionDefinitionType::Expression)), &quot;Cannot parse function expression&quot;);
</span><span class="cx">     return context.createFunctionExpr(location, functionInfo);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Parser.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Parser.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/parser/Parser.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -172,7 +172,6 @@
</span><span class="cx">         , m_isLexicalScope(false)
</span><span class="cx">         , m_isFunctionBoundary(false)
</span><span class="cx">         , m_isValidStrictMode(true)
</span><del>-        , m_hasArguments(false)
</del><span class="cx">         , m_loopDepth(0)
</span><span class="cx">         , m_switchDepth(0)
</span><span class="cx">     {
</span><span class="lines">@@ -193,7 +192,6 @@
</span><span class="cx">         , m_isLexicalScope(rhs.m_isLexicalScope)
</span><span class="cx">         , m_isFunctionBoundary(rhs.m_isFunctionBoundary)
</span><span class="cx">         , m_isValidStrictMode(rhs.m_isValidStrictMode)
</span><del>-        , m_hasArguments(rhs.m_hasArguments)
</del><span class="cx">         , m_loopDepth(rhs.m_loopDepth)
</span><span class="cx">         , m_switchDepth(rhs.m_switchDepth)
</span><span class="cx">         , m_moduleScopeData(rhs.m_moduleScopeData)
</span><span class="lines">@@ -244,14 +242,10 @@
</span><span class="cx">     void setSourceParseMode(SourceParseMode mode)
</span><span class="cx">     {
</span><span class="cx">         switch (mode) {
</span><del>-        case SourceParseMode::GeneratorBodyMode:
</del><ins>+        case SourceParseMode::GeneratorMode:
</ins><span class="cx">             setIsGenerator();
</span><span class="cx">             break;
</span><span class="cx"> 
</span><del>-        case SourceParseMode::GeneratorWrapperFunctionMode:
-            setIsGeneratorFunction();
-            break;
-
</del><span class="cx">         case SourceParseMode::NormalFunctionMode:
</span><span class="cx">         case SourceParseMode::GetterMode:
</span><span class="cx">         case SourceParseMode::SetterMode:
</span><span class="lines">@@ -274,8 +268,6 @@
</span><span class="cx">     bool isFunctionBoundary() const { return m_isFunctionBoundary; }
</span><span class="cx">     bool isGenerator() const { return m_isGenerator; }
</span><span class="cx"> 
</span><del>-    bool hasArguments() const { return m_hasArguments; }
-
</del><span class="cx">     void setIsLexicalScope() 
</span><span class="cx">     { 
</span><span class="cx">         m_isLexicalScope = true;
</span><span class="lines">@@ -458,20 +450,16 @@
</span><span class="cx">             m_usesEval = true;
</span><span class="cx"> 
</span><span class="cx">         {
</span><del>-            for (const RefPtr&lt;UniquedStringImpl&gt;&amp; impl : nestedScope-&gt;m_usedVariables) {
-                if (nestedScope-&gt;m_declaredVariables.contains(impl) || nestedScope-&gt;m_lexicalVariables.contains(impl))
</del><ins>+            IdentifierSet::iterator end = nestedScope-&gt;m_usedVariables.end();
+            for (IdentifierSet::iterator ptr = nestedScope-&gt;m_usedVariables.begin(); ptr != end; ++ptr) {
+                if (nestedScope-&gt;m_declaredVariables.contains(*ptr) || nestedScope-&gt;m_lexicalVariables.contains(*ptr))
</ins><span class="cx">                     continue;
</span><del>-
-                // &quot;arguments&quot; reference should be resolved at function boudary.
-                if (nestedScope-&gt;isFunctionBoundary() &amp;&amp; nestedScope-&gt;hasArguments() &amp;&amp; impl == m_vm-&gt;propertyNames-&gt;arguments.impl())
-                    continue;
-
-                m_usedVariables.add(impl);
</del><ins>+                m_usedVariables.add(*ptr);
</ins><span class="cx">                 // We don't want a declared variable that is used in an inner scope to be thought of as captured if
</span><span class="cx">                 // that inner scope is both a lexical scope and not a function. Only inner functions and &quot;catch&quot; 
</span><span class="cx">                 // statements can cause variables to be captured.
</span><span class="cx">                 if (shouldTrackClosedVariables &amp;&amp; (nestedScope-&gt;m_isFunctionBoundary || !nestedScope-&gt;m_isLexicalScope))
</span><del>-                    m_closedVariableCandidates.add(impl);
</del><ins>+                    m_closedVariableCandidates.add(*ptr);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         // Propagate closed variable candidates downwards within the same function.
</span><span class="lines">@@ -562,22 +550,14 @@
</span><span class="cx">     {
</span><span class="cx">         m_isFunction = true;
</span><span class="cx">         m_isFunctionBoundary = true;
</span><del>-        m_hasArguments = true;
</del><span class="cx">         setIsLexicalScope();
</span><span class="cx">         m_isGenerator = false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    void setIsGeneratorFunction()
-    {
-        setIsFunction();
-        m_isGenerator = true;
-    }
-
</del><span class="cx">     void setIsGenerator()
</span><span class="cx">     {
</span><span class="cx">         setIsFunction();
</span><span class="cx">         m_isGenerator = true;
</span><del>-        m_hasArguments = false;
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     void setIsModule()
</span><span class="lines">@@ -599,7 +579,6 @@
</span><span class="cx">     bool m_isLexicalScope : 1;
</span><span class="cx">     bool m_isFunctionBoundary : 1;
</span><span class="cx">     bool m_isValidStrictMode : 1;
</span><del>-    bool m_hasArguments : 1;
</del><span class="cx">     int m_loopDepth;
</span><span class="cx">     int m_switchDepth;
</span><span class="cx"> 
</span><span class="lines">@@ -648,7 +627,7 @@
</span><span class="cx"> 
</span><span class="cx"> public:
</span><span class="cx">     Parser(
</span><del>-        VM*, const SourceCode&amp;, JSParserBuiltinMode, JSParserStrictMode, SourceParseMode, SuperBinding,
</del><ins>+        VM*, const SourceCode&amp;, JSParserBuiltinMode, JSParserStrictMode, SourceParseMode,
</ins><span class="cx">         ConstructorKind defaultConstructorKind = ConstructorKind::None, ThisTDZMode = ThisTDZMode::CheckIfNeeded);
</span><span class="cx">     ~Parser();
</span><span class="cx"> 
</span><span class="lines">@@ -1178,7 +1157,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeSourceElements parseSourceElements(TreeBuilder&amp;, SourceElementsMode);
</span><del>-    template &lt;class TreeBuilder&gt; TreeSourceElements parseGeneratorFunctionSourceElements(TreeBuilder&amp;, SourceElementsMode);
</del><span class="cx">     template &lt;class TreeBuilder&gt; TreeStatement parseStatementListItem(TreeBuilder&amp;, const Identifier*&amp; directive, unsigned* directiveLiteralLength);
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeStatement parseStatement(TreeBuilder&amp;, const Identifier*&amp; directive, unsigned* directiveLiteralLength = 0);
</span><span class="cx">     enum class ExportType { Exported, NotExported };
</span><span class="lines">@@ -1221,7 +1199,7 @@
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeProperty parseProperty(TreeBuilder&amp;, bool strict);
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeExpression parsePropertyMethod(TreeBuilder&amp; context, const Identifier* methodName, bool isGenerator);
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeProperty parseGetterSetter(TreeBuilder&amp;, bool strict, PropertyNode::Type, unsigned getterOrSetterStartOffset, ConstructorKind = ConstructorKind::None, SuperBinding = SuperBinding::NotNeeded);
</span><del>-    template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeFunctionBody parseFunctionBody(TreeBuilder&amp;, const JSTokenLocation&amp;, int, int functionKeywordStart, int functionNameStart, int parametersStart, ConstructorKind, SuperBinding, FunctionBodyType, unsigned, SourceParseMode);
</del><ins>+    template &lt;class TreeBuilder&gt; ALWAYS_INLINE TreeFunctionBody parseFunctionBody(TreeBuilder&amp;, const JSTokenLocation&amp;, int, int functionKeywordStart, int functionNameStart, int parametersStart, ConstructorKind, FunctionBodyType, unsigned, SourceParseMode);
</ins><span class="cx">     template &lt;class TreeBuilder&gt; ALWAYS_INLINE bool parseFormalParameters(TreeBuilder&amp;, TreeFormalParameterList, unsigned&amp;);
</span><span class="cx">     enum VarDeclarationListContext { ForLoopContext, VarDeclarationContext };
</span><span class="cx">     template &lt;class TreeBuilder&gt; TreeExpression parseVariableDeclarationList(TreeBuilder&amp;, int&amp; declarations, TreeDestructuringPattern&amp; lastPattern, TreeExpression&amp; lastInitializer, JSTextPosition&amp; identStart, JSTextPosition&amp; initStart, JSTextPosition&amp; initEnd, VarDeclarationListContext, DeclarationType, ExportType, bool&amp; forLoopConstDoesNotHaveInitializer);
</span><span class="lines">@@ -1246,7 +1224,6 @@
</span><span class="cx">     template &lt;class TreeBuilder&gt; NEVER_INLINE bool parseFunctionInfo(TreeBuilder&amp;, FunctionRequirements, SourceParseMode, bool nameIsInContainingScope, ConstructorKind, SuperBinding, int functionKeywordStart, ParserFunctionInfo&lt;TreeBuilder&gt;&amp;, FunctionDefinitionType);
</span><span class="cx">     
</span><span class="cx">     template &lt;class TreeBuilder&gt; NEVER_INLINE int parseFunctionParameters(TreeBuilder&amp;, SourceParseMode, ParserFunctionInfo&lt;TreeBuilder&gt;&amp;);
</span><del>-    template &lt;class TreeBuilder&gt; NEVER_INLINE typename TreeBuilder::FormalParameterList createGeneratorParameters(TreeBuilder&amp;);
</del><span class="cx"> 
</span><span class="cx">     template &lt;class TreeBuilder&gt; NEVER_INLINE TreeClassExpression parseClass(TreeBuilder&amp;, FunctionRequirements, ParserClassInfo&lt;TreeBuilder&gt;&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -1372,7 +1349,6 @@
</span><span class="cx">     RefPtr&lt;SourceProviderCache&gt; m_functionCache;
</span><span class="cx">     SourceElements* m_sourceElements;
</span><span class="cx">     bool m_parsingBuiltin;
</span><del>-    SuperBinding m_superBinding;
</del><span class="cx">     ConstructorKind m_defaultConstructorKind;
</span><span class="cx">     ThisTDZMode m_thisTDZMode;
</span><span class="cx">     VariableEnvironment m_varDeclarations;
</span><span class="lines">@@ -1496,7 +1472,7 @@
</span><span class="cx"> std::unique_ptr&lt;ParsedNode&gt; parse(
</span><span class="cx">     VM* vm, const SourceCode&amp; source,
</span><span class="cx">     const Identifier&amp; name, JSParserBuiltinMode builtinMode,
</span><del>-    JSParserStrictMode strictMode, SourceParseMode parseMode, SuperBinding superBinding,
</del><ins>+    JSParserStrictMode strictMode, SourceParseMode parseMode,
</ins><span class="cx">     ParserError&amp; error, JSTextPosition* positionBeforeLastNewline = nullptr,
</span><span class="cx">     ConstructorKind defaultConstructorKind = ConstructorKind::None,
</span><span class="cx">     ThisTDZMode thisTDZMode = ThisTDZMode::CheckIfNeeded)
</span><span class="lines">@@ -1505,7 +1481,7 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(!source.provider()-&gt;source().isNull());
</span><span class="cx">     if (source.provider()-&gt;source().is8Bit()) {
</span><del>-        Parser&lt;Lexer&lt;LChar&gt;&gt; parser(vm, source, builtinMode, strictMode, parseMode, superBinding, defaultConstructorKind, thisTDZMode);
</del><ins>+        Parser&lt;Lexer&lt;LChar&gt;&gt; parser(vm, source, builtinMode, strictMode, parseMode, defaultConstructorKind, thisTDZMode);
</ins><span class="cx">         std::unique_ptr&lt;ParsedNode&gt; result = parser.parse&lt;ParsedNode&gt;(error, name, parseMode);
</span><span class="cx">         if (positionBeforeLastNewline)
</span><span class="cx">             *positionBeforeLastNewline = parser.positionBeforeLastNewline();
</span><span class="lines">@@ -1518,7 +1494,7 @@
</span><span class="cx">         return result;
</span><span class="cx">     }
</span><span class="cx">     ASSERT_WITH_MESSAGE(defaultConstructorKind == ConstructorKind::None, &quot;BuiltinExecutables::createDefaultConstructor should always use a 8-bit string&quot;);
</span><del>-    Parser&lt;Lexer&lt;UChar&gt;&gt; parser(vm, source, builtinMode, strictMode, parseMode, superBinding, defaultConstructorKind, thisTDZMode);
</del><ins>+    Parser&lt;Lexer&lt;UChar&gt;&gt; parser(vm, source, builtinMode, strictMode, parseMode, defaultConstructorKind, thisTDZMode);
</ins><span class="cx">     std::unique_ptr&lt;ParsedNode&gt; result = parser.parse&lt;ParsedNode&gt;(error, name, parseMode);
</span><span class="cx">     if (positionBeforeLastNewline)
</span><span class="cx">         *positionBeforeLastNewline = parser.positionBeforeLastNewline();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserParserModesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/ParserModes.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/ParserModes.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/parser/ParserModes.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -46,8 +46,7 @@
</span><span class="cx"> 
</span><span class="cx"> enum class SourceParseMode {
</span><span class="cx">     NormalFunctionMode,
</span><del>-    GeneratorBodyMode,
-    GeneratorWrapperFunctionMode,
</del><ins>+    GeneratorMode,
</ins><span class="cx">     GetterMode,
</span><span class="cx">     SetterMode,
</span><span class="cx">     MethodMode,
</span><span class="lines">@@ -61,8 +60,7 @@
</span><span class="cx"> {
</span><span class="cx">     switch (parseMode) {
</span><span class="cx">     case SourceParseMode::NormalFunctionMode:
</span><del>-    case SourceParseMode::GeneratorBodyMode:
-    case SourceParseMode::GeneratorWrapperFunctionMode:
</del><ins>+    case SourceParseMode::GeneratorMode:
</ins><span class="cx">     case SourceParseMode::GetterMode:
</span><span class="cx">     case SourceParseMode::SetterMode:
</span><span class="cx">     case SourceParseMode::MethodMode:
</span><span class="lines">@@ -86,8 +84,7 @@
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     case SourceParseMode::NormalFunctionMode:
</span><del>-    case SourceParseMode::GeneratorBodyMode:
-    case SourceParseMode::GeneratorWrapperFunctionMode:
</del><ins>+    case SourceParseMode::GeneratorMode:
</ins><span class="cx">     case SourceParseMode::GetterMode:
</span><span class="cx">     case SourceParseMode::SetterMode:
</span><span class="cx">     case SourceParseMode::MethodMode:
</span><span class="lines">@@ -106,8 +103,7 @@
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     case SourceParseMode::NormalFunctionMode:
</span><del>-    case SourceParseMode::GeneratorBodyMode:
-    case SourceParseMode::GeneratorWrapperFunctionMode:
</del><ins>+    case SourceParseMode::GeneratorMode:
</ins><span class="cx">     case SourceParseMode::GetterMode:
</span><span class="cx">     case SourceParseMode::SetterMode:
</span><span class="cx">     case SourceParseMode::MethodMode:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserSourceCodeKeyh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/parser/SourceCodeKey.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/SourceCodeKey.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/parser/SourceCodeKey.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,98 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Apple Inc. All Rights Reserved.
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef SourceCodeKey_h
-#define SourceCodeKey_h
-
-#include &quot;ParserModes.h&quot;
-#include &quot;SourceCode.h&quot;
-#include &lt;wtf/HashTraits.h&gt;
-
-namespace JSC {
-
-class SourceCodeKey {
-public:
-    enum CodeType { EvalType, ProgramType, FunctionType, ModuleType };
-
-    SourceCodeKey()
-    {
-    }
-
-    SourceCodeKey(const SourceCode&amp; sourceCode, const String&amp; name, CodeType codeType, JSParserBuiltinMode builtinMode, JSParserStrictMode strictMode, ThisTDZMode thisTDZMode = ThisTDZMode::CheckIfNeeded)
-        : m_sourceCode(sourceCode)
-        , m_name(name)
-        , m_flags((static_cast&lt;unsigned&gt;(codeType) &lt;&lt; 3) | (static_cast&lt;unsigned&gt;(builtinMode) &lt;&lt; 2) | (static_cast&lt;unsigned&gt;(strictMode) &lt;&lt; 1) | static_cast&lt;unsigned&gt;(thisTDZMode))
-        , m_hash(string().impl()-&gt;hash())
-    {
-    }
-
-    SourceCodeKey(WTF::HashTableDeletedValueType)
-        : m_sourceCode(WTF::HashTableDeletedValue)
-    {
-    }
-
-    bool isHashTableDeletedValue() const { return m_sourceCode.isHashTableDeletedValue(); }
-
-    unsigned hash() const { return m_hash; }
-
-    size_t length() const { return m_sourceCode.length(); }
-
-    bool isNull() const { return m_sourceCode.isNull(); }
-
-    // To save memory, we compute our string on demand. It's expected that source
-    // providers cache their strings to make this efficient.
-    String string() const { return m_sourceCode.toString(); }
-
-    bool operator==(const SourceCodeKey&amp; other) const
-    {
-        return m_hash == other.m_hash
-            &amp;&amp; length() == other.length()
-            &amp;&amp; m_flags == other.m_flags
-            &amp;&amp; m_name == other.m_name
-            &amp;&amp; string() == other.string();
-    }
-
-private:
-    SourceCode m_sourceCode;
-    String m_name;
-    unsigned m_flags;
-    unsigned m_hash;
-};
-
-struct SourceCodeKeyHash {
-    static unsigned hash(const SourceCodeKey&amp; key) { return key.hash(); }
-    static bool equal(const SourceCodeKey&amp; a, const SourceCodeKey&amp; b) { return a == b; }
-    static const bool safeToCompareToEmptyOrDeleted = false;
-};
-
-struct SourceCodeKeyHashTraits : SimpleClassHashTraits&lt;SourceCodeKey&gt; {
-    static const bool hasIsEmptyValueFunction = true;
-    static bool isEmptyValue(const SourceCodeKey&amp; sourceCodeKey) { return sourceCodeKey.isNull(); }
-};
-
-}
-
-#endif // SourceCodeKey_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserSyntaxCheckerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/SyntaxChecker.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/SyntaxChecker.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/parser/SyntaxChecker.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -180,10 +180,10 @@
</span><span class="cx">     ExpressionType createEmptyVarExpression(const JSTokenLocation&amp;, const Identifier&amp;) { return AssignmentExpr; }
</span><span class="cx">     ExpressionType createEmptyLetExpression(const JSTokenLocation&amp;, const Identifier&amp;) { return AssignmentExpr; }
</span><span class="cx">     ExpressionType createYield(const JSTokenLocation&amp;) { return YieldExpr; }
</span><del>-    ExpressionType createYield(const JSTokenLocation&amp;, ExpressionType, bool, int, int, int) { return YieldExpr; }
</del><ins>+    ExpressionType createYield(const JSTokenLocation&amp;, ExpressionType, bool) { return YieldExpr; }
</ins><span class="cx">     ClassExpression createClassExpr(const JSTokenLocation&amp;, const Identifier&amp;, VariableEnvironment&amp;, ExpressionType, ExpressionType, PropertyList, PropertyList) { return ClassExpr; }
</span><span class="cx">     ExpressionType createFunctionExpr(const JSTokenLocation&amp;, const ParserFunctionInfo&lt;SyntaxChecker&gt;&amp;) { return FunctionExpr; }
</span><del>-    int createFunctionMetadata(const JSTokenLocation&amp;, const JSTokenLocation&amp;, int, int, bool, int, int, int, ConstructorKind, SuperBinding, unsigned, SourceParseMode, bool) { return FunctionBodyResult; }
</del><ins>+    int createFunctionMetadata(const JSTokenLocation&amp;, const JSTokenLocation&amp;, int, int, bool, int, int, int, ConstructorKind, unsigned, SourceParseMode, bool, bool) { return FunctionBodyResult; }
</ins><span class="cx">     ExpressionType createArrowFunctionExpr(const JSTokenLocation&amp;, const ParserFunctionInfo&lt;SyntaxChecker&gt;&amp;) { return FunctionExpr; }
</span><span class="cx">     void setFunctionNameStart(int, int) { }
</span><span class="cx">     int createArguments() { return ArgumentsResult; }
</span><span class="lines">@@ -389,8 +389,6 @@
</span><span class="cx">     int endOffset(int) { return 0; }
</span><span class="cx">     void setStartOffset(int, int) { }
</span><span class="cx"> 
</span><del>-    void propagateArgumentsUse() { }
-
</del><span class="cx"> private:
</span><span class="cx">     int m_topBinaryExpr;
</span><span class="cx">     int m_topUnaryToken;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCodeCachecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CodeCache.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CodeCache.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/CodeCache.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx">     typedef typename CacheTypes&lt;UnlinkedCodeBlockType&gt;::RootNode RootNode;
</span><span class="cx">     std::unique_ptr&lt;RootNode&gt; rootNode = parse&lt;RootNode&gt;(
</span><span class="cx">         &amp;vm, source, Identifier(), builtinMode, strictMode,
</span><del>-        CacheTypes&lt;UnlinkedCodeBlockType&gt;::parseMode, SuperBinding::NotNeeded, error, nullptr, ConstructorKind::None, thisTDZMode);
</del><ins>+        CacheTypes&lt;UnlinkedCodeBlockType&gt;::parseMode, error, nullptr, ConstructorKind::None, thisTDZMode);
</ins><span class="cx">     if (!rootNode)
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx">     JSTextPosition positionBeforeLastNewline;
</span><span class="cx">     std::unique_ptr&lt;ProgramNode&gt; program = parse&lt;ProgramNode&gt;(
</span><span class="cx">         &amp;vm, source, Identifier(), JSParserBuiltinMode::NotBuiltin,
</span><del>-        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode, SuperBinding::NotNeeded,
</del><ins>+        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode,
</ins><span class="cx">         error, &amp;positionBeforeLastNewline);
</span><span class="cx">     if (!program) {
</span><span class="cx">         RELEASE_ASSERT(error.isValid());
</span><span class="lines">@@ -188,7 +188,7 @@
</span><span class="cx">     metadata-&gt;setEndPosition(positionBeforeLastNewline);
</span><span class="cx">     // The Function constructor only has access to global variables, so no variables will be under TDZ.
</span><span class="cx">     VariableEnvironment emptyTDZVariables;
</span><del>-    UnlinkedFunctionExecutable* functionExecutable = UnlinkedFunctionExecutable::create(&amp;vm, source, metadata, UnlinkedNormalFunction, ConstructAbility::CanConstruct, GeneratorThisMode::NonEmpty, emptyTDZVariables);
</del><ins>+    UnlinkedFunctionExecutable* functionExecutable = UnlinkedFunctionExecutable::create(&amp;vm, source, metadata, UnlinkedNormalFunction, ConstructAbility::CanConstruct, emptyTDZVariables);
</ins><span class="cx">     functionExecutable-&gt;m_nameValue.set(vm, functionExecutable, jsString(&amp;vm, name.string()));
</span><span class="cx"> 
</span><span class="cx">     m_sourceCode.addCache(key, SourceCodeValue(vm, functionExecutable, m_sourceCode.age()));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCodeCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CodeCache.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CodeCache.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/CodeCache.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #include &quot;CodeSpecializationKind.h&quot;
</span><span class="cx"> #include &quot;ParserModes.h&quot;
</span><span class="cx"> #include &quot;SourceCode.h&quot;
</span><del>-#include &quot;SourceCodeKey.h&quot;
</del><span class="cx"> #include &quot;Strong.h&quot;
</span><span class="cx"> #include &quot;VariableEnvironment.h&quot;
</span><span class="cx"> #include &lt;wtf/CurrentTime.h&gt;
</span><span class="lines">@@ -57,6 +56,71 @@
</span><span class="cx"> class SourceCode;
</span><span class="cx"> class SourceProvider;
</span><span class="cx"> 
</span><ins>+class SourceCodeKey {
+public:
+    enum CodeType { EvalType, ProgramType, FunctionType, ModuleType };
+
+    SourceCodeKey()
+    {
+    }
+
+    SourceCodeKey(const SourceCode&amp; sourceCode, const String&amp; name, CodeType codeType, JSParserBuiltinMode builtinMode,
+        JSParserStrictMode strictMode, ThisTDZMode thisTDZMode = ThisTDZMode::CheckIfNeeded)
+        : m_sourceCode(sourceCode)
+        , m_name(name)
+        , m_flags(
+            (static_cast&lt;unsigned&gt;(codeType) &lt;&lt; 3)
+            | (static_cast&lt;unsigned&gt;(builtinMode) &lt;&lt; 2)
+            | (static_cast&lt;unsigned&gt;(strictMode) &lt;&lt; 1)
+            | static_cast&lt;unsigned&gt;(thisTDZMode))
+        , m_hash(string().impl()-&gt;hash())
+    {
+    }
+
+    SourceCodeKey(WTF::HashTableDeletedValueType)
+        : m_sourceCode(WTF::HashTableDeletedValue)
+    {
+    }
+
+    bool isHashTableDeletedValue() const { return m_sourceCode.isHashTableDeletedValue(); }
+
+    unsigned hash() const { return m_hash; }
+
+    size_t length() const { return m_sourceCode.length(); }
+
+    bool isNull() const { return m_sourceCode.isNull(); }
+
+    // To save memory, we compute our string on demand. It's expected that source
+    // providers cache their strings to make this efficient.
+    String string() const { return m_sourceCode.toString(); }
+
+    bool operator==(const SourceCodeKey&amp; other) const
+    {
+        return m_hash == other.m_hash
+            &amp;&amp; length() == other.length()
+            &amp;&amp; m_flags == other.m_flags
+            &amp;&amp; m_name == other.m_name
+            &amp;&amp; string() == other.string();
+    }
+
+private:
+    SourceCode m_sourceCode;
+    String m_name;
+    unsigned m_flags;
+    unsigned m_hash;
+};
+
+struct SourceCodeKeyHash {
+    static unsigned hash(const SourceCodeKey&amp; key) { return key.hash(); }
+    static bool equal(const SourceCodeKey&amp; a, const SourceCodeKey&amp; b) { return a == b; }
+    static const bool safeToCompareToEmptyOrDeleted = false;
+};
+
+struct SourceCodeKeyHashTraits : SimpleClassHashTraits&lt;SourceCodeKey&gt; {
+    static const bool hasIsEmptyValueFunction = true;
+    static bool isEmptyValue(const SourceCodeKey&amp; sourceCodeKey) { return sourceCodeKey.isNull(); }
+};
+
</ins><span class="cx"> struct SourceCodeValue {
</span><span class="cx">     SourceCodeValue()
</span><span class="cx">     {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCommonIdentifiersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CommonIdentifiers.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CommonIdentifiers.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/CommonIdentifiers.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -39,7 +39,6 @@
</span><span class="cx">     macro(Error) \
</span><span class="cx">     macro(EvalError) \
</span><span class="cx">     macro(Function) \
</span><del>-    macro(GeneratorFunction) \
</del><span class="cx">     macro(Infinity) \
</span><span class="cx">     macro(Intl) \
</span><span class="cx">     macro(JSON) \
</span><span class="lines">@@ -331,13 +330,6 @@
</span><span class="cx">     macro(Uint32Array) \
</span><span class="cx">     macro(Float32Array) \
</span><span class="cx">     macro(Float64Array) \
</span><del>-    macro(generator) \
-    macro(generatorNext) \
-    macro(generatorState) \
-    macro(generatorFrame) \
-    macro(generatorValue) \
-    macro(generatorThis) \
-    macro(generatorResumeMode) \
</del><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCommonSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include &quot;Error.h&quot;
</span><span class="cx"> #include &quot;ErrorHandlingScope.h&quot;
</span><span class="cx"> #include &quot;ExceptionFuzz.h&quot;
</span><del>-#include &quot;GeneratorFrame.h&quot;
</del><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;HostCallReturnValue.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="lines">@@ -645,38 +644,6 @@
</span><span class="cx">     END();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-SLOW_PATH_DECL(slow_path_save)
-{
-    // Only save variables and temporary registers. The scope registers are included in them.
-    // But parameters are not included. Because the generator implementation replaces the values of parameters on each generator.next() call.
-    BEGIN();
-    JSValue generator = OP(1).jsValue();
-    GeneratorFrame* frame = nullptr;
-    JSValue value = generator.get(exec, exec-&gt;propertyNames().generatorFramePrivateName);
-    if (!value.isNull())
-        frame = jsCast&lt;GeneratorFrame*&gt;(value);
-    else {
-        // FIXME: Once JSGenerator specialized object is introduced, this GeneratorFrame should be embeded into it to avoid allocations.
-        // https://bugs.webkit.org/show_bug.cgi?id=151545
-        frame = GeneratorFrame::create(exec-&gt;vm(),  exec-&gt;codeBlock()-&gt;numCalleeLocals());
-        PutPropertySlot slot(generator, true, PutPropertySlot::PutById);
-        asObject(generator)-&gt;methodTable(exec-&gt;vm())-&gt;put(asObject(generator), exec, exec-&gt;propertyNames().generatorFramePrivateName, frame, slot);
-    }
-    unsigned liveCalleeLocalsIndex = pc[2].u.unsignedValue;
-    frame-&gt;save(exec, exec-&gt;codeBlock()-&gt;liveCalleeLocalsAtYield(liveCalleeLocalsIndex));
-    END();
-}
-
-SLOW_PATH_DECL(slow_path_resume)
-{
-    BEGIN();
-    JSValue generator = OP(1).jsValue();
-    GeneratorFrame* frame = jsCast&lt;GeneratorFrame*&gt;(generator.get(exec, exec-&gt;propertyNames().generatorFramePrivateName));
-    unsigned liveCalleeLocalsIndex = pc[2].u.unsignedValue;
-    frame-&gt;resume(exec, exec-&gt;codeBlock()-&gt;liveCalleeLocalsAtYield(liveCalleeLocalsIndex));
-    END();
-}
-
</del><span class="cx"> SLOW_PATH_DECL(slow_path_create_lexical_environment)
</span><span class="cx"> {
</span><span class="cx">     BEGIN();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCommonSlowPathsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -290,8 +290,6 @@
</span><span class="cx"> SLOW_PATH_HIDDEN_DECL(slow_path_to_index_string);
</span><span class="cx"> SLOW_PATH_HIDDEN_DECL(slow_path_profile_type_clear_log);
</span><span class="cx"> SLOW_PATH_HIDDEN_DECL(slow_path_assert);
</span><del>-SLOW_PATH_HIDDEN_DECL(slow_path_save);
-SLOW_PATH_HIDDEN_DECL(slow_path_resume);
</del><span class="cx"> SLOW_PATH_HIDDEN_DECL(slow_path_create_lexical_environment);
</span><span class="cx"> SLOW_PATH_HIDDEN_DECL(slow_path_push_with_scope);
</span><span class="cx"> SLOW_PATH_HIDDEN_DECL(slow_path_resolve_scope);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCompletioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Completion.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Completion.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/Completion.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">     RELEASE_ASSERT(vm.atomicStringTable() == wtfThreadData().atomicStringTable());
</span><span class="cx">     return !!parse&lt;ProgramNode&gt;(
</span><span class="cx">         &amp;vm, source, Identifier(), JSParserBuiltinMode::NotBuiltin,
</span><del>-        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode, SuperBinding::NotNeeded, error);
</del><ins>+        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode, error);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool checkModuleSyntax(ExecState* exec, const SourceCode&amp; source, ParserError&amp; error)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx">     RELEASE_ASSERT(vm.atomicStringTable() == wtfThreadData().atomicStringTable());
</span><span class="cx">     std::unique_ptr&lt;ModuleProgramNode&gt; moduleProgramNode = parse&lt;ModuleProgramNode&gt;(
</span><span class="cx">         &amp;vm, source, Identifier(), JSParserBuiltinMode::NotBuiltin,
</span><del>-        JSParserStrictMode::Strict, SourceParseMode::ModuleAnalyzeMode, SuperBinding::NotNeeded, error);
</del><ins>+        JSParserStrictMode::Strict, SourceParseMode::ModuleAnalyzeMode, error);
</ins><span class="cx">     if (!moduleProgramNode)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Executable.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Executable.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/Executable.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -299,7 +299,7 @@
</span><span class="cx">     UnlinkedFunctionCodeBlock* unlinkedCodeBlock = 
</span><span class="cx">         executable-&gt;m_unlinkedExecutable-&gt;unlinkedCodeBlockFor(
</span><span class="cx">             *vm, executable-&gt;m_source, kind, debuggerMode, profilerMode, error, 
</span><del>-            executable-&gt;parseMode());
</del><ins>+            executable-&gt;isArrowFunction());
</ins><span class="cx">     recordParse(
</span><span class="cx">         executable-&gt;m_unlinkedExecutable-&gt;features(), 
</span><span class="cx">         executable-&gt;m_unlinkedExecutable-&gt;hasCapturedVariables(), firstLine(), 
</span><span class="lines">@@ -556,7 +556,7 @@
</span><span class="cx">     JSGlobalObject* lexicalGlobalObject = exec-&gt;lexicalGlobalObject();
</span><span class="cx">     std::unique_ptr&lt;ProgramNode&gt; programNode = parse&lt;ProgramNode&gt;(
</span><span class="cx">         vm, m_source, Identifier(), JSParserBuiltinMode::NotBuiltin, 
</span><del>-        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode, SuperBinding::NotNeeded, error);
</del><ins>+        JSParserStrictMode::NotStrict, SourceParseMode::ProgramMode, error);
</ins><span class="cx">     if (programNode)
</span><span class="cx">         return 0;
</span><span class="cx">     ASSERT(error.isValid());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Executable.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Executable.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/Executable.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -448,7 +448,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, GeneratorThisMode::NonEmpty, SuperBinding::NotNeeded, SourceParseMode::ProgramMode); }
</del><ins>+    ExecutableInfo executableInfo() const { return ExecutableInfo(needsActivation(), usesEval(), isStrictMode(), false, false, ConstructorKind::None, false); }
</ins><span class="cx"> 
</span><span class="cx">     unsigned numVariables() { return m_unlinkedEvalCodeBlock-&gt;numVariables(); }
</span><span class="cx">     unsigned numberOfFunctionDecls() { return m_unlinkedEvalCodeBlock-&gt;numberOfFunctionDecls(); }
</span><span class="lines">@@ -501,7 +501,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, GeneratorThisMode::NonEmpty, SuperBinding::NotNeeded, SourceParseMode::ProgramMode); }
</del><ins>+    ExecutableInfo executableInfo() const { return ExecutableInfo(needsActivation(), usesEval(), isStrictMode(), false, false, ConstructorKind::None, false); }
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     friend class ExecutableBase;
</span><span class="lines">@@ -542,7 +542,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, GeneratorThisMode::NonEmpty, SuperBinding::NotNeeded, SourceParseMode::ModuleEvaluateMode); }
</del><ins>+    ExecutableInfo executableInfo() const { return ExecutableInfo(needsActivation(), usesEval(), isStrictMode(), false, false, ConstructorKind::None, false); }
</ins><span class="cx">     UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCodeBlock() { return m_unlinkedModuleProgramCodeBlock.get(); }
</span><span class="cx"> 
</span><span class="cx">     SymbolTable* moduleEnvironmentSymbolTable() { return m_moduleEnvironmentSymbolTable.get(); }
</span><span class="lines">@@ -650,13 +650,12 @@
</span><span class="cx">     FunctionMode functionMode() { return m_unlinkedExecutable-&gt;functionMode(); }
</span><span class="cx">     bool isBuiltinFunction() const { return m_unlinkedExecutable-&gt;isBuiltinFunction(); }
</span><span class="cx">     ConstructAbility constructAbility() const { return m_unlinkedExecutable-&gt;constructAbility(); }
</span><ins>+    bool isArrowFunction() const { return m_unlinkedExecutable-&gt;isArrowFunction(); }
</ins><span class="cx">     bool isClassConstructorFunction() const { return m_unlinkedExecutable-&gt;isClassConstructorFunction(); }
</span><span class="cx">     const Identifier&amp; name() { return m_unlinkedExecutable-&gt;name(); }
</span><span class="cx">     const Identifier&amp; inferredName() { return m_unlinkedExecutable-&gt;inferredName(); }
</span><span class="cx">     JSString* nameValue() const { return m_unlinkedExecutable-&gt;nameValue(); }
</span><span class="cx">     size_t parameterCount() const { return m_unlinkedExecutable-&gt;parameterCount(); } // Excluding 'this'!
</span><del>-    SourceParseMode parseMode() const { return m_unlinkedExecutable-&gt;parseMode(); }
-    bool isArrowFunction() const { return parseMode() == SourceParseMode::ArrowFunctionMode; }
</del><span class="cx"> 
</span><span class="cx">     static void visitChildren(JSCell*, SlotVisitor&amp;);
</span><span class="cx">     static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -79,30 +79,28 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ECMA 15.3.2 The Function Constructor
</span><del>-JSObject* constructFunction(ExecState* exec, JSGlobalObject* globalObject, const ArgList&amp; args, const Identifier&amp; functionName, const String&amp; sourceURL, const TextPosition&amp; position, FunctionConstructionMode functionConstructionMode)
</del><ins>+JSObject* constructFunction(ExecState* exec, JSGlobalObject* globalObject, const ArgList&amp; args, const Identifier&amp; functionName, const String&amp; sourceURL, const TextPosition&amp; position)
</ins><span class="cx"> {
</span><span class="cx">     if (!globalObject-&gt;evalEnabled())
</span><span class="cx">         return exec-&gt;vm().throwException(exec, createEvalError(exec, globalObject-&gt;evalDisabledErrorMessage()));
</span><del>-    return constructFunctionSkippingEvalEnabledCheck(exec, globalObject, args, functionName, sourceURL, position, -1, functionConstructionMode);
</del><ins>+    return constructFunctionSkippingEvalEnabledCheck(exec, globalObject, args, functionName, sourceURL, position);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> JSObject* constructFunctionSkippingEvalEnabledCheck(
</span><span class="cx">     ExecState* exec, JSGlobalObject* globalObject, const ArgList&amp; args, 
</span><span class="cx">     const Identifier&amp; functionName, const String&amp; sourceURL, 
</span><del>-    const TextPosition&amp; position, int overrideLineNumber, FunctionConstructionMode functionConstructionMode)
</del><ins>+    const TextPosition&amp; position, int overrideLineNumber)
</ins><span class="cx"> {
</span><span class="cx">     // How we stringify functions is sometimes important for web compatibility.
</span><span class="cx">     // See https://bugs.webkit.org/show_bug.cgi?id=24350.
</span><span class="cx">     String program;
</span><span class="cx">     if (args.isEmpty())
</span><del>-        program = makeString(&quot;{function &quot;, functionConstructionMode == FunctionConstructionMode::Generator ? &quot;*&quot; : &quot;&quot;, functionName.string(), &quot;() {\n\n}}&quot;);
</del><ins>+        program = makeString(&quot;{function &quot;, functionName.string(), &quot;() {\n\n}}&quot;);
</ins><span class="cx">     else if (args.size() == 1)
</span><del>-        program = makeString(&quot;{function &quot;, functionConstructionMode == FunctionConstructionMode::Generator ? &quot;*&quot; : &quot;&quot;, functionName.string(), &quot;() {\n&quot;, args.at(0).toString(exec)-&gt;value(exec), &quot;\n}}&quot;);
</del><ins>+        program = makeString(&quot;{function &quot;, functionName.string(), &quot;() {\n&quot;, args.at(0).toString(exec)-&gt;value(exec), &quot;\n}}&quot;);
</ins><span class="cx">     else {
</span><span class="cx">         StringBuilder builder;
</span><span class="cx">         builder.appendLiteral(&quot;{function &quot;);
</span><del>-        if (functionConstructionMode == FunctionConstructionMode::Generator)
-            builder.append('*');
</del><span class="cx">         builder.append(functionName.string());
</span><span class="cx">         builder.append('(');
</span><span class="cx">         builder.append(args.at(0).toString(exec)-&gt;view(exec));
</span><span class="lines">@@ -128,9 +126,9 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // ECMA 15.3.2 The Function Constructor
</span><del>-JSObject* constructFunction(ExecState* exec, JSGlobalObject* globalObject, const ArgList&amp; args, FunctionConstructionMode functionConstructionMode)
</del><ins>+JSObject* constructFunction(ExecState* exec, JSGlobalObject* globalObject, const ArgList&amp; args)
</ins><span class="cx"> {
</span><del>-    return constructFunction(exec, globalObject, args, exec-&gt;propertyNames().anonymous, String(), TextPosition::minimumPosition(), functionConstructionMode);
</del><ins>+    return constructFunction(exec, globalObject, args, exec-&gt;propertyNames().anonymous, String(), TextPosition::minimumPosition());
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionConstructor.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionConstructor.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/FunctionConstructor.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -56,17 +56,12 @@
</span><span class="cx">     static CallType getCallData(JSCell*, CallData&amp;);
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-enum class FunctionConstructionMode {
-    Function,
-    Generator,
-};
</del><ins>+JSObject* constructFunction(ExecState*, JSGlobalObject*, const ArgList&amp;, const Identifier&amp; functionName, const String&amp; sourceURL, const WTF::TextPosition&amp;);
+JSObject* constructFunction(ExecState*, JSGlobalObject*, const ArgList&amp;);
</ins><span class="cx"> 
</span><del>-JSObject* constructFunction(ExecState*, JSGlobalObject*, const ArgList&amp;, const Identifier&amp; functionName, const String&amp; sourceURL, const WTF::TextPosition&amp;, FunctionConstructionMode = FunctionConstructionMode::Function);
-JSObject* constructFunction(ExecState*, JSGlobalObject*, const ArgList&amp;, FunctionConstructionMode = FunctionConstructionMode::Function);
-
</del><span class="cx"> JS_EXPORT_PRIVATE JSObject* constructFunctionSkippingEvalEnabledCheck(
</span><span class="cx">     ExecState*, JSGlobalObject*, const ArgList&amp;, const Identifier&amp;, 
</span><del>-    const String&amp;, const WTF::TextPosition&amp;, int overrideLineNumber = -1, FunctionConstructionMode = FunctionConstructionMode::Function);
</del><ins>+    const String&amp;, const WTF::TextPosition&amp;, int overrideLineNumber = -1);
</ins><span class="cx"> 
</span><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorFramecpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/GeneratorFrame.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorFrame.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorFrame.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,97 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;GeneratorFrame.h&quot;
-
-#include &quot;CodeBlock.h&quot;
-#include &quot;HeapIterationScope.h&quot;
-#include &quot;JSCJSValueInlines.h&quot;
-#include &quot;JSCellInlines.h&quot;
-#include &quot;SlotVisitorInlines.h&quot;
-#include &quot;StructureInlines.h&quot;
-
-namespace JSC {
-
-const ClassInfo GeneratorFrame::s_info = { &quot;GeneratorFrame&quot;, nullptr, nullptr, CREATE_METHOD_TABLE(GeneratorFrame) };
-
-GeneratorFrame::GeneratorFrame(VM&amp; vm, size_t numberOfCalleeLocals)
-    : Base(vm, vm.generatorFrameStructure.get())
-    , m_numberOfCalleeLocals(numberOfCalleeLocals)
-{
-}
-
-void GeneratorFrame::finishCreation(VM&amp; vm)
-{
-    Base::finishCreation(vm);
-    for (size_t i = 0; i &lt; m_numberOfCalleeLocals; ++i)
-        localAt(i).clear();
-}
-
-Structure* GeneratorFrame::createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue prototype)
-{
-    return Structure::create(vm, globalObject, prototype, TypeInfo(CellType, StructureFlags), info());
-}
-
-GeneratorFrame* GeneratorFrame::create(VM&amp; vm, size_t numberOfLocals)
-{
-    GeneratorFrame* result =
-        new (
-            NotNull,
-            allocateCell&lt;GeneratorFrame&gt;(vm.heap, allocationSizeForLocals(numberOfLocals)))
-        GeneratorFrame(vm, numberOfLocals);
-    result-&gt;finishCreation(vm);
-    return result;
-}
-
-void GeneratorFrame::save(ExecState* exec, const FastBitVector&amp; liveCalleeLocals)
-{
-    // Only save callee locals.
-    // Every time a generator is called (or resumed), parameters should be replaced.
-    ASSERT(liveCalleeLocals.numBits() &lt;= m_numberOfCalleeLocals);
-    liveCalleeLocals.forEachSetBit([&amp;](size_t index) {
-        localAt(index).set(exec-&gt;vm(), this, exec-&gt;uncheckedR(virtualRegisterForLocal(index)).jsValue());
-    });
-}
-
-void GeneratorFrame::resume(ExecState* exec, const FastBitVector&amp; liveCalleeLocals)
-{
-    // Only resume callee locals.
-    // Every time a generator is called (or resumed), parameters should be replaced.
-    liveCalleeLocals.forEachSetBit([&amp;](size_t index) {
-        exec-&gt;uncheckedR(virtualRegisterForLocal(index)) = localAt(index).get();
-        localAt(index).clear();
-    });
-}
-
-void GeneratorFrame::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
-{
-    GeneratorFrame* thisObject = jsCast&lt;GeneratorFrame*&gt;(cell);
-    Base::visitChildren(thisObject, visitor);
-    // Since only true cell pointers are stored as a cell, we can safely mark them.
-    visitor.appendValues(thisObject-&gt;locals(), thisObject-&gt;m_numberOfCalleeLocals);
-}
-
-} // namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorFrameh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/GeneratorFrame.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorFrame.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorFrame.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,90 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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 GeneratorFrame_h
-#define GeneratorFrame_h
-
-#include &quot;JSCell.h&quot;
-#include &lt;wtf/FastBitVector.h&gt;
-
-namespace JSC {
-
-class GeneratorFrame : public JSCell {
-    friend class JIT;
-#if ENABLE(DFG_JIT)
-    friend class DFG::SpeculativeJIT;
-    friend class DFG::JITCompiler;
-#endif
-    friend class VM;
-public:
-    typedef JSCell Base;
-    static const unsigned StructureFlags = StructureIsImmortal | Base::StructureFlags;
-
-    DECLARE_EXPORT_INFO;
-
-    static GeneratorFrame* create(VM&amp;, size_t numberOfCalleeLocals);
-
-    WriteBarrierBase&lt;Unknown&gt;* locals()
-    {
-        return bitwise_cast&lt;WriteBarrierBase&lt;Unknown&gt;*&gt;(bitwise_cast&lt;char*&gt;(this) + offsetOfLocals());
-    }
-
-    WriteBarrierBase&lt;Unknown&gt;&amp; localAt(size_t index)
-    {
-        ASSERT(index &lt; m_numberOfCalleeLocals);
-        return locals()[index];
-    }
-
-    static size_t offsetOfLocals()
-    {
-        return WTF::roundUpToMultipleOf&lt;sizeof(WriteBarrier&lt;Unknown&gt;)&gt;(sizeof(GeneratorFrame));
-    }
-
-    static size_t allocationSizeForLocals(unsigned numberOfLocals)
-    {
-        return offsetOfLocals() + numberOfLocals * sizeof(WriteBarrier&lt;Unknown&gt;);
-    }
-
-    static Structure* createStructure(VM&amp;, JSGlobalObject*, JSValue prototype);
-
-    void save(ExecState*, const FastBitVector&amp; liveCalleeLocals);
-    void resume(ExecState*, const FastBitVector&amp; liveCalleeLocals);
-
-private:
-    GeneratorFrame(VM&amp;, size_t numberOfCalleeLocals);
-
-    size_t m_numberOfCalleeLocals;
-
-    friend class LLIntOffsetsExtractor;
-
-    void finishCreation(VM&amp;);
-
-protected:
-    static void visitChildren(JSCell*, SlotVisitor&amp;);
-};
-
-} // namespace JSC
-
-#endif // GeneratorFrame_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorFunctionConstructorcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,77 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;GeneratorFunctionConstructor.h&quot;
-
-#include &quot;FunctionConstructor.h&quot;
-#include &quot;GeneratorFunctionPrototype.h&quot;
-#include &quot;JSCInlines.h&quot;
-
-namespace JSC {
-
-STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(GeneratorFunctionConstructor);
-
-const ClassInfo GeneratorFunctionConstructor::s_info = { &quot;GeneratorFunction&quot;, &amp;Base::s_info, nullptr, CREATE_METHOD_TABLE(GeneratorFunctionConstructor) };
-
-GeneratorFunctionConstructor::GeneratorFunctionConstructor(VM&amp; vm, Structure* structure)
-    : InternalFunction(vm, structure)
-{
-}
-
-void GeneratorFunctionConstructor::finishCreation(VM&amp; vm, GeneratorFunctionPrototype* generatorFunctionPrototype)
-{
-    Base::finishCreation(vm, &quot;GeneratorFunction&quot;);
-    putDirectWithoutTransition(vm, vm.propertyNames-&gt;prototype, generatorFunctionPrototype, DontEnum | DontDelete | ReadOnly);
-
-    // Number of arguments for constructor
-    putDirectWithoutTransition(vm, vm.propertyNames-&gt;length, jsNumber(1), ReadOnly | DontDelete | DontEnum);
-}
-
-static EncodedJSValue JSC_HOST_CALL callGeneratorFunctionConstructor(ExecState* exec)
-{
-    ArgList args(exec);
-    return JSValue::encode(constructFunction(exec, asInternalFunction(exec-&gt;callee())-&gt;globalObject(), args, FunctionConstructionMode::Generator));
-}
-
-static EncodedJSValue JSC_HOST_CALL constructGeneratorFunctionConstructor(ExecState* exec)
-{
-    ArgList args(exec);
-    return JSValue::encode(constructFunction(exec, asInternalFunction(exec-&gt;callee())-&gt;globalObject(), args, FunctionConstructionMode::Generator));
-}
-
-CallType GeneratorFunctionConstructor::getCallData(JSCell*, CallData&amp; callData)
-{
-    callData.native.function = callGeneratorFunctionConstructor;
-    return CallTypeHost;
-}
-
-ConstructType GeneratorFunctionConstructor::getConstructData(JSCell*, ConstructData&amp; constructData)
-{
-    constructData.native.function = constructGeneratorFunctionConstructor;
-    return ConstructTypeHost;
-}
-
-} // namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorFunctionConstructorh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorFunctionConstructor.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,66 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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 GeneratorFunctionConstructor_h
-#define GeneratorFunctionConstructor_h
-
-#include &quot;InternalFunction.h&quot;
-
-namespace WTF {
-class TextPosition;
-}
-
-namespace JSC {
-
-class GeneratorFunctionPrototype;
-
-class GeneratorFunctionConstructor : public InternalFunction {
-public:
-    typedef InternalFunction Base;
-
-    static GeneratorFunctionConstructor* create(VM&amp; vm, Structure* structure, GeneratorFunctionPrototype* generatorFunctionPrototype)
-    {
-        GeneratorFunctionConstructor* constructor = new (NotNull, allocateCell&lt;GeneratorFunctionConstructor&gt;(vm.heap)) GeneratorFunctionConstructor(vm, structure);
-        constructor-&gt;finishCreation(vm, generatorFunctionPrototype);
-        return constructor;
-    }
-
-    DECLARE_INFO;
-
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue prototype)
-    {
-        return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info());
-    }
-
-private:
-    GeneratorFunctionConstructor(VM&amp;, Structure*);
-    void finishCreation(VM&amp;, GeneratorFunctionPrototype*);
-    static ConstructType getConstructData(JSCell*, ConstructData&amp;);
-    static CallType getCallData(JSCell*, CallData&amp;);
-};
-
-} // namespace JSC
-
-#endif // GeneratorFunctionConstructor_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorFunctionPrototypecpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,56 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;GeneratorFunctionPrototype.h&quot;
-
-#include &quot;BuiltinExecutables.h&quot;
-#include &quot;BuiltinNames.h&quot;
-#include &quot;Error.h&quot;
-#include &quot;JSArray.h&quot;
-#include &quot;JSCInlines.h&quot;
-#include &quot;JSFunction.h&quot;
-#include &quot;JSString.h&quot;
-#include &quot;JSStringBuilder.h&quot;
-#include &quot;Lexer.h&quot;
-
-namespace JSC {
-
-STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(GeneratorFunctionPrototype);
-
-const ClassInfo GeneratorFunctionPrototype::s_info = { &quot;GeneratorFunction&quot;, &amp;Base::s_info, nullptr, CREATE_METHOD_TABLE(GeneratorFunctionPrototype) };
-
-GeneratorFunctionPrototype::GeneratorFunctionPrototype(VM&amp; vm, Structure* structure)
-    : JSNonFinalObject(vm, structure)
-{
-}
-
-void GeneratorFunctionPrototype::finishCreation(VM&amp; vm)
-{
-    Base::finishCreation(vm);
-    putDirectWithoutTransition(vm, vm.propertyNames-&gt;length, jsNumber(0), DontDelete | ReadOnly | DontEnum);
-}
-
-} // namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorFunctionPrototypeh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,60 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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 GeneratorFunctionPrototype_h
-#define GeneratorFunctionPrototype_h
-
-#include &quot;JSObject.h&quot;
-
-namespace JSC {
-
-class GeneratorFunctionPrototype : public JSNonFinalObject {
-public:
-    typedef JSNonFinalObject Base;
-
-    static GeneratorFunctionPrototype* create(VM&amp; vm, Structure* structure)
-    {
-        GeneratorFunctionPrototype* prototype = new (NotNull, allocateCell&lt;GeneratorFunctionPrototype&gt;(vm.heap)) GeneratorFunctionPrototype(vm, structure);
-        prototype-&gt;finishCreation(vm);
-        return prototype;
-    }
-
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
-    {
-        return Structure::create(vm, globalObject, proto, TypeInfo(ObjectType, StructureFlags), info());
-    }
-
-    DECLARE_INFO;
-
-protected:
-    void finishCreation(VM&amp;);
-
-private:
-    GeneratorFunctionPrototype(VM&amp;, Structure*);
-};
-
-} // namespace JSC
-
-#endif // GeneratorFunctionPrototype_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorPrototypecpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,62 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;GeneratorPrototype.h&quot;
-
-#include &quot;JSCBuiltins.h&quot;
-#include &quot;JSCJSValueInlines.h&quot;
-#include &quot;JSCellInlines.h&quot;
-#include &quot;JSGlobalObject.h&quot;
-#include &quot;StructureInlines.h&quot;
-
-#include &quot;GeneratorPrototype.lut.h&quot;
-
-namespace JSC {
-
-const ClassInfo GeneratorPrototype::s_info = { &quot;Generator&quot;, &amp;Base::s_info, &amp;generatorPrototypeTable, CREATE_METHOD_TABLE(GeneratorPrototype) };
-
-/* Source for GeneratorPrototype.lut.h
-@begin generatorPrototypeTable
-  next      JSBuiltin    DontEnum|Function 1
-  return    JSBuiltin    DontEnum|Function 1
-  throw     JSBuiltin    DontEnum|Function 1
-@end
-*/
-
-void GeneratorPrototype::finishCreation(VM&amp; vm)
-{
-    Base::finishCreation(vm);
-    ASSERT(inherits(info()));
-    putDirectWithoutTransition(vm, vm.propertyNames-&gt;toStringTagSymbol, jsString(&amp;vm, &quot;Generator&quot;), DontEnum | ReadOnly);
-    vm.prototypeMap.addPrototype(this);
-}
-
-bool GeneratorPrototype::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot&amp; slot)
-{
-    return getStaticFunctionSlot&lt;Base&gt;(exec, generatorPrototypeTable, jsCast&lt;GeneratorPrototype*&gt;(object), propertyName, slot);
-}
-
-} // namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorPrototypeh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,64 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef GeneratorPrototype_h
-#define GeneratorPrototype_h
-
-#include &quot;JSObject.h&quot;
-
-namespace JSC {
-
-class GeneratorPrototype : public JSNonFinalObject {
-public:
-    typedef JSNonFinalObject Base;
-    static const unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot;
-
-    static GeneratorPrototype* create(VM&amp; vm, JSGlobalObject*, Structure* structure)
-    {
-        GeneratorPrototype* prototype = new (NotNull, allocateCell&lt;GeneratorPrototype&gt;(vm.heap)) GeneratorPrototype(vm, structure);
-        prototype-&gt;finishCreation(vm);
-        return prototype;
-    }
-
-    DECLARE_INFO;
-
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue prototype)
-    {
-        return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info());
-    }
-
-    static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&amp;);
-
-private:
-    GeneratorPrototype(VM&amp; vm, Structure* structure)
-        : Base(vm, structure)
-    {
-    }
-    void finishCreation(VM&amp;);
-};
-
-}
-
-#endif // !defined(GeneratorPrototype_h)
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorThisModeh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/GeneratorThisMode.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorThisMode.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorThisMode.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,63 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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 GeneratorThisMode_h
-#define GeneratorThisMode_h
-
-namespace JSC {
-
-// http://ecma-international.org/ecma-262/6.0/#sec-functionallocate
-// http://ecma-international.org/ecma-262/6.0/#sec-ecmascript-function-objects-construct-argumentslist-newtarget
-// When the function is a GeneratorFunction, its [[ConstructorKind]] is always &quot;derived&quot;.
-// This means that OrdinaryCallBindThis in section 9.2.2 is never executed for GeneratorFunction.
-// So, when we execute the following,
-//
-//     function *gen()
-//     {
-//        yield this
-//     }
-//
-//     {
-//         let g = gen();
-//         // |this| should be global.
-//         g.next();
-//     }
-//
-//     {
-//         let g = new gen();
-//         // |this| in gen should be TDZ (and it won't be filled).
-//         g.next();
-//     }
-//
-// The following flag manages this state. When GeneratorFunction is called as a constructor, it returns a Generator that function has GeneratorThisMode::Empty flag.
-// In this case, when accessing |this|, a TDZ reference error occurs.
-enum class GeneratorThisMode : unsigned {
-    Empty,
-    NonEmpty
-};
-
-}
-
-#endif // GeneratorThisMode_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFunction.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> #include &quot;CallFrame.h&quot;
</span><span class="cx"> #include &quot;ExceptionHelpers.h&quot;
</span><span class="cx"> #include &quot;FunctionPrototype.h&quot;
</span><del>-#include &quot;GeneratorPrototype.h&quot;
</del><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;JSArray.h&quot;
</span><span class="cx"> #include &quot;JSBoundFunction.h&quot;
</span><span class="lines">@@ -349,12 +348,7 @@
</span><span class="cx">         unsigned attributes;
</span><span class="cx">         PropertyOffset offset = thisObject-&gt;getDirectOffset(vm, propertyName, attributes);
</span><span class="cx">         if (!isValidOffset(offset)) {
</span><del>-            JSObject* prototype = nullptr;
-            if (thisObject-&gt;jsExecutable()-&gt;parseMode() == SourceParseMode::GeneratorWrapperFunctionMode)
-                prototype = constructEmptyObject(exec, thisObject-&gt;globalObject()-&gt;generatorPrototype());
-            else
-                prototype = constructEmptyObject(exec);
-
</del><ins>+            JSObject* prototype = constructEmptyObject(exec);
</ins><span class="cx">             prototype-&gt;putDirect(vm, exec-&gt;propertyNames().constructor, thisObject, DontEnum);
</span><span class="cx">             thisObject-&gt;putDirect(vm, exec-&gt;propertyNames().prototype, prototype, DontDelete | DontEnum);
</span><span class="cx">             offset = thisObject-&gt;getDirectOffset(vm, exec-&gt;propertyNames().prototype, attributes);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGeneratorFunctioncpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSGeneratorFunction.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGeneratorFunction.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/JSGeneratorFunction.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;JSGeneratorFunction.h&quot;
-
-#include &quot;Error.h&quot;
-#include &quot;JSCInlines.h&quot;
-#include &quot;JSCJSValue.h&quot;
-#include &quot;JSFunction.h&quot;
-#include &quot;JSFunctionInlines.h&quot;
-#include &quot;JSObject.h&quot;
-#include &quot;PropertySlot.h&quot;
-#include &quot;VM.h&quot;
-
-namespace JSC {
-
-const ClassInfo JSGeneratorFunction::s_info = { &quot;GeneratorFunction&quot;, &amp;Base::s_info, nullptr, CREATE_METHOD_TABLE(JSGeneratorFunction) };
-
-JSGeneratorFunction::JSGeneratorFunction(VM&amp; vm, FunctionExecutable* executable, JSScope* scope)
-    : Base(vm, executable, scope, scope-&gt;globalObject()-&gt;generatorFunctionStructure())
-{
-}
-
-JSGeneratorFunction* JSGeneratorFunction::createImpl(VM&amp; vm, FunctionExecutable* executable, JSScope* scope)
-{
-    JSGeneratorFunction* generatorFunction = new (NotNull, allocateCell&lt;JSGeneratorFunction&gt;(vm.heap)) JSGeneratorFunction(vm, executable, scope);
-    ASSERT(generatorFunction-&gt;structure()-&gt;globalObject());
-    generatorFunction-&gt;finishCreation(vm);
-    return generatorFunction;
-}
-
-JSGeneratorFunction* JSGeneratorFunction::create(VM&amp; vm, FunctionExecutable* executable, JSScope* scope)
-{
-    JSGeneratorFunction* generatorFunction = createImpl(vm, executable, scope);
-    executable-&gt;singletonFunction()-&gt;notifyWrite(vm, generatorFunction, &quot;Allocating a generator function&quot;);
-    return generatorFunction;
-}
-
-JSGeneratorFunction* JSGeneratorFunction::createWithInvalidatedReallocationWatchpoint(VM&amp; vm, FunctionExecutable* executable, JSScope* scope)
-{
-    return createImpl(vm, executable, scope);
-}
-
-} // namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGeneratorFunctionh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/JSGeneratorFunction.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGeneratorFunction.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/JSGeneratorFunction.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,82 +0,0 @@
</span><del>-/*
- * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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 JSGeneratorFunction_h
-#define JSGeneratorFunction_h
-
-#include &quot;JSFunction.h&quot;
-
-namespace JSC {
-
-class JSGlobalObject;
-class LLIntOffsetsExtractor;
-class LLIntDesiredOffsets;
-
-class JSGeneratorFunction : public JSFunction {
-    friend class JIT;
-#if ENABLE(DFG_JIT)
-    friend class DFG::SpeculativeJIT;
-    friend class DFG::JITCompiler;
-#endif
-    friend class VM;
-public:
-    typedef JSFunction Base;
-
-    enum class GeneratorResumeMode : int32_t {
-        NormalMode = 0,
-        ReturnMode = 1,
-        ThrowMode = 2
-    };
-
-    const static unsigned StructureFlags = Base::StructureFlags;
-
-    DECLARE_EXPORT_INFO;
-
-    static JSGeneratorFunction* create(VM&amp;, FunctionExecutable*, JSScope*);
-    static JSGeneratorFunction* createWithInvalidatedReallocationWatchpoint(VM&amp;, FunctionExecutable*, JSScope*);
-
-    static size_t allocationSize(size_t inlineCapacity)
-    {
-        ASSERT_UNUSED(inlineCapacity, !inlineCapacity);
-        return sizeof(JSGeneratorFunction);
-    }
-
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue prototype)
-    {
-        ASSERT(globalObject);
-        return Structure::create(vm, globalObject, prototype, TypeInfo(JSFunctionType, StructureFlags), info());
-    }
-
-private:
-    JSGeneratorFunction(VM&amp;, FunctionExecutable*, JSScope*);
-
-    static JSGeneratorFunction* createImpl(VM&amp;, FunctionExecutable*, JSScope*);
-
-    friend class LLIntOffsetsExtractor;
-};
-
-} // namespace JSC
-
-#endif // JSGeneratorFunction_h
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -50,9 +50,6 @@
</span><span class="cx"> #include &quot;ErrorPrototype.h&quot;
</span><span class="cx"> #include &quot;FunctionConstructor.h&quot;
</span><span class="cx"> #include &quot;FunctionPrototype.h&quot;
</span><del>-#include &quot;GeneratorFunctionConstructor.h&quot;
-#include &quot;GeneratorFunctionPrototype.h&quot;
-#include &quot;GeneratorPrototype.h&quot;
</del><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;HeapIterationScope.h&quot;
</span><span class="cx"> #include &quot;InspectorInstrumentationObject.h&quot;
</span><span class="lines">@@ -75,7 +72,6 @@
</span><span class="cx"> #include &quot;JSDollarVM.h&quot;
</span><span class="cx"> #include &quot;JSDollarVMPrototype.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><del>-#include &quot;JSGeneratorFunction.h&quot;
</del><span class="cx"> #include &quot;JSGenericTypedArrayViewConstructorInlines.h&quot;
</span><span class="cx"> #include &quot;JSGenericTypedArrayViewInlines.h&quot;
</span><span class="cx"> #include &quot;JSGenericTypedArrayViewPrototypeInlines.h&quot;
</span><span class="lines">@@ -388,7 +384,6 @@
</span><span class="cx">     
</span><span class="cx">     FOR_EACH_BUILTIN_DERIVED_ITERATOR_TYPE(CREATE_PROTOTYPE_FOR_DERIVED_ITERATOR_TYPE)
</span><span class="cx">     m_propertyNameIteratorStructure.set(vm, this, JSPropertyNameIterator::createStructure(vm, this, m_iteratorPrototype.get()));
</span><del>-    m_generatorPrototype.set(vm, this, GeneratorPrototype::create(vm, this, GeneratorPrototype::createStructure(vm, this, m_iteratorPrototype.get())));
</del><span class="cx">     
</span><span class="cx"> #undef CREATE_PROTOTYPE_FOR_DERIVED_ITERATOR_TYPE
</span><span class="cx"> 
</span><span class="lines">@@ -425,14 +420,6 @@
</span><span class="cx">     m_syntaxErrorConstructor.set(vm, this, NativeErrorConstructor::create(vm, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral(&quot;SyntaxError&quot;)));
</span><span class="cx">     m_typeErrorConstructor.set(vm, this, NativeErrorConstructor::create(vm, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral(&quot;TypeError&quot;)));
</span><span class="cx">     m_URIErrorConstructor.set(vm, this, NativeErrorConstructor::create(vm, this, nativeErrorStructure, nativeErrorPrototypeStructure, ASCIILiteral(&quot;URIError&quot;)));
</span><del>-
-    m_generatorFunctionPrototype.set(vm, this, GeneratorFunctionPrototype::create(vm, GeneratorFunctionPrototype::createStructure(vm, this, m_functionPrototype.get())));
-    GeneratorFunctionConstructor* generatorFunctionConstructor = GeneratorFunctionConstructor::create(vm, GeneratorFunctionConstructor::createStructure(vm, this, functionConstructor), m_generatorFunctionPrototype.get());
-    m_generatorFunctionPrototype-&gt;putDirectWithoutTransition(vm, vm.propertyNames-&gt;constructor, generatorFunctionConstructor, DontEnum);
-    m_generatorFunctionStructure.set(vm, this, JSGeneratorFunction::createStructure(vm, this, m_generatorFunctionPrototype.get()));
-
-    m_generatorPrototype-&gt;putDirectWithoutTransition(vm, vm.propertyNames-&gt;constructor, m_generatorFunctionPrototype.get(), DontEnum);
-    m_generatorFunctionPrototype-&gt;putDirectWithoutTransition(vm, vm.propertyNames-&gt;prototype, m_generatorPrototype.get(), DontEnum);
</del><span class="cx">     
</span><span class="cx">     m_objectPrototype-&gt;putDirectWithoutTransition(vm, vm.propertyNames-&gt;constructor, objectConstructor, DontEnum);
</span><span class="cx">     m_functionPrototype-&gt;putDirectWithoutTransition(vm, vm.propertyNames-&gt;constructor, functionConstructor, DontEnum);
</span><span class="lines">@@ -566,7 +553,6 @@
</span><span class="cx">         GlobalPropertyInfo(vm.propertyNames-&gt;builtinNames().promiseResolveThenableJobPrivateName(), JSFunction::createBuiltinFunction(vm, promiseOperationsPromiseResolveThenableJobCodeGenerator(vm), this), DontEnum | DontDelete | ReadOnly),
</span><span class="cx">         GlobalPropertyInfo(vm.propertyNames-&gt;builtinNames().InspectorInstrumentationPrivateName(), InspectorInstrumentationObject::create(vm, this, InspectorInstrumentationObject::createStructure(vm, this, m_objectPrototype.get())), DontEnum | DontDelete | ReadOnly),
</span><span class="cx">         GlobalPropertyInfo(vm.propertyNames-&gt;MapPrivateName, mapConstructor, DontEnum | DontDelete | ReadOnly),
</span><del>-        GlobalPropertyInfo(vm.propertyNames-&gt;builtinNames().generatorResumePrivateName(), JSFunction::createBuiltinFunction(vm, generatorPrototypeGeneratorResumeCodeGenerator(vm), this), DontEnum | DontDelete | ReadOnly),
</del><span class="cx">     };
</span><span class="cx">     addStaticGlobals(staticGlobals, WTF_ARRAY_LENGTH(staticGlobals));
</span><span class="cx">     
</span><span class="lines">@@ -834,8 +820,6 @@
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_arrayPrototype);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_errorPrototype);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_iteratorPrototype);
</span><del>-    visitor.append(&amp;thisObject-&gt;m_generatorFunctionPrototype);
-    visitor.append(&amp;thisObject-&gt;m_generatorPrototype);
</del><span class="cx"> 
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_debuggerScopeStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_withScopeStructure);
</span><span class="lines">@@ -868,7 +852,6 @@
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_namedFunctionStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_symbolObjectStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_regExpStructure);
</span><del>-    visitor.append(&amp;thisObject-&gt;m_generatorFunctionStructure);
</del><span class="cx">     visitor.append(&amp;thisObject-&gt;m_regExpMatchesArrayStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_moduleRecordStructure);
</span><span class="cx">     visitor.append(&amp;thisObject-&gt;m_moduleNamespaceObjectStructure);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -63,8 +63,6 @@
</span><span class="cx"> class FunctionCodeBlock;
</span><span class="cx"> class FunctionExecutable;
</span><span class="cx"> class FunctionPrototype;
</span><del>-class GeneratorPrototype;
-class GeneratorFunctionPrototype;
</del><span class="cx"> class GetterSetter;
</span><span class="cx"> class GlobalCodeBlock;
</span><span class="cx"> class InputCursor;
</span><span class="lines">@@ -231,8 +229,6 @@
</span><span class="cx">     WriteBarrier&lt;ArrayPrototype&gt; m_arrayPrototype;
</span><span class="cx">     WriteBarrier&lt;RegExpPrototype&gt; m_regExpPrototype;
</span><span class="cx">     WriteBarrier&lt;IteratorPrototype&gt; m_iteratorPrototype;
</span><del>-    WriteBarrier&lt;GeneratorFunctionPrototype&gt; m_generatorFunctionPrototype;
-    WriteBarrier&lt;GeneratorPrototype&gt; m_generatorPrototype;
</del><span class="cx"> 
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_debuggerScopeStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_withScopeStructure;
</span><span class="lines">@@ -266,7 +262,6 @@
</span><span class="cx">     PropertyOffset m_functionNameOffset;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_privateNameStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_regExpStructure;
</span><del>-    WriteBarrier&lt;Structure&gt; m_generatorFunctionStructure;
</del><span class="cx">     WriteBarrier&lt;Structure&gt; m_consoleStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_dollarVMStructure;
</span><span class="cx">     WriteBarrier&lt;Structure&gt; m_internalFunctionStructure;
</span><span class="lines">@@ -458,8 +453,6 @@
</span><span class="cx">     RegExpPrototype* regExpPrototype() const { return m_regExpPrototype.get(); }
</span><span class="cx">     ErrorPrototype* errorPrototype() const { return m_errorPrototype.get(); }
</span><span class="cx">     IteratorPrototype* iteratorPrototype() const { return m_iteratorPrototype.get(); }
</span><del>-    GeneratorFunctionPrototype* generatorFunctionPrototype() const { return m_generatorFunctionPrototype.get(); }
-    GeneratorPrototype* generatorPrototype() const { return m_generatorPrototype.get(); }
</del><span class="cx"> 
</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="lines">@@ -513,7 +506,6 @@
</span><span class="cx">     Structure* internalFunctionStructure() const { return m_internalFunctionStructure.get(); }
</span><span class="cx">     Structure* mapStructure() const { return m_mapStructure.get(); }
</span><span class="cx">     Structure* regExpStructure() const { return m_regExpStructure.get(); }
</span><del>-    Structure* generatorFunctionStructure() const { return m_generatorFunctionStructure.get(); }
</del><span class="cx">     Structure* setStructure() const { return m_setStructure.get(); }
</span><span class="cx">     Structure* stringObjectStructure() const { return m_stringObjectStructure.get(); }
</span><span class="cx">     Structure* symbolObjectStructure() const { return m_symbolObjectStructure.get(); }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeModuleLoaderObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/ModuleLoaderObject.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -281,7 +281,7 @@
</span><span class="cx">     ParserError error;
</span><span class="cx">     std::unique_ptr&lt;ModuleProgramNode&gt; moduleProgramNode = parse&lt;ModuleProgramNode&gt;(
</span><span class="cx">         &amp;vm, sourceCode, Identifier(), JSParserBuiltinMode::NotBuiltin,
</span><del>-        JSParserStrictMode::Strict, SourceParseMode::ModuleAnalyzeMode, SuperBinding::NotNeeded, error);
</del><ins>+        JSParserStrictMode::Strict, SourceParseMode::ModuleAnalyzeMode, error);
</ins><span class="cx"> 
</span><span class="cx">     if (error.isValid()) {
</span><span class="cx">         throwVMError(exec, error.toErrorObject(exec-&gt;lexicalGlobalObject(), sourceCode));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.cpp (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.cpp        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/VM.cpp        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -45,7 +45,6 @@
</span><span class="cx"> #include &quot;FTLThunks.h&quot;
</span><span class="cx"> #include &quot;FunctionConstructor.h&quot;
</span><span class="cx"> #include &quot;GCActivityCallback.h&quot;
</span><del>-#include &quot;GeneratorFrame.h&quot;
</del><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;Heap.h&quot;
</span><span class="cx"> #include &quot;HeapIterationScope.h&quot;
</span><span class="lines">@@ -245,7 +244,6 @@
</span><span class="cx">     inferredTypeStructure.set(*this, InferredType::createStructure(*this, 0, jsNull()));
</span><span class="cx">     inferredTypeTableStructure.set(*this, InferredTypeTable::createStructure(*this, 0, jsNull()));
</span><span class="cx">     functionRareDataStructure.set(*this, FunctionRareData::createStructure(*this, 0, jsNull()));
</span><del>-    generatorFrameStructure.set(*this, GeneratorFrame::createStructure(*this, 0, jsNull()));
</del><span class="cx">     exceptionStructure.set(*this, Exception::createStructure(*this, 0, jsNull()));
</span><span class="cx">     promiseDeferredStructure.set(*this, JSPromiseDeferred::createStructure(*this, 0, jsNull()));
</span><span class="cx">     internalPromiseDeferredStructure.set(*this, JSInternalPromiseDeferred::createStructure(*this, 0, jsNull()));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/runtime/VM.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -304,7 +304,6 @@
</span><span class="cx">     Strong&lt;Structure&gt; inferredTypeStructure;
</span><span class="cx">     Strong&lt;Structure&gt; inferredTypeTableStructure;
</span><span class="cx">     Strong&lt;Structure&gt; functionRareDataStructure;
</span><del>-    Strong&lt;Structure&gt; generatorFrameStructure;
</del><span class="cx">     Strong&lt;Structure&gt; exceptionStructure;
</span><span class="cx">     Strong&lt;Structure&gt; promiseDeferredStructure;
</span><span class="cx">     Strong&lt;Structure&gt; internalPromiseDeferredStructure;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestses6generators_yield_star_generic_iterablesjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_generic_iterables.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_generic_iterables.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_generic_iterables.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,24 +1,3 @@
</span><del>-if (typeof global === 'undefined') {
-var global = this;
-}
-function __createIterableObject(arr, methods) {
-methods = methods || {};
-if (typeof Symbol !== 'function' || !Symbol.iterator) {
-  return {};
-}
-arr.length++;
-var iterator = {
-  next: function() {
-    return { value: arr.shift(), done: arr.length &lt;= 0 };
-  },
-  'return': methods['return'],
-  'throw': methods['throw']
-};
-var iterable = {};
-iterable[Symbol.iterator] = function(){ return iterator; }
-return iterable;
-}
-
</del><span class="cx"> function test() {
</span><span class="cx"> 
</span><span class="cx"> var iterator = (function * generator() {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestses6generators_yield_star_instances_of_iterablesjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_instances_of_iterables.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_instances_of_iterables.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_instances_of_iterables.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,24 +1,3 @@
</span><del>-if (typeof global === 'undefined') {
-var global = this;
-}
-function __createIterableObject(arr, methods) {
-methods = methods || {};
-if (typeof Symbol !== 'function' || !Symbol.iterator) {
-  return {};
-}
-arr.length++;
-var iterator = {
-  next: function() {
-    return { value: arr.shift(), done: arr.length &lt;= 0 };
-  },
-  'return': methods['return'],
-  'throw': methods['throw']
-};
-var iterable = {};
-iterable[Symbol.iterator] = function(){ return iterator; }
-return iterable;
-}
-
</del><span class="cx"> function test() {
</span><span class="cx"> 
</span><span class="cx"> var iterator = (function * generator() {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestses6generators_yield_star_iterator_closingjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_iterator_closing.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_iterator_closing.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_iterator_closing.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,24 +1,3 @@
</span><del>-if (typeof global === 'undefined') {
-var global = this;
-}
-function __createIterableObject(arr, methods) {
-methods = methods || {};
-if (typeof Symbol !== 'function' || !Symbol.iterator) {
-  return {};
-}
-arr.length++;
-var iterator = {
-  next: function() {
-    return { value: arr.shift(), done: arr.length &lt;= 0 };
-  },
-  'return': methods['return'],
-  'throw': methods['throw']
-};
-var iterable = {};
-iterable[Symbol.iterator] = function(){ return iterator; }
-return iterable;
-}
-
</del><span class="cx"> function test() {
</span><span class="cx"> 
</span><span class="cx"> var closed = '';
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestses6generators_yield_star_iterator_closing_via_throwjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_iterator_closing_via_throw.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_iterator_closing_via_throw.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/es6/generators_yield_star_iterator_closing_via_throw.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,24 +1,3 @@
</span><del>-if (typeof global === 'undefined') {
-var global = this;
-}
-function __createIterableObject(arr, methods) {
-methods = methods || {};
-if (typeof Symbol !== 'function' || !Symbol.iterator) {
-  return {};
-}
-arr.length++;
-var iterator = {
-  next: function() {
-    return { value: arr.shift(), done: arr.length &lt;= 0 };
-  },
-  'return': methods['return'],
-  'throw': methods['throw']
-};
-var iterable = {};
-iterable[Symbol.iterator] = function(){ return iterator; }
-return iterable;
-}
-
</del><span class="cx"> function test() {
</span><span class="cx"> 
</span><span class="cx"> var closed = false;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestses6yaml"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tests/es6.yaml (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/es6.yaml        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/es6.yaml        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -727,7 +727,7 @@
</span><span class="cx"> - path: es6/Array_is_subclassable_correct_prototype_chain.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/Array_static_methods_Array.from_generator_instances.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/Array_static_methods_Array.from_generic_iterables.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/Array_static_methods_Array.from_instances_of_generic_iterables.js
</span><span class="lines">@@ -735,7 +735,7 @@
</span><span class="cx"> - path: es6/Array_static_methods_Array.from_iterator_closing.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/Array_static_methods_Array.from_map_function_generator_instances.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/Array_static_methods_Array.from_map_function_generic_iterables.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/Array_static_methods_Array.from_map_function_instances_of_iterables.js
</span><span class="lines">@@ -761,7 +761,7 @@
</span><span class="cx"> - path: es6/destructuring_nested_rest.js
</span><span class="cx">   cmd: runES6 :normal
</span><span class="cx"> - path: es6/destructuring_with_generator_instances.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/destructuring_with_generic_iterables.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/destructuring_with_instances_of_generic_iterables.js
</span><span class="lines">@@ -771,7 +771,7 @@
</span><span class="cx"> - path: es6/for..of_loops_iterator_closing_throw.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/for..of_loops_with_generator_instances.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/for..of_loops_with_generic_iterables.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/for..of_loops_with_instances_of_generic_iterables.js
</span><span class="lines">@@ -811,55 +811,55 @@
</span><span class="cx"> - path: es6/function_name_property_variables_function.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/generators_%GeneratorPrototype%.constructor.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_%GeneratorPrototype%.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_%GeneratorPrototype%.return.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_%GeneratorPrototype%.throw.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_basic_functionality.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_cant_use_this_with_new.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_computed_shorthand_generators.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_computed_shorthand_generators_classes.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_correct_this_binding.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_generator_function_expressions.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_sending.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_shorthand_generator_methods.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_shorthand_generator_methods_classes.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_string-keyed_shorthand_generator_methods.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_arrays.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_astral_plane_strings.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_generator_instances.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_generic_iterables.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_instances_of_iterables.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_iterator_closing.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_iterator_closing_via_throw.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_on_non-iterables_is_a_runtime_error.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_sparse_arrays.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_star_strings.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/generators_yield_operator_precedence.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/Map_iterator_closing.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/Map_Map[Symbol.species].js
</span><span class="lines">@@ -1113,7 +1113,7 @@
</span><span class="cx"> - path: es6/spread_..._operator_with_astral_plane_strings_in_function_calls.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/spread_..._operator_with_generator_instances_in_arrays.js
</span><del>-  cmd: runES6 :normal
</del><ins>+  cmd: runES6 :fail
</ins><span class="cx"> - path: es6/spread_..._operator_with_generator_instances_in_calls.js
</span><span class="cx">   cmd: runES6 :fail
</span><span class="cx"> - path: es6/spread_..._operator_with_generic_iterables_in_arrays.js
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorargumentsfromfunctionjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-arguments-from-function.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-arguments-from-function.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-arguments-from-function.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error(`bad value: ${String(actual)}`);
-}
-
-function *gen(a, b, c)
-{
-    function test()
-    {
-        return arguments;
-    }
-
-    return test;
-}
-
-let g = gen(1, 2, 3);
-let {value: func} = g.next();
-shouldBe(func().length, 0);
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorargumentsjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-arguments.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-arguments.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-arguments.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,107 +0,0 @@
</span><del>-function shouldBe(actual, expected)
-{
-    if (actual !== expected)
-        throw new Error(`bad value: ${String(actual)}`);
-}
-
-(function () {
-    function *g1(a, b, c)
-    {
-        yield arguments;
-        yield arguments;
-    }
-
-    var g = g1(0, 1, 2);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-
-    function *g2(a, b, c)
-    {
-        yield arguments;
-        yield arguments;
-        a = yield a;
-        yield arguments;
-        b = yield b;
-        yield arguments;
-        c = yield c;
-        yield arguments;
-    }
-    var g = g2(0, 1, 2);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(g.next().value, 0);
-    shouldBe(JSON.stringify(g.next(42).value), `{&quot;0&quot;:42,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(g.next().value, 1);
-    shouldBe(JSON.stringify(g.next(42).value), `{&quot;0&quot;:42,&quot;1&quot;:42,&quot;2&quot;:2}`);
-    shouldBe(g.next().value, 2);
-    shouldBe(JSON.stringify(g.next(42).value), `{&quot;0&quot;:42,&quot;1&quot;:42,&quot;2&quot;:42}`);
-}());
-
-(function () {
-    function *g1(a, b, c)
-    {
-        &quot;use strict&quot;;
-        yield arguments;
-        yield arguments;
-    }
-
-    var g = g1(0, 1, 2);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-
-    function *g2(a, b, c)
-    {
-        &quot;use strict&quot;;
-        yield arguments;
-        yield arguments;
-        a = yield a;
-        yield arguments;
-        b = yield b;
-        yield arguments;
-        c = yield c;
-        yield arguments;
-    }
-    var g = g2(0, 1, 2);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(g.next().value, 0);
-    shouldBe(JSON.stringify(g.next(42).value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(g.next().value, 1);
-    shouldBe(JSON.stringify(g.next(42).value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(g.next().value, 2);
-    shouldBe(JSON.stringify(g.next(42).value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-}());
-
-(function () {
-    &quot;use strict&quot;;
-    function *g1(a, b, c)
-    {
-        yield arguments;
-        yield arguments;
-    }
-
-    var g = g1(0, 1, 2);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-
-    function *g2(a, b, c)
-    {
-        yield arguments;
-        yield arguments;
-        a = yield a;
-        yield arguments;
-        b = yield b;
-        yield arguments;
-        c = yield c;
-        yield arguments;
-    }
-    var g = g2(0, 1, 2);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(JSON.stringify(g.next().value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(g.next().value, 0);
-    shouldBe(JSON.stringify(g.next(42).value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(g.next().value, 1);
-    shouldBe(JSON.stringify(g.next(42).value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-    shouldBe(g.next().value, 2);
-    shouldBe(JSON.stringify(g.next(42).value), `{&quot;0&quot;:0,&quot;1&quot;:1,&quot;2&quot;:2}`);
-}());
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorclassmethodssyntaxjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-class-methods-syntax.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-class-methods-syntax.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-class-methods-syntax.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,48 +0,0 @@
</span><del>-function testSyntax(script) {
-    try {
-        eval(script);
-    } catch (error) {
-        if (error instanceof SyntaxError)
-            throw new Error(&quot;Bad error: &quot; + String(error));
-    }
-}
-
-function testSyntaxError(script, message) {
-    var error = null;
-    try {
-        eval(script);
-    } catch (e) {
-        error = e;
-    }
-    if (!error)
-        throw new Error(&quot;Expected syntax error not thrown&quot;);
-
-    if (String(error) !== message)
-        throw new Error(&quot;Bad error: &quot; + String(error));
-}
-
-testSyntaxError(`
-class Cocoa {
-    *constructor()
-    {
-    }
-}
-`, `SyntaxError: Cannot declare a generator named 'constructor'.`);
-
-testSyntax(`
-class Cocoa {
-    *ok()
-    {
-        yield 42;
-    }
-}
-`);
-
-testSyntax(`
-class Cocoa {
-    static *ok()
-    {
-        yield 42;
-    }
-}
-`);
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorclassmethodsjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-class-methods.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-class-methods.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-class-methods.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,62 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error(`bad value: ${String(actual)}`);
-}
-
-function shouldThrow(func, errorMessage) {
-    var errorThrown = false;
-    var error = null;
-    try {
-        func();
-    } catch (e) {
-        errorThrown = true;
-        error = e;
-    }
-    if (!errorThrown)
-        throw new Error('not thrown');
-    if (String(error) !== errorMessage)
-        throw new Error(`bad error: ${String(error)}`);
-}
-
-class A {
-    *gen()
-    {
-        yield this;
-        yield this;
-        return 42;
-    }
-
-    static *staticGen()
-    {
-        yield this;
-        yield this;
-        return 42;
-    }
-}
-{
-    let a = new A();
-    let g = a.gen();
-    shouldBe(g.next().value, a);
-    shouldBe(g.next().value, a);
-    shouldBe(g.next().value, 42);
-    shouldBe(g.next().done, true);
-}
-{
-    let a = new A();
-    shouldThrow(() =&gt; {
-        let g = new a.gen();
-    }, `TypeError: function is not a constructor (evaluating 'new a.gen()')`);
-}
-
-{
-    let g = A.staticGen();
-    shouldBe(g.next().value, A);
-    shouldBe(g.next().value, A);
-    shouldBe(g.next().value, 42);
-    shouldBe(g.next().done, true);
-}
-{
-    shouldThrow(() =&gt; {
-        let g = new A.staticGen();
-    }, `TypeError: function is not a constructor (evaluating 'new A.staticGen()')`);
-}
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorevalthisjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-eval-this.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-eval-this.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-eval-this.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,65 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-function shouldThrow(func, errorMessage) {
-    var errorThrown = false;
-    var error = null;
-    try {
-        func();
-    } catch (e) {
-        errorThrown = true;
-        error = e;
-    }
-    if (!errorThrown)
-        throw new Error('not thrown');
-    if (String(error) !== errorMessage)
-        throw new Error(`bad error: ${String(error)}`);
-}
-
-function *gen() {
-    yield eval(&quot;this&quot;);
-}
-
-var g = new gen();
-shouldThrow(() =&gt; {
-    g.next().value;
-}, `ReferenceError: Cannot access uninitialized variable.`);
-
-class B { }
-
-(function() {
-    eval('this');
-    eval('this');
-}());
-
-class A extends B {
-    constructor()
-    {
-        return eval('this');
-    }
-}
-
-shouldThrow(() =&gt; {
-    new A();
-}, `ReferenceError: Cannot access uninitialized variable.`);
-
-class C {
-    *generator()
-    {
-        yield eval('this');
-    }
-}
-
-shouldThrow(() =&gt; {
-    let c = new C();
-    let g = new c.generator();
-    g.next();
-}, `TypeError: function is not a constructor (evaluating 'new c.generator()')`);
-
-(function () {
-    let c = new C();
-    let g = c.generator();
-    shouldBe(g.next().value, c);
-}());
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorfunctionconstructorjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-function-constructor.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-function-constructor.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-function-constructor.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,9 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-var global = (new Function(&quot;return this&quot;))();
-shouldBe(typeof global.GeneratorFunction, 'undefined');
-var generatorFunctionConstructor = (function *() { }).constructor;
-shouldBe(generatorFunctionConstructor.__proto__, Function);
-shouldBe(generatorFunctionConstructor.prototype.constructor, generatorFunctionConstructor);
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorfunctionnamejs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-function-name.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-function-name.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-function-name.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-var ok = function *generator()
-{
-    yield generator;
-};
-
-var g = ok();
-shouldBe(g.next().value, ok);
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratormethodswithnongeneratorjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-methods-with-non-generator.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-methods-with-non-generator.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-methods-with-non-generator.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,31 +0,0 @@
</span><del>-function shouldThrow(func, errorMessage) {
-    var errorThrown = false;
-    var error = null;
-    try {
-        func();
-    } catch (e) {
-        errorThrown = true;
-        error = e;
-    }
-    if (!errorThrown)
-        throw new Error('not thrown');
-    if (String(error) !== errorMessage)
-        throw new Error(`bad error: ${String(error)}`);
-}
-
-function *gen() {
-}
-var g = gen();
-
-shouldThrow(() =&gt; {
-    g.next.call({});
-}, `TypeError: |this| should be a generator`);
-
-
-shouldThrow(() =&gt; {
-    g.throw.call({});
-}, `TypeError: |this| should be a generator`);
-
-shouldThrow(() =&gt; {
-    g.return.call({});
-}, `TypeError: |this| should be a generator`);
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorrelationsjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-relations.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-relations.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-relations.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,30 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-function *generatorFunction() {
-}
-let generator = generatorFunction();
-
-shouldBe(generator instanceof generatorFunction, true);
-shouldBe(typeof generator.__proto__, 'object');
-shouldBe(generator.__proto__, generatorFunction.prototype);
-
-let GeneratorPrototype = generator.__proto__.__proto__;
-
-let GeneratorFunctionPrototype = generatorFunction.__proto__;
-let GeneratorFunction = generatorFunction.__proto__.constructor;
-shouldBe(GeneratorFunction.prototype, GeneratorFunctionPrototype);
-shouldBe(generatorFunction instanceof GeneratorFunction, true);
-shouldBe(GeneratorFunction.__proto__, Function);
-shouldBe(GeneratorFunctionPrototype.__proto__, Function.prototype);
-
-shouldBe(GeneratorFunctionPrototype.prototype, GeneratorPrototype);
-shouldBe(GeneratorPrototype.constructor, GeneratorFunctionPrototype);
-
-let arrayIterator = [][Symbol.iterator]();
-let ArrayIteratorPrototype = arrayIterator.__proto__;
-let IteratorPrototype = ArrayIteratorPrototype.__proto__;
-
-shouldBe(IteratorPrototype, GeneratorPrototype.__proto__);
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorreturnbeforefirstcalljs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-return-before-first-call.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-return-before-first-call.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-return-before-first-call.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,23 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-function shouldBeIteratorResult(actual, { value, done })
-{
-    shouldBe(actual.value, value);
-    shouldBe(actual.done, done);
-}
-
-function unreachable()
-{
-    throw new Error(&quot;NG&quot;);
-}
-
-function *gen()
-{
-    unreachable();
-}
-
-var g = gen();
-shouldBeIteratorResult(g.return(&quot;Hello&quot;), { value: &quot;Hello&quot;, done: true });
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorreturnjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-return.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-return.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-return.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,133 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error(`bad value: ${String(actual)}`);
-}
-
-function shouldBeIteratorResult(actual, { value, done })
-{
-    shouldBe(actual.value, value);
-    shouldBe(actual.done, done);
-}
-
-function unreachable()
-{
-    throw new Error('unreachable');
-}
-
-function shouldThrow(func, errorMessage) {
-    var errorThrown = false;
-    var error = null;
-    try {
-        func();
-    } catch (e) {
-        errorThrown = true;
-        error = e;
-    }
-    if (!errorThrown)
-        throw new Error('not thrown');
-    if (String(error) !== errorMessage)
-        throw new Error(`bad error: ${String(error)}`);
-}
-
-(function () {
-    function *gen() {
-        yield yield 20;
-        yield 42;
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(0), { value: 20, done: false });
-        shouldBeIteratorResult(g.return(20), { value: 20, done: true });
-        shouldBeIteratorResult(g.return(20), { value: 20, done: true });
-        shouldBeIteratorResult(g.next(42), { value: undefined, done: true });
-    }
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.return(42), { value: 42, done: true });
-        shouldBeIteratorResult(g.next(42), { value: undefined, done: true });
-        shouldBeIteratorResult(g.return(42), { value: 42, done: true });
-    }
-}());
-
-(function () {
-    function *gen() {
-        return 42;
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(), { value: 42, done: true });
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-    }
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-        shouldBeIteratorResult(g.next(), { value: undefined, done: true });
-        shouldBeIteratorResult(g.return(42), { value: 42, done: true });
-    }
-}());
-
-(function () {
-    function *gen() {
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(), { value: undefined, done: true });
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-    }
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-        shouldBeIteratorResult(g.next(), { value: undefined, done: true });
-        shouldBeIteratorResult(g.return(42), { value: 42, done: true });
-    }
-}());
-
-(function () {
-    function *gen() {
-        try {
-            yield 42;
-        } finally {
-            return 400;
-        }
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(), { value: 42, done: false });
-        shouldBeIteratorResult(g.return(0), { value: 400, done: true });
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-    }
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-        shouldBeIteratorResult(g.next(), { value: undefined, done: true });
-        shouldBeIteratorResult(g.return(42), { value: 42, done: true });
-    }
-}());
-
-
-(function () {
-    function *gen() {
-        try {
-            yield 42;
-        } finally {
-            throw new Error(&quot;thrown&quot;);
-        }
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(), { value: 42, done: false });
-        shouldThrow(() =&gt; g.return(0), `Error: thrown`);
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-    }
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-        shouldBeIteratorResult(g.next(), { value: undefined, done: true });
-        shouldBeIteratorResult(g.return(42), { value: 42, done: true });
-    }
-}());
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorthisjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-this.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-this.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-this.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-function shouldThrow(func, errorMessage) {
-    var errorThrown = false;
-    var error = null;
-    try {
-        func();
-    } catch (e) {
-        errorThrown = true;
-        error = e;
-    }
-    if (!errorThrown)
-        throw new Error('not thrown');
-    if (String(error) !== errorMessage)
-        throw new Error(`bad error: ${String(error)}`);
-}
-
-
-var global = new Function('return this')();
-
-(function () {
-    function *gen() {
-        yield this;
-    }
-
-    {
-        let g = gen();
-        shouldBe(g.next().value, global);
-    }
-    {
-        let g = new gen();
-        shouldThrow(() =&gt; {
-            g.next();
-        }, `ReferenceError: Cannot access uninitialized variable.`);
-    }
-    {
-        let thisObject = {};
-        let g = gen.call(thisObject);
-        shouldBe(g.next().value, thisObject);
-    }
-}());
-
-(function () {
-    function *gen() {
-        &quot;use strict&quot;;
-        yield this;
-    }
-
-    {
-        let g = gen();
-        shouldBe(g.next().value, undefined);
-    }
-    {
-        let g = new gen();
-        shouldThrow(() =&gt; {
-            g.next();
-        }, `ReferenceError: Cannot access uninitialized variable.`);
-    }
-    {
-        let thisObject = {};
-        let g = gen.call(thisObject);
-        shouldBe(g.next().value, thisObject);
-    }
-}());
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorthrowbeforefirstcalljs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-throw-before-first-call.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-throw-before-first-call.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-throw-before-first-call.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-function unreachable()
-{
-    throw new Error(&quot;NG&quot;);
-}
-
-function *gen()
-{
-    unreachable();
-}
-
-var g = gen();
-var error = new Error(&quot;OK&quot;);
-var thrown = null;
-try {
-    g.throw(error);
-} catch (e) {
-    thrown = e;
-}
-if (thrown !== error)
-    unreachable();
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorthrowjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-throw.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-throw.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-throw.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,132 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error(`bad value: ${String(actual)}`);
-}
-
-function shouldBeIteratorResult(actual, { value, done })
-{
-    shouldBe(actual.value, value);
-    shouldBe(actual.done, done);
-}
-
-function shouldThrow(func, errorMessage) {
-    var errorThrown = false;
-    var error = null;
-    try {
-        func();
-    } catch (e) {
-        errorThrown = true;
-        error = e;
-    }
-    if (!errorThrown)
-        throw new Error('not thrown');
-    if (String(error) !== errorMessage)
-        throw new Error(`bad error: ${String(error)}`);
-}
-
-class CallSite {
-    constructor()
-    {
-        this.count = 0;
-    }
-
-    call()
-    {
-        return this.count++;
-    }
-}
-
-(function () {
-    function *gen() {
-        yield yield 20;
-        yield 42;
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(0), { value: 20, done: false });
-        shouldThrow(() =&gt; g.throw(20), `20`);
-        shouldThrow(() =&gt; g.throw(20), `20`);
-        shouldBeIteratorResult(g.next(42), { value: undefined, done: true });
-        shouldBeIteratorResult(g.return(42), { value: 42, done: true });
-    }
-    {
-        let g = gen();
-        shouldThrow(() =&gt; g.throw(42), `42`);
-        shouldBeIteratorResult(g.next(42), { value: undefined, done: true });
-        shouldBeIteratorResult(g.return(42), { value: 42, done: true });
-        shouldThrow(() =&gt; g.throw(42), `42`);
-    }
-}());
-
-(function () {
-    function *gen() {
-        return 42;
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(), { value: 42, done: true });
-        shouldThrow(() =&gt; g.throw(0), `0`);
-    }
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-        shouldBeIteratorResult(g.next(), { value: undefined, done: true });
-        shouldThrow(() =&gt; g.throw(42), `42`);
-    }
-}());
-
-(function () {
-    function *gen() {
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(), { value: undefined, done: true });
-        shouldThrow(() =&gt; g.throw(0), `0`);
-    }
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.return(0), { value: 0, done: true });
-        shouldBeIteratorResult(g.next(), { value: undefined, done: true });
-        shouldThrow(() =&gt; g.throw(42), `42`);
-    }
-}());
-
-(function () {
-    let site = new CallSite();
-    function *gen() {
-        try {
-            yield 42;
-        } catch (e) {
-            shouldBe(e, 0);
-            site.call();
-        }
-        return 42;
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(), { value: 42, done: false });
-        shouldBeIteratorResult(g.throw(0), { value: 42, done: true });
-        shouldBe(site.count, 1);
-    }
-}());
-
-(function () {
-    function *gen() {
-        try {
-            yield 42;
-        } finally {
-            return 42;
-        }
-    }
-
-    {
-        let g = gen();
-        shouldBeIteratorResult(g.next(), { value: 42, done: false });
-        shouldBeIteratorResult(g.throw(0), { value: 42, done: true });
-        shouldThrow(() =&gt; g.throw(0), `0`);
-    }
-}());
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorwithnewtargetjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-with-new-target.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-with-new-target.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-with-new-target.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,15 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-function *gen()
-{
-    yield new.target;
-}
-
-var g = gen();
-shouldBe(g.next().value, undefined);
-
-var g2 = new gen();
-shouldBe(g.next().value, undefined);
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratorwithsuperjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-with-super.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-with-super.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-with-super.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,82 +0,0 @@
</span><del>-function shouldThrow(func, errorMessage) {
-    var errorThrown = false;
-    var error = null;
-    try {
-        func();
-    } catch (e) {
-        errorThrown = true;
-        error = e;
-    }
-    if (!errorThrown)
-        throw new Error('not thrown');
-    if (String(error) !== errorMessage)
-        throw new Error(`bad error: ${String(error)}`);
-}
-
-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-(function () {
-    function test() {
-        return eval('super');
-    }
-
-    shouldThrow(() =&gt; test(), `SyntaxError: super is only valid inside functions.`);
-}());
-
-(function () {
-    class B {
-        gen() {
-            return 42;
-        }
-    }
-
-    class A extends B {
-        *gen() {
-            return eval('super.gen()');
-        }
-    }
-
-    let a = new A();
-    shouldThrow(() =&gt; {
-        a.gen().next();
-    }, `SyntaxError: super is only valid inside functions.`);
-}());
-
-(function () {
-    class B {
-        gen() {
-            return 42;
-        }
-    }
-
-    class A extends B {
-        *gen() {
-            yield super.gen();
-        }
-    }
-
-    let a = new A();
-    shouldBe(a.gen().next().value, 42);
-}());
-
-(function () {
-    class B {
-        gen() {
-            return 42;
-        }
-    }
-
-    class A extends B {
-        *gen() {
-            yield super.gen();
-        }
-    }
-
-    let a = new A();
-    shouldThrow(() =&gt; {
-        new a.gen();
-    }, `TypeError: function is not a constructor (evaluating 'new a.gen()')`);
-}());
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoretestsstressgeneratoryieldstarjs"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/tests/stress/generator-yield-star.js (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tests/stress/generator-yield-star.js        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/JavaScriptCore/tests/stress/generator-yield-star.js        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,326 +0,0 @@
</span><del>-function shouldBe(actual, expected) {
-    if (actual !== expected)
-        throw new Error('bad value: ' + actual);
-}
-
-function shouldThrow(func, errorMessage) {
-    var errorThrown = false;
-    var error = null;
-    try {
-        func();
-    } catch (e) {
-        errorThrown = true;
-        error = e;
-    }
-    if (!errorThrown)
-        throw new Error('not thrown');
-    if (String(error) !== errorMessage)
-        throw new Error(`bad error: ${String(error)}`);
-}
-
-class CallSite {
-    constructor()
-    {
-        this.count = 0;
-    }
-
-    call()
-    {
-        return this.count++;
-    }
-}
-
-(function () {
-    class Arrays {
-        constructor()
-        {
-            this.first = [ 0, 1, 2, 3 ];
-            this.second = [ 4, 5, 6, 7 ];
-        }
-
-        *[Symbol.iterator]()
-        {
-            yield * this.first;
-            yield * this.second;
-        }
-    }
-
-    var arrays = new Arrays;
-    let i = 0;
-    for (let value of arrays)
-        shouldBe(i++, value);
-}());
-
-(function () {
-    // throw should be propagated.
-    let c1 = new CallSite;
-    class Iterator {
-        next(value)
-        {
-            return { value, done: false };
-        }
-
-        'throw'(value) {
-            shouldBe(value, 42);
-            c1.call();
-            throw new Error(&quot;OK&quot;);
-        }
-
-        [Symbol.iterator]()
-        {
-            return this;
-        }
-    }
-
-    function *gen()
-    {
-        let iter = new Iterator();
-        yield * iter;
-    }
-
-    let g = gen();
-    shouldBe(g.next(0).value, undefined);
-    shouldBe(g.next(1).value, 1);
-    shouldBe(g.next(2).value, 2);
-    shouldThrow(() =&gt; {
-        g.throw(42);
-    }, `Error: OK`);
-    shouldThrow(() =&gt; {
-        g.throw(44);
-    }, `44`);
-    shouldBe(c1.count, 1);
-}());
-
-(function () {
-    // No `throw` method.
-    let c1 = new CallSite;
-    class Iterator {
-        next(value)
-        {
-            return { value, done: false };
-        }
-
-        'return'(value)
-        {
-            shouldBe(value, undefined);
-            c1.call();
-            return { value, done: true };
-        }
-
-        [Symbol.iterator]()
-        {
-            return this;
-        }
-    }
-
-    function *gen()
-    {
-        let iter = new Iterator();
-        yield * iter;
-    }
-
-    let g = gen();
-    shouldBe(g.next(0).value, undefined);
-    shouldBe(g.next(1).value, 1);
-    shouldBe(g.next(2).value, 2);
-    shouldThrow(() =&gt; {
-        g.throw(42);
-    }, `TypeError: Delegated generator does not have a 'throw' method.`);
-    shouldThrow(() =&gt; {
-        g.throw(44);
-    }, `44`);
-    shouldBe(c1.count, 1);
-}());
-
-(function () {
-    // No `throw` method, `return` returns an incorrect result.
-    let c1 = new CallSite;
-    class Iterator {
-        next(value)
-        {
-            return { value, done: false };
-        }
-
-        'return'(value)
-        {
-            shouldBe(value, undefined);
-            c1.call();
-        }
-
-        [Symbol.iterator]()
-        {
-            return this;
-        }
-    }
-
-    function *gen()
-    {
-        let iter = new Iterator();
-        yield * iter;
-    }
-
-    let g = gen();
-    shouldBe(g.next(0).value, undefined);
-    shouldBe(g.next(1).value, 1);
-    shouldBe(g.next(2).value, 2);
-    shouldThrow(() =&gt; {
-        g.throw(42);
-    }, `TypeError: Iterator result interface is not an object.`);
-    shouldThrow(() =&gt; {
-        g.throw(44);
-    }, `44`);
-    shouldBe(c1.count, 1);
-}());
-
-(function () {
-    // No `throw` method, No `return` method.
-    class Iterator {
-        next(value)
-        {
-            return { value, done: false };
-        }
-
-        [Symbol.iterator]()
-        {
-            return this;
-        }
-    }
-
-    function *gen()
-    {
-        let iter = new Iterator();
-        yield * iter;
-    }
-
-    let g = gen();
-    shouldBe(g.next(0).value, undefined);
-    shouldBe(g.next(1).value, 1);
-    shouldBe(g.next(2).value, 2);
-    shouldThrow(() =&gt; {
-        g.throw(42);
-    }, `TypeError: Delegated generator does not have a 'throw' method.`);
-    shouldThrow(() =&gt; {
-        g.throw(44);
-    }, `44`);
-}());
-
-
-(function () {
-    // `throw` does not throw. Not returns a object.
-    class Iterator {
-        next(value)
-        {
-            return { value, done: false };
-        }
-
-        'throw'(value)
-        {
-        }
-
-        [Symbol.iterator]()
-        {
-            return this;
-        }
-    }
-
-    function *gen()
-    {
-        let iter = new Iterator();
-        yield * iter;
-    }
-
-    let g = gen();
-    shouldBe(g.next(0).value, undefined);
-    shouldBe(g.next(1).value, 1);
-    shouldBe(g.next(2).value, 2);
-    shouldThrow(() =&gt; {
-        g.throw(42);
-    }, `TypeError: Iterator result interface is not an object.`);
-    shouldThrow(() =&gt; {
-        g.throw(44);
-    }, `44`);
-}());
-
-(function () {
-    // `throw` does not throw. If returned iterator result is marked as done, it becomes `return`.
-    class Iterator {
-        next(value)
-        {
-            return { value, done: false };
-        }
-
-        'throw'(value)
-        {
-            return { value, done: true };
-        }
-
-        [Symbol.iterator]()
-        {
-            return this;
-        }
-    }
-
-    function *gen()
-    {
-        let iter = new Iterator();
-        yield * iter;
-    }
-
-    let g = gen();
-    shouldBe(g.next(0).value, undefined);
-    shouldBe(g.next(1).value, 1);
-    shouldBe(g.next(2).value, 2);
-    shouldBe(g.throw(42).value, 42);
-    shouldThrow(() =&gt; {
-        g.throw(44);
-    }, `44`);
-}());
-
-(function () {
-    // `return` returns done: false.
-    class Iterator {
-        next(value)
-        {
-            return { value, done: false };
-        }
-
-        'return'(value)
-        {
-            return { value, done: false };
-        }
-
-        [Symbol.iterator]()
-        {
-            return this;
-        }
-    }
-
-    function *gen()
-    {
-        let iter = new Iterator();
-        let result = yield * iter;
-        yield result;
-        yield 42;
-    }
-
-    let g = gen();
-    shouldBe(g.next(0).value, undefined);
-    shouldBe(g.next(1).value, 1);
-    shouldBe(g.next(2).value, 2);
-    shouldBe(g.return(42).value, 42);
-    shouldBe(g.return(42).done, false);
-}());
-
-(function () {
-    function *gen()
-    {
-        let result = yield * [ 0, 1, 2 ];
-        yield result;
-    }
-
-    let g = gen();
-    shouldBe(g.next().value, 0);
-    shouldBe(g.next().value, 1);
-    shouldBe(g.next().value, 2);
-    shouldBe(g.next().value, undefined);
-}());
</del></span></pre></div>
<a id="trunkSourceWTFChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/ChangeLog (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/ChangeLog        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/WTF/ChangeLog        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-12-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r192914.
+        https://bugs.webkit.org/show_bug.cgi?id=151734
+
+        JSC tests for this change are failing on 32 and 64-bit bots
+        (Requested by ryanhaddad on #webkit).
+
+        Reverted changeset:
+
+        &quot;[ES6] Implement LLInt/Baseline Support for ES6 Generators and
+        enable this feature&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=150792
+        http://trac.webkit.org/changeset/192914
+
</ins><span class="cx"> 2015-12-01  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Give String and AtomicString an existingHash() function
</span></span></pre></div>
<a id="trunkSourceWTFwtfFastBitVectorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/FastBitVector.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/FastBitVector.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/WTF/wtf/FastBitVector.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -181,7 +181,7 @@
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     template&lt;typename Functor&gt;
</span><del>-    void forEachSetBit(const Functor&amp; functor) const
</del><ins>+    void forEachSetBit(const Functor&amp; functor)
</ins><span class="cx">     {
</span><span class="cx">         unsigned n = arrayLength();
</span><span class="cx">         for (unsigned i = 0; i &lt; n; ++i) {
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><del>-
</del><ins>+    
</ins><span class="cx">     WTF_EXPORT_PRIVATE void dump(PrintStream&amp;) const;
</span><span class="cx">     
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWTFwtfFeatureDefinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WTF/wtf/FeatureDefines.h (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WTF/wtf/FeatureDefines.h        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/WTF/wtf/FeatureDefines.h        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -364,7 +364,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if !defined(ENABLE_ES6_CLASS_SYNTAX)
</span><del>-#define ENABLE_ES6_GENERATORS 1
</del><ins>+#define ENABLE_ES6_GENERATORS 0
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if !defined(ENABLE_ES6_MODULES)
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/WebCore/ChangeLog        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-12-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r192914.
+        https://bugs.webkit.org/show_bug.cgi?id=151734
+
+        JSC tests for this change are failing on 32 and 64-bit bots
+        (Requested by ryanhaddad on #webkit).
+
+        Reverted changeset:
+
+        &quot;[ES6] Implement LLInt/Baseline Support for ES6 Generators and
+        enable this feature&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=150792
+        http://trac.webkit.org/changeset/192914
+
</ins><span class="cx"> 2015-12-01  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [SVG -&gt; OTF Converter] Force UnitsPerEm to 1000
</span></span></pre></div>
<a id="trunkSourceWebCoreConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
</span><span class="cx"> ENABLE_ES6_ARROWFUNCTION_SYNTAX = ENABLE_ES6_ARROWFUNCTION_SYNTAX;
</span><span class="cx"> ENABLE_ES6_CLASS_SYNTAX = ENABLE_ES6_CLASS_SYNTAX;
</span><del>-ENABLE_ES6_GENERATORS = ENABLE_ES6_GENERATORS;
</del><ins>+ENABLE_ES6_GENERATORS = ;
</ins><span class="cx"> ENABLE_ES6_MODULES = ;
</span><span class="cx"> ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX = ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX;
</span><span class="cx"> ENABLE_CONTENT_FILTERING = ENABLE_CONTENT_FILTERING;
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/WebKit/mac/ChangeLog        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-12-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r192914.
+        https://bugs.webkit.org/show_bug.cgi?id=151734
+
+        JSC tests for this change are failing on 32 and 64-bit bots
+        (Requested by ryanhaddad on #webkit).
+
+        Reverted changeset:
+
+        &quot;[ES6] Implement LLInt/Baseline Support for ES6 Generators and
+        enable this feature&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=150792
+        http://trac.webkit.org/changeset/192914
+
</ins><span class="cx"> 2015-12-01  Yusuke Suzuki  &lt;utatane.tea@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
</span></span></pre></div>
<a id="trunkSourceWebKitmacConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
</span><span class="cx"> ENABLE_ES6_ARROWFUNCTION_SYNTAX = ENABLE_ES6_ARROWFUNCTION_SYNTAX;
</span><span class="cx"> ENABLE_ES6_CLASS_SYNTAX = ENABLE_ES6_CLASS_SYNTAX;
</span><del>-ENABLE_ES6_GENERATORS = ENABLE_ES6_GENERATORS;
</del><ins>+ENABLE_ES6_GENERATORS = ;
</ins><span class="cx"> ENABLE_ES6_MODULES = ;
</span><span class="cx"> ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX = ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX;
</span><span class="cx"> ENABLE_CONTENT_FILTERING = ENABLE_CONTENT_FILTERING;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/WebKit2/ChangeLog        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-12-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r192914.
+        https://bugs.webkit.org/show_bug.cgi?id=151734
+
+        JSC tests for this change are failing on 32 and 64-bit bots
+        (Requested by ryanhaddad on #webkit).
+
+        Reverted changeset:
+
+        &quot;[ES6] Implement LLInt/Baseline Support for ES6 Generators and
+        enable this feature&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=150792
+        http://trac.webkit.org/changeset/192914
+
</ins><span class="cx"> 2015-12-01  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove WKOriginDataManager
</span></span></pre></div>
<a id="trunkSourceWebKit2ConfigurationsFeatureDefinesxcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> ENABLE_CHANNEL_MESSAGING = ENABLE_CHANNEL_MESSAGING;
</span><span class="cx"> ENABLE_ES6_ARROWFUNCTION_SYNTAX = ENABLE_ES6_ARROWFUNCTION_SYNTAX;
</span><span class="cx"> ENABLE_ES6_CLASS_SYNTAX = ENABLE_ES6_CLASS_SYNTAX;
</span><del>-ENABLE_ES6_GENERATORS = ENABLE_ES6_GENERATORS;
</del><ins>+ENABLE_ES6_GENERATORS = ;
</ins><span class="cx"> ENABLE_ES6_MODULES = ;
</span><span class="cx"> ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX = ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX;
</span><span class="cx"> ENABLE_CONTENT_FILTERING = ENABLE_CONTENT_FILTERING;
</span></span></pre></div>
<a id="trunkSourcecmakeOptionsWincmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/OptionsWin.cmake (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/OptionsWin.cmake        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/cmake/OptionsWin.cmake        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DIRECTORY_UPLOAD PUBLIC OFF)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DOM4_EVENTS_CONSTRUCTOR PUBLIC ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT PUBLIC ON)
</span><del>-WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ES6_GENERATORS PUBLIC ON)
</del><ins>+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ES6_GENERATORS PUBLIC OFF)
</ins><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ES6_MODULES PUBLIC OFF)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX PUBLIC ON)
</span><span class="cx"> WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FILE_SYSTEM PUBLIC OFF)
</span></span></pre></div>
<a id="trunkSourcecmakeWebKitFeaturescmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/cmake/WebKitFeatures.cmake (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/cmake/WebKitFeatures.cmake        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Source/cmake/WebKitFeatures.cmake        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx">     WEBKIT_OPTION_DEFINE(ENABLE_ENCRYPTED_MEDIA_V2 &quot;Support EME v2&quot; PRIVATE OFF)
</span><span class="cx">     WEBKIT_OPTION_DEFINE(ENABLE_ES6_ARROWFUNCTION_SYNTAX &quot;Toggle ES6 arrow function syntax support&quot; PRIVATE ON)
</span><span class="cx">     WEBKIT_OPTION_DEFINE(ENABLE_ES6_CLASS_SYNTAX &quot;Toggle ES6 class syntax support&quot; PRIVATE ON)
</span><del>-    WEBKIT_OPTION_DEFINE(ENABLE_ES6_GENERATORS &quot;Toggle ES6 generators support&quot; PRIVATE ON)
</del><ins>+    WEBKIT_OPTION_DEFINE(ENABLE_ES6_GENERATORS &quot;Toggle ES6 generators support&quot; PRIVATE OFF)
</ins><span class="cx">     WEBKIT_OPTION_DEFINE(ENABLE_ES6_MODULES &quot;Toggle ES6 modules support&quot; PRIVATE OFF)
</span><span class="cx">     WEBKIT_OPTION_DEFINE(ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX &quot;Toggle ES6 template literal syntax support&quot; PRIVATE ON)
</span><span class="cx">     WEBKIT_OPTION_DEFINE(ENABLE_FILTERS_LEVEL_2 &quot;Toggle Filters Module Level 2&quot; PRIVATE OFF)
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Tools/ChangeLog        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-12-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r192914.
+        https://bugs.webkit.org/show_bug.cgi?id=151734
+
+        JSC tests for this change are failing on 32 and 64-bit bots
+        (Requested by ryanhaddad on #webkit).
+
+        Reverted changeset:
+
+        &quot;[ES6] Implement LLInt/Baseline Support for ES6 Generators and
+        enable this feature&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=150792
+        http://trac.webkit.org/changeset/192914
+
</ins><span class="cx"> 2015-12-01  David Kilzer  &lt;ddkilzer@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         EventSenderProxy::swipeGestureWithWheelAndMomentumPhases() leaks an EventSenderSyntheticEvent
</span></span></pre></div>
<a id="trunkToolsScriptswebkitperlFeatureListpm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitperl/FeatureList.pm (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitperl/FeatureList.pm        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/Tools/Scripts/webkitperl/FeatureList.pm        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx">       define =&gt; &quot;ENABLE_ES6_CLASS_SYNTAX&quot;, default =&gt; 1, value =&gt; \$classSyntax },
</span><span class="cx"> 
</span><span class="cx">     { option =&gt; &quot;generators&quot;, desc =&gt; &quot;Toggle ES6 generators support&quot;,
</span><del>-      define =&gt; &quot;ENABLE_ES6_GENERATORS&quot;, default =&gt; 1, value =&gt; \$generatorsSupport },
</del><ins>+      define =&gt; &quot;ENABLE_ES6_GENERATORS&quot;, default =&gt; 0, value =&gt; \$generatorsSupport },
</ins><span class="cx"> 
</span><span class="cx">     { option =&gt; &quot;modules&quot;, desc =&gt; &quot;Toggle ES6 modules support&quot;,
</span><span class="cx">       define =&gt; &quot;ENABLE_ES6_MODULES&quot;, default =&gt; 0, value =&gt; \$modulesSupport },
</span></span></pre></div>
<a id="trunkWebKitLibrariesChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebKitLibraries/ChangeLog (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKitLibraries/ChangeLog        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/WebKitLibraries/ChangeLog        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2015-12-01  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r192914.
+        https://bugs.webkit.org/show_bug.cgi?id=151734
+
+        JSC tests for this change are failing on 32 and 64-bit bots
+        (Requested by ryanhaddad on #webkit).
+
+        Reverted changeset:
+
+        &quot;[ES6] Implement LLInt/Baseline Support for ES6 Generators and
+        enable this feature&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=150792
+        http://trac.webkit.org/changeset/192914
+
</ins><span class="cx"> 2015-12-01  Yusuke Suzuki  &lt;utatane.tea@gmail.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [ES6] Implement LLInt/Baseline Support for ES6 Generators and enable this feature
</span></span></pre></div>
<a id="trunkWebKitLibrarieswintoolsvspropsFeatureDefinesprops"></a>
<div class="modfile"><h4>Modified: trunk/WebKitLibraries/win/tools/vsprops/FeatureDefines.props (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKitLibraries/win/tools/vsprops/FeatureDefines.props        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/WebKitLibraries/win/tools/vsprops/FeatureDefines.props        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx">     &lt;ENABLE_DIRECTORY_UPLOAD /&gt;
</span><span class="cx">     &lt;ENABLE_DOM4_EVENTS_CONSTRUCTOR&gt;ENABLE_DOM4_EVENTS_CONSTRUCTOR&lt;/ENABLE_DOM4_EVENTS_CONSTRUCTOR&gt;
</span><span class="cx">     &lt;ENABLE_ENCRYPTED_MEDIA_V2&gt;ENABLE_ENCRYPTED_MEDIA_V2&lt;/ENABLE_ENCRYPTED_MEDIA_V2&gt;
</span><del>-    &lt;ENABLE_ES6_GENERATORS&gt;ENABLE_ES6_GENERATORS&lt;/ENABLE_ES6_GENERATORS&gt;
</del><ins>+    &lt;ENABLE_ES6_GENERATORS /&gt;
</ins><span class="cx">     &lt;ENABLE_ES6_MODULES /&gt;
</span><span class="cx">     &lt;ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX&gt;ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX&lt;/ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX&gt;
</span><span class="cx">     &lt;ENABLE_FILE_SYSTEM /&gt;
</span></span></pre></div>
<a id="trunkWebKitLibrarieswintoolsvspropsFeatureDefinesCairoprops"></a>
<div class="modfile"><h4>Modified: trunk/WebKitLibraries/win/tools/vsprops/FeatureDefinesCairo.props (192934 => 192935)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebKitLibraries/win/tools/vsprops/FeatureDefinesCairo.props        2015-12-02 01:33:05 UTC (rev 192934)
+++ trunk/WebKitLibraries/win/tools/vsprops/FeatureDefinesCairo.props        2015-12-02 01:37:19 UTC (rev 192935)
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx">     &lt;ENABLE_DIRECTORY_UPLOAD /&gt;
</span><span class="cx">     &lt;ENABLE_DOM4_EVENTS_CONSTRUCTOR&gt;ENABLE_DOM4_EVENTS_CONSTRUCTOR&lt;/ENABLE_DOM4_EVENTS_CONSTRUCTOR&gt;
</span><span class="cx">     &lt;ENABLE_ENCRYPTED_MEDIA_V2 /&gt;
</span><del>-    &lt;ENABLE_ES6_GENERATORS&gt;ENABLE_ES6_GENERATORS&lt;/ENABLE_ES6_GENERATORS&gt;
</del><ins>+    &lt;ENABLE_ES6_GENERATORS /&gt;
</ins><span class="cx">     &lt;ENABLE_ES6_MODULES /&gt;
</span><span class="cx">     &lt;ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX&gt;ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX&lt;/ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX&gt;
</span><span class="cx">     &lt;ENABLE_FILE_SYSTEM /&gt;
</span></span></pre>
</div>
</div>

</body>
</html>