Bug 1342060 - wasm: enable by default. r=bbouvier, sr=jorendorff, a=lizzard
authorLuke Wagner <luke@mozilla.com>
Thu, 23 Feb 2017 11:11:00 -0500
changeset 378679 94916848475de408e4d91a5a002e6e969e6cbcfe
parent 378678 99f084b646641871316bbf18a788e398a3ff6558
child 378680 92be498fbb00642cdddacda6e4d7cbc0b4e699cf
push id1419
push userjlund@mozilla.com
push dateMon, 10 Apr 2017 20:44:07 +0000
treeherdermozilla-release@5e6801b73ef6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbbouvier, jorendorff, lizzard
bugs1342060
milestone53.0a2
Bug 1342060 - wasm: enable by default. r=bbouvier, sr=jorendorff, a=lizzard
dom/base/test/test_postMessages.html
dom/indexedDB/test/unit/wasm_recompile_profile.zip
dom/indexedDB/test/unit/xpcshell-head-parent-process.js
dom/promise/tests/test_webassembly_compile.html
dom/tests/mochitest/general/test_interfaces.html
dom/workers/test/serviceworkers/test_serviceworker_interfaces.js
dom/workers/test/test_worker_interfaces.js
js/src/jit-test/tests/wasm/binary.js
js/src/jit-test/tests/wasm/spec/binary.wast
js/src/jit-test/tests/wasm/spec/custom_section.wast
js/src/wasm/WasmBinaryConstants.h
js/src/wasm/WasmValidate.cpp
modules/libpref/init/all.js
--- a/dom/base/test/test_postMessages.html
+++ b/dom/base/test/test_postMessages.html
@@ -6,18 +6,17 @@
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
 </head>
 
 <body>
 <input id="fileList" type="file"></input>
 <script type="application/javascript;version=1.7">
 
 function setup_tests() {
-  SpecialPowers.pushPrefEnv({"set": [["dom.input.dirpicker", true],
-                                     ["javascript.options.wasm", true]]}, next);
+  SpecialPowers.pushPrefEnv({"set": [["dom.input.dirpicker", true]]}, next);
 }
 
 function getType(a) {
   if (a === null || a === undefined)
     return 'null';
 
   if (Array.isArray(a))
     return 'array';
index 50ca3ef898de2706d42e0019c923838502302225..8f9d67868e5db71b52e0fa3a996afac5dc5f1be7
GIT binary patch
literal 5446
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
IW9v%mfA@t6lmGw#
--- a/dom/indexedDB/test/unit/xpcshell-head-parent-process.js
+++ b/dom/indexedDB/test/unit/xpcshell-head-parent-process.js
@@ -45,30 +45,28 @@ if (!this.runTest) {
   this.runTest = function()
   {
     if (SpecialPowers.isMainProcess()) {
       // XPCShell does not get a profile by default.
       do_get_profile();
 
       enableTesting();
       enableExperimental();
-      enableWasm();
     }
 
     Cu.importGlobalProperties(["indexedDB", "Blob", "File", "FileReader"]);
 
     do_test_pending();
     testGenerator.next();
   }
 }
 
 function finishTest()
 {
   if (SpecialPowers.isMainProcess()) {
-    resetWasm();
     resetExperimental();
     resetTesting();
 
     SpecialPowers.notifyObserversInParentProcess(null, "disk-space-watcher",
                                                  "free");
   }
 
   SpecialPowers.removeFiles();
@@ -209,26 +207,16 @@ function enableTesting()
   SpecialPowers.setBoolPref("dom.indexedDB.testing", true);
 }
 
 function resetTesting()
 {
   SpecialPowers.clearUserPref("dom.indexedDB.testing");
 }
 
-function enableWasm()
-{
-  SpecialPowers.setBoolPref("javascript.options.wasm", true);
-}
-
-function resetWasm()
-{
-  SpecialPowers.clearUserPref("javascript.options.wasm");
-}
-
 function gc()
 {
   Cu.forceGC();
   Cu.forceCC();
 }
 
 function scheduleGC()
 {
--- a/dom/promise/tests/test_webassembly_compile.html
+++ b/dom/promise/tests/test_webassembly_compile.html
@@ -162,13 +162,13 @@ function runTest() {
     return;
   }
 
   var test = tests.shift();
   test();
 }
 
 SimpleTest.waitForExplicitFinish();
-SpecialPowers.pushPrefEnv({"set": [["javascript.options.wasm", true]]}, runTest);
+runTest();
 </script>
 </body>
 </html>
 
--- a/dom/tests/mochitest/general/test_interfaces.html
+++ b/dom/tests/mochitest/general/test_interfaces.html
@@ -89,16 +89,17 @@ var ecmaGlobals =
     "TypeError",
     "Uint16Array",
     "Uint32Array",
     "Uint8Array",
     "Uint8ClampedArray",
     "URIError",
     "WeakMap",
     "WeakSet",
+    "WebAssembly"
   ];
 // IMPORTANT: Do not change the list above without review from
 //            a JavaScript Engine peer!
 
 // IMPORTANT: Do not change the list below without review from a DOM peer,
 //            except to remove items from it!
 //
 // This is a list of interfaces that were prefixed with 'moz' instead of 'Moz'.
