<!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>[191687] trunk/Source</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/191687">191687</a></dd>
<dt>Author</dt> <dd>bburg@apple.com</dd>
<dt>Date</dt> <dd>2015-10-28 13:00:36 -0700 (Wed, 28 Oct 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Builtins generator should emit ENABLE(FEATURE) guards based on @conditional annotation
https://bugs.webkit.org/show_bug.cgi?id=150536

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

Scan JS builtin files for @key=value and @flag annotations in single-line comments.
For @conditional=CONDITIONAL, emit CONDITIONAL guards around the relevant object's code.

Generate primary header includes separately from secondary header includes so we can
put the guard between the two header groups, as is customary in WebKit C++ code.

New tests:

Scripts/tests/builtins/WebCore-ArbitraryConditionalGuard-Separate.js
Scripts/tests/builtins/WebCore-DuplicateFlagAnnotation-Separate.js
Scripts/tests/builtins/WebCore-DuplicateKeyValueAnnotation-Separate.js

* Scripts/builtins/builtins_generate_combined_implementation.py:
(BuiltinsCombinedImplementationGenerator.generate_output):
(BuiltinsCombinedImplementationGenerator.generate_secondary_header_includes):
(BuiltinsCombinedImplementationGenerator.generate_header_includes): Deleted.
* Scripts/builtins/builtins_generate_separate_header.py:
(BuiltinsSeparateHeaderGenerator.generate_output):
(generate_secondary_header_includes):
(generate_header_includes): Deleted.
* Scripts/builtins/builtins_generate_separate_implementation.py:
(BuiltinsSeparateImplementationGenerator.generate_output):
(BuiltinsSeparateImplementationGenerator.generate_secondary_header_includes):
(BuiltinsSeparateImplementationGenerator.generate_header_includes): Deleted.
* Scripts/builtins/builtins_generate_separate_wrapper.py:
(BuiltinsSeparateWrapperGenerator.generate_output):
(BuiltinsSeparateWrapperGenerator.generate_secondary_header_includes):
(BuiltinsSeparateWrapperGenerator.generate_header_includes): Deleted.
* Scripts/builtins/builtins_generator.py:
(BuiltinsGenerator.generate_includes_from_entries):
(BuiltinsGenerator):
(BuiltinsGenerator.generate_primary_header_includes):
* Scripts/builtins/builtins_model.py:
(BuiltinObject.__init__):
(BuiltinsCollection.parse_builtins_file):
(BuiltinsCollection._parse_annotations):
* Scripts/tests/builtins/WebCore-ArbitraryConditionalGuard-Separate.js: Added.
* Scripts/tests/builtins/WebCore-DuplicateFlagAnnotation-Separate.js: Added.
* Scripts/tests/builtins/WebCore-DuplicateKeyValueAnnotation-Separate.js: Added.
* Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js: Simplify.
* Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js: Simplify.
* Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js: Simplify.
* Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result: Added.
* Scripts/tests/builtins/expected/WebCore-DuplicateFlagAnnotation-Separate.js-error: Added.
* Scripts/tests/builtins/expected/WebCore-DuplicateKeyValueAnnotation-Separate.js-error: Added.
* Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result:
* Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result:
* Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result:
* Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result:

Source/WebCore:

Replace @optional=FEATURE with @conditional=ENABLE(FEATURE) in builtins files.

* Modules/streams/ByteLengthQueuingStrategy.js:
* Modules/streams/CountQueuingStrategy.js:
* Modules/streams/ReadableStream.js:
* Modules/streams/ReadableStreamController.js:
* Modules/streams/ReadableStreamInternals.js:
* Modules/streams/ReadableStreamReader.js:
* Modules/streams/StreamInternals.js:
* Modules/streams/WritableStream.js:
* Modules/streams/WritableStreamInternals.js:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_combined_implementationpy">trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_separate_headerpy">trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_separate_implementationpy">trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_separate_wrapperpy">trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generatorpy">trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_modelpy">trunk/Source/JavaScriptCore/Scripts/builtins/builtins_model.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreGuardedBuiltinSeparatejs">trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreGuardedInternalBuiltinSeparatejs">trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreUnguardedBuiltinSeparatejs">trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCorexmlCasingTestSeparatejs">trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-xmlCasingTest-Separate.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreGuardedBuiltinSeparatejsresult">trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreGuardedInternalBuiltinSeparatejsresult">trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreUnguardedBuiltinSeparatejsresult">trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCorexmlCasingTestSeparatejsresult">trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsByteLengthQueuingStrategyjs">trunk/Source/WebCore/Modules/streams/ByteLengthQueuingStrategy.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsCountQueuingStrategyjs">trunk/Source/WebCore/Modules/streams/CountQueuingStrategy.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableStreamjs">trunk/Source/WebCore/Modules/streams/ReadableStream.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableStreamControllerjs">trunk/Source/WebCore/Modules/streams/ReadableStreamController.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableStreamInternalsjs">trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableStreamReaderjs">trunk/Source/WebCore/Modules/streams/ReadableStreamReader.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsStreamInternalsjs">trunk/Source/WebCore/Modules/streams/StreamInternals.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsWritableStreamjs">trunk/Source/WebCore/Modules/streams/WritableStream.js</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsWritableStreamInternalsjs">trunk/Source/WebCore/Modules/streams/WritableStreamInternals.js</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreArbitraryConditionalGuardSeparatejs">trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-ArbitraryConditionalGuard-Separate.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreDuplicateFlagAnnotationSeparatejs">trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-DuplicateFlagAnnotation-Separate.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreDuplicateKeyValueAnnotationSeparatejs">trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-DuplicateKeyValueAnnotation-Separate.js</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreArbitraryConditionalGuardSeparatejsresult">trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreDuplicateFlagAnnotationSeparatejserror">trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-DuplicateFlagAnnotation-Separate.js-error</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreDuplicateKeyValueAnnotationSeparatejserror">trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-DuplicateKeyValueAnnotation-Separate.js-error</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/ChangeLog        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -1,3 +1,60 @@
</span><ins>+2015-10-28  Brian Burg  &lt;bburg@apple.com&gt;
+
+        Builtins generator should emit ENABLE(FEATURE) guards based on @conditional annotation
+        https://bugs.webkit.org/show_bug.cgi?id=150536
+
+        Reviewed by Yusuke Suzuki.
+
+        Scan JS builtin files for @key=value and @flag annotations in single-line comments.
+        For @conditional=CONDITIONAL, emit CONDITIONAL guards around the relevant object's code.
+
+        Generate primary header includes separately from secondary header includes so we can
+        put the guard between the two header groups, as is customary in WebKit C++ code.
+
+        New tests:
+
+        Scripts/tests/builtins/WebCore-ArbitraryConditionalGuard-Separate.js
+        Scripts/tests/builtins/WebCore-DuplicateFlagAnnotation-Separate.js
+        Scripts/tests/builtins/WebCore-DuplicateKeyValueAnnotation-Separate.js
+
+        * Scripts/builtins/builtins_generate_combined_implementation.py:
+        (BuiltinsCombinedImplementationGenerator.generate_output):
+        (BuiltinsCombinedImplementationGenerator.generate_secondary_header_includes):
+        (BuiltinsCombinedImplementationGenerator.generate_header_includes): Deleted.
+        * Scripts/builtins/builtins_generate_separate_header.py:
+        (BuiltinsSeparateHeaderGenerator.generate_output):
+        (generate_secondary_header_includes):
+        (generate_header_includes): Deleted.
+        * Scripts/builtins/builtins_generate_separate_implementation.py:
+        (BuiltinsSeparateImplementationGenerator.generate_output):
+        (BuiltinsSeparateImplementationGenerator.generate_secondary_header_includes):
+        (BuiltinsSeparateImplementationGenerator.generate_header_includes): Deleted.
+        * Scripts/builtins/builtins_generate_separate_wrapper.py:
+        (BuiltinsSeparateWrapperGenerator.generate_output):
+        (BuiltinsSeparateWrapperGenerator.generate_secondary_header_includes):
+        (BuiltinsSeparateWrapperGenerator.generate_header_includes): Deleted.
+        * Scripts/builtins/builtins_generator.py:
+        (BuiltinsGenerator.generate_includes_from_entries):
+        (BuiltinsGenerator):
+        (BuiltinsGenerator.generate_primary_header_includes):
+        * Scripts/builtins/builtins_model.py:
+        (BuiltinObject.__init__):
+        (BuiltinsCollection.parse_builtins_file):
+        (BuiltinsCollection._parse_annotations):
+        * Scripts/tests/builtins/WebCore-ArbitraryConditionalGuard-Separate.js: Added.
+        * Scripts/tests/builtins/WebCore-DuplicateFlagAnnotation-Separate.js: Added.
+        * Scripts/tests/builtins/WebCore-DuplicateKeyValueAnnotation-Separate.js: Added.
+        * Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js: Simplify.
+        * Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js: Simplify.
+        * Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js: Simplify.
+        * Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result: Added.
+        * Scripts/tests/builtins/expected/WebCore-DuplicateFlagAnnotation-Separate.js-error: Added.
+        * Scripts/tests/builtins/expected/WebCore-DuplicateKeyValueAnnotation-Separate.js-error: Added.
+        * Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result:
+        * Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result:
+        * Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result:
+        * Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result:
+
</ins><span class="cx"> 2015-10-28  Mark Lam  &lt;mark.lam@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Update FTL to support UntypedUse operands for op_sub.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_combined_implementationpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -53,7 +53,8 @@
</span><span class="cx">         sections = []
</span><span class="cx">         sections.append(self.generate_license())
</span><span class="cx">         sections.append(Template(Templates.DoNotEditWarning).substitute(args))
</span><del>-        sections.append(self.generate_header_includes())
</del><ins>+        sections.append(self.generate_primary_header_includes())
+        sections.append(self.generate_secondary_header_includes())
</ins><span class="cx">         sections.append(Template(Templates.NamespaceTop).substitute(args))
</span><span class="cx">         for function in self.model().all_functions():
</span><span class="cx">             sections.append(self.generate_embedded_code_string_section_for_function(function))
</span><span class="lines">@@ -65,7 +66,7 @@
</span><span class="cx"> 
</span><span class="cx">         return &quot;\n\n&quot;.join(sections)
</span><span class="cx"> 
</span><del>-    def generate_header_includes(self):
</del><ins>+    def generate_secondary_header_includes(self):
</ins><span class="cx">         header_includes = [
</span><span class="cx">             ([&quot;JavaScriptCore&quot;],
</span><span class="cx">                 (&quot;JavaScriptCore&quot;, &quot;builtins/BuiltinExecutables.h&quot;),
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_separate_headerpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -55,11 +55,15 @@
</span><span class="cx">             'objectName': self.object.object_name.upper(),
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        conditional_guard = self.object.annotations.get('conditional')
+
</ins><span class="cx">         sections = []
</span><span class="cx">         sections.append(self.generate_license())
</span><span class="cx">         sections.append(Template(Templates.DoNotEditWarning).substitute(args))
</span><span class="cx">         sections.append(Template(Templates.HeaderIncludeGuardTop).substitute(args))
</span><del>-        sections.append(self.generate_header_includes())
</del><ins>+        if conditional_guard is not None:
+            sections.append(&quot;#if %s&quot; % conditional_guard)
+        sections.append(self.generate_secondary_header_includes())
</ins><span class="cx">         sections.append(self.generate_forward_declarations())
</span><span class="cx">         sections.append(Template(Templates.NamespaceTop).substitute(args))
</span><span class="cx">         sections.append(self.generate_section_for_object(self.object))
</span><span class="lines">@@ -67,6 +71,8 @@
</span><span class="cx">         sections.append(self.generate_section_for_code_name_macro())
</span><span class="cx">         sections.append(Template(Templates.SeparateHeaderStaticMacros).substitute(args))
</span><span class="cx">         sections.append(Template(Templates.NamespaceBottom).substitute(args))
</span><ins>+        if conditional_guard is not None:
+            sections.append(&quot;#endif // %s&quot; % conditional_guard)
</ins><span class="cx">         sections.append(Template(Templates.HeaderIncludeGuardBottom).substitute(args))
</span><span class="cx"> 
</span><span class="cx">         return &quot;\n\n&quot;.join(sections)
</span><span class="lines">@@ -76,7 +82,7 @@
</span><span class="cx"> class FunctionExecutable;
</span><span class="cx"> }&quot;&quot;&quot;
</span><span class="cx"> 
</span><del>-    def generate_header_includes(self):
</del><ins>+    def generate_secondary_header_includes(self):
</ins><span class="cx">         header_includes = [
</span><span class="cx">             ([&quot;WebCore&quot;],
</span><span class="cx">                 (&quot;JavaScriptCore&quot;, &quot;builtins/BuiltinUtils.h&quot;),
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_separate_implementationpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -56,10 +56,15 @@
</span><span class="cx">             'objectNameLC': WK_lcfirst(self.object.object_name),
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        conditional_guard = self.object.annotations.get('conditional')
+
</ins><span class="cx">         sections = []
</span><span class="cx">         sections.append(self.generate_license())
</span><span class="cx">         sections.append(Template(Templates.DoNotEditWarning).substitute(args))
</span><del>-        sections.append(self.generate_header_includes())
</del><ins>+        sections.append(self.generate_primary_header_includes())
+        if conditional_guard is not None:
+            sections.append(&quot;#if %s&quot; % conditional_guard)
+        sections.append(self.generate_secondary_header_includes())
</ins><span class="cx">         sections.append(Template(Templates.NamespaceTop).substitute(args))
</span><span class="cx">         for function in self.object.functions:
</span><span class="cx">             sections.append(self.generate_embedded_code_string_section_for_function(function))
</span><span class="lines">@@ -68,10 +73,12 @@
</span><span class="cx">         elif self.model().framework is Frameworks.WebCore:
</span><span class="cx">             sections.append(Template(Templates.SeparateWebCoreImplementationStaticMacros).substitute(args))
</span><span class="cx">         sections.append(Template(Templates.NamespaceBottom).substitute(args))
</span><ins>+        if conditional_guard is not None:
+            sections.append(&quot;#endif // %s\n&quot; % conditional_guard)
</ins><span class="cx"> 
</span><span class="cx">         return &quot;\n\n&quot;.join(sections)
</span><span class="cx"> 
</span><del>-    def generate_header_includes(self):
</del><ins>+    def generate_secondary_header_includes(self):
</ins><span class="cx">         header_includes = [
</span><span class="cx">             ([&quot;JavaScriptCore&quot;],
</span><span class="cx">                 (&quot;JavaScriptCore&quot;, &quot;builtins/BuiltinExecutables.h&quot;),
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_separate_wrapperpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_wrapper.py        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -56,19 +56,25 @@
</span><span class="cx">             'objectMacro': self.object.object_name.upper(),
</span><span class="cx">         }
</span><span class="cx"> 
</span><ins>+        conditional_guard = self.object.annotations.get('conditional')
+
</ins><span class="cx">         sections = []
</span><span class="cx">         sections.append(self.generate_license())
</span><span class="cx">         sections.append(Template(Templates.DoNotEditWarning).substitute(args))
</span><span class="cx">         sections.append(Template(Templates.HeaderIncludeGuardTop).substitute(args))
</span><del>-        sections.append(self.generate_header_includes())
</del><ins>+        if conditional_guard is not None:
+            sections.append(&quot;#if %s&quot; % conditional_guard)
+        sections.append(self.generate_secondary_header_includes())
</ins><span class="cx">         sections.append(Template(Templates.NamespaceTop).substitute(args))
</span><span class="cx">         sections.append(Template(Templates.SeparateWrapperHeaderBoilerplate).substitute(args))
</span><span class="cx">         sections.append(Template(Templates.NamespaceBottom).substitute(args))
</span><ins>+        if conditional_guard is not None:
+            sections.append(&quot;#endif // %s&quot; % conditional_guard)
</ins><span class="cx">         sections.append(Template(Templates.HeaderIncludeGuardBottom).substitute(args))
</span><span class="cx"> 
</span><span class="cx">         return &quot;\n\n&quot;.join(sections)
</span><span class="cx"> 
</span><del>-    def generate_header_includes(self):
</del><ins>+    def generate_secondary_header_includes(self):
</ins><span class="cx">         header_includes = [
</span><span class="cx">             ([&quot;WebCore&quot;],
</span><span class="cx">                 (&quot;WebCore&quot;, &quot;%sBuiltins.h&quot; % self.object.object_name),
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generatorpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generator.py        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -101,17 +101,14 @@
</span><span class="cx">             else:
</span><span class="cx">                 includes.add(&quot;#include \&quot;%s\&quot;&quot; % os.path.basename(header_path))
</span><span class="cx"> 
</span><del>-        sorted_includes = sorted(list(includes))
-        # Always include config.h and the counterpart header before other headers.
-        name, ext = os.path.splitext(self.output_filename())
-        if ext != '.h':
-            sorted_includes[:0] = [
-                &quot;#include \&quot;config.h\&quot;&quot;,
-                &quot;#include \&quot;%s.h\&quot;&quot; % name,
-                &quot;&quot;,
-            ]
</del><ins>+        return sorted(list(includes))
</ins><span class="cx"> 
</span><del>-        return sorted_includes
</del><ins>+    def generate_primary_header_includes(self):
+        name, _ = os.path.splitext(self.output_filename())
+        return '\n'.join([
+            &quot;#include \&quot;config.h\&quot;&quot;,
+            &quot;#include \&quot;%s.h\&quot;&quot; % name,
+        ])
</ins><span class="cx"> 
</span><span class="cx">     def generate_embedded_code_string_section_for_function(self, function):
</span><span class="cx">         text = function.function_source
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_modelpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/builtins/builtins_model.py (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/builtins/builtins_model.py        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/builtins/builtins_model.py        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -47,8 +47,9 @@
</span><span class="cx"> 
</span><span class="cx"> multilineCommentRegExp = re.compile(r&quot;\/\*.*?\*\/&quot;, re.MULTILINE | re.S)
</span><span class="cx"> singleLineCommentRegExp = re.compile(r&quot;\/\/.*?\n&quot;, re.MULTILINE | re.S)
</span><ins>+keyValueAnnotationCommentRegExp = re.compile(r&quot;^\/\/ @(\w+)=([^=]+?)\n&quot;, re.MULTILINE | re.S)
+flagAnnotationCommentRegExp = re.compile(r&quot;^\/\/ @(\w+)[^=]*?\n&quot;, re.MULTILINE | re.S)
</ins><span class="cx"> 
</span><del>-
</del><span class="cx"> class ParseException(Exception):
</span><span class="cx">     pass
</span><span class="cx"> 
</span><span class="lines">@@ -78,8 +79,9 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> class BuiltinObject:
</span><del>-    def __init__(self, object_name, functions):
</del><ins>+    def __init__(self, object_name, annotations, functions):
</ins><span class="cx">         self.object_name = object_name
</span><ins>+        self.annotations = annotations
</ins><span class="cx">         self.functions = functions
</span><span class="cx">         self.collection = None  # Set by the owning BuiltinsCollection
</span><span class="cx"> 
</span><span class="lines">@@ -132,6 +134,8 @@
</span><span class="cx">             log.debug(line)
</span><span class="cx">         log.debug(&quot;&quot;)
</span><span class="cx"> 
</span><ins>+        object_annotations = self._parse_annotations(text)
+
</ins><span class="cx">         object_name, ext = os.path.splitext(os.path.basename(filename))
</span><span class="cx">         log.debug(&quot;Parsing object: %s&quot; % object_name)
</span><span class="cx"> 
</span><span class="lines">@@ -144,7 +148,7 @@
</span><span class="cx">             log.debug(func)
</span><span class="cx">         log.debug(&quot;&quot;)
</span><span class="cx"> 
</span><del>-        new_object = BuiltinObject(object_name, parsed_functions)
</del><ins>+        new_object = BuiltinObject(object_name, object_annotations, parsed_functions)
</ins><span class="cx">         new_object.collection = self
</span><span class="cx">         self.objects.append(new_object)
</span><span class="cx"> 
</span><span class="lines">@@ -205,6 +209,27 @@
</span><span class="cx"> 
</span><span class="cx">         return copyrightLines
</span><span class="cx"> 
</span><ins>+    def _parse_annotations(self, text):
+        annotations = {}
+
+        for match in keyValueAnnotationCommentRegExp.finditer(text):
+            (key, value) = match.group(1, 2)
+            log.debug(&quot;Found annotation: '%s' =&gt; '%s'&quot; % (key, value))
+            if key in annotations:
+                raise ParseException(&quot;Duplicate annotation found: %s&quot; % key)
+
+            annotations[key] = value
+
+        for match in flagAnnotationCommentRegExp.finditer(text):
+            key = match.group(1)
+            log.debug(&quot;Found annotation: '%s' =&gt; 'TRUE'&quot; % key)
+            if key in annotations:
+                raise ParseException(&quot;Duplicate annotation found: %s&quot; % key)
+
+            annotations[key] = True
+
+        return annotations
+
</ins><span class="cx">     def _parse_functions(self, text):
</span><span class="cx">         text = multilineCommentRegExp.sub(&quot;/**/&quot;, singleLineCommentRegExp.sub(&quot;//\n&quot;, text))
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreArbitraryConditionalGuardSeparatejsfromrev191686trunkSourceWebCoreModulesstreamsCountQueuingStrategyjs"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-ArbitraryConditionalGuard-Separate.js (from rev 191686, trunk/Source/WebCore/Modules/streams/CountQueuingStrategy.js) (0 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-ArbitraryConditionalGuard-Separate.js                                (rev 0)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-ArbitraryConditionalGuard-Separate.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+/*
+ * Copyright (C) 2015 Canon Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// @conditional=ENABLE(STREAMS_API) || USE(CF)
+
+function isReadableStreamLocked(stream)
+{
+   &quot;use strict&quot;;
+
+    return !!stream.@reader;
+}
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreDuplicateFlagAnnotationSeparatejsfromrev191686trunkSourceWebCoreModulesstreamsCountQueuingStrategyjs"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-DuplicateFlagAnnotation-Separate.js (from rev 191686, trunk/Source/WebCore/Modules/streams/CountQueuingStrategy.js) (0 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-DuplicateFlagAnnotation-Separate.js                                (rev 0)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-DuplicateFlagAnnotation-Separate.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+/*
+ * Copyright (C) 2015 Canon Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// @internal
+// @internal
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreDuplicateKeyValueAnnotationSeparatejsfromrev191686trunkSourceWebCoreModulesstreamsCountQueuingStrategyjs"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-DuplicateKeyValueAnnotation-Separate.js (from rev 191686, trunk/Source/WebCore/Modules/streams/CountQueuingStrategy.js) (0 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-DuplicateKeyValueAnnotation-Separate.js                                (rev 0)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-DuplicateKeyValueAnnotation-Separate.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+/*
+ * Copyright (C) 2015 Canon Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// @conditional=ENABLE(STREAMS_API)
+// @conditional=USE(CF)
+
+function isReadableStreamLocked(stream)
+{
+   &quot;use strict&quot;;
+
+    return !!stream.@reader;
+}
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreGuardedBuiltinSeparatejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-GuardedBuiltin-Separate.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> 
</span><span class="cx"> function isReadableStreamLocked(stream)
</span><span class="cx"> {
</span><span class="lines">@@ -31,34 +31,3 @@
</span><span class="cx"> 
</span><span class="cx">     return !!stream.@reader;
</span><span class="cx"> }
</span><del>-
-
-function cancelReadableStream(stream, reason)
-{
-    &quot;use strict&quot;;
-
-    if (stream.@state === @readableStreamClosed)
-        return Promise.resolve();
-    if (stream.@state === @readableStreamErrored)
-        return Promise.reject(stream.@storedError);
-    stream.@queue = [];
-    @finishClosingReadableStream(stream);
-    return @promiseInvokeOrNoop(stream.@underlyingSource, &quot;cancel&quot;, [reason]).then(function() { });
-}
-
-
-function promiseInvokeOrNoop(object, key, args)
-{
-    &quot;use strict&quot;;
-
-    try {
-        var method = object[key];
-        if (typeof method === &quot;undefined&quot;)
-            return Promise.resolve();
-        var result = method.@apply(object, args);
-        return Promise.resolve(result);
-    }
-    catch(error) {
-        return Promise.reject(error);
-    }
-}
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreGuardedInternalBuiltinSeparatejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-GuardedInternalBuiltin-Separate.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> // @internal
</span><span class="cx"> 
</span><span class="cx"> function isReadableStreamLocked(stream)
</span><span class="lines">@@ -32,34 +32,3 @@
</span><span class="cx"> 
</span><span class="cx">     return !!stream.@reader;
</span><span class="cx"> }
</span><del>-
-
-function cancelReadableStream(stream, reason)
-{
-    &quot;use strict&quot;;
-
-    if (stream.@state === @readableStreamClosed)
-        return Promise.resolve();
-    if (stream.@state === @readableStreamErrored)
-        return Promise.reject(stream.@storedError);
-    stream.@queue = [];
-    @finishClosingReadableStream(stream);
-    return @promiseInvokeOrNoop(stream.@underlyingSource, &quot;cancel&quot;, [reason]).then(function() { });
-}
-
-
-function promiseInvokeOrNoop(object, key, args)
-{
-    &quot;use strict&quot;;
-
-    try {
-        var method = object[key];
-        if (typeof method === &quot;undefined&quot;)
-            return Promise.resolve();
-        var result = method.@apply(object, args);
-        return Promise.resolve(result);
-    }
-    catch(error) {
-        return Promise.reject(error);
-    }
-}
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCoreUnguardedBuiltinSeparatejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-UnguardedBuiltin-Separate.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -29,34 +29,3 @@
</span><span class="cx"> 
</span><span class="cx">     return !!stream.@reader;
</span><span class="cx"> }
</span><del>-
-
-function cancelReadableStream(stream, reason)
-{
-    &quot;use strict&quot;;
-
-    if (stream.@state === @readableStreamClosed)
-        return Promise.resolve();
-    if (stream.@state === @readableStreamErrored)
-        return Promise.reject(stream.@storedError);
-    stream.@queue = [];
-    @finishClosingReadableStream(stream);
-    return @promiseInvokeOrNoop(stream.@underlyingSource, &quot;cancel&quot;, [reason]).then(function() { });
-}
-
-
-function promiseInvokeOrNoop(object, key, args)
-{
-    &quot;use strict&quot;;
-
-    try {
-        var method = object[key];
-        if (typeof method === &quot;undefined&quot;)
-            return Promise.resolve();
-        var result = method.@apply(object, args);
-        return Promise.resolve(result);
-    }
-    catch(error) {
-        return Promise.reject(error);
-    }
-}
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsWebCorexmlCasingTestSeparatejs"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-xmlCasingTest-Separate.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-xmlCasingTest-Separate.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/WebCore-xmlCasingTest-Separate.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> // @internal
</span><span class="cx"> 
</span><span class="cx"> function xmlCasingTest(stream)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreArbitraryConditionalGuardSeparatejsresultfromrev191686trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCorexmlCasingTestSeparatejsresult"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result (from rev 191686, trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result) (0 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result                                (rev 0)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-ArbitraryConditionalGuard-Separate.js-result        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -0,0 +1,280 @@
</span><ins>+### Begin File: ArbitraryConditionalGuardBuiltins.h
+/*
+ * Copyright (c) 2015 Canon Inc. All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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.
+ * 
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from JavaScript files for
+// builtins by the script: Source/JavaScriptCore/Scripts/generate-js-builtins.py
+
+#ifndef ArbitraryConditionalGuardBuiltins_h
+#define ArbitraryConditionalGuardBuiltins_h
+
+#if ENABLE(STREAMS_API) || USE(CF)
+
+#include &lt;builtins/BuiltinUtils.h&gt;
+
+namespace JSC {
+class FunctionExecutable;
+}
+
+namespace WebCore {
+
+/* ArbitraryConditionalGuard */
+extern const char* s_arbitraryConditionalGuardIsReadableStreamLockedCode;
+extern const int s_arbitraryConditionalGuardIsReadableStreamLockedCodeLength;
+extern const JSC::ConstructAbility s_arbitraryConditionalGuardIsReadableStreamLockedCodeConstructAbility;
+
+#define WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_DATA(macro) \
+    macro(isReadableStreamLocked, arbitraryConditionalGuardIsReadableStreamLocked, 1) \
+
+#define WEBCORE_BUILTIN_ARBITRARYCONDITIONALGUARD_ISREADABLESTREAMLOCKED 1
+
+#define WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_CODE(macro) \
+    macro(arbitraryConditionalGuardIsReadableStreamLockedCode, isReadableStreamLocked, s_arbitraryConditionalGuardIsReadableStreamLockedCodeLength) \
+
+#define WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_FUNCTION_NAME(macro) \
+    macro(isReadableStreamLocked) \
+
+#define DECLARE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
+    JSC::FunctionExecutable* codeName##Generator(JSC::VM&amp;);
+
+WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_CODE(DECLARE_BUILTIN_GENERATOR)
+#undef DECLARE_BUILTIN_GENERATOR
+
+#define WEBCORE_BUILTIN_ARBITRARYCONDITIONALGUARD_EXISTS(object, func) defined WEBCORE_BUILTIN_ ## object ## _ ## func
+
+} // namespace WebCore
+
+#endif // ENABLE(STREAMS_API) || USE(CF)
+
+#endif // ArbitraryConditionalGuardBuiltins_h
+
+### End File: ArbitraryConditionalGuardBuiltins.h
+
+### Begin File: ArbitraryConditionalGuardBuiltins.cpp
+/*
+ * Copyright (c) 2015 Canon Inc. All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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.
+ * 
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from JavaScript files for
+// builtins by the script: Source/JavaScriptCore/Scripts/generate-js-builtins.py
+
+#include &quot;config.h&quot;
+#include &quot;ArbitraryConditionalGuardBuiltins.h&quot;
+
+#if ENABLE(STREAMS_API) || USE(CF)
+
+#include &quot;WebCoreJSClientData.h&quot;
+#include &lt;runtime/Executable.h&gt;
+#include &lt;runtime/JSCJSValueInlines.h&gt;
+#include &lt;runtime/JSCellInlines.h&gt;
+#include &lt;runtime/StructureInlines.h&gt;
+#include &lt;runtime/VM.h&gt;
+
+namespace WebCore {
+
+const JSC::ConstructAbility s_arbitraryConditionalGuardIsReadableStreamLockedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
+const int s_arbitraryConditionalGuardIsReadableStreamLockedCodeLength = 71;
+const char* s_arbitraryConditionalGuardIsReadableStreamLockedCode =
+    &quot;(function (stream)\n&quot; \
+    &quot;{\n&quot; \
+    &quot;   \&quot;use strict\&quot;;\n&quot; \
+    &quot;\n&quot; \
+    &quot;    return !!stream.@reader;\n&quot; \
+    &quot;})\n&quot; \
+;
+
+
+#define DEFINE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
+JSC::FunctionExecutable* codeName##Generator(JSC::VM&amp; vm) \
+{\
+    JSVMClientData* clientData = static_cast&lt;JSVMClientData*&gt;(vm.clientData); \
+    return clientData-&gt;builtinFunctions().arbitraryConditionalGuardBuiltins().codeName##Executable()-&gt;link(vm, clientData-&gt;builtinFunctions().arbitraryConditionalGuardBuiltins().codeName##Source()); \
+}
+WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_CODE(DEFINE_BUILTIN_GENERATOR)
+#undef DEFINE_BUILTIN_GENERATOR
+
+
+} // namespace WebCore
+
+#endif // ENABLE(STREAMS_API) || USE(CF)
+
+### End File: ArbitraryConditionalGuardBuiltins.cpp
+
+### Begin File: ArbitraryConditionalGuardBuiltinsWrapper.h
+/*
+ * Copyright (c) 2015 Canon Inc. All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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.
+ * 
+ */
+
+// DO NOT EDIT THIS FILE. It is automatically generated from JavaScript files for
+// builtins by the script: Source/JavaScriptCore/Scripts/generate-js-builtins.py
+
+#ifndef ArbitraryConditionalGuardBuiltinsWrapper_h
+#define ArbitraryConditionalGuardBuiltinsWrapper_h
+
+#if ENABLE(STREAMS_API) || USE(CF)
+
+#include &quot;ArbitraryConditionalGuardBuiltins.h&quot;
+#include &lt;builtins/BuiltinUtils.h&gt;
+#include &lt;bytecode/UnlinkedFunctionExecutable.h&gt;
+#include &lt;runtime/Identifier.h&gt;
+#include &lt;runtime/JSFunction.h&gt;
+
+namespace WebCore {
+
+class ArbitraryConditionalGuardBuiltinsWrapper : private JSC::WeakHandleOwner {
+public:
+    explicit ArbitraryConditionalGuardBuiltinsWrapper(JSC::VM* vm)
+        : m_vm(*vm)
+        WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_FUNCTION_NAME(INITIALIZE_BUILTIN_NAMES)
+#define INITIALIZE_BUILTIN_SOURCE_MEMBERS(name, functionName, length) , m_##name##Source(JSC::makeSource(StringImpl::createFromLiteral(s_##name, length)))
+        WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_CODE(INITIALIZE_BUILTIN_SOURCE_MEMBERS)
+#undef INITIALIZE_BUILTIN_SOURCE_MEMBERS
+    {
+    }
+
+#define EXPOSE_BUILTIN_EXECUTABLES(name, functionName, length) \
+    JSC::UnlinkedFunctionExecutable* name##Executable(); \
+    const JSC::SourceCode&amp; name##Source() const { return m_##name##Source; }
+    WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_CODE(EXPOSE_BUILTIN_EXECUTABLES)
+#undef EXPOSE_BUILTIN_EXECUTABLES
+
+    WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_IDENTIFIER_ACCESSOR)
+
+    void exportNames();
+
+private:
+    JSC::VM&amp; m_vm;
+
+    WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_NAMES)
+
+#define DECLARE_BUILTIN_SOURCE_MEMBERS(name, functionName, length) \
+    JSC::SourceCode m_##name##Source;\
+    JSC::Weak&lt;JSC::UnlinkedFunctionExecutable&gt; m_##name##Executable;
+    WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_CODE(DECLARE_BUILTIN_SOURCE_MEMBERS)
+#undef DECLARE_BUILTIN_SOURCE_MEMBERS
+
+};
+
+#define DEFINE_BUILTIN_EXECUTABLES(name, functionName, length) \
+inline JSC::UnlinkedFunctionExecutable* ArbitraryConditionalGuardBuiltinsWrapper::name##Executable() \
+{\
+    if (!m_##name##Executable)\
+        m_##name##Executable = JSC::Weak&lt;JSC::UnlinkedFunctionExecutable&gt;(JSC::createBuiltinExecutable(m_vm, m_##name##Source, functionName##PublicName(), s_##name##ConstructAbility), this, &amp;m_##name##Executable);\
+    return m_##name##Executable.get();\
+}
+WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_CODE(DEFINE_BUILTIN_EXECUTABLES)
+#undef DEFINE_BUILTIN_EXECUTABLES
+
+inline void ArbitraryConditionalGuardBuiltinsWrapper::exportNames()
+{
+#define EXPORT_FUNCTION_NAME(name) m_vm.propertyNames-&gt;appendExternalName(name##PublicName(), name##PrivateName());
+    WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_FUNCTION_NAME(EXPORT_FUNCTION_NAME)
+#undef EXPORT_FUNCTION_NAME
+}
+
+class ArbitraryConditionalGuardBuiltinFunctions {
+public:
+    explicit ArbitraryConditionalGuardBuiltinFunctions(JSC::VM&amp; vm) : m_vm(vm) { }
+
+    void init(JSC::JSGlobalObject&amp;);
+    void visit(JSC::SlotVisitor&amp;);
+
+public:
+    JSC::VM&amp; m_vm;
+
+#define DECLARE_BUILTIN_SOURCE_MEMBERS(functionName) \
+    JSC::WriteBarrier&lt;JSC::JSFunction&gt; m_##functionName##Function;
+    WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_FUNCTION_NAME(DECLARE_BUILTIN_SOURCE_MEMBERS)
+#undef DECLARE_BUILTIN_SOURCE_MEMBERS
+};
+
+inline void ArbitraryConditionalGuardBuiltinFunctions::init(JSC::JSGlobalObject&amp; globalObject)
+{
+#define EXPORT_FUNCTION(codeName, functionName, length)\
+    m_##functionName##Function.set(m_vm, &amp;globalObject, JSC::JSFunction::createBuiltinFunction(m_vm, codeName##Generator(m_vm), &amp;globalObject));
+    WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_CODE(EXPORT_FUNCTION)
+#undef EXPORT_FUNCTION
+}
+
+inline void ArbitraryConditionalGuardBuiltinFunctions::visit(JSC::SlotVisitor&amp; visitor)
+{
+#define VISIT_FUNCTION(name) visitor.append(&amp;m_##name##Function);
+    WEBCORE_FOREACH_ARBITRARYCONDITIONALGUARD_BUILTIN_FUNCTION_NAME(VISIT_FUNCTION)
+#undef VISIT_FUNCTION
+}
+
+
+} // namespace WebCore
+
+#endif // ENABLE(STREAMS_API) || USE(CF)
+
+#endif // ArbitraryConditionalGuardBuiltinsWrapper_h
+
+### End File: ArbitraryConditionalGuardBuiltinsWrapper.h
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreDuplicateFlagAnnotationSeparatejserror"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-DuplicateFlagAnnotation-Separate.js-error (0 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-DuplicateFlagAnnotation-Separate.js-error                                (rev 0)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-DuplicateFlagAnnotation-Separate.js-error        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+ERROR: Duplicate annotation found: internal
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreDuplicateKeyValueAnnotationSeparatejserror"></a>
<div class="addfile"><h4>Added: trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-DuplicateKeyValueAnnotation-Separate.js-error (0 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-DuplicateKeyValueAnnotation-Separate.js-error                                (rev 0)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-DuplicateKeyValueAnnotation-Separate.js-error        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+ERROR: Duplicate annotation found: conditional
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreGuardedBuiltinSeparatejsresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-GuardedBuiltin-Separate.js-result        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -31,6 +31,8 @@
</span><span class="cx"> #ifndef GuardedBuiltinBuiltins_h
</span><span class="cx"> #define GuardedBuiltinBuiltins_h
</span><span class="cx"> 
</span><ins>+#if ENABLE(STREAMS_API)
+
</ins><span class="cx"> #include &lt;builtins/BuiltinUtils.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -43,31 +45,17 @@
</span><span class="cx"> extern const char* s_guardedBuiltinIsReadableStreamLockedCode;
</span><span class="cx"> extern const int s_guardedBuiltinIsReadableStreamLockedCodeLength;
</span><span class="cx"> extern const JSC::ConstructAbility s_guardedBuiltinIsReadableStreamLockedCodeConstructAbility;
</span><del>-extern const char* s_guardedBuiltinCancelReadableStreamCode;
-extern const int s_guardedBuiltinCancelReadableStreamCodeLength;
-extern const JSC::ConstructAbility s_guardedBuiltinCancelReadableStreamCodeConstructAbility;
-extern const char* s_guardedBuiltinPromiseInvokeOrNoopCode;
-extern const int s_guardedBuiltinPromiseInvokeOrNoopCodeLength;
-extern const JSC::ConstructAbility s_guardedBuiltinPromiseInvokeOrNoopCodeConstructAbility;
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_FOREACH_GUARDEDBUILTIN_BUILTIN_DATA(macro) \
</span><span class="cx">     macro(isReadableStreamLocked, guardedBuiltinIsReadableStreamLocked, 1) \
</span><del>-    macro(cancelReadableStream, guardedBuiltinCancelReadableStream, 2) \
-    macro(promiseInvokeOrNoop, guardedBuiltinPromiseInvokeOrNoop, 3) \
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_BUILTIN_GUARDEDBUILTIN_ISREADABLESTREAMLOCKED 1
</span><del>-#define WEBCORE_BUILTIN_GUARDEDBUILTIN_CANCELREADABLESTREAM 1
-#define WEBCORE_BUILTIN_GUARDEDBUILTIN_PROMISEINVOKEORNOOP 1
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_FOREACH_GUARDEDBUILTIN_BUILTIN_CODE(macro) \
</span><span class="cx">     macro(guardedBuiltinIsReadableStreamLockedCode, isReadableStreamLocked, s_guardedBuiltinIsReadableStreamLockedCodeLength) \
</span><del>-    macro(guardedBuiltinCancelReadableStreamCode, cancelReadableStream, s_guardedBuiltinCancelReadableStreamCodeLength) \
-    macro(guardedBuiltinPromiseInvokeOrNoopCode, promiseInvokeOrNoop, s_guardedBuiltinPromiseInvokeOrNoopCodeLength) \
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_FOREACH_GUARDEDBUILTIN_BUILTIN_FUNCTION_NAME(macro) \
</span><del>-    macro(cancelReadableStream) \
</del><span class="cx">     macro(isReadableStreamLocked) \
</span><del>-    macro(promiseInvokeOrNoop) \
</del><span class="cx"> 
</span><span class="cx"> #define DECLARE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
</span><span class="cx">     JSC::FunctionExecutable* codeName##Generator(JSC::VM&amp;);
</span><span class="lines">@@ -79,6 +67,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+#endif // ENABLE(STREAMS_API)
+
</ins><span class="cx"> #endif // GuardedBuiltinBuiltins_h
</span><span class="cx"> 
</span><span class="cx"> ### End File: GuardedBuiltinBuiltins.h
</span><span class="lines">@@ -116,6 +106,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;GuardedBuiltinBuiltins.h&quot;
</span><span class="cx"> 
</span><ins>+#if ENABLE(STREAMS_API)
+
</ins><span class="cx"> #include &quot;WebCoreJSClientData.h&quot;
</span><span class="cx"> #include &lt;runtime/Executable.h&gt;
</span><span class="cx"> #include &lt;runtime/JSCJSValueInlines.h&gt;
</span><span class="lines">@@ -136,44 +128,7 @@
</span><span class="cx">     &quot;})\n&quot; \
</span><span class="cx"> ;
</span><span class="cx"> 
</span><del>-const JSC::ConstructAbility s_guardedBuiltinCancelReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const int s_guardedBuiltinCancelReadableStreamCodeLength = 402;
-const char* s_guardedBuiltinCancelReadableStreamCode =
-    &quot;(function (stream, reason)\n&quot; \
-    &quot;{\n&quot; \
-    &quot;    \&quot;use strict\&quot;;\n&quot; \
-    &quot;\n&quot; \
-    &quot;    if (stream.@state === @readableStreamClosed)\n&quot; \
-    &quot;        return Promise.resolve();\n&quot; \
-    &quot;    if (stream.@state === @readableStreamErrored)\n&quot; \
-    &quot;        return Promise.reject(stream.@storedError);\n&quot; \
-    &quot;    stream.@queue = [];\n&quot; \
-    &quot;    @finishClosingReadableStream(stream);\n&quot; \
-    &quot;    return @promiseInvokeOrNoop(stream.@underlyingSource, \&quot;cancel\&quot;, [reason]).then(function() { });\n&quot; \
-    &quot;})\n&quot; \
-;
</del><span class="cx"> 
</span><del>-const JSC::ConstructAbility s_guardedBuiltinPromiseInvokeOrNoopCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const int s_guardedBuiltinPromiseInvokeOrNoopCodeLength = 338;
-const char* s_guardedBuiltinPromiseInvokeOrNoopCode =
-    &quot;(function (object, key, args)\n&quot; \
-    &quot;{\n&quot; \
-    &quot;    \&quot;use strict\&quot;;\n&quot; \
-    &quot;\n&quot; \
-    &quot;    try {\n&quot; \
-    &quot;        var method = object[key];\n&quot; \
-    &quot;        if (typeof method === \&quot;undefined\&quot;)\n&quot; \
-    &quot;            return Promise.resolve();\n&quot; \
-    &quot;        var result = method.@apply(object, args);\n&quot; \
-    &quot;        return Promise.resolve(result);\n&quot; \
-    &quot;    }\n&quot; \
-    &quot;    catch(error) {\n&quot; \
-    &quot;        return Promise.reject(error);\n&quot; \
-    &quot;    }\n&quot; \
-    &quot;})\n&quot; \
-;
-
-
</del><span class="cx"> #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
</span><span class="cx"> JSC::FunctionExecutable* codeName##Generator(JSC::VM&amp; vm) \
</span><span class="cx"> {\
</span><span class="lines">@@ -185,6 +140,9 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><ins>+
+#endif // ENABLE(STREAMS_API)
+
</ins><span class="cx"> ### End File: GuardedBuiltinBuiltins.cpp
</span><span class="cx"> 
</span><span class="cx"> ### Begin File: GuardedBuiltinBuiltinsWrapper.h
</span><span class="lines">@@ -220,6 +178,8 @@
</span><span class="cx"> #ifndef GuardedBuiltinBuiltinsWrapper_h
</span><span class="cx"> #define GuardedBuiltinBuiltinsWrapper_h
</span><span class="cx"> 
</span><ins>+#if ENABLE(STREAMS_API)
+
</ins><span class="cx"> #include &quot;GuardedBuiltinBuiltins.h&quot;
</span><span class="cx"> #include &lt;builtins/BuiltinUtils.h&gt;
</span><span class="cx"> #include &lt;bytecode/UnlinkedFunctionExecutable.h&gt;
</span><span class="lines">@@ -313,6 +273,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+#endif // ENABLE(STREAMS_API)
+
</ins><span class="cx"> #endif // GuardedBuiltinBuiltinsWrapper_h
</span><span class="cx"> 
</span><span class="cx"> ### End File: GuardedBuiltinBuiltinsWrapper.h
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreGuardedInternalBuiltinSeparatejsresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-GuardedInternalBuiltin-Separate.js-result        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -31,6 +31,8 @@
</span><span class="cx"> #ifndef GuardedInternalBuiltinBuiltins_h
</span><span class="cx"> #define GuardedInternalBuiltinBuiltins_h
</span><span class="cx"> 
</span><ins>+#if ENABLE(STREAMS_API)
+
</ins><span class="cx"> #include &lt;builtins/BuiltinUtils.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -43,31 +45,17 @@
</span><span class="cx"> extern const char* s_guardedInternalBuiltinIsReadableStreamLockedCode;
</span><span class="cx"> extern const int s_guardedInternalBuiltinIsReadableStreamLockedCodeLength;
</span><span class="cx"> extern const JSC::ConstructAbility s_guardedInternalBuiltinIsReadableStreamLockedCodeConstructAbility;
</span><del>-extern const char* s_guardedInternalBuiltinCancelReadableStreamCode;
-extern const int s_guardedInternalBuiltinCancelReadableStreamCodeLength;
-extern const JSC::ConstructAbility s_guardedInternalBuiltinCancelReadableStreamCodeConstructAbility;
-extern const char* s_guardedInternalBuiltinPromiseInvokeOrNoopCode;
-extern const int s_guardedInternalBuiltinPromiseInvokeOrNoopCodeLength;
-extern const JSC::ConstructAbility s_guardedInternalBuiltinPromiseInvokeOrNoopCodeConstructAbility;
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_FOREACH_GUARDEDINTERNALBUILTIN_BUILTIN_DATA(macro) \
</span><span class="cx">     macro(isReadableStreamLocked, guardedInternalBuiltinIsReadableStreamLocked, 1) \
</span><del>-    macro(cancelReadableStream, guardedInternalBuiltinCancelReadableStream, 2) \
-    macro(promiseInvokeOrNoop, guardedInternalBuiltinPromiseInvokeOrNoop, 3) \
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_BUILTIN_GUARDEDINTERNALBUILTIN_ISREADABLESTREAMLOCKED 1
</span><del>-#define WEBCORE_BUILTIN_GUARDEDINTERNALBUILTIN_CANCELREADABLESTREAM 1
-#define WEBCORE_BUILTIN_GUARDEDINTERNALBUILTIN_PROMISEINVOKEORNOOP 1
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_FOREACH_GUARDEDINTERNALBUILTIN_BUILTIN_CODE(macro) \
</span><span class="cx">     macro(guardedInternalBuiltinIsReadableStreamLockedCode, isReadableStreamLocked, s_guardedInternalBuiltinIsReadableStreamLockedCodeLength) \
</span><del>-    macro(guardedInternalBuiltinCancelReadableStreamCode, cancelReadableStream, s_guardedInternalBuiltinCancelReadableStreamCodeLength) \
-    macro(guardedInternalBuiltinPromiseInvokeOrNoopCode, promiseInvokeOrNoop, s_guardedInternalBuiltinPromiseInvokeOrNoopCodeLength) \
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_FOREACH_GUARDEDINTERNALBUILTIN_BUILTIN_FUNCTION_NAME(macro) \
</span><del>-    macro(cancelReadableStream) \
</del><span class="cx">     macro(isReadableStreamLocked) \
</span><del>-    macro(promiseInvokeOrNoop) \
</del><span class="cx"> 
</span><span class="cx"> #define DECLARE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
</span><span class="cx">     JSC::FunctionExecutable* codeName##Generator(JSC::VM&amp;);
</span><span class="lines">@@ -79,6 +67,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+#endif // ENABLE(STREAMS_API)
+
</ins><span class="cx"> #endif // GuardedInternalBuiltinBuiltins_h
</span><span class="cx"> 
</span><span class="cx"> ### End File: GuardedInternalBuiltinBuiltins.h
</span><span class="lines">@@ -116,6 +106,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;GuardedInternalBuiltinBuiltins.h&quot;
</span><span class="cx"> 
</span><ins>+#if ENABLE(STREAMS_API)
+
</ins><span class="cx"> #include &quot;WebCoreJSClientData.h&quot;
</span><span class="cx"> #include &lt;runtime/Executable.h&gt;
</span><span class="cx"> #include &lt;runtime/JSCJSValueInlines.h&gt;
</span><span class="lines">@@ -136,44 +128,7 @@
</span><span class="cx">     &quot;})\n&quot; \
</span><span class="cx"> ;
</span><span class="cx"> 
</span><del>-const JSC::ConstructAbility s_guardedInternalBuiltinCancelReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const int s_guardedInternalBuiltinCancelReadableStreamCodeLength = 402;
-const char* s_guardedInternalBuiltinCancelReadableStreamCode =
-    &quot;(function (stream, reason)\n&quot; \
-    &quot;{\n&quot; \
-    &quot;    \&quot;use strict\&quot;;\n&quot; \
-    &quot;\n&quot; \
-    &quot;    if (stream.@state === @readableStreamClosed)\n&quot; \
-    &quot;        return Promise.resolve();\n&quot; \
-    &quot;    if (stream.@state === @readableStreamErrored)\n&quot; \
-    &quot;        return Promise.reject(stream.@storedError);\n&quot; \
-    &quot;    stream.@queue = [];\n&quot; \
-    &quot;    @finishClosingReadableStream(stream);\n&quot; \
-    &quot;    return @promiseInvokeOrNoop(stream.@underlyingSource, \&quot;cancel\&quot;, [reason]).then(function() { });\n&quot; \
-    &quot;})\n&quot; \
-;
</del><span class="cx"> 
</span><del>-const JSC::ConstructAbility s_guardedInternalBuiltinPromiseInvokeOrNoopCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const int s_guardedInternalBuiltinPromiseInvokeOrNoopCodeLength = 338;
-const char* s_guardedInternalBuiltinPromiseInvokeOrNoopCode =
-    &quot;(function (object, key, args)\n&quot; \
-    &quot;{\n&quot; \
-    &quot;    \&quot;use strict\&quot;;\n&quot; \
-    &quot;\n&quot; \
-    &quot;    try {\n&quot; \
-    &quot;        var method = object[key];\n&quot; \
-    &quot;        if (typeof method === \&quot;undefined\&quot;)\n&quot; \
-    &quot;            return Promise.resolve();\n&quot; \
-    &quot;        var result = method.@apply(object, args);\n&quot; \
-    &quot;        return Promise.resolve(result);\n&quot; \
-    &quot;    }\n&quot; \
-    &quot;    catch(error) {\n&quot; \
-    &quot;        return Promise.reject(error);\n&quot; \
-    &quot;    }\n&quot; \
-    &quot;})\n&quot; \
-;
-
-
</del><span class="cx"> #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
</span><span class="cx"> JSC::FunctionExecutable* codeName##Generator(JSC::VM&amp; vm) \
</span><span class="cx"> {\
</span><span class="lines">@@ -185,6 +140,9 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><ins>+
+#endif // ENABLE(STREAMS_API)
+
</ins><span class="cx"> ### End File: GuardedInternalBuiltinBuiltins.cpp
</span><span class="cx"> 
</span><span class="cx"> ### Begin File: GuardedInternalBuiltinBuiltinsWrapper.h
</span><span class="lines">@@ -220,6 +178,8 @@
</span><span class="cx"> #ifndef GuardedInternalBuiltinBuiltinsWrapper_h
</span><span class="cx"> #define GuardedInternalBuiltinBuiltinsWrapper_h
</span><span class="cx"> 
</span><ins>+#if ENABLE(STREAMS_API)
+
</ins><span class="cx"> #include &quot;GuardedInternalBuiltinBuiltins.h&quot;
</span><span class="cx"> #include &lt;builtins/BuiltinUtils.h&gt;
</span><span class="cx"> #include &lt;bytecode/UnlinkedFunctionExecutable.h&gt;
</span><span class="lines">@@ -313,6 +273,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+#endif // ENABLE(STREAMS_API)
+
</ins><span class="cx"> #endif // GuardedInternalBuiltinBuiltinsWrapper_h
</span><span class="cx"> 
</span><span class="cx"> ### End File: GuardedInternalBuiltinBuiltinsWrapper.h
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCoreUnguardedBuiltinSeparatejsresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-UnguardedBuiltin-Separate.js-result        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -43,31 +43,17 @@
</span><span class="cx"> extern const char* s_unguardedBuiltinIsReadableStreamLockedCode;
</span><span class="cx"> extern const int s_unguardedBuiltinIsReadableStreamLockedCodeLength;
</span><span class="cx"> extern const JSC::ConstructAbility s_unguardedBuiltinIsReadableStreamLockedCodeConstructAbility;
</span><del>-extern const char* s_unguardedBuiltinCancelReadableStreamCode;
-extern const int s_unguardedBuiltinCancelReadableStreamCodeLength;
-extern const JSC::ConstructAbility s_unguardedBuiltinCancelReadableStreamCodeConstructAbility;
-extern const char* s_unguardedBuiltinPromiseInvokeOrNoopCode;
-extern const int s_unguardedBuiltinPromiseInvokeOrNoopCodeLength;
-extern const JSC::ConstructAbility s_unguardedBuiltinPromiseInvokeOrNoopCodeConstructAbility;
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_FOREACH_UNGUARDEDBUILTIN_BUILTIN_DATA(macro) \
</span><span class="cx">     macro(isReadableStreamLocked, unguardedBuiltinIsReadableStreamLocked, 1) \
</span><del>-    macro(cancelReadableStream, unguardedBuiltinCancelReadableStream, 2) \
-    macro(promiseInvokeOrNoop, unguardedBuiltinPromiseInvokeOrNoop, 3) \
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_BUILTIN_UNGUARDEDBUILTIN_ISREADABLESTREAMLOCKED 1
</span><del>-#define WEBCORE_BUILTIN_UNGUARDEDBUILTIN_CANCELREADABLESTREAM 1
-#define WEBCORE_BUILTIN_UNGUARDEDBUILTIN_PROMISEINVOKEORNOOP 1
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_FOREACH_UNGUARDEDBUILTIN_BUILTIN_CODE(macro) \
</span><span class="cx">     macro(unguardedBuiltinIsReadableStreamLockedCode, isReadableStreamLocked, s_unguardedBuiltinIsReadableStreamLockedCodeLength) \
</span><del>-    macro(unguardedBuiltinCancelReadableStreamCode, cancelReadableStream, s_unguardedBuiltinCancelReadableStreamCodeLength) \
-    macro(unguardedBuiltinPromiseInvokeOrNoopCode, promiseInvokeOrNoop, s_unguardedBuiltinPromiseInvokeOrNoopCodeLength) \
</del><span class="cx"> 
</span><span class="cx"> #define WEBCORE_FOREACH_UNGUARDEDBUILTIN_BUILTIN_FUNCTION_NAME(macro) \
</span><del>-    macro(cancelReadableStream) \
</del><span class="cx">     macro(isReadableStreamLocked) \
</span><del>-    macro(promiseInvokeOrNoop) \
</del><span class="cx"> 
</span><span class="cx"> #define DECLARE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
</span><span class="cx">     JSC::FunctionExecutable* codeName##Generator(JSC::VM&amp;);
</span><span class="lines">@@ -136,44 +122,7 @@
</span><span class="cx">     &quot;})\n&quot; \
</span><span class="cx"> ;
</span><span class="cx"> 
</span><del>-const JSC::ConstructAbility s_unguardedBuiltinCancelReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const int s_unguardedBuiltinCancelReadableStreamCodeLength = 402;
-const char* s_unguardedBuiltinCancelReadableStreamCode =
-    &quot;(function (stream, reason)\n&quot; \
-    &quot;{\n&quot; \
-    &quot;    \&quot;use strict\&quot;;\n&quot; \
-    &quot;\n&quot; \
-    &quot;    if (stream.@state === @readableStreamClosed)\n&quot; \
-    &quot;        return Promise.resolve();\n&quot; \
-    &quot;    if (stream.@state === @readableStreamErrored)\n&quot; \
-    &quot;        return Promise.reject(stream.@storedError);\n&quot; \
-    &quot;    stream.@queue = [];\n&quot; \
-    &quot;    @finishClosingReadableStream(stream);\n&quot; \
-    &quot;    return @promiseInvokeOrNoop(stream.@underlyingSource, \&quot;cancel\&quot;, [reason]).then(function() { });\n&quot; \
-    &quot;})\n&quot; \
-;
</del><span class="cx"> 
</span><del>-const JSC::ConstructAbility s_unguardedBuiltinPromiseInvokeOrNoopCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
-const int s_unguardedBuiltinPromiseInvokeOrNoopCodeLength = 338;
-const char* s_unguardedBuiltinPromiseInvokeOrNoopCode =
-    &quot;(function (object, key, args)\n&quot; \
-    &quot;{\n&quot; \
-    &quot;    \&quot;use strict\&quot;;\n&quot; \
-    &quot;\n&quot; \
-    &quot;    try {\n&quot; \
-    &quot;        var method = object[key];\n&quot; \
-    &quot;        if (typeof method === \&quot;undefined\&quot;)\n&quot; \
-    &quot;            return Promise.resolve();\n&quot; \
-    &quot;        var result = method.@apply(object, args);\n&quot; \
-    &quot;        return Promise.resolve(result);\n&quot; \
-    &quot;    }\n&quot; \
-    &quot;    catch(error) {\n&quot; \
-    &quot;        return Promise.reject(error);\n&quot; \
-    &quot;    }\n&quot; \
-    &quot;})\n&quot; \
-;
-
-
</del><span class="cx"> #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, argumentCount) \
</span><span class="cx"> JSC::FunctionExecutable* codeName##Generator(JSC::VM&amp; vm) \
</span><span class="cx"> {\
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptstestsbuiltinsexpectedWebCorexmlCasingTestSeparatejsresult"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/JavaScriptCore/Scripts/tests/builtins/expected/WebCore-xmlCasingTest-Separate.js-result        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -31,6 +31,8 @@
</span><span class="cx"> #ifndef xmlCasingTestBuiltins_h
</span><span class="cx"> #define xmlCasingTestBuiltins_h
</span><span class="cx"> 
</span><ins>+#if ENABLE(STREAMS_API)
+
</ins><span class="cx"> #include &lt;builtins/BuiltinUtils.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -79,6 +81,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+#endif // ENABLE(STREAMS_API)
+
</ins><span class="cx"> #endif // xmlCasingTestBuiltins_h
</span><span class="cx"> 
</span><span class="cx"> ### End File: xmlCasingTestBuiltins.h
</span><span class="lines">@@ -116,6 +120,8 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;xmlCasingTestBuiltins.h&quot;
</span><span class="cx"> 
</span><ins>+#if ENABLE(STREAMS_API)
+
</ins><span class="cx"> #include &quot;WebCoreJSClientData.h&quot;
</span><span class="cx"> #include &lt;runtime/Executable.h&gt;
</span><span class="cx"> #include &lt;runtime/JSCJSValueInlines.h&gt;
</span><span class="lines">@@ -185,6 +191,9 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><ins>+
+#endif // ENABLE(STREAMS_API)
+
</ins><span class="cx"> ### End File: xmlCasingTestBuiltins.cpp
</span><span class="cx"> 
</span><span class="cx"> ### Begin File: xmlCasingTestBuiltinsWrapper.h
</span><span class="lines">@@ -220,6 +229,8 @@
</span><span class="cx"> #ifndef xmlCasingTestBuiltinsWrapper_h
</span><span class="cx"> #define xmlCasingTestBuiltinsWrapper_h
</span><span class="cx"> 
</span><ins>+#if ENABLE(STREAMS_API)
+
</ins><span class="cx"> #include &quot;xmlCasingTestBuiltins.h&quot;
</span><span class="cx"> #include &lt;builtins/BuiltinUtils.h&gt;
</span><span class="cx"> #include &lt;bytecode/UnlinkedFunctionExecutable.h&gt;
</span><span class="lines">@@ -313,6 +324,8 @@
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span><span class="cx"> 
</span><ins>+#endif // ENABLE(STREAMS_API)
+
</ins><span class="cx"> #endif // xmlCasingTestBuiltinsWrapper_h
</span><span class="cx"> 
</span><span class="cx"> ### End File: xmlCasingTestBuiltinsWrapper.h
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/ChangeLog        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2015-10-28  Brian Burg  &lt;bburg@apple.com&gt;
+
+        Builtins generator should emit ENABLE(FEATURE) guards based on @conditional annotation
+        https://bugs.webkit.org/show_bug.cgi?id=150536
+
+        Reviewed by Yusuke Suzuki.
+
+        Replace @optional=FEATURE with @conditional=ENABLE(FEATURE) in builtins files.
+
+        * Modules/streams/ByteLengthQueuingStrategy.js:
+        * Modules/streams/CountQueuingStrategy.js:
+        * Modules/streams/ReadableStream.js:
+        * Modules/streams/ReadableStreamController.js:
+        * Modules/streams/ReadableStreamInternals.js:
+        * Modules/streams/ReadableStreamReader.js:
+        * Modules/streams/StreamInternals.js:
+        * Modules/streams/WritableStream.js:
+        * Modules/streams/WritableStreamInternals.js:
+
</ins><span class="cx"> 2015-10-28  Zalan Bujtas  &lt;zalan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Should never be reached failure in WebCore::backgroundRectForBox
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsByteLengthQueuingStrategyjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ByteLengthQueuingStrategy.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/ByteLengthQueuingStrategy.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/Modules/streams/ByteLengthQueuingStrategy.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> 
</span><span class="cx"> function size(chunk)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsCountQueuingStrategyjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/CountQueuingStrategy.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/CountQueuingStrategy.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/Modules/streams/CountQueuingStrategy.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> 
</span><span class="cx"> function size()
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableStreamjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableStream.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/ReadableStream.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/Modules/streams/ReadableStream.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> 
</span><span class="cx"> function initializeReadableStream(underlyingSource, strategy)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableStreamControllerjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamController.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/ReadableStreamController.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamController.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> 
</span><span class="cx"> function enqueue(chunk)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableStreamInternalsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamInternals.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> // @internals
</span><span class="cx"> 
</span><span class="cx"> function privateInitializeReadableStreamReader(stream)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableStreamReaderjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableStreamReader.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/ReadableStreamReader.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/Modules/streams/ReadableStreamReader.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> 
</span><span class="cx"> function cancel(reason)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsStreamInternalsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/StreamInternals.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/StreamInternals.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/Modules/streams/StreamInternals.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> // @internals
</span><span class="cx"> 
</span><span class="cx"> function invokeOrNoop(object, key, args)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsWritableStreamjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/WritableStream.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/WritableStream.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/Modules/streams/WritableStream.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> 
</span><span class="cx"> function initializeWritableStream(underlyingSink, strategy)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsWritableStreamInternalsjs"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/WritableStreamInternals.js (191686 => 191687)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/WritableStreamInternals.js        2015-10-28 19:34:29 UTC (rev 191686)
+++ trunk/Source/WebCore/Modules/streams/WritableStreamInternals.js        2015-10-28 20:00:36 UTC (rev 191687)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</span><span class="cx">  */
</span><span class="cx"> 
</span><del>-// @optional=STREAMS_API
</del><ins>+// @conditional=ENABLE(STREAMS_API)
</ins><span class="cx"> // @internals
</span><span class="cx"> 
</span><span class="cx"> function isWritableStream(stream)
</span></span></pre>
</div>
</div>

</body>
</html>