Bug 1402247 - Big scroll-past parts. draft
authorHenri Sivonen <hsivonen@hsivonen.fi>
Fri, 06 Jul 2018 10:35:22 +0300
changeset 827193 74b954eee9fcf79974a35d37a0a64c63ba0a655b
parent 827192 1efeecd0ac69a8f5852ee48e3a5539e3b3e367e4
child 827194 afdf7d11181f3b90578f94fd3824f7064827a85a
push id118488
push userbmo:hsivonen@hsivonen.fi
push dateTue, 07 Aug 2018 12:28:14 +0000
bugs1402247
milestone63.0a1
Bug 1402247 - Big scroll-past parts. MozReview-Commit-ID: 6NLSplMzibz
testing/web-platform/meta/html/browsers/browsing-the-web/scroll-to-fragid/fragment-and-encoding-2.html.ini
testing/web-platform/meta/mimesniff/mime-types/parsing.any.js.ini
xpcom/string/nsReadableUtilsImpl.h
xpcom/string/nsReadableUtilsSSE2.cpp
xpcom/string/nsUTF8UtilsNEON.cpp
xpcom/string/nsUTF8UtilsSSE2.cpp
--- a/testing/web-platform/meta/html/browsers/browsing-the-web/scroll-to-fragid/fragment-and-encoding-2.html.ini
+++ b/testing/web-platform/meta/html/browsers/browsing-the-web/scroll-to-fragid/fragment-and-encoding-2.html.ini
@@ -1,11 +1,4 @@
 [fragment-and-encoding-2.html]
   max-asserts: 4
   [Fragment navigation: encoding]
     expected: FAIL
-
-  [Invalid percent-encoded UTF-8 byte should decode as U+FFFD]
-    expected: FAIL
-
-  [Percent-encoded UTF-8 BOM followed by invalid UTF-8 byte should decode as U+FEFF U+FFFD]
-    expected: FAIL
-
--- a/testing/web-platform/meta/mimesniff/mime-types/parsing.any.js.ini
+++ b/testing/web-platform/meta/mimesniff/mime-types/parsing.any.js.ini
@@ -3694,16 +3694,787 @@
     expected: FAIL
 
   [/ (Blob/File)]
     expected: FAIL
 
   [/ (Request/Response)]
     expected: FAIL
 