--- a/dom/workers/test/serviceworkers/test_serviceworker_interfaces.js
+++ b/dom/workers/test/serviceworkers/test_serviceworker_interfaces.js
@@ -64,16 +64,17 @@ var ecmaGlobals =
     "TypeError",
     "Uint16Array",
     "Uint32Array",
     "Uint8Array",
     "Uint8ClampedArray",
     "URIError",
     "WeakMap",
     "WeakSet",
+    "WebAssembly"
   ];
 // IMPORTANT: Do not change the list above without review from
 //            a JavaScript Engine peer!
 
 // IMPORTANT: Do not change the list below without review from a DOM peer!
 var interfaceNamesInGlobalScope =
   [
 // IMPORTANT: Do not change this list without review from a DOM peer!
--- a/dom/workers/test/test_worker_interfaces.js
+++ b/dom/workers/test/test_worker_interfaces.js
@@ -64,16 +64,17 @@ var ecmaGlobals =
     "TypeError",
     "Uint16Array",
     "Uint32Array",
     "Uint8Array",
     "Uint8ClampedArray",
     "URIError",
     "WeakMap",
     "WeakSet",
+    "WebAssembly"
   ];
 // IMPORTANT: Do not change the list above without review from
 //            a JavaScript Engine peer!
 
 // IMPORTANT: Do not change the list below without review from a DOM peer!
 var interfaceNamesInGlobalScope =
   [
 // IMPORTANT: Do not change this list without review from a DOM peer!
--- a/js/src/jit-test/tests/wasm/binary.js
+++ b/js/src/jit-test/tests/wasm/binary.js
@@ -59,19 +59,16 @@ assertErrorMessage(() => wasmEval(toU8([
 assertErrorMessage(() => wasmEval(toU8([42])), CompileError, magicError);
 assertErrorMessage(() => wasmEval(toU8([magic0, magic1, magic2])), CompileError, magicError);
 assertErrorMessage(() => wasmEval(toU8([1,2,3,4])), CompileError, magicError);
 assertErrorMessage(() => wasmEval(toU8([magic0, magic1, magic2, magic3])), CompileError, versionError(0x6d736100));
 assertErrorMessage(() => wasmEval(toU8([magic0, magic1, magic2, magic3, 1])), CompileError, versionError(0x6d736100));
 assertErrorMessage(() => wasmEval(toU8([magic0, magic1, magic2, magic3, ver0])), CompileError, versionError(0x6d736100));
 assertErrorMessage(() => wasmEval(toU8([magic0, magic1, magic2, magic3, ver0, ver1, ver2])), CompileError, versionError(0x6d736100));
 
-// This test should be removed shortly.
-assertEq(WebAssembly.validate(toU8([magic0, magic1, magic2, magic3, 0xd, 0x0, 0x0, 0x0])), true);
-
 function moduleHeaderThen(...rest) {
     return [magic0, magic1, magic2, magic3, ver0, ver1, ver2, ver3, ...rest];
 }
 
 var o = wasmEval(toU8(moduleHeaderThen()));
 assertEq(Object.getOwnPropertyNames(o).length, 0);
 
 // unfinished known sections
--- a/js/src/jit-test/tests/wasm/spec/binary.wast
+++ b/js/src/jit-test/tests/wasm/spec/binary.wast
@@ -1,18 +1,18 @@
-(module "\00asm\0d\00\00\00")
-(module "\00asm" "\0d\00\00\00")
-(module $M1 "\00asm\0d\00\00\00")
-(module $M2 "\00asm" "\0d\00\00\00")
+(module "\00asm\01\00\00\00")
+(module "\00asm" "\01\00\00\00")
+(module $M1 "\00asm\01\00\00\00")
+(module $M2 "\00asm" "\01\00\00\00")
 
 (assert_malformed (module "") "unexpected end")
 (assert_malformed (module "\01") "unexpected end")
 (assert_malformed (module "\00as") "unexpected end")
 (assert_malformed (module "asm\00") "magic header not detected")
 (assert_malformed (module "msa\00") "magic header not detected")
-(assert_malformed (module "msa\00\0d\00\00\00") "magic header not detected")
+(assert_malformed (module "msa\00\01\00\00\00") "magic header not detected")
 (assert_malformed (module "msa\00\00\00\00\0d") "magic header not detected")
 
 (assert_malformed (module "\00asm") "unexpected end")
-(assert_malformed (module "\00asm\0d") "unexpected end")
-(assert_malformed (module "\00asm\0d\00\00") "unexpected end")
+(assert_malformed (module "\00asm\01") "unexpected end")
+(assert_malformed (module "\00asm\01\00\00") "unexpected end")
 (assert_malformed (module "\00asm\0e\00\00\00") "unknown binary version")
 (assert_malformed (module "\00asm\00\00\00\0d") "unknown binary version")
--- a/js/src/jit-test/tests/wasm/spec/custom_section.wast
+++ b/js/src/jit-test/tests/wasm/spec/custom_section.wast
@@ -1,20 +1,20 @@
 (module
-  "\00asm" "\0d\00\00\00"
+  "\00asm" "\01\00\00\00"
   "\00\24\10" "a custom section" "this is the payload"
   "\00\20\10" "a custom section" "this is payload"
   "\00\11\10" "a custom section" ""
   "\00\10\00" "" "this is payload"
   "\00\01\00" "" ""
   "\00\24\10" "\00\00custom sectio\00" "this is the payload"
 )
 
 (module
-  "\00asm" "\0d\00\00\00"
+  "\00asm" "\01\00\00\00"
   "\00\0e\06" "custom" "payload"
   "\00\0e\06" "custom" "payload"
   "\01\01\00"  ;; type section
   "\00\0e\06" "custom" "payload"
   "\00\0e\06" "custom" "payload"
   "\02\01\00"  ;; import section
   "\00\0e\06" "custom" "payload"
   "\00\0e\06" "custom" "payload"
@@ -40,53 +40,53 @@
   "\00\0e\06" "custom" "payload"
   "\00\0e\06" "custom" "payload"
   "\0b\01\00"  ;; data section
   "\00\0e\06" "custom" "payload"
   "\00\0e\06" "custom" "payload"
 )
 
 (module
-  "\00asm" "\0d\00\00\00"
+  "\00asm" "\01\00\00\00"
   "\01\07\01\60\02\7f\7f\01\7f"                ;; type section
   "\00\1a\06" "custom" "this is the payload"   ;; custom section
   "\03\02\01\00"                               ;; function section
   "\07\0a\01\06\61\64\64\54\77\6f\00\00"       ;; export section
   "\0a\09\01\07\00\20\00\20\01\6a\0b"          ;; code section
   "\00\1b\07" "custom2" "this is the payload"  ;; custom section
 )
 
 (assert_malformed
   (module
-    "\00asm" "\0d\00\00\00"
+    "\00asm" "\01\00\00\00"
     "\00\00"
   )
   "unexpected end"
 )
 
 (assert_malformed
   (module
-    "\00asm" "\0d\00\00\00"
+    "\00asm" "\01\00\00\00"
     "\00\26\10" "a custom section" "this is the payload"
   )
   "unexpected end"
 )
 
 (assert_malformed
   (module
-    "\00asm" "\0d\00\00\00"
+    "\00asm" "\01\00\00\00"
     "\00\25\10" "a custom section" "this is the payload"
     "\00\24\10" "a custom section" "this is the payload"
   )
   "invalid section id"
 )
 
 (assert_malformed
   (module
-    "\00asm" "\0d\00\00\00"
+    "\00asm" "\01\00\00\00"
     "\01\07\01\60\02\7f\7f\01\7f"                         ;; type section
     "\00\25\10" "a custom section" "this is the payload"  ;; invalid length!
     "\03\02\01\00"                                        ;; function section
     "\0a\09\01\07\00\20\00\20\01\6a\0b"                   ;; code section
     "\00\1b\07" "custom2" "this is the payload"           ;; custom section
   )
   "function and code section have inconsistent lengths"
 )
--- a/js/src/wasm/WasmBinaryConstants.h
+++ b/js/src/wasm/WasmBinaryConstants.h
@@ -22,20 +22,16 @@
 #include "builtin/SIMD.h"
 
 namespace js {
 namespace wasm {
 
 static const uint32_t MagicNumber        = 0x6d736100; // "\0asm"
 static const uint32_t EncodingVersion    = 0x01;
 
-// 0xd is equivalent to 0x1 modulo unreachability validation rules, so to aid
-// transition of toolchain, accept both for a short period of time.
-static const uint32_t PrevEncodingVersion = 0x0d;
-
 static const char NameSectionName[]      = "name";
 
 enum class SectionId
 {
     Custom                               = 0,
     Type                                 = 1,
     Import                               = 2,
     Function                             = 3,
--- a/js/src/wasm/WasmValidate.cpp
+++ b/js/src/wasm/WasmValidate.cpp
@@ -612,17 +612,17 @@ DecodePreamble(Decoder& d)
 {
     if (d.bytesRemain() > MaxModuleBytes)
         return d.fail("module too big");
 
     uint32_t u32;
     if (!d.readFixedU32(&u32) || u32 != MagicNumber)
         return d.fail("failed to match magic number");
 
-    if (!d.readFixedU32(&u32) || (u32 != EncodingVersion && u32 != PrevEncodingVersion)) {
+    if (!d.readFixedU32(&u32) || u32 != EncodingVersion) {
         return d.fail("binary version 0x%" PRIx32 " does not match expected version 0x%" PRIx32,
                       u32, EncodingVersion);
     }
 
     return true;
 }
 
 static bool
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1248,17 +1248,17 @@ pref("dom.webcomponents.customelements.e
 pref("javascript.enabled",                  true);
 pref("javascript.options.strict",           false);
 #ifdef DEBUG
 pref("javascript.options.strict.debug",     false);
 #endif
 pref("javascript.options.baselinejit",      true);
 pref("javascript.options.ion",              true);
 pref("javascript.options.asmjs",            true);
-pref("javascript.options.wasm",             false);
+pref("javascript.options.wasm",             true);
 pref("javascript.options.wasm_baselinejit", false);
 pref("javascript.options.native_regexp",    true);
 pref("javascript.options.parallel_parsing", true);
 #if !defined(RELEASE_OR_BETA) && !defined(ANDROID) && !defined(MOZ_B2G) && !defined(XP_IOS)
 pref("javascript.options.asyncstack",       true);
 #else
 pref("javascript.options.asyncstack",       false);
 #endif