<!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>[288064] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/288064">288064</a></dd>
<dt>Author</dt> <dd>ysuzuki@apple.com</dd>
<dt>Date</dt> <dd>2022-01-15 13:17:40 -0800 (Sat, 15 Jan 2022)</dd>
</dl>

<h3>Log Message</h3>
<pre>[JSC] Fix misc WebAssembly.Table issues
https://bugs.webkit.org/show_bug.cgi?id=235262

Reviewed by Alexey Shvayka.

LayoutTests/imported/w3c:

Fix length of WebAssembly.Table.set from 2 to 1.
According to the spec[1], it should be 1 since the second argument is an optional.

Also fix stray argument test. Previously, it was stray argument. But after the update
of the wasm spec, the second argument of Table constructor can be used for initial value.
So, WebAssembly.Table "anyfunc" with {} initial value throws an error since it is not
a function. This fixes a test, passing null for the second argument, and adding third
stray argument for the stray argument test.

[1]: https://webassembly.github.io/spec/js-api/index.html#tables

* web-platform-tests/wasm/jsapi/idlharness.any-expected.txt:
* web-platform-tests/wasm/jsapi/idlharness.any.worker-expected.txt:
* web-platform-tests/wasm/jsapi/interface.any.js:
* web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt:
* web-platform-tests/wasm/jsapi/table/constructor.any.js:
(test):
* web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt:

Source/JavaScriptCore:

* wasm/js/WebAssemblyTablePrototype.cpp:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswasmjsapiidlharnessanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/idlharness.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswasmjsapiidlharnessanyworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/idlharness.any.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswasmjsapiinterfaceanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswasmjsapitableconstructoranyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswasmjsapitableconstructoranyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswasmjsapitableconstructoranyworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyTablePrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (288063 => 288064)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog 2022-01-15 20:32:22 UTC (rev 288063)
+++ trunk/LayoutTests/imported/w3c/ChangeLog    2022-01-15 21:17:40 UTC (rev 288064)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2022-01-15  Yusuke Suzuki  <ysuzuki@apple.com>
+
+        [JSC] Fix misc WebAssembly.Table issues
+        https://bugs.webkit.org/show_bug.cgi?id=235262
+
+        Reviewed by Alexey Shvayka.
+
+        Fix length of WebAssembly.Table.set from 2 to 1.
+        According to the spec[1], it should be 1 since the second argument is an optional.
+
+        Also fix stray argument test. Previously, it was stray argument. But after the update
+        of the wasm spec, the second argument of Table constructor can be used for initial value.
+        So, WebAssembly.Table "anyfunc" with {} initial value throws an error since it is not
+        a function. This fixes a test, passing null for the second argument, and adding third
+        stray argument for the stray argument test.
+
+        [1]: https://webassembly.github.io/spec/js-api/index.html#tables
+
+        * web-platform-tests/wasm/jsapi/idlharness.any-expected.txt:
+        * web-platform-tests/wasm/jsapi/idlharness.any.worker-expected.txt:
+        * web-platform-tests/wasm/jsapi/interface.any.js:
+        * web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt:
+        * web-platform-tests/wasm/jsapi/table/constructor.any.js:
+        (test):
+        * web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt:
+
</ins><span class="cx"> 2022-01-15  Alan Bujtas  <zalan@apple.com>
</span><span class="cx"> 
</span><span class="cx">         web-platform-tests/html/rendering/dimension-attributes.html is failing when table width is set to 0px
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswasmjsapiidlharnessanyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/idlharness.any-expected.txt (288063 => 288064)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/idlharness.any-expected.txt 2022-01-15 20:32:22 UTC (rev 288063)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/idlharness.any-expected.txt    2022-01-15 21:17:40 UTC (rev 288064)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> PASS Table interface: existence and properties of interface prototype object's @@unscopables property
</span><span class="cx"> PASS Table interface: operation grow(unsigned long, optional any)
</span><span class="cx"> PASS Table interface: operation get(unsigned long)
</span><del>-FAIL Table interface: operation set(unsigned long, optional any) assert_equals: property has wrong .length expected 1 but got 2
</del><ins>+PASS Table interface: operation set(unsigned long, optional any)
</ins><span class="cx"> PASS Table interface: attribute length
</span><span class="cx"> PASS Global interface: existence and properties of interface object
</span><span class="cx"> PASS Global interface object length
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswasmjsapiidlharnessanyworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/idlharness.any.worker-expected.txt (288063 => 288064)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/idlharness.any.worker-expected.txt  2022-01-15 20:32:22 UTC (rev 288063)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/idlharness.any.worker-expected.txt     2022-01-15 21:17:40 UTC (rev 288064)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> PASS Table interface: existence and properties of interface prototype object's @@unscopables property
</span><span class="cx"> PASS Table interface: operation grow(unsigned long, optional any)
</span><span class="cx"> PASS Table interface: operation get(unsigned long)
</span><del>-FAIL Table interface: operation set(unsigned long, optional any) assert_equals: property has wrong .length expected 1 but got 2
</del><ins>+PASS Table interface: operation set(unsigned long, optional any)
</ins><span class="cx"> PASS Table interface: attribute length
</span><span class="cx"> PASS Global interface: existence and properties of interface object
</span><span class="cx"> PASS Global interface object length
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswasmjsapiinterfaceanyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.js (288063 => 288064)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.js    2022-01-15 20:32:22 UTC (rev 288063)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.js       2022-01-15 21:17:40 UTC (rev 288064)
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx"> test_operations(WebAssembly.Table.prototype, "WebAssembly.Table", [
</span><span class="cx">   ["grow", 1],
</span><span class="cx">   ["get", 1],
</span><del>-  ["set", 2],
</del><ins>+  ["set", 1],
</ins><span class="cx"> ]);
</span><span class="cx"> 
</span><span class="cx"> test_attributes(WebAssembly.Table.prototype, "WebAssembly.Table", [
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswasmjsapitableconstructoranyexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt (288063 => 288064)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt  2022-01-15 20:32:22 UTC (rev 288063)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt     2022-01-15 21:17:40 UTC (rev 288064)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> PASS Initial value exceeds maximum
</span><span class="cx"> PASS Basic (zero)
</span><span class="cx"> PASS Basic (non-zero)
</span><del>-FAIL Stray argument WebAssembly.Table.prototype.constructor expects the second argument to be null or an instance of WebAssembly.Function
</del><ins>+PASS Stray argument
</ins><span class="cx"> PASS Proxy descriptor
</span><span class="cx"> PASS Type conversion for descriptor.element
</span><span class="cx"> PASS Order of evaluation for descriptor
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswasmjsapitableconstructoranyjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js (288063 => 288064)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js    2022-01-15 20:32:22 UTC (rev 288063)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js       2022-01-15 21:17:40 UTC (rev 288064)
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> 
</span><span class="cx"> test(() => {
</span><span class="cx">   const argument = { "element": "anyfunc", "initial": 0 };
</span><del>-  const table = new WebAssembly.Table(argument, {});
</del><ins>+  const table = new WebAssembly.Table(argument, null, {});
</ins><span class="cx">   assert_Table(table, { "length": 0 });
</span><span class="cx"> }, "Stray argument");
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswasmjsapitableconstructoranyworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt (288063 => 288064)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt   2022-01-15 20:32:22 UTC (rev 288063)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt      2022-01-15 21:17:40 UTC (rev 288064)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> PASS Initial value exceeds maximum
</span><span class="cx"> PASS Basic (zero)
</span><span class="cx"> PASS Basic (non-zero)
</span><del>-FAIL Stray argument WebAssembly.Table.prototype.constructor expects the second argument to be null or an instance of WebAssembly.Function
</del><ins>+PASS Stray argument
</ins><span class="cx"> PASS Proxy descriptor
</span><span class="cx"> PASS Type conversion for descriptor.element
</span><span class="cx"> PASS Order of evaluation for descriptor
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (288063 => 288064)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog    2022-01-15 20:32:22 UTC (rev 288063)
+++ trunk/Source/JavaScriptCore/ChangeLog       2022-01-15 21:17:40 UTC (rev 288064)
</span><span class="lines">@@ -1,3 +1,12 @@
</span><ins>+2022-01-15  Yusuke Suzuki  <ysuzuki@apple.com>
+
+        [JSC] Fix misc WebAssembly.Table issues
+        https://bugs.webkit.org/show_bug.cgi?id=235262
+
+        Reviewed by Alexey Shvayka.
+
+        * wasm/js/WebAssemblyTablePrototype.cpp:
+
</ins><span class="cx"> 2022-01-14  Yusuke Suzuki  <ysuzuki@apple.com> and Mikhail R. Gadelha  <mikhail@igalia.com>
</span><span class="cx"> 
</span><span class="cx">         [JSC] Fix Linux 64bit compilation
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyTablePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp (288063 => 288064)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp        2022-01-15 20:32:22 UTC (rev 288063)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp   2022-01-15 21:17:40 UTC (rev 288064)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">  length webAssemblyTableProtoGetterLength ReadOnly|CustomAccessor
</span><span class="cx">  grow   webAssemblyTableProtoFuncGrow   Function 1
</span><span class="cx">  get    webAssemblyTableProtoFuncGet    Function 1
</span><del>- set    webAssemblyTableProtoFuncSet    Function 2
</del><ins>+ set    webAssemblyTableProtoFuncSet    Function 1
</ins><span class="cx">  type   webAssemblyTableProtoFuncType   Function 0
</span><span class="cx">  @end
</span><span class="cx">  */
</span></span></pre>
</div>
</div>

</body>
</html>