+  [ÿ/ÿ (Request/Response)]
+    expected: FAIL
+
+  [€/x (Request/Response)]
+    expected: FAIL
+
+  [x/€ (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [‚/x (Request/Response)]
+    expected: FAIL
+
+  [x/‚ (Request/Response)]
+    expected: FAIL
+
+  [ƒ/x (Request/Response)]
+    expected: FAIL
+
+  [x/ƒ (Request/Response)]
+    expected: FAIL
+
+  [„/x (Request/Response)]
+    expected: FAIL
+
+  [x/„ (Request/Response)]
+    expected: FAIL
+
+  […/x (Request/Response)]
+    expected: FAIL
+
+  [x/… (Request/Response)]
+    expected: FAIL
+
+  [†/x (Request/Response)]
+    expected: FAIL
+
+  [x/† (Request/Response)]
+    expected: FAIL
+
+  [‡/x (Request/Response)]
+    expected: FAIL
+
+  [x/‡ (Request/Response)]
+    expected: FAIL
+
+  [ˆ/x (Request/Response)]
+    expected: FAIL
+
+  [x/ˆ (Request/Response)]
+    expected: FAIL
+
+  [‰/x (Request/Response)]
+    expected: FAIL
+
+  [x/‰ (Request/Response)]
+    expected: FAIL
+
+  [Š/x (Request/Response)]
+    expected: FAIL
+
+  [x/Š (Request/Response)]
+    expected: FAIL
+
+  [‹/x (Request/Response)]
+    expected: FAIL
+
+  [x/‹ (Request/Response)]
+    expected: FAIL
+
+  [Œ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Π(Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [Ž/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ž (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [‘/x (Request/Response)]
+    expected: FAIL
+
+  [x/‘ (Request/Response)]
+    expected: FAIL
+
+  [’/x (Request/Response)]
+    expected: FAIL
+
+  [x/’ (Request/Response)]
+    expected: FAIL
+
+  [“/x (Request/Response)]
+    expected: FAIL
+
+  [x/“ (Request/Response)]
+    expected: FAIL
+
+  [”/x (Request/Response)]
+    expected: FAIL
+
+  [x/” (Request/Response)]
+    expected: FAIL
+
+  [•/x (Request/Response)]
+    expected: FAIL
+
+  [x/• (Request/Response)]
+    expected: FAIL
+
+  [–/x (Request/Response)]
+    expected: FAIL
+
+  [x/– (Request/Response)]
+    expected: FAIL
+
+  [—/x (Request/Response)]
+    expected: FAIL
+
+  [x/— (Request/Response)]
+    expected: FAIL
+
+  [˜/x (Request/Response)]
+    expected: FAIL
+
+  [x/˜ (Request/Response)]
+    expected: FAIL
+
+  [™/x (Request/Response)]
+    expected: FAIL
+
+  [x/™ (Request/Response)]
+    expected: FAIL
+
+  [š/x (Request/Response)]
+    expected: FAIL
+
+  [x/š (Request/Response)]
+    expected: FAIL
+
+  [›/x (Request/Response)]
+    expected: FAIL
+
+  [x/› (Request/Response)]
+    expected: FAIL
+
+  [œ/x (Request/Response)]
+    expected: FAIL
+
+  [x/œ (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [ž/x (Request/Response)]
+    expected: FAIL
+
+  [x/ž (Request/Response)]
+    expected: FAIL
+
+  [Ÿ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ÿ (Request/Response)]
+    expected: FAIL
+
+  [ /x (Request/Response)]
+    expected: FAIL
+
+  [x/  (Request/Response)]
+    expected: FAIL
+
+  [¡/x (Request/Response)]
+    expected: FAIL
+
+  [x/¡ (Request/Response)]
+    expected: FAIL
+
+  [¢/x (Request/Response)]
+    expected: FAIL
+
+  [x/¢ (Request/Response)]
+    expected: FAIL
+
+  [£/x (Request/Response)]
+    expected: FAIL
+
+  [x/£ (Request/Response)]
+    expected: FAIL
+
+  [¤/x (Request/Response)]
+    expected: FAIL
+
+  [x/¤ (Request/Response)]
+    expected: FAIL
+
+  [¥/x (Request/Response)]
+    expected: FAIL
+
+  [x/¥ (Request/Response)]
+    expected: FAIL
+
+  [¦/x (Request/Response)]
+    expected: FAIL
+
+  [x/¦ (Request/Response)]
+    expected: FAIL
+
+  [§/x (Request/Response)]
+    expected: FAIL
+
+  [x/§ (Request/Response)]
+    expected: FAIL
+
+  [¨/x (Request/Response)]
+    expected: FAIL
+
+  [x/¨ (Request/Response)]
+    expected: FAIL
+
+  [©/x (Request/Response)]
+    expected: FAIL
+
+  [x/© (Request/Response)]
+    expected: FAIL
+
+  [ª/x (Request/Response)]
+    expected: FAIL
+
+  [x/ª (Request/Response)]
+    expected: FAIL
+
+  [«/x (Request/Response)]
+    expected: FAIL
+
+  [x/« (Request/Response)]
+    expected: FAIL
+
+  [¬/x (Request/Response)]
+    expected: FAIL
+
+  [x/¬ (Request/Response)]
+    expected: FAIL
+
+  [­/x (Request/Response)]
+    expected: FAIL
+
+  [x/­ (Request/Response)]
+    expected: FAIL
+
+  [®/x (Request/Response)]
+    expected: FAIL
+
+  [x/® (Request/Response)]
+    expected: FAIL
+
+  [¯/x (Request/Response)]
+    expected: FAIL
+
+  [x/¯ (Request/Response)]
+    expected: FAIL
+
+  [°/x (Request/Response)]
+    expected: FAIL
+
+  [x/° (Request/Response)]
+    expected: FAIL
+
+  [±/x (Request/Response)]
+    expected: FAIL
+
+  [x/± (Request/Response)]
+    expected: FAIL
+
+  [²/x (Request/Response)]
+    expected: FAIL
+
+  [x/² (Request/Response)]
+    expected: FAIL
+
+  [³/x (Request/Response)]
+    expected: FAIL
+
+  [x/³ (Request/Response)]
+    expected: FAIL
+
+  [´/x (Request/Response)]
+    expected: FAIL
+
+  [x/´ (Request/Response)]
+    expected: FAIL
+
+  [µ/x (Request/Response)]
+    expected: FAIL
+
+  [x/µ (Request/Response)]
+    expected: FAIL
+
+  [¶/x (Request/Response)]
+    expected: FAIL
+
+  [x/¶ (Request/Response)]
+    expected: FAIL
+
+  [·/x (Request/Response)]
+    expected: FAIL
+
+  [x/· (Request/Response)]
+    expected: FAIL
+
+  [¸/x (Request/Response)]
+    expected: FAIL
+
+  [x/¸ (Request/Response)]
+    expected: FAIL
+
+  [¹/x (Request/Response)]
+    expected: FAIL
+
+  [x/¹ (Request/Response)]
+    expected: FAIL
+
+  [º/x (Request/Response)]
+    expected: FAIL
+
+  [x/º (Request/Response)]
+    expected: FAIL
+
+  [»/x (Request/Response)]
+    expected: FAIL
+
+  [x/» (Request/Response)]
+    expected: FAIL
+
+  [¼/x (Request/Response)]
+    expected: FAIL
+
+  [x/¼ (Request/Response)]
+    expected: FAIL
+
+  [½/x (Request/Response)]
+    expected: FAIL
+
+  [x/½ (Request/Response)]
+    expected: FAIL
+
+  [¾/x (Request/Response)]
+    expected: FAIL
+
+  [x/¾ (Request/Response)]
+    expected: FAIL
+
+  [¿/x (Request/Response)]
+    expected: FAIL
+
+  [x/¿ (Request/Response)]
+    expected: FAIL
+
+  [À/x (Request/Response)]
+    expected: FAIL
+
+  [x/À (Request/Response)]
+    expected: FAIL
+
+  [Á/x (Request/Response)]
+    expected: FAIL
+
+  [x/Á (Request/Response)]
+    expected: FAIL
+
+  [Â/x (Request/Response)]
+    expected: FAIL
+
+  [x/Â (Request/Response)]
+    expected: FAIL
+
+  [Ã/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ã (Request/Response)]
+    expected: FAIL
+
+  [Ä/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ä (Request/Response)]
+    expected: FAIL
+
+  [Å/x (Request/Response)]
+    expected: FAIL
+
+  [x/Å (Request/Response)]
+    expected: FAIL
+
+  [Æ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Æ (Request/Response)]
+    expected: FAIL
+
+  [Ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ç (Request/Response)]
+    expected: FAIL
+
+  [È/x (Request/Response)]
+    expected: FAIL
+
+  [x/È (Request/Response)]
+    expected: FAIL
+
+  [É/x (Request/Response)]
+    expected: FAIL
+
+  [x/É (Request/Response)]
+    expected: FAIL
+
+  [Ê/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ê (Request/Response)]
+    expected: FAIL
+
+  [Ë/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ë (Request/Response)]
+    expected: FAIL
+
+  [Ì/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ì (Request/Response)]
+    expected: FAIL
+
+  [Í/x (Request/Response)]
+    expected: FAIL
+
+  [x/Í (Request/Response)]
+    expected: FAIL
+
+  [Î/x (Request/Response)]
+    expected: FAIL
+
+  [x/Î (Request/Response)]
+    expected: FAIL
+
+  [Ï/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ï (Request/Response)]
+    expected: FAIL
+
+  [Ð/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ð (Request/Response)]
+    expected: FAIL
+
+  [Ñ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ñ (Request/Response)]
+    expected: FAIL
+
+  [Ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ò (Request/Response)]
+    expected: FAIL
+
+  [Ó/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ó (Request/Response)]
+    expected: FAIL
+
+  [Ô/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ô (Request/Response)]
+    expected: FAIL
+
+  [Õ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Õ (Request/Response)]
+    expected: FAIL
+
+  [Ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ö (Request/Response)]
+    expected: FAIL
+
+  [×/x (Request/Response)]
+    expected: FAIL
+
+  [x/× (Request/Response)]
+    expected: FAIL
+
+  [Ø/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ø (Request/Response)]
+    expected: FAIL
+
+  [Ù/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ù (Request/Response)]
+    expected: FAIL
+
+  [Ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ú (Request/Response)]
+    expected: FAIL
+
+  [Û/x (Request/Response)]
+    expected: FAIL
+
+  [x/Û (Request/Response)]
+    expected: FAIL
+
+  [Ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ü (Request/Response)]
+    expected: FAIL
+
+  [Ý/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ý (Request/Response)]
+    expected: FAIL
+
+  [Þ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Þ (Request/Response)]
+    expected: FAIL
+
+  [ß/x (Request/Response)]
+    expected: FAIL
+
+  [x/ß (Request/Response)]
+    expected: FAIL
+
+  [à/x (Request/Response)]
+    expected: FAIL
+
+  [x/à (Request/Response)]
+    expected: FAIL
+
+  [á/x (Request/Response)]
+    expected: FAIL
+
+  [x/á (Request/Response)]
+    expected: FAIL
+
+  [â/x (Request/Response)]
+    expected: FAIL
+
+  [x/â (Request/Response)]
+    expected: FAIL
+
+  [ã/x (Request/Response)]
+    expected: FAIL
+
+  [x/ã (Request/Response)]
+    expected: FAIL
+
+  [ä/x (Request/Response)]
+    expected: FAIL
+
+  [x/ä (Request/Response)]
+    expected: FAIL
+
+  [å/x (Request/Response)]
+    expected: FAIL
+
+  [x/å (Request/Response)]
+    expected: FAIL
+
+  [æ/x (Request/Response)]
+    expected: FAIL
+
+  [x/æ (Request/Response)]
+    expected: FAIL
+
+  [ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/ç (Request/Response)]
+    expected: FAIL
+
+  [è/x (Request/Response)]
+    expected: FAIL
+
+  [x/è (Request/Response)]
+    expected: FAIL
+
+  [é/x (Request/Response)]
+    expected: FAIL
+
+  [x/é (Request/Response)]
+    expected: FAIL
+
+  [ê/x (Request/Response)]
+    expected: FAIL
+
+  [x/ê (Request/Response)]
+    expected: FAIL
+
+  [ë/x (Request/Response)]
+    expected: FAIL
+
+  [x/ë (Request/Response)]
+    expected: FAIL
+
+  [ì/x (Request/Response)]
+    expected: FAIL
+
+  [x/ì (Request/Response)]
+    expected: FAIL
+
+  [í/x (Request/Response)]
+    expected: FAIL
+
+  [x/í (Request/Response)]
+    expected: FAIL
+
+  [î/x (Request/Response)]
+    expected: FAIL
+
+  [x/î (Request/Response)]
+    expected: FAIL
+
+  [ï/x (Request/Response)]
+    expected: FAIL
+
+  [x/ï (Request/Response)]
+    expected: FAIL
+
+  [ð/x (Request/Response)]
+    expected: FAIL
+
+  [x/ð (Request/Response)]
+    expected: FAIL
+
+  [ñ/x (Request/Response)]
+    expected: FAIL
+
+  [x/ñ (Request/Response)]
+    expected: FAIL
+
+  [ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/ò (Request/Response)]
+    expected: FAIL
+
+  [ó/x (Request/Response)]
+    expected: FAIL
+
+  [x/ó (Request/Response)]
+    expected: FAIL
+
+  [ô/x (Request/Response)]
+    expected: FAIL
+
+  [x/ô (Request/Response)]
+    expected: FAIL
+
+  [õ/x (Request/Response)]
+    expected: FAIL
+
+  [x/õ (Request/Response)]
+    expected: FAIL
+
+  [ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/ö (Request/Response)]
+    expected: FAIL
+
+  [÷/x (Request/Response)]
+    expected: FAIL
+
+  [x/÷ (Request/Response)]
+    expected: FAIL
+
+  [ø/x (Request/Response)]
+    expected: FAIL
+
+  [x/ø (Request/Response)]
+    expected: FAIL
+
+  [ù/x (Request/Response)]
+    expected: FAIL
+
+  [x/ù (Request/Response)]
+    expected: FAIL
+
+  [ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/ú (Request/Response)]
+    expected: FAIL
+
+  [û/x (Request/Response)]
+    expected: FAIL
+
+  [x/û (Request/Response)]
+    expected: FAIL
+
+  [ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/ü (Request/Response)]
+    expected: FAIL
+
+  [ý/x (Request/Response)]
+    expected: FAIL
+
+  [x/ý (Request/Response)]
+    expected: FAIL
+
+  [þ/x (Request/Response)]
+    expected: FAIL
+
+  [x/þ (Request/Response)]
+    expected: FAIL
+
+  [ÿ/x (Request/Response)]
+    expected: FAIL
+
+  [x/ÿ (Request/Response)]
+    expected: FAIL
+
 
 [parsing.any.html]
   max-asserts: 2469
   [TEXT/HTML;CHARSET=GBK (Blob/File)]
     expected: FAIL
 
   [TEXT/HTML;CHARSET=GBK (Request/Response)]
     expected: FAIL
@@ -7396,8 +8167,779 @@
     expected: FAIL
 
   [/ (Blob/File)]
     expected: FAIL
 
   [/ (Request/Response)]
     expected: FAIL
 
+  [ÿ/ÿ (Request/Response)]
+    expected: FAIL
+
+  [€/x (Request/Response)]
+    expected: FAIL
+
+  [x/€ (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [‚/x (Request/Response)]
+    expected: FAIL
+
+  [x/‚ (Request/Response)]
+    expected: FAIL
+
+  [ƒ/x (Request/Response)]
+    expected: FAIL
+
+  [x/ƒ (Request/Response)]
+    expected: FAIL
+
+  [„/x (Request/Response)]
+    expected: FAIL
+
+  [x/„ (Request/Response)]
+    expected: FAIL
+
+  […/x (Request/Response)]
+    expected: FAIL
+
+  [x/… (Request/Response)]
+    expected: FAIL
+
+  [†/x (Request/Response)]
+    expected: FAIL
+
+  [x/† (Request/Response)]
+    expected: FAIL
+
+  [‡/x (Request/Response)]
+    expected: FAIL
+
+  [x/‡ (Request/Response)]
+    expected: FAIL
+
+  [ˆ/x (Request/Response)]
+    expected: FAIL
+
+  [x/ˆ (Request/Response)]
+    expected: FAIL
+
+  [‰/x (Request/Response)]
+    expected: FAIL
+
+  [x/‰ (Request/Response)]
+    expected: FAIL
+
+  [Š/x (Request/Response)]
+    expected: FAIL
+
+  [x/Š (Request/Response)]
+    expected: FAIL
+
+  [‹/x (Request/Response)]
+    expected: FAIL
+
+  [x/‹ (Request/Response)]
+    expected: FAIL
+
+  [Œ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Π(Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [Ž/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ž (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [‘/x (Request/Response)]
+    expected: FAIL
+
+  [x/‘ (Request/Response)]
+    expected: FAIL
+
+  [’/x (Request/Response)]
+    expected: FAIL
+
+  [x/’ (Request/Response)]
+    expected: FAIL
+
+  [“/x (Request/Response)]
+    expected: FAIL
+
+  [x/“ (Request/Response)]
+    expected: FAIL
+
+  [”/x (Request/Response)]
+    expected: FAIL
+
+  [x/” (Request/Response)]
+    expected: FAIL
+
+  [•/x (Request/Response)]
+    expected: FAIL
+
+  [x/• (Request/Response)]
+    expected: FAIL
+
+  [–/x (Request/Response)]
+    expected: FAIL
+
+  [x/– (Request/Response)]
+    expected: FAIL
+
+  [—/x (Request/Response)]
+    expected: FAIL
+
+  [x/— (Request/Response)]
+    expected: FAIL
+
+  [˜/x (Request/Response)]
+    expected: FAIL
+
+  [x/˜ (Request/Response)]
+    expected: FAIL
+
+  [™/x (Request/Response)]
+    expected: FAIL
+
+  [x/™ (Request/Response)]
+    expected: FAIL
+
+  [š/x (Request/Response)]
+    expected: FAIL
+
+  [x/š (Request/Response)]
+    expected: FAIL
+
+  [›/x (Request/Response)]
+    expected: FAIL
+
+  [x/› (Request/Response)]
+    expected: FAIL
+
+  [œ/x (Request/Response)]
+    expected: FAIL
+
+  [x/œ (Request/Response)]
+    expected: FAIL
+
+  [/x (Request/Response)]
+    expected: FAIL
+
+  [x/ (Request/Response)]
+    expected: FAIL
+
+  [ž/x (Request/Response)]
+    expected: FAIL
+
+  [x/ž (Request/Response)]
+    expected: FAIL
+
+  [Ÿ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ÿ (Request/Response)]
+    expected: FAIL
+
+  [ /x (Request/Response)]
+    expected: FAIL
+
+  [x/  (Request/Response)]
+    expected: FAIL
+
+  [¡/x (Request/Response)]
+    expected: FAIL
+
+  [x/¡ (Request/Response)]
+    expected: FAIL
+
+  [¢/x (Request/Response)]
+    expected: FAIL
+
+  [x/¢ (Request/Response)]
+    expected: FAIL
+
+  [£/x (Request/Response)]
+    expected: FAIL
+
+  [x/£ (Request/Response)]
+    expected: FAIL
+
+  [¤/x (Request/Response)]
+    expected: FAIL
+
+  [x/¤ (Request/Response)]
+    expected: FAIL
+
+  [¥/x (Request/Response)]
+    expected: FAIL
+
+  [x/¥ (Request/Response)]
+    expected: FAIL
+
+  [¦/x (Request/Response)]
+    expected: FAIL
+
+  [x/¦ (Request/Response)]
+    expected: FAIL
+
+  [§/x (Request/Response)]
+    expected: FAIL
+
+  [x/§ (Request/Response)]
+    expected: FAIL
+
+  [¨/x (Request/Response)]
+    expected: FAIL
+
+  [x/¨ (Request/Response)]
+    expected: FAIL
+
+  [©/x (Request/Response)]
+    expected: FAIL
+
+  [x/© (Request/Response)]
+    expected: FAIL
+
+  [ª/x (Request/Response)]
+    expected: FAIL
+
+  [x/ª (Request/Response)]
+    expected: FAIL
+
+  [«/x (Request/Response)]
+    expected: FAIL
+
+  [x/« (Request/Response)]
+    expected: FAIL
+
+  [¬/x (Request/Response)]
+    expected: FAIL
+
+  [x/¬ (Request/Response)]
+    expected: FAIL
+
+  [­/x (Request/Response)]
+    expected: FAIL
+
+  [x/­ (Request/Response)]
+    expected: FAIL
+
+  [®/x (Request/Response)]
+    expected: FAIL
+
+  [x/® (Request/Response)]
+    expected: FAIL
+
+  [¯/x (Request/Response)]
+    expected: FAIL
+
+  [x/¯ (Request/Response)]
+    expected: FAIL
+
+  [°/x (Request/Response)]
+    expected: FAIL
+
+  [x/° (Request/Response)]
+    expected: FAIL
+
+  [±/x (Request/Response)]
+    expected: FAIL
+
+  [x/± (Request/Response)]
+    expected: FAIL
+
+  [²/x (Request/Response)]
+    expected: FAIL
+
+  [x/² (Request/Response)]
+    expected: FAIL
+
+  [³/x (Request/Response)]
+    expected: FAIL
+
+  [x/³ (Request/Response)]
+    expected: FAIL
+
+  [´/x (Request/Response)]
+    expected: FAIL
+
+  [x/´ (Request/Response)]
+    expected: FAIL
+
+  [µ/x (Request/Response)]
+    expected: FAIL
+
+  [x/µ (Request/Response)]
+    expected: FAIL
+
+  [¶/x (Request/Response)]
+    expected: FAIL
+
+  [x/¶ (Request/Response)]
+    expected: FAIL
+
+  [·/x (Request/Response)]
+    expected: FAIL
+
+  [x/· (Request/Response)]
+    expected: FAIL
+
+  [¸/x (Request/Response)]
+    expected: FAIL
+
+  [x/¸ (Request/Response)]
+    expected: FAIL
+
+  [¹/x (Request/Response)]
+    expected: FAIL
+
+  [x/¹ (Request/Response)]
+    expected: FAIL
+
+  [º/x (Request/Response)]
+    expected: FAIL
+
+  [x/º (Request/Response)]
+    expected: FAIL
+
+  [»/x (Request/Response)]
+    expected: FAIL
+
+  [x/» (Request/Response)]
+    expected: FAIL
+
+  [¼/x (Request/Response)]
+    expected: FAIL
+
+  [x/¼ (Request/Response)]
+    expected: FAIL
+
+  [½/x (Request/Response)]
+    expected: FAIL
+
+  [x/½ (Request/Response)]
+    expected: FAIL
+
+  [¾/x (Request/Response)]
+    expected: FAIL
+
+  [x/¾ (Request/Response)]
+    expected: FAIL
+
+  [¿/x (Request/Response)]
+    expected: FAIL
+
+  [x/¿ (Request/Response)]
+    expected: FAIL
+
+  [À/x (Request/Response)]
+    expected: FAIL
+
+  [x/À (Request/Response)]
+    expected: FAIL
+
+  [Á/x (Request/Response)]
+    expected: FAIL
+
+  [x/Á (Request/Response)]
+    expected: FAIL
+
+  [Â/x (Request/Response)]
+    expected: FAIL
+
+  [x/Â (Request/Response)]
+    expected: FAIL
+
+  [Ã/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ã (Request/Response)]
+    expected: FAIL
+
+  [Ä/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ä (Request/Response)]
+    expected: FAIL
+
+  [Å/x (Request/Response)]
+    expected: FAIL
+
+  [x/Å (Request/Response)]
+    expected: FAIL
+
+  [Æ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Æ (Request/Response)]
+    expected: FAIL
+
+  [Ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ç (Request/Response)]
+    expected: FAIL
+
+  [È/x (Request/Response)]
+    expected: FAIL
+
+  [x/È (Request/Response)]
+    expected: FAIL
+
+  [É/x (Request/Response)]
+    expected: FAIL
+
+  [x/É (Request/Response)]
+    expected: FAIL
+
+  [Ê/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ê (Request/Response)]
+    expected: FAIL
+
+  [Ë/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ë (Request/Response)]
+    expected: FAIL
+
+  [Ì/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ì (Request/Response)]
+    expected: FAIL
+
+  [Í/x (Request/Response)]
+    expected: FAIL
+
+  [x/Í (Request/Response)]
+    expected: FAIL
+
+  [Î/x (Request/Response)]
+    expected: FAIL
+
+  [x/Î (Request/Response)]
+    expected: FAIL
+
+  [Ï/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ï (Request/Response)]
+    expected: FAIL
+
+  [Ð/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ð (Request/Response)]
+    expected: FAIL
+
+  [Ñ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ñ (Request/Response)]
+    expected: FAIL
+
+  [Ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ò (Request/Response)]
+    expected: FAIL
+
+  [Ó/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ó (Request/Response)]
+    expected: FAIL
+
+  [Ô/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ô (Request/Response)]
+    expected: FAIL
+
+  [Õ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Õ (Request/Response)]
+    expected: FAIL
+
+  [Ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ö (Request/Response)]
+    expected: FAIL
+
+  [×/x (Request/Response)]
+    expected: FAIL
+
+  [x/× (Request/Response)]
+    expected: FAIL
+
+  [Ø/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ø (Request/Response)]
+    expected: FAIL
+
+  [Ù/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ù (Request/Response)]
+    expected: FAIL
+
+  [Ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ú (Request/Response)]
+    expected: FAIL
+
+  [Û/x (Request/Response)]
+    expected: FAIL
+
+  [x/Û (Request/Response)]
+    expected: FAIL
+
+  [Ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ü (Request/Response)]
+    expected: FAIL
+
+  [Ý/x (Request/Response)]
+    expected: FAIL
+
+  [x/Ý (Request/Response)]
+    expected: FAIL
+
+  [Þ/x (Request/Response)]
+    expected: FAIL
+
+  [x/Þ (Request/Response)]
+    expected: FAIL
+
+  [ß/x (Request/Response)]
+    expected: FAIL
+
+  [x/ß (Request/Response)]
+    expected: FAIL
+
+  [à/x (Request/Response)]
+    expected: FAIL
+
+  [x/à (Request/Response)]
+    expected: FAIL
+
+  [á/x (Request/Response)]
+    expected: FAIL
+
+  [x/á (Request/Response)]
+    expected: FAIL
+
+  [â/x (Request/Response)]
+    expected: FAIL
+
+  [x/â (Request/Response)]
+    expected: FAIL
+
+  [ã/x (Request/Response)]
+    expected: FAIL
+
+  [x/ã (Request/Response)]
+    expected: FAIL
+
+  [ä/x (Request/Response)]
+    expected: FAIL
+
+  [x/ä (Request/Response)]
+    expected: FAIL
+
+  [å/x (Request/Response)]
+    expected: FAIL
+
+  [x/å (Request/Response)]
+    expected: FAIL
+
+  [æ/x (Request/Response)]
+    expected: FAIL
+
+  [x/æ (Request/Response)]
+    expected: FAIL
+
+  [ç/x (Request/Response)]
+    expected: FAIL
+
+  [x/ç (Request/Response)]
+    expected: FAIL
+
+  [è/x (Request/Response)]
+    expected: FAIL
+
+  [x/è (Request/Response)]
+    expected: FAIL
+
+  [é/x (Request/Response)]
+    expected: FAIL
+
+  [x/é (Request/Response)]
+    expected: FAIL
+
+  [ê/x (Request/Response)]
+    expected: FAIL
+
+  [x/ê (Request/Response)]
+    expected: FAIL
+
+  [ë/x (Request/Response)]
+    expected: FAIL
+
+  [x/ë (Request/Response)]
+    expected: FAIL
+
+  [ì/x (Request/Response)]
+    expected: FAIL
+
+  [x/ì (Request/Response)]
+    expected: FAIL
+
+  [í/x (Request/Response)]
+    expected: FAIL
+
+  [x/í (Request/Response)]
+    expected: FAIL
+
+  [î/x (Request/Response)]
+    expected: FAIL
+
+  [x/î (Request/Response)]
+    expected: FAIL
+
+  [ï/x (Request/Response)]
+    expected: FAIL
+
+  [x/ï (Request/Response)]
+    expected: FAIL
+
+  [ð/x (Request/Response)]
+    expected: FAIL
+
+  [x/ð (Request/Response)]
+    expected: FAIL
+
+  [ñ/x (Request/Response)]
+    expected: FAIL
+
+  [x/ñ (Request/Response)]
+    expected: FAIL
+
+  [ò/x (Request/Response)]
+    expected: FAIL
+
+  [x/ò (Request/Response)]
+    expected: FAIL
+
+  [ó/x (Request/Response)]
+    expected: FAIL
+
+  [x/ó (Request/Response)]
+    expected: FAIL
+
+  [ô/x (Request/Response)]
+    expected: FAIL
+
+  [x/ô (Request/Response)]
+    expected: FAIL
+
+  [õ/x (Request/Response)]
+    expected: FAIL
+
+  [x/õ (Request/Response)]
+    expected: FAIL
+
+  [ö/x (Request/Response)]
+    expected: FAIL
+
+  [x/ö (Request/Response)]
+    expected: FAIL
+
+  [÷/x (Request/Response)]
+    expected: FAIL
+
+  [x/÷ (Request/Response)]
+    expected: FAIL
+
+  [ø/x (Request/Response)]
+    expected: FAIL
+
+  [x/ø (Request/Response)]
+    expected: FAIL
+
+  [ù/x (Request/Response)]
+    expected: FAIL
+
+  [x/ù (Request/Response)]
+    expected: FAIL
+
+  [ú/x (Request/Response)]
+    expected: FAIL
+
+  [x/ú (Request/Response)]
+    expected: FAIL
+
+  [û/x (Request/Response)]
+    expected: FAIL
+
+  [x/û (Request/Response)]
+    expected: FAIL
+
+  [ü/x (Request/Response)]
+    expected: FAIL
+
+  [x/ü (Request/Response)]
+    expected: FAIL
+
+  [ý/x (Request/Response)]
+    expected: FAIL
+
+  [x/ý (Request/Response)]
+    expected: FAIL
+
+  [þ/x (Request/Response)]
+    expected: FAIL
+
+  [x/þ (Request/Response)]
+    expected: FAIL
+
+  [ÿ/x (Request/Response)]
+    expected: FAIL
+
+  [x/ÿ (Request/Response)]
+    expected: FAIL
+
deleted file mode 100644
--- a/xpcom/string/nsReadableUtilsImpl.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include <stdint.h>
-
-namespace mozilla {
-
-inline bool IsASCII(char16_t aChar) {
-  return (aChar & 0xFF80) == 0;
-}
-
-/**
- * Provides a pointer before or equal to |aPtr| that is is suitably aligned.
- */
-inline const char16_t* aligned(const char16_t* aPtr, const uintptr_t aMask)
-{
-  return reinterpret_cast<const char16_t*>(
-      reinterpret_cast<uintptr_t>(aPtr) & ~aMask);
-}
-
-/**
- * Structures for word-sized vectorization of ASCII checking for UTF-16
- * strings.
- */
-template<size_t size> struct NonASCIIParameters;
-template<> struct NonASCIIParameters<4> {
-  static inline size_t mask() { return 0xff80ff80; }
-  static inline uintptr_t alignMask() { return 0x3; }
-  static inline size_t numUnicharsPerWord() { return 2; }
-};
-
-template<> struct NonASCIIParameters<8> {
-  static inline size_t mask() {
-    static const uint64_t maskAsUint64 = UINT64_C(0xff80ff80ff80ff80);
-    // We have to explicitly cast this 64-bit value to a size_t, or else
-    // compilers for 32-bit platforms will warn about it being too large to fit
-    // in the size_t return type. (Fortunately, this code isn't actually
-    // invoked on 32-bit platforms -- they'll use the <4> specialization above.
-    // So it is, in fact, OK that this value is too large for a 32-bit size_t.)
-    return (size_t)maskAsUint64;
-  }
-  static inline uintptr_t alignMask() { return 0x7; }
-  static inline size_t numUnicharsPerWord() { return 4; }
-};
-
-namespace SSE2 {
-
-int32_t FirstNonASCII(const char16_t* aBegin, const char16_t* aEnd);
-
-} // namespace SSE2
-} // namespace mozilla
deleted file mode 100644
--- a/xpcom/string/nsReadableUtilsSSE2.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include <emmintrin.h>
-
-#include "nsReadableUtilsImpl.h"
-
-namespace mozilla {
-namespace SSE2 {
-
-static inline bool
-is_zero (__m128i x)
-{
-  return
-    _mm_movemask_epi8(_mm_cmpeq_epi8(x, _mm_setzero_si128())) == 0xffff;
-}
-
-int32_t
-FirstNonASCII(const char16_t* aBegin, const char16_t* aEnd)
-{
-  const size_t kNumUnicharsPerVector = sizeof(__m128i) / sizeof(char16_t);
-  typedef NonASCIIParameters<sizeof(size_t)> p;
-  const size_t kMask = p::mask();
-  const uintptr_t kXmmAlignMask = 0xf;
-  const uint16_t kShortMask = 0xff80;
-  const size_t kNumUnicharsPerWord = p::numUnicharsPerWord();
-
-  const char16_t* idx = aBegin;
-
-  // Align ourselves to a 16-byte boundary as required by _mm_load_si128
-  for (; idx != aEnd && ((uintptr_t(idx) & kXmmAlignMask) != 0); idx++) {
-    if (!IsASCII(*idx)) {
-      return idx - aBegin;
-    }
-  }
-
-  // Check one XMM register (16 bytes) at a time.
-  const char16_t* vectWalkEnd = aligned(aEnd, kXmmAlignMask);
-  __m128i vectmask = _mm_set1_epi16(static_cast<int16_t>(kShortMask));
-  for (; idx != vectWalkEnd; idx += kNumUnicharsPerVector) {
-    const __m128i vect = *reinterpret_cast<const __m128i*>(idx);
-    if (!is_zero(_mm_and_si128(vect, vectmask))) {
-      return idx - aBegin;
-    }
-  }
-
-  // Check one word at a time.
-  const char16_t* wordWalkEnd = aligned(aEnd, p::alignMask());
-  for(; idx != wordWalkEnd; idx += kNumUnicharsPerWord) {
-    const size_t word = *reinterpret_cast<const size_t*>(idx);
-    if (word & kMask) {
-      return idx - aBegin;
-    }
-  }
-
-  // Take care of the remainder one character at a time.
-  for (; idx != aEnd; idx++) {
-    if (!IsASCII(*idx)) {
-      return idx - aBegin;
-    }
-  }
-
-  return -1;
-}
-
-} // namespace SSE2
-} // namespace mozilla
deleted file mode 100644
--- a/xpcom/string/nsUTF8UtilsNEON.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nscore.h"
-#include "nsAlgorithm.h"
-#include "nsUTF8Utils.h"
-
-#include <arm_neon.h>
-
-void
-LossyConvertEncoding16to8::write_neon(const char16_t* aSource,
-                                      uint32_t aSourceLength)
-{
-  char* dest = mDestination;
-
-  // Align source to a 16-byte boundary and destination to 8-bytes boundary.
-  uint32_t i = 0;
-  while (((reinterpret_cast<uintptr_t>(aSource + i) & 0xf) ||
-          (reinterpret_cast<uintptr_t>(dest + i) & 0x7)) &&
-         i < aSourceLength) {
-    dest[i] = static_cast<unsigned char>(aSource[i]);
-    i++;
-  }
-
-  while ((reinterpret_cast<uintptr_t>(dest + i) & 0xf) &&
-         aSourceLength - i > 7) {
-    // source is aligned, but destination isn't aligned by 16-byte yet
-    uint16x8_t s =
-      vld1q_u16(reinterpret_cast<const uint16_t*>(
-                  __builtin_assume_aligned(aSource + i, 16)));
-    vst1_u8(reinterpret_cast<uint8_t*>(
-              __builtin_assume_aligned(dest + i, 8)),
-            vmovn_u16(s));
-    i += 8;
-  }
-
-  // Align source and destination to a 16-byte boundary.
-  while (aSourceLength - i > 15) {
-    uint16x8_t low =
-      vld1q_u16(reinterpret_cast<const uint16_t*>(
-                  __builtin_assume_aligned(aSource + i, 16)));
-    uint16x8_t high =
-      vld1q_u16(reinterpret_cast<const uint16_t*>(
-                  __builtin_assume_aligned(aSource + i + 8, 16)));
-    vst1q_u8(reinterpret_cast<uint8_t*>(
-               __builtin_assume_aligned(dest + i, 16)),
-             vcombine_u8(vmovn_u16(low), vmovn_u16(high)));
-    i += 16;
-  }
-
-  if (aSourceLength - i > 7) {
-    uint16x8_t s = vld1q_u16(reinterpret_cast<const uint16_t*>(
-                               __builtin_assume_aligned(aSource + i, 16)));
-    vst1_u8(reinterpret_cast<uint8_t*>(
-              __builtin_assume_aligned(dest + i, 8)),
-            vmovn_u16(s));
-    i += 8;
-  }
-
-  // Finish up the rest.
-  for (; i < aSourceLength; ++i) {
-    dest[i] = static_cast<unsigned char>(aSource[i]);
-  }
-
-  mDestination += i;
-}
-
-void
-LossyConvertEncoding8to16::write_neon(const char* aSource,
-                                      uint32_t aSourceLength)
-{
-  char16_t* dest = mDestination;
-
-  // Align source to a 8-byte boundary and destination to 16-bytes boundary.
-  uint32_t i = 0;
-  while (((reinterpret_cast<uintptr_t>(aSource + i) & 0x7) ||
-          (reinterpret_cast<uintptr_t>(dest + i) & 0xf)) &&
-         i < aSourceLength) {
-    dest[i] = static_cast<unsigned char>(aSource[i]);
-    i++;
-  }
-
-  if ((uintptr_t(aSource + i) & 0xf) && aSourceLength - i > 7) {
-    // destination is aligned, but source isn't aligned by 16-byte yet
-    uint8x8_t s =
-      vld1_u8(reinterpret_cast<const uint8_t*>(
-                __builtin_assume_aligned(aSource + i, 8)));
-    vst1q_u16(reinterpret_cast<uint16_t*>(
-                __builtin_assume_aligned(dest + i, 16)),
-              vmovl_u8(s));
-    i += 8;
-  }
-
-  // Align source and destination to a 16-byte boundary.
-  while (aSourceLength - i > 15) {
-    uint8x16_t s =
-      vld1q_u8(reinterpret_cast<const uint8_t*>(
-                 __builtin_assume_aligned(aSource + i, 16)));
-    uint16x8_t low = vmovl_u8(vget_low_u8(s));
-    uint16x8_t high = vmovl_u8(vget_high_u8(s));
-    vst1q_u16(reinterpret_cast<uint16_t*>(
-                __builtin_assume_aligned(dest + i, 16)),
-              low);
-    vst1q_u16(reinterpret_cast<uint16_t*>(
-                __builtin_assume_aligned(dest + i + 8, 16)),
-              high);
-    i += 16;
-  }
-
-  if (aSourceLength - i > 7) {
-    uint8x8_t s =
-      vld1_u8(reinterpret_cast<const uint8_t*>(
-                __builtin_assume_aligned(aSource + i, 8)));
-    vst1q_u16(reinterpret_cast<uint16_t*>(
-                __builtin_assume_aligned(dest + i, 16)),
-              vmovl_u8(s));
-    i += 8;
-  }
-
-  // Finish up whatever's left.
-  for (; i < aSourceLength; ++i) {
-    dest[i] = static_cast<unsigned char>(aSource[i]);
-  }
-
-  mDestination += i;
-}
deleted file mode 100644
--- a/xpcom/string/nsUTF8UtilsSSE2.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nscore.h"
-#include "nsAlgorithm.h"
-#include <emmintrin.h>
-#include <nsUTF8Utils.h>
-
-void
-LossyConvertEncoding16to8::write_sse2(const char16_t* aSource,
-                                      uint32_t aSourceLength)
-{
-  char* dest = mDestination;
-
-  // Align source to a 16-byte boundary.
-  uint32_t i = 0;
-  uint32_t alignLen =
-    XPCOM_MIN<uint32_t>(aSourceLength,
-                        uint32_t(-NS_PTR_TO_INT32(aSource) & 0xf) / sizeof(char16_t));
-  for (; i < alignLen; ++i) {
-    dest[i] = static_cast<unsigned char>(aSource[i]);
-  }
-
-  // Walk 64 bytes (four XMM registers) at a time.
-  __m128i vectmask = _mm_set1_epi16(0x00ff);
-  for (; aSourceLength - i > 31; i += 32) {
-    __m128i source1 = _mm_load_si128(reinterpret_cast<const __m128i*>(aSource + i));
-    source1 = _mm_and_si128(source1, vectmask);
-
-    __m128i source2 = _mm_load_si128(reinterpret_cast<const __m128i*>(aSource + i + 8));
-    source2 = _mm_and_si128(source2, vectmask);
-
-    __m128i source3 = _mm_load_si128(reinterpret_cast<const __m128i*>(aSource + i + 16));
-    source3 = _mm_and_si128(source3, vectmask);
-
-    __m128i source4 = _mm_load_si128(reinterpret_cast<const __m128i*>(aSource + i + 24));
-    source4 = _mm_and_si128(source4, vectmask);
-
-
-    // Pack the source data.  SSE2 views this as a saturating uint16_t to
-    // uint8_t conversion, but since we masked off the high-order byte of every
-    // uint16_t, we're really just grabbing the low-order bytes of source1 and
-    // source2.
-    __m128i packed1 = _mm_packus_epi16(source1, source2);
-    __m128i packed2 = _mm_packus_epi16(source3, source4);
-
-    // This store needs to be unaligned since there's no guarantee that the
-    // alignment we did above for the source will align the destination.
-    _mm_storeu_si128(reinterpret_cast<__m128i*>(dest + i),      packed1);
-    _mm_storeu_si128(reinterpret_cast<__m128i*>(dest + i + 16), packed2);
-  }
-
-  // Finish up the rest.
-  for (; i < aSourceLength; ++i) {
-    dest[i] = static_cast<unsigned char>(aSource[i]);
-  }
-
-  mDestination += i;
-}
-
-void
-LossyConvertEncoding8to16::write_sse2(const char* aSource,
-                                      uint32_t aSourceLength)
-{
-  char16_t* dest = mDestination;
-
-  // Align source to a 16-byte boundary.  We choose to align source rather than
-  // dest because we'd rather have our loads than our stores be fast. You have
-  // to wait for a load to complete, but you can keep on moving after issuing a
-  // store.
-  uint32_t i = 0;
-  uint32_t alignLen = XPCOM_MIN(aSourceLength,
-                                uint32_t(-NS_PTR_TO_INT32(aSource) & 0xf));
-  for (; i < alignLen; ++i) {
-    dest[i] = static_cast<unsigned char>(aSource[i]);
-  }
-
-  // Walk 32 bytes (two XMM registers) at a time.
-  for (; aSourceLength - i > 31; i += 32) {
-    __m128i source1 = _mm_load_si128(reinterpret_cast<const __m128i*>(aSource + i));
-    __m128i source2 = _mm_load_si128(reinterpret_cast<const __m128i*>(aSource + i + 16));
-
-    // Interleave 0s in with the bytes of source to create lo and hi.
-    __m128i lo1 = _mm_unpacklo_epi8(source1, _mm_setzero_si128());
-    __m128i hi1 = _mm_unpackhi_epi8(source1, _mm_setzero_si128());
-    __m128i lo2 = _mm_unpacklo_epi8(source2, _mm_setzero_si128());
-    __m128i hi2 = _mm_unpackhi_epi8(source2, _mm_setzero_si128());
-
-    // store lo and hi into dest.
-    _mm_storeu_si128(reinterpret_cast<__m128i*>(dest + i),      lo1);
-    _mm_storeu_si128(reinterpret_cast<__m128i*>(dest + i + 8),  hi1);
-    _mm_storeu_si128(reinterpret_cast<__m128i*>(dest + i + 16), lo2);
-    _mm_storeu_si128(reinterpret_cast<__m128i*>(dest + i + 24), hi2);
-  }
-
-  // Finish up whatever's left.
-  for (; i < aSourceLength; ++i) {
-    dest[i] = static_cast<unsigned char>(aSource[i]);
-  }
-
-  mDestination += i;
-}