[JSC] Do not reject WebAssembly.compile() with Exception
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Jan 2017 07:21:43 +0000 (07:21 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Jan 2017 07:21:43 +0000 (07:21 +0000)
https://bugs.webkit.org/show_bug.cgi?id=167585

Reviewed by Mark Lam.

JSTests:

* wasm/js-api/Module-compile.js:
(async.testPromiseAPI):

Source/JavaScriptCore:

We accidentally reject the promise with Exception instead of Exception::value()
for the result of WebAssembly::compile().

* wasm/JSWebAssembly.cpp:
(JSC::webAssemblyCompileFunc):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211410 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JSTests/ChangeLog
JSTests/wasm/js-api/Module-compile.js
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/wasm/JSWebAssembly.cpp

index d10e5cb..19bb1f2 100644 (file)
@@ -1,3 +1,13 @@
+2017-01-30  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [JSC] Do not reject WebAssembly.compile() with Exception
+        https://bugs.webkit.org/show_bug.cgi?id=167585
+
+        Reviewed by Mark Lam.
+
+        * wasm/js-api/Module-compile.js:
+        (async.testPromiseAPI):
+
 2017-01-27  Yusuke Suzuki  <utatane.tea@gmail.com>
 
         Lift template escape sequence restrictions in tagged templates
index 33ab513..f343c6e 100644 (file)
@@ -28,6 +28,18 @@ async function testPromiseAPI() {
     {
         let threw = false;
         try {
+            await WebAssembly.compile();
+        } catch(e) {
+            threw = true;
+            assert.truthy(e instanceof TypeError);
+            assert.eq(e.message, "first argument must be an ArrayBufferView or an ArrayBuffer (evaluating 'WebAssembly.compile()')");
+        }
+        assert.truthy(threw);
+    }
+
+    {
+        let threw = false;
+        try {
             await WebAssembly.compile(20);
         } catch(e) {
             threw = true;
index a53a030..cbd0007 100644 (file)
@@ -1,3 +1,16 @@
+2017-01-30  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [JSC] Do not reject WebAssembly.compile() with Exception
+        https://bugs.webkit.org/show_bug.cgi?id=167585
+
+        Reviewed by Mark Lam.
+
+        We accidentally reject the promise with Exception instead of Exception::value()
+        for the result of WebAssembly::compile().
+
+        * wasm/JSWebAssembly.cpp:
+        (JSC::webAssemblyCompileFunc):
+
 2017-01-30  Joseph Pecoraro  <pecoraro@apple.com>
 
         Implement PerformanceObserver
index 2baf972..5701560 100644 (file)
@@ -56,7 +56,7 @@ EncodedJSValue JSC_HOST_CALL webAssemblyCompileFunc(ExecState* exec)
     JSValue module = WebAssemblyModuleConstructor::createModule(exec, exec->lexicalGlobalObject()->WebAssemblyModuleStructure());
     if (Exception* exception = catchScope.exception()) {
         catchScope.clearException();
-        promise->reject(exec, exception);
+        promise->reject(exec, exception->value());
         return JSValue::encode(promise->promise());
     }