Merge mozilla-central to autoland
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Tue, 31 Jan 2017 15:58:49 +0100
changeset 360842 6694869418befc4b7f17a9478f183f7b4912c44e
parent 360841 43c2c4c0324de97236ccef58707fc75772a56811 (current diff)
parent 360836 b47946b2076f6ac3ffd2cb72367f789237a11ab6 (diff)
child 360843 52219cacfe87a892b3a318f504eb7ad9051c2525
push id10863
push userjlorenzo@mozilla.com
push dateMon, 06 Mar 2017 23:02:23 +0000
treeherdermozilla-aurora@0931190cd725 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone54.0a1
Merge mozilla-central to autoland
mfbt/double-conversion/LICENSE
mfbt/double-conversion/README
mfbt/double-conversion/bignum-dtoa.cc
mfbt/double-conversion/bignum-dtoa.h
mfbt/double-conversion/bignum.cc
mfbt/double-conversion/bignum.h
mfbt/double-conversion/cached-powers.cc
mfbt/double-conversion/cached-powers.h
mfbt/double-conversion/diy-fp.cc
mfbt/double-conversion/diy-fp.h
mfbt/double-conversion/double-conversion.cc
mfbt/double-conversion/double-conversion.h
mfbt/double-conversion/fast-dtoa.cc
mfbt/double-conversion/fast-dtoa.h
mfbt/double-conversion/fixed-dtoa.cc
mfbt/double-conversion/fixed-dtoa.h
mfbt/double-conversion/ieee.h
mfbt/double-conversion/source/LICENSE
mfbt/double-conversion/source/bignum-dtoa.cc
mfbt/double-conversion/source/bignum-dtoa.h
mfbt/double-conversion/source/bignum.cc
mfbt/double-conversion/source/bignum.h
mfbt/double-conversion/source/cached-powers.cc
mfbt/double-conversion/source/cached-powers.h
mfbt/double-conversion/source/diy-fp.cc
mfbt/double-conversion/source/diy-fp.h
mfbt/double-conversion/source/double-conversion.cc
mfbt/double-conversion/source/double-conversion.h
mfbt/double-conversion/source/fast-dtoa.cc
mfbt/double-conversion/source/fast-dtoa.h
mfbt/double-conversion/source/fixed-dtoa.cc
mfbt/double-conversion/source/fixed-dtoa.h
mfbt/double-conversion/source/ieee.h
mfbt/double-conversion/source/strtod.cc
mfbt/double-conversion/source/strtod.h
mfbt/double-conversion/source/utils.h
mfbt/double-conversion/strtod.cc
mfbt/double-conversion/strtod.h
mfbt/double-conversion/use-static_assert.patch
mfbt/double-conversion/utils.h
testing/web-platform/meta/workers/postMessage_event_properties.htm.ini
--- a/.clang-format-ignore
+++ b/.clang-format-ignore
@@ -46,17 +46,17 @@
 ^media/libyuv/.*
 ^media/mtransport/.*
 ^media/openmax_dl/.*
 ^media/pocketsphinx/.*
 ^media/sphinxbase/.*
 ^media/webrtc/trunk/.*
 ^memory/jemalloc/src/.*
 ^mfbt/decimal/.*
-^mfbt/double-conversion/.*
+^mfbt/double-conversion/source/.*
 ^mfbt/lz4.*
 ^mobile/android/thirdparty/.*
 ^modules/brotli/.*
 ^modules/freetype2/.*
 ^modules/libbz2/.*
 ^modules/libmar/.*
 ^modules/zlib/.*
 ^netwerk/sctp/src/.*
--- a/browser/base/content/test/referrer/head.js
+++ b/browser/base/content/test/referrer/head.js
@@ -198,19 +198,20 @@ function doContextMenuCommand(aWindow, a
 function referrerTestCaseLoaded(aTestNumber, aParams) {
   let test = getReferrerTest(aTestNumber);
   let server = rounds == 0 ? REFERRER_POLICYSERVER_URL :
                              REFERRER_POLICYSERVER_URL_ATTRIBUTE;
   let url = test.fromScheme + server +
             "?scheme=" + escape(test.toScheme) +
             "&policy=" + escape(test.policy || "") +
             "&rel=" + escape(test.rel || "");
-  var browser = gTestWindow.gBrowser;
-  browser.selectedTab = browser.addTab(url, aParams);
-  return BrowserTestUtils.browserLoaded(browser.selectedBrowser);
+  let browser = gTestWindow.gBrowser;
+  return BrowserTestUtils.openNewForegroundTab(browser, () => {
+    browser.selectedTab = browser.addTab(url, aParams);
+  });
 }
 
 /**
  * Checks the result of the referrer test, and moves on to the next test.
  * @param aTestNumber The test number - 0, 1, 2, ...
  * @param aNewWindow The new window where the referrer target opened, or null.
  * @param aNewTab The new tab where the referrer target opened, or null.
  * @param aStartTestCase The callback to start the next test, aTestNumber + 1.
--- a/browser/installer/windows/nsis/installer.nsi
+++ b/browser/installer/windows/nsis/installer.nsi
@@ -16,23 +16,19 @@
 ; 7-Zip provides better compression than the lzma from NSIS so we add the files
 ; uncompressed and use 7-Zip to create a SFX archive of it
 SetDatablockOptimize on
 SetCompress off
 CRCCheck on
 
 RequestExecutionLevel user
 
-; The commands inside this ifdef require NSIS 3.0a2 or greater so the ifdef can
-; be removed after we require NSIS 3.0a2 or greater.
-!ifdef NSIS_PACKEDVERSION
-  Unicode true
-  ManifestSupportedOS all
-  ManifestDPIAware true
-!endif
+Unicode true
+ManifestSupportedOS all
+ManifestDPIAware true
 
 !addplugindir ./
 
 Var TmpVal
 Var InstallType
 Var AddStartMenuSC
 Var AddTaskbarSC
 Var AddQuickLaunchSC
@@ -41,17 +37,17 @@ Var InstallMaintenanceService
 Var PageName
 Var PreventRebootRequired
 
 ; By defining NO_STARTMENU_DIR an installer that doesn't provide an option for
 ; an application's Start Menu PROGRAMS directory and doesn't define the
 ; StartMenuDir variable can use the common InstallOnInitCommon macro.
 !define NO_STARTMENU_DIR
 
-; On Vista and above attempt to elevate Standard Users in addition to users that
+; Attempt to elevate Standard Users in addition to users that
 ; are a member of the Administrators group.
 !define NONADMIN_ELEVATE
 
 !define AbortSurveyURL "http://www.kampyle.com/feedback_form/ff-feedback-form.php?site_code=8166124&form_id=12116&url="
 
 ; Other included files may depend upon these includes!
 ; The following includes are provided by NSIS.
 !include FileFunc.nsh
@@ -247,17 +243,17 @@ Section "-InstallStartCleanup"
     Sleep 5000
     ${DeleteFile} "$INSTDIR\${FileMainEXE}"
     ClearErrors
   ${EndIf}
 
   ; setup the application model id registration value
   ${InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
 
-  ; Remove the updates directory for Vista and above
+  ; Remove the updates directory
   ${CleanUpdateDirectories} "Mozilla\Firefox" "Mozilla\updates"
 
   ${RemoveDeprecatedFiles}
   ${RemovePrecompleteEntries} "false"
 
   ${If} ${FileExists} "$INSTDIR\defaults\pref\channel-prefs.js"
     Delete "$INSTDIR\defaults\pref\channel-prefs.js"
   ${EndIf}
@@ -385,17 +381,17 @@ Section "-Application" APP_IDX
   ${AddDisabledDDEHandlerValues} "FirefoxHTML" "$2" "$8,1" \
                                  "${AppRegName} Document" ""
   ${AddDisabledDDEHandlerValues} "FirefoxURL" "$2" "$8,1" "${AppRegName} URL" \
                                  "true"
 
   ; For pre win8, the following keys should only be set if we can write to HKLM.
   ; For post win8, the keys below get set in both HKLM and HKCU.
   ${If} $TmpVal == "HKLM"
-    ; Set the Start Menu Internet and Vista Registered App HKLM registry keys.
+    ; Set the Start Menu Internet and Registered App HKLM registry keys.
     ${SetStartMenuInternet} "HKLM"
     ${FixShellIconHandler} "HKLM"
 
     ; If we are writing to HKLM and create either the desktop or start menu
     ; shortcuts set IconsVisible to 1 otherwise to 0.
     ; Taskbar shortcuts imply having a start menu shortcut.
     ${StrFilter} "${FileMainEXE}" "+" "" "" $R9
     StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo"
@@ -404,17 +400,17 @@ Section "-Application" APP_IDX
     ${OrIf} $AddTaskbarSC == 1
       WriteRegDWORD HKLM "$0" "IconsVisible" 1
     ${Else}
       WriteRegDWORD HKLM "$0" "IconsVisible" 0
     ${EndIf}
   ${EndIf}
 
   ${If} ${AtLeastWin8}
-    ; Set the Start Menu Internet and Vista Registered App HKCU registry keys.
+    ; Set the Start Menu Internet and Registered App HKCU registry keys.
     ${SetStartMenuInternet} "HKCU"
     ${FixShellIconHandler} "HKCU"
 
     ; If we create either the desktop or start menu shortcuts, then
     ; set IconsVisible to 1 otherwise to 0.
     ; Taskbar shortcuts imply having a start menu shortcut.
     ${StrFilter} "${FileMainEXE}" "+" "" "" $R9
     StrCpy $0 "Software\Clients\StartMenuInternet\$R9\InstallInfo"
@@ -434,24 +430,18 @@ Section "-Application" APP_IDX
   ; If the maintenance service page was not displayed then 
   ; InstallMaintenanceService will be equal to "".
   ${If} $InstallMaintenanceService == ""
     Call IsUserAdmin
     Pop $R0
     ${If} $R0 == "true"
     ; Only proceed if we have HKLM write access
     ${AndIf} $TmpVal == "HKLM"
-      ; On Windows < XP SP3 we do not install the maintenance service.
-      ${If} ${IsWinXP}
-      ${AndIf} ${AtMostServicePack} 2
-        StrCpy $InstallMaintenanceService "0"
-      ${Else}
-        ; The user is an admin, so we should default to installing the service.
-        StrCpy $InstallMaintenanceService "1"
-      ${EndIf}
+      ; The user is an admin, so we should default to installing the service.
+      StrCpy $InstallMaintenanceService "1"
     ${Else}
       ; The user is not admin, so we can't install the service.
       StrCpy $InstallMaintenanceService "0"
     ${EndIf}
   ${EndIf}
 
   ${If} $InstallMaintenanceService == "1"
     ; The user wants to install the maintenance service, so execute
@@ -469,17 +459,17 @@ Section "-Application" APP_IDX
   ${WriteRegStr2} $TmpVal "$0" "Path" "$INSTDIR" 0
 
   StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\$R9"
   ${CreateRegKey} "$TmpVal" "$0" 0
   StrCpy $0 "Software\Microsoft\MediaPlayer\ShimInclusionList\plugin-container.exe"
   ${CreateRegKey} "$TmpVal" "$0" 0
 
   ${If} $TmpVal == "HKLM"
-    ; Set the permitted LSP Categories for WinVista and above
+    ; Set the permitted LSP Categories
     ${SetAppLSPCategories} ${LSP_CATEGORIES}
   ${EndIf}
 
   ; Create shortcuts
   ${LogHeader} "Adding Shortcuts"
 
   ; Remove the start menu shortcuts and directory if the SMPROGRAMS section
   ; exists in the shortcuts_log.ini and the SMPROGRAMS. The installer's shortcut
@@ -596,25 +586,23 @@ Section "-InstallEndCleanup"
   ${Unless} ${Silent}
     ${MUI_INSTALLOPTIONS_READ} $0 "summary.ini" "Field 4" "State"
     ${If} "$0" == "1"
       ; NB: this code is duplicated in stub.nsi. Please keep in sync.
       ; For data migration in the app, we want to know what the default browser
       ; value was before we changed it. To do so, we read it here and store it
       ; in our own registry key.
       StrCpy $0 ""
-      ${If} ${AtLeastWinVista}
-        AppAssocReg::QueryCurrentDefault "http" "protocol" "effective"
-        Pop $1
-        ; If the method hasn't failed, $1 will contain the progid. Check:
-        ${If} "$1" != "method failed"
-        ${AndIf} "$1" != "method not available"
-          ; Read the actual command from the progid
-          ReadRegStr $0 HKCR "$1\shell\open\command" ""
-        ${EndIf}
+      AppAssocReg::QueryCurrentDefault "http" "protocol" "effective"
+      Pop $1
+      ; If the method hasn't failed, $1 will contain the progid. Check:
+      ${If} "$1" != "method failed"
+      ${AndIf} "$1" != "method not available"
+        ; Read the actual command from the progid
+        ReadRegStr $0 HKCR "$1\shell\open\command" ""
       ${EndIf}
       ; If using the App Association Registry didn't happen or failed, fall back
       ; to the effective http default:
       ${If} "$0" == ""
         ReadRegStr $0 HKCR "http\shell\open\command" ""
       ${EndIf}
       ; If we have something other than empty string now, write the value.
       ${If} "$0" != ""
@@ -952,22 +940,16 @@ Function preComponents
   ; If the service already exists, don't show this page
   ServicesHelper::IsInstalled "MozillaMaintenance"
   Pop $R9
   ${If} $R9 == 1
     ; The service already exists so don't show this page.
     Abort
   ${EndIf}
 
-  ; On Windows < XP SP3 we do not install the maintenance service.
-  ${If} ${IsWinXP}
-  ${AndIf} ${AtMostServicePack} 2
-    Abort
-  ${EndIf}
-
   ; Don't show the custom components page if the
   ; user is not an admin
   Call IsUserAdmin
   Pop $R9
   ${If} $R9 != "true"
     Abort
   ${EndIf}
 
@@ -1166,24 +1148,16 @@ Function .onInit
     ExecShell "open" "${URLSystemRequirements}"
     Quit
   ${EndUnless}
   SetRegView 64
 !endif
 
   ${InstallOnInitCommon} "$(WARN_MIN_SUPPORTED_OSVER_CPU_MSG)"
 
-; The commands inside this ifndef are needed prior to NSIS 3.0a2 and can be
-; removed after we require NSIS 3.0a2 or greater.
-!ifndef NSIS_PACKEDVERSION
-  ${If} ${AtLeastWinVista}
-    System::Call 'user32::SetProcessDPIAware()'
-  ${EndIf}
-!endif
-
   !insertmacro InitInstallOptionsFile "options.ini"
   !insertmacro InitInstallOptionsFile "shortcuts.ini"
   !insertmacro InitInstallOptionsFile "components.ini"
   !insertmacro InitInstallOptionsFile "summary.ini"
 
   WriteINIStr "$PLUGINSDIR\options.ini" "Settings" NumFields "5"
 
   WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Type   "label"
--- a/browser/installer/windows/nsis/maintenanceservice_installer.nsi
+++ b/browser/installer/windows/nsis/maintenanceservice_installer.nsi
@@ -8,23 +8,19 @@
 ; 7-Zip provides better compression than the lzma from NSIS so we add the files
 ; uncompressed and use 7-Zip to create a SFX archive of it
 SetDatablockOptimize on
 SetCompress off
 CRCCheck on
 
 RequestExecutionLevel admin
 
-; The commands inside this ifdef require NSIS 3.0a2 or greater so the ifdef can
-; be removed after we require NSIS 3.0a2 or greater.
-!ifdef NSIS_PACKEDVERSION
-  Unicode true
-  ManifestSupportedOS all
-  ManifestDPIAware true
-!endif
+Unicode true
+ManifestSupportedOS all
+ManifestDPIAware true
 
 !addplugindir ./
 
 ; Variables
 Var TempMaintServiceName
 Var BrandFullNameDA
 Var BrandFullName
 
@@ -125,24 +121,16 @@ Function .onInit
   ${EndUnless}
 FunctionEnd
 
 Function un.onInit
   ; Remove the current exe directory from the search order.
   ; This only effects LoadLibrary calls and not implicitly loaded DLLs.
   System::Call 'kernel32::SetDllDirectoryW(w "")'
 
-; The commands inside this ifndef are needed prior to NSIS 3.0a2 and can be
-; removed after we require NSIS 3.0a2 or greater.
-!ifndef NSIS_PACKEDVERSION
-  ${If} ${AtLeastWinVista}
-    System::Call 'user32::SetProcessDPIAware()'
-  ${EndIf}
-!endif
-
   StrCpy $BrandFullNameDA "${MaintFullName}"
   StrCpy $BrandFullName "${MaintFullName}"
 FunctionEnd
 
 Section "MaintenanceService"
   AllowSkipFiles off
 
   CreateDirectory $INSTDIR
--- a/browser/installer/windows/nsis/shared.nsh
+++ b/browser/installer/windows/nsis/shared.nsh
@@ -126,18 +126,16 @@
   RmDir /r /REBOOTOK "$INSTDIR\${TO_BE_DELETED}"
 
 !ifdef MOZ_MAINTENANCE_SERVICE
   Call IsUserAdmin
   Pop $R0
   ${If} $R0 == "true"
   ; Only proceed if we have HKLM write access
   ${AndIf} $TmpVal == "HKLM"
-  ; On Windows 2000 we do not install the maintenance service.
-  ${AndIf} ${AtLeastWinXP}
     ; We check to see if the maintenance service install was already attempted.
     ; Since the Maintenance service can be installed either x86 or x64,
     ; always use the 64-bit registry for checking if an attempt was made.
     ${If} ${RunningX64}
       SetRegView 64
     ${EndIf}
     ReadRegDWORD $5 HKLM "Software\Mozilla\MaintenanceService" "Attempted"
     ClearErrors
@@ -439,34 +437,34 @@
   WriteRegStr ${RegKey} "$0\shell\open\command" "" "$\"$8$\""
 
   WriteRegStr ${RegKey} "$0\shell\properties" "" "$(CONTEXT_OPTIONS)"
   WriteRegStr ${RegKey} "$0\shell\properties\command" "" "$\"$8$\" -preferences"
 
   WriteRegStr ${RegKey} "$0\shell\safemode" "" "$(CONTEXT_SAFE_MODE)"
   WriteRegStr ${RegKey} "$0\shell\safemode\command" "" "$\"$8$\" -safe-mode"
 
-  ; Vista Capabilities registry keys
+  ; Capabilities registry keys
   WriteRegStr ${RegKey} "$0\Capabilities" "ApplicationDescription" "$(REG_APP_DESC)"
   WriteRegStr ${RegKey} "$0\Capabilities" "ApplicationIcon" "$8,0"
   WriteRegStr ${RegKey} "$0\Capabilities" "ApplicationName" "${BrandShortName}"
 
   WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".htm"   "FirefoxHTML"
   WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".html"  "FirefoxHTML"
   WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".shtml" "FirefoxHTML"
   WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".xht"   "FirefoxHTML"
   WriteRegStr ${RegKey} "$0\Capabilities\FileAssociations" ".xhtml" "FirefoxHTML"
 
   WriteRegStr ${RegKey} "$0\Capabilities\StartMenu" "StartMenuInternet" "$R9"
 
   WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "ftp"    "FirefoxURL"
   WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "http"   "FirefoxURL"
   WriteRegStr ${RegKey} "$0\Capabilities\URLAssociations" "https"  "FirefoxURL"
 
-  ; Vista Registered Application
+  ; Registered Application
   WriteRegStr ${RegKey} "Software\RegisteredApplications" "${AppRegName}" "$0\Capabilities"
 !macroend
 !define SetStartMenuInternet "!insertmacro SetStartMenuInternet"
 
 ; The IconHandler reference for FirefoxHTML can end up in an inconsistent state
 ; due to changes not being detected by the IconHandler for side by side
 ; installs (see bug 268512). The symptoms can be either an incorrect icon or no
 ; icon being displayed for files associated with Firefox (does not use SHCTX).
@@ -1196,17 +1194,17 @@
   Push $R9
   Push $R8
   Push $R7
   Push $R6
   Push "false"
 
   System::Call 'advapi32::OpenSCManagerW(n, n, i ${SC_MANAGER_ALL_ACCESS}) i.R6'
   ${If} $R6 != 0
-    ; MpsSvc is the Firewall service on Windows Vista and above.
+    ; MpsSvc is the Firewall service.
     ; When opening the service with SERVICE_QUERY_CONFIG the return value will
     ; be 0 if the service is not installed.
     System::Call 'advapi32::OpenServiceW(i R6, t "MpsSvc", i ${SERVICE_QUERY_CONFIG}) i.R7'
     ${If} $R7 != 0
       System::Call 'advapi32::CloseServiceHandle(i R7) n'
       ; Open the service with SERVICE_QUERY_CONFIG so its status can be queried.
       System::Call 'advapi32::OpenServiceW(i R6, t "MpsSvc", i ${SERVICE_QUERY_STATUS}) i.R7'
     ${Else}
@@ -1247,17 +1245,17 @@
   Exch 1
   Pop $R9
 !macroend
 !define IsFirewallSvcRunning "!insertmacro IsFirewallSvcRunning"
 !define un.IsFirewallSvcRunning "!insertmacro IsFirewallSvcRunning"
 
 ; Sets this installation as the default browser by setting the registry keys
 ; under HKEY_CURRENT_USER via registry calls and using the AppAssocReg NSIS
-; plugin for Vista and above. This is a function instead of a macro so it is
+; plugin. This is a function instead of a macro so it is
 ; easily called from an elevated instance of the binary. Since this can be
 ; called by an elevated instance logging is not performed in this function.
 Function SetAsDefaultAppUserHKCU
   ; Only set as the user's StartMenuInternet browser if the StartMenuInternet
   ; registry keys are for this install.
   ${StrFilter} "${FileMainEXE}" "+" "" "" $R9
   ClearErrors
   ReadRegStr $0 HKCU "Software\Clients\StartMenuInternet\$R9\DefaultIcon" ""
@@ -1282,29 +1280,27 @@ Function SetAsDefaultAppUserHKCU
   ${If} ${AtLeastWin8}
     ${SetStartMenuInternet} "HKCU"
     ${FixShellIconHandler} "HKCU"
     ${FixClassKeys} ; Does not use SHCTX
   ${EndIf}
 
   ${SetHandlers}
 
-  ${If} ${AtLeastWinVista}
-    ; Only register as the handler on Vista and above if the app registry name
-    ; exists under the RegisteredApplications registry key. The protocol and
-    ; file handlers set previously at the user level will associate this install
-    ; as the default browser.
-    ClearErrors
-    ReadRegStr $0 HKLM "Software\RegisteredApplications" "${AppRegName}"
-    ${Unless} ${Errors}
-      ; This is all protected by a user choice hash in Windows 8 so it won't
-      ; help, but it also won't hurt.
-      AppAssocReg::SetAppAsDefaultAll "${AppRegName}"
-    ${EndUnless}
-  ${EndIf}
+  ; Only register as the handler if the app registry name
+  ; exists under the RegisteredApplications registry key. The protocol and
+  ; file handlers set previously at the user level will associate this install
+  ; as the default browser.
+  ClearErrors
+  ReadRegStr $0 HKLM "Software\RegisteredApplications" "${AppRegName}"
+  ${Unless} ${Errors}
+    ; This is all protected by a user choice hash in Windows 8 so it won't
+    ; help, but it also won't hurt.
+    AppAssocReg::SetAppAsDefaultAll "${AppRegName}"
+  ${EndUnless}
   ${RemoveDeprecatedKeys}
   ${MigrateTaskBarShortcut}
 FunctionEnd
 
 ; Helper for updating the shortcut application model IDs.
 Function FixShortcutAppModelIDs
   ${If} ${AtLeastWin7}
   ${AndIf} "$AppUserModelID" != ""
@@ -1376,18 +1372,17 @@ Function SetAsDefaultAppUser
           GetFunctionAddress $0 SetAsDefaultAppUserHKCU
           UAC::ExecCodeSegment $0
         ${EndIf}
         Return ; Nothing more needs to be done
       ${EndIf}
     ${EndIf}
   ${EndUnless}
 
-  ; The code after ElevateUAC won't be executed on Vista and above when the
-  ; user:
+  ; The code after ElevateUAC won't be executed when the user:
   ; a) is a member of the administrators group (e.g. elevation is required)
   ; b) is not a member of the administrators group and chooses to elevate
   ${ElevateUAC}
 
   ${SetStartMenuInternet} "HKLM"
 
   SetShellVarContext all  ; Set SHCTX to all users (e.g. HKLM)
 
--- a/browser/installer/windows/nsis/stub.nsi
+++ b/browser/installer/windows/nsis/stub.nsi
@@ -13,23 +13,19 @@
 !verbose 3
 
 SetDatablockOptimize on
 SetCompress off
 CRCCheck on
 
 RequestExecutionLevel user
 
-; The commands inside this ifdef require NSIS 3.0a2 or greater so the ifdef can
-; be removed after we require NSIS 3.0a2 or greater.
-!ifdef NSIS_PACKEDVERSION
-  Unicode true
-  ManifestSupportedOS all
-  ManifestDPIAware true
-!endif
+Unicode true
+ManifestSupportedOS all
+ManifestDPIAware true
 
 !addplugindir ./
 
 Var Dialog
 Var Progressbar
 Var ProgressbarMarqueeIntervalMS
 Var LabelDownloading
 Var LabelInstalling
@@ -194,17 +190,17 @@ Var ControlRightPX
 ; as defined by InstallProgressFirstStep.
 !define /math InstallCleanTotalSteps ${InstallProgressFirstStep} + 1500
 
 ; Approximately 165 seconds (minus 0.2 seconds for each file that is removed)
 ; with a 100 millisecond timer and a first step of 20 as defined by
 ; InstallProgressFirstStep .
 !define /math InstallPaveOverTotalSteps ${InstallProgressFirstStep} + 1800
 
-; On Vista and above attempt to elevate Standard Users in addition to users that
+; Attempt to elevate Standard Users in addition to users that
 ; are a member of the Administrators group.
 !define NONADMIN_ELEVATE
 
 !define CONFIG_INI "config.ini"
 
 !ifndef FILE_SHARE_READ
   !define FILE_SHARE_READ 1
 !endif
@@ -347,24 +343,16 @@ Function .onInit
     StrCpy $INSTDIR "${DefaultInstDir64bit}"
   ${Else}
     StrCpy $INSTDIR "${DefaultInstDir32bit}"
   ${EndIf}
 
   ; Require elevation if the user can elevate
   ${ElevateUAC}
 
-; The commands inside this ifndef are needed prior to NSIS 3.0a2 and can be
-; removed after we require NSIS 3.0a2 or greater.
-!ifndef NSIS_PACKEDVERSION
-  ${If} ${AtLeastWinVista}
-    System::Call 'user32::SetProcessDPIAware()'
-  ${EndIf}
-!endif
-
   ; If we have any existing installation, use its location as the default
   ; path for this install, even if it's not the same architecture.
   SetRegView 32
   SetShellVarContext all ; Set SHCTX to HKLM
   ${GetSingleInstallPath} "Software\Mozilla\${BrandFullNameInternal}" $R9
 
   ${If} "$R9" == "false"
   ${AndIf} ${RunningX64}
@@ -432,21 +420,17 @@ Function .onInit
     StrCpy $CanSetAsDefault "false"
     StrCpy $CheckboxSetAsDefault "0"
   ${Else}
     DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
     StrCpy $CanSetAsDefault "true"
   ${EndIf}
 
   ; The interval in MS used for the progress bars set as marquee.
-  ${If} ${AtLeastWinVista}
-    StrCpy $ProgressbarMarqueeIntervalMS "10"
-  ${Else}
-    StrCpy $ProgressbarMarqueeIntervalMS "50"
-  ${EndIf}
+  StrCpy $ProgressbarMarqueeIntervalMS "10"
 
   ; Initialize the majority of variables except those that need to be reset
   ; when a page is displayed.
   StrCpy $IntroPhaseSeconds "0"
   StrCpy $OptionsPhaseSeconds "0"
   StrCpy $EndPreInstallPhaseTickCount "0"
   StrCpy $EndInstallPhaseTickCount "0"
   StrCpy $InitialInstallRequirementsCode ""
@@ -680,19 +664,18 @@ Function SendPing
           StrCpy $R2 "0"
         ${EndIf}
       ${EndIf}
     ${Else}
       StrCpy $R2 "0" ; Firefox is not set as default.
     ${EndIf}
 
     ${If} "$R2" == "0"
-    ${AndIf} ${AtLeastWinVista}
       ; Check to see if this install location is currently set as the default
-      ; browser by Default Programs which is only available on Vista and above.
+      ; browser by Default Programs.
       ClearErrors
       ReadRegStr $R3 HKLM "Software\RegisteredApplications" "${AppRegName}"
       ${Unless} ${Errors}
         AppAssocReg::QueryAppIsDefaultAll "${AppRegName}" "effective"
         Pop $R3
         ${If} $R3 == "1"
           StrCpy $R3 ""
           ReadRegStr $R2 HKLM "Software\Classes\http\shell\open\command" ""
@@ -1040,24 +1023,16 @@ Function createOptions
   ${NSD_Check} $CheckboxSendPing
 
 !ifdef MOZ_MAINTENANCE_SERVICE
   StrCpy $CheckboxInstallMaintSvc "0"
   ; We can only install the maintenance service if the user is an admin.
   Call IsUserAdmin
   Pop $0
 
-  ; Only show the maintenance service checkbox if we're on XP SP3 or higher;
-  ;  we don't ever want to install it on XP without at least SP3 installed.
-  ${If} $0 == "true"
-  ${AndIf} ${IsWinXP}
-  ${AndIf} ${AtMostServicePack} 2
-    StrCpy $0 "false"
-  ${EndIf}
-
   ${If} $0 == "true"
     ; Only show the maintenance service checkbox if we have write access to HKLM
     DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
     ClearErrors
     WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" \
                      "Write Test"
     ${IfNot} ${Errors}
       DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
@@ -1790,25 +1765,23 @@ Function FinishInstall
   Call SetProgressBars
 
   ${If} "$CheckboxSetAsDefault" == "1"
     ; NB: this code is duplicated in installer.nsi. Please keep in sync.
     ; For data migration in the app, we want to know what the default browser
     ; value was before we changed it. To do so, we read it here and store it
     ; in our own registry key.
     StrCpy $0 ""
-    ${If} ${AtLeastWinVista}
-      AppAssocReg::QueryCurrentDefault "http" "protocol" "effective"
-      Pop $1
-      ; If the method hasn't failed, $1 will contain the progid. Check:
-      ${If} "$1" != "method failed"
-      ${AndIf} "$1" != "method not available"
-        ; Read the actual command from the progid
-        ReadRegStr $0 HKCR "$1\shell\open\command" ""
-      ${EndIf}
+    AppAssocReg::QueryCurrentDefault "http" "protocol" "effective"
+    Pop $1
+    ; If the method hasn't failed, $1 will contain the progid. Check:
+    ${If} "$1" != "method failed"
+    ${AndIf} "$1" != "method not available"
+      ; Read the actual command from the progid
+      ReadRegStr $0 HKCR "$1\shell\open\command" ""
     ${EndIf}
     ; If using the App Association Registry didn't happen or failed, fall back
     ; to the effective http default:
     ${If} "$0" == ""
       ReadRegStr $0 HKCR "http\shell\open\command" ""
     ${EndIf}
     ; If we have something other than empty string now, write the value.
     ${If} "$0" != ""
@@ -1822,31 +1795,16 @@ Function FinishInstall
     ${If} ${Errors} ; Not elevated
       Call ExecSetAsDefaultAppUser
     ${Else} ; Elevated - execute the function in the unelevated process
       GetFunctionAddress $0 ExecSetAsDefaultAppUser
       UAC::ExecCodeSegment $0
     ${EndIf}
   ${EndIf}
 
-  ${If} $CheckboxShortcuts == 1
-    ${If} ${AtMostWinVista}
-      ClearErrors
-      ${GetParameters} $0
-      ClearErrors
-      ${GetOptions} "$0" "/UAC:" $0
-      ${If} ${Errors}
-        Call AddQuickLaunchShortcut
-      ${Else}
-        GetFunctionAddress $0 AddQuickLaunchShortcut
-        UAC::ExecCodeSegment $0
-      ${EndIf}
-    ${EndIf}
-  ${EndIf}
-
   ${If} ${FileExists} "$INSTDIR\${FileMainEXE}.moz-upgrade"
     Delete "$INSTDIR\${FileMainEXE}"
     Rename "$INSTDIR\${FileMainEXE}.moz-upgrade" "$INSTDIR\${FileMainEXE}"
   ${EndIf}
 
   StrCpy $ExitCode "${ERR_SUCCESS}"
 
   StrCpy $InstallCounterStep 0
@@ -2061,24 +2019,16 @@ Function CanWrite
     ${If} ${FileExists} "$3"
       Delete "$3"
       StrCpy $CanWriteToInstallDir "true"
     ${EndIf}
     RmDir "$2"
   ${EndIf}
 FunctionEnd
 
-Function AddQuickLaunchShortcut
-  CreateShortCut "$QUICKLAUNCH\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}"
-  ${If} ${FileExists} "$QUICKLAUNCH\${BrandFullName}.lnk"
-    ShellLink::SetShortCutWorkingDirectory "$QUICKLAUNCH\${BrandFullName}.lnk" \
-                                           "$INSTDIR"
-  ${EndIf}
-FunctionEnd
-
 Function ExecSetAsDefaultAppUser
   ; Using the helper.exe lessens the stub installer size.
   ; This could ask for elevatation when the user doesn't install as admin.
   Exec "$\"$INSTDIR\uninstall\helper.exe$\" /SetAsDefaultAppUser"
 FunctionEnd
 
 Function LaunchApp
 !ifndef DEV_EDITION
--- a/browser/installer/windows/nsis/uninstaller.nsi
+++ b/browser/installer/windows/nsis/uninstaller.nsi
@@ -14,27 +14,23 @@
 ; 7-Zip provides better compression than the lzma from NSIS so we add the files
 ; uncompressed and use 7-Zip to create a SFX archive of it
 SetDatablockOptimize on
 SetCompress off
 CRCCheck on
 
 RequestExecutionLevel user
 
-; The commands inside this ifdef require NSIS 3.0a2 or greater so the ifdef can
-; be removed after we require NSIS 3.0a2 or greater.
-!ifdef NSIS_PACKEDVERSION
-  Unicode true
-  ManifestSupportedOS all
-  ManifestDPIAware true
-!endif
+Unicode true
+ManifestSupportedOS all
+ManifestDPIAware true
 
 !addplugindir ./
 
-; On Vista and above attempt to elevate Standard Users in addition to users that
+; Attempt to elevate Standard Users in addition to users that
 ; are a member of the Administrators group.
 !define NONADMIN_ELEVATE
 
 ; prevents compiling of the reg write logging.
 !define NO_LOG
 
 !define MaintUninstallKey \
  "Software\Microsoft\Windows\CurrentVersion\Uninstall\MozillaMaintenanceService"
@@ -252,17 +248,17 @@ Section "Uninstall"
   ${un.DeleteShortcuts}
 
   ; Unregister resources associated with Win7 taskbar jump lists.
   ${If} ${AtLeastWin7}
   ${AndIf} "$AppUserModelID" != ""
     ApplicationID::UninstallJumpLists "$AppUserModelID"
   ${EndIf}
 
-  ; Remove the updates directory for Vista and above
+  ; Remove the updates directory
   ${un.CleanUpdateDirectories} "Mozilla\Firefox" "Mozilla\updates"
 
   ; Remove any app model id's stored in the registry for this install path
   DeleteRegValue HKCU "Software\Mozilla\${AppName}\TaskBarIDs" "$INSTDIR"
   DeleteRegValue HKLM "Software\Mozilla\${AppName}\TaskBarIDs" "$INSTDIR"
 
   ClearErrors
   WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
@@ -602,24 +598,16 @@ Function un.onInit
   ; Remove the current exe directory from the search order.
   ; This only effects LoadLibrary calls and not implicitly loaded DLLs.
   System::Call 'kernel32::SetDllDirectoryW(w "")'
 
   StrCpy $LANGUAGE 0
 
   ${un.UninstallUnOnInitCommon}
 
-; The commands inside this ifndef are needed prior to NSIS 3.0a2 and can be
-; removed after we require NSIS 3.0a2 or greater.
-!ifndef NSIS_PACKEDVERSION
-  ${If} ${AtLeastWinVista}
-    System::Call 'user32::SetProcessDPIAware()'
-  ${EndIf}
-!endif
-
   !insertmacro InitInstallOptionsFile "unconfirm.ini"
 FunctionEnd
 
 Function .onGUIEnd
   ${OnEndCommon}
 FunctionEnd
 
 Function un.onGUIEnd
--- a/devtools/server/tests/browser/browser_directorscript_actors.js
+++ b/devtools/server/tests/browser/browser_directorscript_actors.js
@@ -48,17 +48,17 @@ function* testDirectorScriptAttachEventA
 
 function* testDirectorScriptMessagePort(directorManager) {
   let { port } = yield installAndEnableDirectorScript(directorManager, {
     scriptId: "testDirectorScript_MessagePort",
     scriptCode: "(" + (function () {
       exports.attach = function ({port}) {
         port.onmessage = function (evt) {
           // echo messages
-          evt.source.postMessage(evt.data);
+          evt.target.postMessage(evt.data);
         };
       };
     }).toString() + ")();",
     scriptOptions: {
       attachMethod: "attach"
     }
   });
 
--- a/devtools/server/tests/mochitest/test_director.html
+++ b/devtools/server/tests/mochitest/test_director.html
@@ -76,17 +76,17 @@ function teardown() {
 
 
 function runDirectorRegistryActorTest() {
   let testDirectorScriptOptions = {
     scriptCode: "(" + (function() {
       module.exports = function({port}) {
         port.onmessage = function(evt) {
           // echo messages
-          evt.source.postMessage(evt.data);
+          evt.target.postMessage(evt.data);
         };
       };
     }).toString() + ")();",
     scriptOptions: {}
   }
 
   return Task.spawn(function* () {
     let { client, root } = yield newConnectedDebuggerClient();
--- a/dom/animation/EffectCompositor.cpp
+++ b/dom/animation/EffectCompositor.cpp
@@ -306,18 +306,19 @@ EffectCompositor::PostRestyleForAnimatio
     return;
   }
 
   nsRestyleHint hint = aCascadeLevel == CascadeLevel::Transitions ?
                                         eRestyle_CSSTransitions :
                                         eRestyle_CSSAnimations;
 
   // FIXME: stylo only supports Self and Subtree hints now, so we override it
-  // for stylo.
-  if (mPresContext->StyleSet()->IsServo()) {
+  // for stylo if we are not in process of restyling.
+  if (mPresContext->StyleSet()->IsServo() &&
+      !mPresContext->RestyleManager()->AsBase()->IsInStyleRefresh()) {
     hint = eRestyle_Self | eRestyle_Subtree;
   }
   mPresContext->PresShell()->RestyleForAnimation(element, hint);
 }
 
 void
 EffectCompositor::PostRestyleForThrottledAnimations()
 {
--- a/dom/canvas/CanvasRenderingContext2D.cpp
+++ b/dom/canvas/CanvasRenderingContext2D.cpp
@@ -45,17 +45,16 @@
 #include "nsContentUtils.h"
 
 #include "nsTArray.h"
 
 #include "ImageEncoder.h"
 #include "ImageRegion.h"
 
 #include "gfxContext.h"
-#include "gfxImageSurface.h"
 #include "gfxPlatform.h"
 #include "gfxFont.h"
 #include "gfxBlur.h"
 #include "gfxPrefs.h"
 #include "gfxUtils.h"
 
 #include "nsFrameLoader.h"
 #include "nsBidi.h"
@@ -5805,38 +5804,48 @@ CanvasRenderingContext2D::PutImageData_e
 
   uint32_t len = aW * aH * 4;
   if (dataLen != len) {
     return NS_ERROR_DOM_INVALID_STATE_ERR;
   }
 
   uint32_t copyWidth = dirtyRect.Width();
   uint32_t copyHeight = dirtyRect.Height();
-  RefPtr<gfxImageSurface> imgsurf = new gfxImageSurface(gfx::IntSize(copyWidth, copyHeight),
-                                                          SurfaceFormat::A8R8G8B8_UINT32,
-                                                          false);
-  if (!imgsurf || imgsurf->CairoStatus()) {
+  RefPtr<DataSourceSurface> sourceSurface =
+    gfx::Factory::CreateDataSourceSurface(gfx::IntSize(copyWidth, copyHeight),
+                                          SurfaceFormat::B8G8R8A8,
+                                          false);
+  // In certain scenarios, requesting larger than 8k image fails.  Bug 803568
+  // covers the details of how to run into it, but the full detailed
+  // investigation hasn't been done to determine the underlying cause.  We
+  // will just handle the failure to allocate the surface to avoid a crash.
+  if (!sourceSurface) {
     return NS_ERROR_FAILURE;
   }
 
+  uint8_t *dstLine = sourceSurface->GetData();
+  if (!dstLine) {
+    return NS_ERROR_OUT_OF_MEMORY;
+  }
+  int32_t dstStride = sourceSurface->Stride();
+
   uint32_t copyX = dirtyRect.x - aX;
   uint32_t copyY = dirtyRect.y - aY;
-  //uint8_t *src = aArray->Data();
-  uint8_t *dst = imgsurf->Data();
   uint8_t* srcLine = aArray->Data() + copyY * (aW * 4) + copyX * 4;
   // For opaque canvases, we must still premultiply the RGB components, but write the alpha as opaque.
   uint8_t alphaMask = mOpaque ? 255 : 0;
 #if 0
   printf("PutImageData_explicit: dirty x=%d y=%d w=%d h=%d copy x=%d y=%d w=%d h=%d ext x=%d y=%d w=%d h=%d\n",
        dirtyRect.x, dirtyRect.y, copyWidth, copyHeight,
        copyX, copyY, copyWidth, copyHeight,
        x, y, w, h);
 #endif
   for (uint32_t j = 0; j < copyHeight; j++) {
     uint8_t *src = srcLine;
+    uint8_t *dst = dstLine;
     for (uint32_t i = 0; i < copyWidth; i++) {
       uint8_t r = *src++;
       uint8_t g = *src++;
       uint8_t b = *src++;
       uint8_t a = *src++;
 
       // Convert to premultiplied color (losslessly if the input came from getImageData)
 #if MOZ_LITTLE_ENDIAN
@@ -5847,39 +5856,32 @@ CanvasRenderingContext2D::PutImageData_e
 #else
       *dst++ = a | alphaMask;
       *dst++ = gfxUtils::sPremultiplyTable[a * 256 + r];
       *dst++ = gfxUtils::sPremultiplyTable[a * 256 + g];
       *dst++ = gfxUtils::sPremultiplyTable[a * 256 + b];
 #endif
     }
     srcLine += aW * 4;
+    // Note that dstLine + dstStride might not be the same as "dst" here,
+    // depending the width we asked for and the width the underlying machinery
+    // decided to actually allocate (e.g. to give each row nice alignment).
+    dstLine += dstStride;
   }
 
   // The canvas spec says that the current path, transformation matrix, shadow attributes,
   // global alpha, the clipping region, and global composition operator must not affect the
   // getImageData() and putImageData() methods.
   const gfx::Rect putRect(dirtyRect);
   EnsureTarget(&putRect);
 
   if (!IsTargetValid()) {
     return NS_ERROR_FAILURE;
   }
 
-  RefPtr<SourceSurface> sourceSurface =
-    mTarget->CreateSourceSurfaceFromData(imgsurf->Data(), IntSize(copyWidth, copyHeight), imgsurf->Stride(), SurfaceFormat::B8G8R8A8);
-
-  // In certain scenarios, requesting larger than 8k image fails.  Bug 803568
-  // covers the details of how to run into it, but the full detailed
-  // investigation hasn't been done to determine the underlying cause.  We
-  // will just handle the failure to allocate the surface to avoid a crash.
-  if (!sourceSurface) {
-    return NS_ERROR_FAILURE;
-  }
-
   mTarget->CopySurface(sourceSurface,
                        IntRect(0, 0,
                                dirtyRect.width, dirtyRect.height),
                        IntPoint(dirtyRect.x, dirtyRect.y));
 
   Redraw(gfx::Rect(dirtyRect.x, dirtyRect.y, dirtyRect.width, dirtyRect.height));
 
   return NS_OK;
--- a/dom/canvas/WebGLContextExtensions.cpp
+++ b/dom/canvas/WebGLContextExtensions.cpp
@@ -123,19 +123,21 @@ WebGLContext::IsExtensionSupported(WebGL
         return gl->IsSupported(gl::GLFeature::texture_float_linear);
 
     // WEBGL_
     case WebGLExtensionID::WEBGL_compressed_texture_astc:
         return WebGLExtensionCompressedTextureASTC::IsSupported(this);
     case WebGLExtensionID::WEBGL_compressed_texture_atc:
         return gl->IsExtensionSupported(gl::GLContext::AMD_compressed_ATC_texture);
     case WebGLExtensionID::WEBGL_compressed_texture_etc:
-        return gl->IsSupported(gl::GLFeature::ES3_compatibility);
+        return gl->IsSupported(gl::GLFeature::ES3_compatibility) &&
+               !gl->IsANGLE();
     case WebGLExtensionID::WEBGL_compressed_texture_etc1:
-        return gl->IsExtensionSupported(gl::GLContext::OES_compressed_ETC1_RGB8_texture);
+        return gl->IsExtensionSupported(gl::GLContext::OES_compressed_ETC1_RGB8_texture) &&
+               !gl->IsANGLE();
     case WebGLExtensionID::WEBGL_compressed_texture_pvrtc:
         return gl->IsExtensionSupported(gl::GLContext::IMG_texture_compression_pvrtc);
     case WebGLExtensionID::WEBGL_compressed_texture_s3tc:
         if (gl->IsExtensionSupported(gl::GLContext::EXT_texture_compression_s3tc))
             return true;
 
         return gl->IsExtensionSupported(gl::GLContext::EXT_texture_compression_dxt1) &&
                gl->IsExtensionSupported(gl::GLContext::ANGLE_texture_compression_dxt3) &&
--- a/dom/canvas/test/webgl-conf/generate-wrappers-and-manifest.py
+++ b/dom/canvas/test/webgl-conf/generate-wrappers-and-manifest.py
@@ -14,18 +14,17 @@ WRAPPER_TEMPLATE_FILE = 'mochi-wrapper.h
 MANIFEST_TEMPLATE_FILE = 'mochitest.ini.template'
 ERRATA_FILE = 'mochitest-errata.ini'
 DEST_MANIFEST_PATHSTR = 'generated-mochitest.ini'
 
 BASE_TEST_LIST_PATHSTR = 'checkout/00_test_list.txt'
 GENERATED_PATHSTR = 'generated'
 WEBGL2_TEST_MANGLE = '2_'
 PATH_SEP_MANGLING = '__'
-WEBGL2_SKIP_IF_CONDITION = "(os == 'android' || os == 'linux' || " \
-                           "(os == 'win' && os_version == '5.1'))"
+WEBGL2_SKIP_IF_CONDITION = "(os == 'android' || os == 'linux')"
 
 SUPPORT_DIRS = [
     'checkout',
 ]
 
 EXTRA_SUPPORT_FILES = [
     'always-fail.html',
     'iframe-passthrough.css',
--- a/dom/canvas/test/webgl-conf/generated-mochitest.ini
+++ b/dom/canvas/test/webgl-conf/generated-mochitest.ini
@@ -4748,2761 +4748,2760 @@ support-files = always-fail.html
                 checkout/test-guidelines.md
                 checkout/webgl-conformance-tests.html
                 iframe-passthrough.css
                 mochi-single.html
 
 [generated/test_..__always-fail.html]
 fail-if = 1
 [generated/test_2_conformance2__attribs__gl-vertex-attrib-i-render.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__attribs__gl-vertex-attrib.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__attribs__gl-vertexattribipointer-offsets.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__attribs__gl-vertexattribipointer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__buffers__bound-buffer-size-change-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__buffers__buffer-copying-contents.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__buffers__buffer-copying-restrictions.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__buffers__buffer-data-and-buffer-sub-data-sub-source.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__buffers__buffer-overflow-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__buffers__buffer-type-restrictions.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__buffers__get-buffer-sub-data.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__buffers__one-large-uniform-buffer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__buffers__uniform-buffers.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__context__constants-and-properties-2.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__context__context-attributes-depth-stencil-antialias-obeyed.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__context__context-type-test-2.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__context__methods-2.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__extensions__ext-color-buffer-float.html]
-skip-if = (os == 'mac' && debug) || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac' && debug) || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__extensions__ext-disjoint-timer-query-webgl2.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__extensions__promoted-extensions-in-shaders.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__extensions__promoted-extensions.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__array-as-return-value.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__array-assign-constructor.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__array-assign.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__array-complex-indexing.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__array-element-increment.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__array-equality.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__array-in-complex-expression.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__array-length-side-effects.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__attrib-location-length-limits.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__bool-type-cast-bug-uint-ivec-uvec.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__compare-structs-containing-arrays.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__compound-assignment-type-combination.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__const-array-init.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__forbidden-operators.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__frag-depth.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__invalid-default-precision.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__invalid-invariant.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__loops-with-side-effects.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__misplaced-version-directive.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__no-attribute-vertex-shader.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__sampler-no-precision.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__sequence-operator-returns-non-constant.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__shader-linking.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__shader-with-1024-character-define.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__shader-with-1024-character-identifier.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__shader-with-1025-character-define.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__shader-with-1025-character-identifier.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__shader-with-invalid-characters.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__shader-with-mis-matching-uniform-block.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__short-circuiting-in-loop-condition.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__texture-offset-out-of-range.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__texture-offset-uniform-texture-coordinate.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__tricky-loop-conditions.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__unary-minus-operator-in-dynamic-loop.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__uniform-block-layout-match.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__uniform-block-layouts.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__uniform-location-length-limits.html]
-skip-if = (os == 'win' && debug) || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && debug) || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__valid-invariant.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__vector-dynamic-indexing-nv-driver-bug.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__glsl3__vector-dynamic-indexing.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__misc__expando-loss-2.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__misc__getextension-while-pbo-bound-stability.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__misc__instanceof-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__misc__object-deletion-behaviour-2.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__misc__uninitialized-test-2.html]
-skip-if = (os == 'mac') || (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac') || (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__misc__views-with-offsets.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__programs__active-built-in-attribs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__programs__gl-get-frag-data-location.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__query__occlusion-query.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__query__query.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__reading__format-r11f-g11f-b10f.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__reading__read-pixels-from-fbo-test.html]
-skip-if = (os == 'mac') || (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac') || (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__reading__read-pixels-from-rgb8-into-pbo-bug.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__reading__read-pixels-into-pixel-pack-buffer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__reading__read-pixels-pack-parameters.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__renderbuffers__framebuffer-object-attachment.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__renderbuffers__framebuffer-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__renderbuffers__framebuffer-texture-layer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__renderbuffers__invalidate-framebuffer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__renderbuffers__multisample-with-full-sample-counts.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__renderbuffers__multisampled-renderbuffer-initialization.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__renderbuffers__readbuffer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__attrib-type-match.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__blitframebuffer-filter-outofbounds.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__blitframebuffer-filter-srgb.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__blitframebuffer-multisampled-readbuffer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__blitframebuffer-outside-readbuffer.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__blitframebuffer-scissor-enabled.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__blitframebuffer-size-overflow.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__blitframebuffer-srgb-and-linear-drawbuffers.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__blitframebuffer-stencil-only.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__blitframebuffer-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__canvas-resizing-with-pbo-bound.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__clear-func-buffer-type-match.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__clear-srgb-color-buffer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__clipping-wide-points.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__draw-buffers.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__element-index-uint.html]
 fail-if = (os != 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__framebuffer-completeness-unaffected.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__framebuffer-unsupported.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__fs-color-type-mismatch-color-buffer-type.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__instanced-arrays.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__instanced-rendering-bug.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__out-of-bounds-index-buffers-after-copying.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__rendering-sampling-feedback-loop.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__rgb-format-support.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__rendering__uniform-block-buffer-size.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__samplers__sampler-drawing-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__samplers__samplers.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__state__gl-enum-tests.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__state__gl-get-calls.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__state__gl-getstring.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__state__gl-object-get-calls.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rg8ui-rg_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgb8ui-rgb_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-rgba8ui-rgba_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-2d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rg8ui-rg_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgb8ui-rgb_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-rgba8ui-rgba_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas__tex-3d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rg8ui-rg_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb8ui-rgb_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb9_e5-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgb9_e5-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-rgba8ui-rgba_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-2d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-r11f_g11f_b10f-rgb-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-r11f_g11f_b10f-rgb-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-r16f-red-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-r16f-red-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-r32f-red-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-r8-red-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-r8ui-red_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rg16f-rg-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rg16f-rg-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rg32f-rg-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rg8-rg-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rg8ui-rg_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb16f-rgb-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb16f-rgb-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb32f-rgb-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb565-rgb-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb565-rgb-unsigned_short_5_6_5.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb5_a1-rgba-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb8-rgb-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb8ui-rgb_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb9_e5-rgb-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgb9_e5-rgb-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgba16f-rgba-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgba16f-rgba-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgba32f-rgba-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgba4-rgba-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgba8-rgba-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-rgba8ui-rgba_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-srgb8-rgb-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__canvas_sub_rectangle__tex-3d-srgb8_alpha8-rgba-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rg8ui-rg_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb8ui-rgb_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb9_e5-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgb9_e5-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-rgba8ui-rgba_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-2d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-r11f_g11f_b10f-rgb-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-r11f_g11f_b10f-rgb-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-r16f-red-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-r16f-red-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-r32f-red-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-r8-red-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-r8ui-red_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rg16f-rg-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rg16f-rg-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rg32f-rg-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rg8-rg-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rg8ui-rg_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb16f-rgb-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb16f-rgb-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb32f-rgb-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb565-rgb-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb565-rgb-unsigned_short_5_6_5.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb5_a1-rgba-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb8-rgb-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb8ui-rgb_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb9_e5-rgb-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgb9_e5-rgb-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgba16f-rgba-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgba16f-rgba-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgba32f-rgba-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgba4-rgba-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgba8-rgba-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-rgba8ui-rgba_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-srgb8-rgb-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image__tex-3d-srgb8_alpha8-rgba-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rg8ui-rg_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb8ui-rgb_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb9_e5-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgb9_e5-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-rgba8ui-rgba_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-2d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rg8ui-rg_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb8ui-rgb_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb9_e5-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgb9_e5-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-rgba8ui-rgba_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__image_data__tex-3d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__active-3d-texture-bug.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__copy-texture-image-luma-format.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__copy-texture-image-webgl-specific.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__copy-texture-image.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__gl-get-tex-parameter.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__integer-cubemap-specification-order-bug.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__integer-cubemap-texture-sampling.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__mipmap-fbo.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-3d-size-limit.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-image-and-sub-image-with-array-buffer-view-sub-source.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-image-with-bad-args-from-dom-elements.html]
-skip-if = (os == 'win') || (os == 'mac') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'mac') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-image-with-bad-args.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-image-with-different-data-source.html]
-skip-if = (os == 'mac' && debug) || (os == 'win' && debug) || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac' && debug) || (os == 'win' && debug) || (os == 'android' || os == 'linux')
 fail-if = (os == 'mac') || (os == 'win')
 [generated/test_2_conformance2__textures__misc__tex-input-validation.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-mipmap-levels.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-new-formats.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-srgb-mipmap.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-storage-2d.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-storage-and-subimage-3d.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-storage-compressed-formats.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__tex-unpack-params.html]
-skip-if = (os == 'mac' && debug) || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac' && debug) || (os == 'android' || os == 'linux')
 fail-if = (os == 'mac')
 [generated/test_2_conformance2__textures__misc__texel-fetch-undefined.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__misc__texture-npot.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rg8ui-rg_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb8ui-rgb_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb9_e5-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgb9_e5-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-rgba8ui-rgba_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-2d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rg8ui-rg_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb8ui-rgb_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb9_e5-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgb9_e5-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-rgba8ui-rgba_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__svg_image__tex-3d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-r11f_g11f_b10f-rgb-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-r11f_g11f_b10f-rgb-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rg16f-rg-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rg16f-rg-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rg32f-rg-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rg8-rg-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rg8ui-rg_integer-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb16f-rgb-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb16f-rgb-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb32f-rgb-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb565-rgb-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb565-rgb-unsigned_short_5_6_5.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb5_a1-rgba-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb8-rgb-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb8ui-rgb_integer-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb9_e5-rgb-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgb9_e5-rgb-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgba16f-rgba-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgba16f-rgba-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgba32f-rgba-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgba4-rgba-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgba8-rgba-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-rgba8ui-rgba_integer-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-srgb8-rgb-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-2d-srgb8_alpha8-rgba-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-r11f_g11f_b10f-rgb-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-r11f_g11f_b10f-rgb-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-r16f-red-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-r16f-red-half_float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-r32f-red-float.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-r8-red-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-r8ui-red_integer-unsigned_byte.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rg16f-rg-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rg16f-rg-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rg32f-rg-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rg8-rg-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rg8ui-rg_integer-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb16f-rgb-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb16f-rgb-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb32f-rgb-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb565-rgb-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb565-rgb-unsigned_short_5_6_5.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb5_a1-rgba-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb8-rgb-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb8ui-rgb_integer-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb9_e5-rgb-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgb9_e5-rgb-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgba16f-rgba-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgba16f-rgba-half_float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgba32f-rgba-float.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgba4-rgba-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgba8-rgba-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-rgba8ui-rgba_integer-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-srgb8-rgb-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__video__tex-3d-srgb8_alpha8-rgba-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rg8ui-rg_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgb8ui-rgb_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-rgba8ui-rgba_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-2d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-r11f_g11f_b10f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-r11f_g11f_b10f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-r11f_g11f_b10f-rgb-unsigned_int_10f_11f_11f_rev.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-r16f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-r16f-red-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-r32f-red-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-r8-red-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-r8ui-red_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rg16f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rg16f-rg-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rg32f-rg-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rg8-rg-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rg8ui-rg_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgb16f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgb16f-rgb-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgb32f-rgb-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgb565-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgb565-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgb5_a1-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgb5_a1-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgb8ui-rgb_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgba16f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgba16f-rgba-half_float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgba32f-rgba-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgba4-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgba4-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgba8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-rgba8ui-rgba_integer-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-srgb8-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__textures__webgl_canvas__tex-3d-srgb8_alpha8-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__transform_feedback__transform_feedback.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__transform_feedback__two-unreferenced-varyings.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__transform_feedback__unwritten-output-defaults-to-zero.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance2__vertex_arrays__vertex-array-object.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-bindAttribLocation-aliasing.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-bindAttribLocation-matrix.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-bindAttribLocation-repeated.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-disabled-vertex-attrib.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-enable-vertex-attrib.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-matrix-attributes.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-vertex-attrib-render.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-vertex-attrib-zero-issues.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-vertexattribpointer-offsets.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__attribs__gl-vertexattribpointer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__buffer-bind-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__buffer-data-and-buffer-sub-data.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__buffer-data-array-buffer-delete.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__buffer-uninitialized.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__element-array-buffer-delete-recreate.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__index-validation-copies-indices.html]
 fail-if = (os != 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__index-validation-crash-with-buffer-sub-data.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__index-validation-large-buffer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__index-validation-verifies-too-many-indices.html]
 fail-if = (os != 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__index-validation-with-resized-buffer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__buffers__index-validation.html]
 fail-if = (os != 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__buffer-offscreen-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__buffer-preserve-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__canvas-test.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__canvas-zero-size.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__draw-static-webgl-to-multiple-canvas-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__draw-webgl-to-canvas-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__drawingbuffer-hd-dpi-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__drawingbuffer-static-canvas-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__drawingbuffer-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__framebuffer-bindings-affected-by-to-data-url.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__framebuffer-bindings-unaffected-on-resize.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__rapid-resizing.html]
-fail-if = (os == 'win' && os_version == '5.1')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__texture-bindings-unaffected-on-resize.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__to-data-url-test.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__canvas__viewport-unchanged-upon-resize.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-attribute-preserve-drawing-buffer.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-attributes-alpha-depth-stencil-antialias.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-creation-and-destruction.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-creation.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-eviction-with-garbage-collection.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-hidden-alpha.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-lost-restored.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-lost.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-no-alpha-fbo-with-alpha.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-release-upon-reload.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-release-with-workers.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__context-size-change.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__incorrect-context-object-behaviour.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__premultiplyalpha-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__resource-sharing-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__context__user-defined-properties-on-context.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__ext-disjoint-timer-query.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__ext-texture-filter-anisotropic.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__get-extension.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__oes-texture-float-linear.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__webgl-compressed-texture-atc.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__webgl-compressed-texture-etc.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__webgl-compressed-texture-pvrtc.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__webgl-compressed-texture-s3tc-srgb.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__webgl-compressed-texture-s3tc.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__webgl-compressed-texture-size-limit.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__webgl-debug-renderer-info.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__webgl-debug-shaders.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__extensions__webgl-shared-resources.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__angle-ambiguous-function-call.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__angle-constructor-invalid-parameters.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__angle-d3d11-compiler-error.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__angle-dx-variable-bug.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__array-of-struct-with-int-first-position.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__bool-type-cast-bug-int-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__compare-loop-index-to-uniform.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__complex-glsl-does-not-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__compound-assignment-type-combination.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__conditional-discard-in-loop.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__conditional-discard-optimization.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__constant-precision-qualifier.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__floor-div-cos-should-not-truncate.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__floored-division-accuracy.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__fragcoord-linking-bug.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__gl-fragcoord-multisampling-bug.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__global-invariant-does-not-leak-across-shaders.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__invariant-does-not-leak-across-shaders.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__logic-inside-block-without-braces.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__long-expressions-should-not-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__loop-if-loop-gradient.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__modulo-arithmetic-accuracy.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__multiplication-assignment.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__nested-functions-should-not-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__nested-loops-with-break-and-continue.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__nested-sequence-operator.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__pow-of-small-constant-in-user-defined-function.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__pow-with-constant-exponent-should-not-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__qualcomm-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__qualcomm-loop-with-continue-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__sampler-array-using-loop-index.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__sampler-struct-function-arg.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__sequence-operator-evaluation-order.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__sketchfab-lighting-shader-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__struct-constructor-highp-bug.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__temp-expressions-should-not-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__undefined-index-should-not-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__bugs__uniforms-should-not-lose-values.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-bvec2.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-bvec3.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-bvec4.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-ivec2.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-ivec3.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-ivec4.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-mat2.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-mat3.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-mat4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-vec-mat-corner-cases.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-vec-mat-index.html]
-skip-if = (os == 'mac') || (os == 'win') || (os == 'linux') || (os == 'android') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac') || (os == 'win') || (os == 'linux') || (os == 'android') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-vec2.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-vec3.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__constructors__glsl-construct-vec4.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-abs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-acos.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-asin.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-atan-xy.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-atan.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-ceil.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-clamp-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-clamp-gentype.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-cos.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-cross.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-distance.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-dot.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-faceforward.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-floor.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-fract.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-length.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-max-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-max-gentype.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-min-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-min-gentype.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-mix-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-mix-gentype.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-mod-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-mod-gentype.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-normalize.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-reflect.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-sign.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-sin.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-smoothstep-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-smoothstep-gentype.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-step-float.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function-step-gentype.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__functions__glsl-function.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_int_float.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_int_mat2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_int_mat3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_int_mat4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_int_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_int_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_int_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_ivec2_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_ivec3_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__add_ivec4_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__assign_int_to_float.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__assign_ivec2_to_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__assign_ivec3_to_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__assign_ivec4_to_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__construct_struct.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_int_float.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_int_mat2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_int_mat3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_int_mat4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_int_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_int_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_int_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_ivec2_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_ivec3_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__divide_ivec4_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__equal_int_float.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__equal_ivec2_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__equal_ivec3_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__equal_ivec4_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__function_int_float.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__function_ivec2_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__function_ivec3_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__function_ivec4_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__greater_than.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__greater_than_equal.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__less_than.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__less_than_equal.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_int_float.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_int_mat2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_int_mat3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_int_mat4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_int_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_int_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_int_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_ivec2_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_ivec3_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__multiply_ivec4_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__not_equal_int_float.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__not_equal_ivec2_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__not_equal_ivec3_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__not_equal_ivec4_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_int_float.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_int_mat2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_int_mat3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_int_mat4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_int_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_int_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_int_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_ivec2_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_ivec3_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__subtract_ivec4_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__ternary_int_float.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__ternary_ivec2_vec2.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__ternary_ivec3_vec3.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__implicit__ternary_ivec4_vec4.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__literals__float_literal.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__literals__literal_precision.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__literals__overflow_leak.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__matrices__glsl-mat3-construction.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__matrices__glsl-mat4-to-mat3.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__matrices__matrix-compound-multiply.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__boolean_precision.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__const-variable-initialization.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__embedded-struct-definitions-forbidden.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__empty-declaration.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__empty_main.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__expression-list-in-declarator-initializer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__gl_position_unset.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__global-variable-init.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__glsl-function-nodes.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__glsl-long-variable-names.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__glsl-vertex-branch.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__large-loop-compile.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__non-ascii-comments.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__non-ascii.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__re-compile-re-link.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__sequence-operator-returns-constant.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-precision-format-obeyed.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-struct-scope.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-uniform-packing-restrictions.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-varying-packing-restrictions.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-256-character-define.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-256-character-identifier.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-_webgl-identifier.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-arbitrary-indexing.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-arbitrary-indexing.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-array-of-structs-containing-arrays.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-array-of-structs-uniform.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-attrib-array.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-attrib-struct.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-clipvertex.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-comma-assignment.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-comma-conditional-assignment.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-comma-separated-variable-declarations.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-conditional-scoping-negative.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-conditional-scoping.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-default-precision.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-default-precision.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-dfdx-no-ext.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-dfdx.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-do-loop.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-error-directive.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-explicit-int-cast.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-float-return-value.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-for-loop.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-for-scoping.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-frag-depth.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-function-recursion.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-function-scoped-struct.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-functional-scoping.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-glcolor.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-gles-1.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-gles-symbol.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-global-variable-precision-mismatch.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-glprojectionmatrix.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-hex-int-constant-macro.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-implicit-vec3-to-vec4-cast.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-include.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-int-return-value.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-invalid-identifier.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-ivec2-return-value.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-ivec3-return-value.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-ivec4-return-value.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-limited-indexing.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-long-line.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-non-ascii-error.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-non-reserved-words.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-precision.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-preprocessor-whitespace.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-quoted-error.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-reserved-words.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-short-circuiting-operators.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-similar-uniform-array-names.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-too-many-uniforms.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-two-initializer-types.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-undefined-preprocessor-symbol.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-uniform-in-loop-condition.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-vec2-return-value.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-vec3-return-value.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-vec4-return-value.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-vec4-vec3-vec4-conditional.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-version-100.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-version-100.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-version-120.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-version-130.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-webgl-identifier.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-with-while-loop.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shader-without-precision.frag.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shaders-with-constant-expression-loop-conditions.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shaders-with-invariance.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shaders-with-mis-matching-uniforms.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shaders-with-mis-matching-varyings.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shaders-with-missing-varyings.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shaders-with-name-conflicts.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shaders-with-uniform-structs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shaders-with-varyings.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__shared.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__struct-assign.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__struct-equals.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__struct-mixed-array-declarators.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__struct-nesting-exceeds-maximum.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__struct-nesting-of-variable-names.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__struct-nesting-under-maximum.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__struct-specifiers-in-uniforms.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__struct-unary-operators.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__ternary-operator-on-arrays.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__ternary-operators-in-global-initializers.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__misc__ternary-operators-in-initializers.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__reserved___webgl_field.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__reserved___webgl_function.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__reserved___webgl_struct.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__reserved___webgl_variable.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__reserved__webgl_field.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__reserved__webgl_function.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__reserved__webgl_struct.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__reserved__webgl_variable.vert.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__samplers__glsl-function-texture2d-bias.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__samplers__glsl-function-texture2dlod.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__samplers__glsl-function-texture2dproj.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__samplers__glsl-function-texture2dprojlod.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__variables__gl-fragcoord-xy-values.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__variables__gl-fragcoord.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__variables__gl-fragdata-and-fragcolor.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__variables__gl-frontfacing.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__variables__gl-pointcoord.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__glsl__variables__glsl-built-ins.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__limits__gl-line-width.html]
-skip-if = (os == 'mac') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__limits__gl-max-texture-dimensions.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__limits__gl-min-attribs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__limits__gl-min-textures.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__limits__gl-min-uniforms.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__bad-arguments-test.html]
-skip-if = (os == 'mac') || (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac') || (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__boolean-argument-conversion.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__delayed-drawing.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__error-reporting.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__expando-loss.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__functions-returning-strings.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__invalid-passed-params.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__is-object.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__null-object-behaviour.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__object-deletion-behaviour.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__shader-precision-format.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__type-conversion-test.html]
-skip-if = (os == 'mac' && debug) || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac' && debug) || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__uninitialized-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__misc__webgl-specific.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__constants.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__getContext.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__methods.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-A.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-B1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-B2.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-B3.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-B4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-C.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-D_G.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-G_I.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-L_S.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__quickCheckAPI-S_V.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__conformance__webGLArrays.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__bindBuffer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__bindBufferBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__bindFramebufferLeaveNonZero.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__bufferData.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__bufferDataBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__bufferSubData.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__bufferSubDataBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__copyTexImage2D.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__copyTexImage2DBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__copyTexSubImage2D.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__copyTexSubImage2DBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__deleteBufferBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__drawArrays.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__drawArraysOutOfBounds.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__drawElements.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__drawElementsBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__isTests.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__isTestsBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__readPixels.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__readPixelsBadArgs.html]
-skip-if = 1 || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = 1 || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__texImage2D.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__texImage2DBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__texImage2DHTML.html]
-skip-if = 1 || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = 1 || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__texImage2DHTMLBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__texSubImage2D.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__texSubImage2DBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__texSubImage2DHTML.html]
-skip-if = 1 || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = 1 || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__texSubImage2DHTMLBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__uniformMatrix.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__uniformMatrixBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__uniformf.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__uniformfArrayLen1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__uniformfBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__uniformi.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__uniformiBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__vertexAttrib.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__vertexAttribBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__vertexAttribPointer.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__functions__vertexAttribPointerBadArgs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__glsl__arrayOutOfBounds.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__more__glsl__uniformOutOfBounds.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__abs__abs_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__acos__acos_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__all__all_001_to_004.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__any__any_001_to_004.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__array__array_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__asin__asin_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__atan__atan_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__atan__atan_009_to_012.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__biConstants__biConstants_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__biConstants__biConstants_009_to_016.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__biuDepthRange__biuDepthRange_001_to_002.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_009_to_016.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_017_to_024.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_025_to_032.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_033_to_040.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_041_to_048.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_049_to_056.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_057_to_064.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_065_to_072.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_073_to_080.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_081_to_088.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_089_to_096.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_097_to_104.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_105_to_112.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_113_to_120.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_121_to_128.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_129_to_136.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_137_to_144.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_145_to_152.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_153_to_160.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_161_to_168.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_169_to_176.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__build__build_177_to_178.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__built_in_varying_array_out_of_bounds__built_in_varying_array_out_of_bounds_001_to_001.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__ceil__ceil_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__clamp__clamp_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__control_flow__control_flow_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__control_flow__control_flow_009_to_010.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__cos__cos_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__cross__cross_001_to_002.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__default__default_001_to_001.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__degrees__degrees_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__discard__discard_001_to_002.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__distance__distance_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__dot__dot_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__equal__equal_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__equal__equal_009_to_012.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__exp2__exp2_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__exp2__exp2_009_to_012.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__exp__exp_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__exp__exp_009_to_012.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__faceforward__faceforward_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__floor__floor_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__fract__fract_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_009_to_016.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_017_to_024.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_025_to_032.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_033_to_040.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_041_to_048.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_049_to_056.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_057_to_064.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_065_to_072.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_073_to_080.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_081_to_088.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_089_to_096.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_097_to_104.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_105_to_112.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_113_to_120.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__functions__functions_121_to_126.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__gl_FragCoord__gl_FragCoord_001_to_003.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__gl_FrontFacing__gl_FrontFacing_001_to_001.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__greaterThanEqual__greaterThanEqual_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__greaterThan__greaterThan_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__inversesqrt__inversesqrt_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__length__length_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__lessThanEqual__lessThanEqual_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__lessThan__lessThan_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__log2__log2_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__log2__log2_009_to_012.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__log__log_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__log__log_009_to_012.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__mat3__mat3_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__mat__mat_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__mat__mat_009_to_016.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__mat__mat_017_to_024.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__mat__mat_025_to_032.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__mat__mat_033_to_040.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__mat__mat_041_to_046.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__matrixCompMult__matrixCompMult_001_to_004.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__max__max_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__min__min_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__mix__mix_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__mod__mod_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__normalize__normalize_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__notEqual__notEqual_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__notEqual__notEqual_009_to_012.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__not__not_001_to_004.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__operators__operators_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__operators__operators_009_to_016.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__operators__operators_017_to_024.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__operators__operators_025_to_026.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__pow__pow_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__pow__pow_009_to_016.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__pow__pow_017_to_024.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__radians__radians_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__reflect__reflect_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__refract__refract_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__sign__sign_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__sin__sin_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__smoothstep__smoothstep_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__sqrt__sqrt_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__step__step_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__struct__struct_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__struct__struct_009_to_016.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__struct__struct_017_to_024.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__struct__struct_025_to_032.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__struct__struct_033_to_040.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__struct__struct_041_to_048.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__struct__struct_049_to_056.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_009_to_016.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_017_to_024.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_025_to_032.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_033_to_040.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_041_to_048.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_049_to_056.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_057_to_064.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_065_to_072.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_073_to_080.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_081_to_088.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_089_to_096.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_097_to_104.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_105_to_112.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__swizzlers__swizzlers_113_to_120.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__tan__tan_001_to_006.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__vec3__vec3_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__vec__vec_001_to_008.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__vec__vec_009_to_016.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__ogles__GL__vec__vec_017_to_018.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__get-active-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__gl-bind-attrib-location-long-names-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__gl-bind-attrib-location-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__gl-get-active-attribute.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__gl-get-active-uniform.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__gl-getshadersource.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__gl-shader-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__invalid-UTF-16.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__program-infolog.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__program-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__programs__use-program-crash-with-discard-in-fragment-shader.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__reading__read-pixels-pack-alignment.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__reading__read-pixels-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__renderbuffers__feedback-loop.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__renderbuffers__framebuffer-state-restoration.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__renderbuffers__renderbuffer-initialization.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__culling.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__default-texture-draw-bug.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__draw-arrays-out-of-bounds.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__draw-elements-out-of-bounds.html]
 fail-if = (os != 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__draw-with-changing-start-vertex-bug.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__framebuffer-switch.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__framebuffer-texture-switch.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__gl-clear.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__gl-drawarrays.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__gl-drawelements.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__gl-scissor-canvas-dimensions.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__gl-scissor-fbo-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__gl-scissor-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__gl-viewport-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__line-loop-tri-fan.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__many-draw-calls.html]
-skip-if = debug || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = debug || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__more-than-65536-indices.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__multisample-corruption.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__negative-one-index.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__out-of-bounds-index-buffers.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__point-no-attributes.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__point-size.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__point-specific-shader-variables.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__point-with-gl-pointcoord-in-fragment-shader.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__polygon-offset.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__simple.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__rendering__triangle.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__state__gl-enable-enum-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__state__gl-get-calls.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__state__gl-geterror.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__state__gl-initial-state.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__state__state-uneffected-after-compositing.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas__tex-2d-rgb-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas__tex-2d-rgb-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas__tex-2d-rgba-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas__tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas__tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas_sub_rectangle__tex-2d-rgb-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas_sub_rectangle__tex-2d-rgb-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas_sub_rectangle__tex-2d-rgba-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas_sub_rectangle__tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__canvas_sub_rectangle__tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image__tex-2d-rgb-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image__tex-2d-rgb-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image__tex-2d-rgba-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image__tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image__tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image_data__tex-2d-rgb-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image_data__tex-2d-rgb-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image_data__tex-2d-rgba-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image_data__tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__image_data__tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__copy-tex-image-2d-formats.html]
-skip-if = (os == 'mac') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'mac') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__copy-tex-image-and-sub-image-2d.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__copy-tex-sub-image-2d-partial-texture.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__cube-incomplete-fbo.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__default-texture.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__gl-pixelstorei.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__gl-teximage.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__mipmap-fbo.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__origin-clean-conformance.html]
-skip-if = 1 || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = 1 || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__tex-image-and-sub-image-2d-with-array-buffer-view.html]
-skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win' && os_version == '6.1') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__tex-image-and-uniform-binding-bugs.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__tex-image-canvas-corruption.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__tex-image-webgl.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__tex-image-with-format-and-type.html]
 fail-if = (os == 'mac')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__tex-image-with-invalid-data.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__tex-sub-image-2d-bad-args.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__tex-sub-image-2d.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texparameter-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-active-bind-2.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-active-bind.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-attachment-formats.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-clear.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-complete.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-copying-feedback-loops.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-cube-as-fbo-attachment.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-draw-with-2d-and-cube.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-hd-dpi.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-mips.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-size-cube-maps.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-size-limit.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-size.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-sub-image-cube-maps.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-transparent-pixels-initialized.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-upload-cube-maps.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__misc__texture-upload-size.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__svg_image__tex-2d-rgb-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__svg_image__tex-2d-rgb-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__svg_image__tex-2d-rgba-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__svg_image__tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__svg_image__tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__video__tex-2d-rgb-rgb-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__video__tex-2d-rgb-rgb-unsigned_short_5_6_5.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__video__tex-2d-rgba-rgba-unsigned_byte.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__video__tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__video__tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html]
 fail-if = (os == 'mac') || (os == 'win')
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__webgl_canvas__tex-2d-rgb-rgb-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__webgl_canvas__tex-2d-rgb-rgb-unsigned_short_5_6_5.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__webgl_canvas__tex-2d-rgba-rgba-unsigned_byte.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__webgl_canvas__tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__textures__webgl_canvas__tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__typedarrays__array-buffer-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__typedarrays__array-buffer-view-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__typedarrays__array-large-array-tests.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__typedarrays__array-unit-tests.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__typedarrays__data-view-crash.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__typedarrays__data-view-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__typedarrays__typed-arrays-in-workers.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__gl-uniform-arrays.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__gl-uniform-bool.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__gl-uniformmatrix4fv.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__gl-unknown-uniform.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__null-uniform-location.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__out-of-bounds-uniform-array-access.html]
-skip-if = (os == 'win') || (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'win') || (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__uniform-default-values.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__uniform-location.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__uniform-samplers-test.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_2_conformance__uniforms__uniform-values-per-program.html]
-skip-if = (os == 'android' || os == 'linux' || (os == 'win' && os_version == '5.1'))
+skip-if = (os == 'android' || os == 'linux')
 [generated/test_conformance__attribs__gl-bindAttribLocation-aliasing.html]
 skip-if = (os == 'android')
 [generated/test_conformance__attribs__gl-bindAttribLocation-matrix.html]
 skip-if = (os == 'android')
 [generated/test_conformance__attribs__gl-bindAttribLocation-repeated.html]
 [generated/test_conformance__attribs__gl-disabled-vertex-attrib.html]
 fail-if = (os == 'android')
 [generated/test_conformance__attribs__gl-enable-vertex-attrib.html]
@@ -7642,17 +7641,16 @@ skip-if = (os == 'android')
 [generated/test_conformance__glsl__bugs__compound-assignment-type-combination.html]
 [generated/test_conformance__glsl__bugs__conditional-discard-in-loop.html]
 skip-if = (os == 'android')
 [generated/test_conformance__glsl__bugs__conditional-discard-optimization.html]
 skip-if = (os == 'android')
 [generated/test_conformance__glsl__bugs__constant-precision-qualifier.html]
 [generated/test_conformance__glsl__bugs__essl3-shaders-with-webgl1.html]
 [generated/test_conformance__glsl__bugs__floor-div-cos-should-not-truncate.html]
-fail-if = (os == 'win' && os_version == '5.1')
 [generated/test_conformance__glsl__bugs__floored-division-accuracy.html]
 skip-if = (os == 'android')
 [generated/test_conformance__glsl__bugs__fragcoord-linking-bug.html]
 skip-if = (os == 'android')
 [generated/test_conformance__glsl__bugs__gl-fragcoord-multisampling-bug.html]
 skip-if = (os == 'android')
 [generated/test_conformance__glsl__bugs__global-invariant-does-not-leak-across-shaders.html]
 [generated/test_conformance__glsl__bugs__invariant-does-not-leak-across-shaders.html]
@@ -7834,17 +7832,16 @@ fail-if = (os == 'mac' && os_version == 
 [generated/test_conformance__glsl__misc__expression-list-in-declarator-initializer.html]
 [generated/test_conformance__glsl__misc__gl_position_unset.vert.html]
 [generated/test_conformance__glsl__misc__global-variable-init.html]
 [generated/test_conformance__glsl__misc__glsl-function-nodes.html]
 fail-if = (os == 'mac' && os_version == '10.6')
 [generated/test_conformance__glsl__misc__glsl-long-variable-names.html]
 [generated/test_conformance__glsl__misc__glsl-vertex-branch.html]
 [generated/test_conformance__glsl__misc__large-loop-compile.html]
-fail-if = (os == 'win' && os_version == '5.1')
 [generated/test_conformance__glsl__misc__non-ascii-comments.vert.html]
 [generated/test_conformance__glsl__misc__non-ascii.vert.html]
 [generated/test_conformance__glsl__misc__re-compile-re-link.html]
 fail-if = (os == 'android' && android_version == '10')
 [generated/test_conformance__glsl__misc__sequence-operator-returns-constant.html]
 [generated/test_conformance__glsl__misc__shader-precision-format-obeyed.html]
 [generated/test_conformance__glsl__misc__shader-struct-scope.html]
 [generated/test_conformance__glsl__misc__shader-uniform-packing-restrictions.html]
@@ -8153,17 +8150,17 @@ fail-if = (os == 'android') || (os == 'l
 [generated/test_conformance__ogles__GL__length__length_001_to_006.html]
 [generated/test_conformance__ogles__GL__lessThanEqual__lessThanEqual_001_to_008.html]
 [generated/test_conformance__ogles__GL__lessThan__lessThan_001_to_008.html]
 [generated/test_conformance__ogles__GL__log2__log2_001_to_008.html]
 [generated/test_conformance__ogles__GL__log2__log2_009_to_012.html]
 [generated/test_conformance__ogles__GL__log__log_001_to_008.html]
 [generated/test_conformance__ogles__GL__log__log_009_to_012.html]
 [generated/test_conformance__ogles__GL__mat3__mat3_001_to_006.html]
-skip-if = (os == 'win' && os_version != '5.1')
+skip-if = (os == 'win')
 [generated/test_conformance__ogles__GL__mat__mat_001_to_008.html]
 [generated/test_conformance__ogles__GL__mat__mat_009_to_016.html]
 [generated/test_conformance__ogles__GL__mat__mat_017_to_024.html]
 [generated/test_conformance__ogles__GL__mat__mat_025_to_032.html]
 [generated/test_conformance__ogles__GL__mat__mat_033_to_040.html]
 [generated/test_conformance__ogles__GL__mat__mat_041_to_046.html]
 [generated/test_conformance__ogles__GL__matrixCompMult__matrixCompMult_001_to_004.html]
 [generated/test_conformance__ogles__GL__max__max_001_to_006.html]
@@ -8302,17 +8299,16 @@ skip-if = (os == 'mac') || (os == 'andro
 [generated/test_conformance__textures__image__tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html]
 [generated/test_conformance__textures__image_data__tex-2d-rgb-rgb-unsigned_byte.html]
 [generated/test_conformance__textures__image_data__tex-2d-rgb-rgb-unsigned_short_5_6_5.html]
 [generated/test_conformance__textures__image_data__tex-2d-rgba-rgba-unsigned_byte.html]
 [generated/test_conformance__textures__image_data__tex-2d-rgba-rgba-unsigned_short_4_4_4_4.html]
 [generated/test_conformance__textures__image_data__tex-2d-rgba-rgba-unsigned_short_5_5_5_1.html]
 [generated/test_conformance__textures__misc__compressed-tex-image.html]
 [generated/test_conformance__textures__misc__copy-tex-image-2d-formats.html]
-skip-if = (os == 'win' && os_version == '5.1')
 [generated/test_conformance__textures__misc__copy-tex-image-and-sub-image-2d.html]
 [generated/test_conformance__textures__misc__copy-tex-sub-image-2d-partial-texture.html]
 [generated/test_conformance__textures__misc__cube-incomplete-fbo.html]
 skip-if = (os == 'android')
 fail-if = (os == 'mac') || (os == 'linux')
 [generated/test_conformance__textures__misc__default-texture.html]
 [generated/test_conformance__textures__misc__gl-get-tex-parameter.html]
 [generated/test_conformance__textures__misc__gl-pixelstorei.html]
@@ -8400,9 +8396,9 @@ fail-if = (os == 'linux') || (os == 'lin
 [generated/test_conformance__uniforms__null-uniform-location.html]
 [generated/test_conformance__uniforms__out-of-bounds-uniform-array-access.html]
 skip-if = (os == 'android') || (os == 'mac' && os_version == '10.6')
 [generated/test_conformance__uniforms__uniform-default-values.html]
 skip-if = (os == 'android') || (os == 'linux') || (os == 'win')
 [generated/test_conformance__uniforms__uniform-location.html]
 [generated/test_conformance__uniforms__uniform-samplers-test.html]
 [generated/test_conformance__uniforms__uniform-values-per-program.html]
-skip-if = (os == 'win' && os_version != '5.1')
+skip-if = (os == 'win')
--- a/dom/canvas/test/webgl-conf/mochitest-errata.ini
+++ b/dom/canvas/test/webgl-conf/mochitest-errata.ini
@@ -11,19 +11,16 @@
 #   * Android 'Gingerbread' 2.3.3+: 10 ('2.3' slaves)
 #   * Android 'ICS' 4.0-4.0.2: 14 ('4.0' slaves, inactive)
 #   * Android 'ICS' 4.0.3+: 15
 #   * Android 'Jellybean' 4.3: 18 ('4.3' slaves)
 
 ##########
 # os_version strings
 #   https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832%28v=vs.85%29.aspx
-#   * Windows XP: 5.1
-#   * Windows XP 64-bit: 5.2
-#   * Windows Vista: 6.0
 #   * Windows 7: 6.1
 #   * Windows 8: 6.2
 #   * Windows 8.1: 6.3
 #   * Windows 10: 10.0
 
 [DEFAULT]
 subsuite = webgl
 # Skip B2G for now, until we get a handle on the longer tail of emulator bugs.
@@ -67,17 +64,17 @@ skip-if = 1
 
 ####################
 # Timing out
 [generated/test_conformance__uniforms__uniform-default-values.html]
 # Timeout on Windows, crash on Android/Linux.
 skip-if = (os == 'android') || (os == 'linux') || (os == 'win')
 [generated/test_conformance__ogles__GL__mat3__mat3_001_to_006.html]
 # Timeout on D3D11
-skip-if = (os == 'win' && os_version != '5.1')
+skip-if = (os == 'win')
 
 ####################
 # Tests expect conservative index validation, which we skip on WebGL 2.
 # ANGLE still provides it though, so they pass on windows.
 [generated/test_2_conformance__rendering__draw-elements-out-of-bounds.html]
 fail-if = (os != 'win')
 [generated/test_2_conformance__buffers__index-validation-copies-indices.html]
 fail-if = (os != 'win')
@@ -873,23 +870,19 @@ skip-if = (os == 'mac' && debug)
 [generated/test_2_conformance__ogles__GL__built_in_varying_array_out_of_bounds__built_in_varying_array_out_of_bounds_001_to_001.html]
 # time out crash
 skip-if = (os == 'win')
 [generated/test_conformance__ogles__GL__built_in_varying_array_out_of_bounds__built_in_varying_array_out_of_bounds_001_to_001.html]
 # time out crash
 skip-if = (os == 'win')
 [generated/test_2_conformance2__glsl3__vector-dynamic-indexing.html]
 skip-if = (os == 'win')
-[generated/test_conformance__glsl__misc__large-loop-compile.html]
-fail-if = (os == 'win' && os_version == '5.1')
-[generated/test_conformance__textures__misc__copy-tex-image-2d-formats.html]
-skip-if = (os == 'win' && os_version == '5.1')
 [generated/test_conformance__uniforms__uniform-values-per-program.html]
 # Crashes on D3D11 debug.
-skip-if = (os == 'win' && os_version != '5.1')
+skip-if = (os == 'win')
 [generated/test_2_conformance2__glsl3__uniform-location-length-limits.html]
 # time out crash
 skip-if = (os == 'win' && debug)
 [generated/test_conformance__textures__misc__tex-image-and-sub-image-2d-with-array-buffer-view.html]
 # time out crash
 skip-if = (os == 'win' && debug)
 [generated/test_conformance__extensions__webgl-compressed-texture-size-limit.html]
 # skip this because the result is not always pass
@@ -966,15 +959,8 @@ skip-if = (os == 'win' && os_version == 
 skip-if = (os == 'win' && os_version == '6.1')
 [generated/test_2_conformance__extensions__webgl-compressed-texture-size-limit.html]
 # Test timed out.
 skip-if = (os == 'win')
 [generated/test_2_conformance2__textures__misc__tex-input-validation.html]
 skip-if = (os == 'win')
 [generated/test_2_conformance2__buffers__get-buffer-sub-data.html]
 skip-if = (os == 'win')
-
-####################
-# failure on Windows
-[generated/test_2_conformance__canvas__rapid-resizing.html]
-fail-if = (os == 'win' && os_version == '5.1')
-[generated/test_conformance__glsl__bugs__floor-div-cos-should-not-truncate.html]
-fail-if = (os == 'win' && os_version == '5.1')
--- a/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_es3.html
+++ b/dom/canvas/test/webgl-mochitest/ensure-exts/test_WEBGL_compressed_texture_es3.html
@@ -5,15 +5,13 @@
     <script src='/tests/SimpleTest/SimpleTest.js'></script>
     <link rel='stylesheet' href='/tests/SimpleTest/test.css'>
     <script src='ensure-ext.js'></script>
   </head>
   <body>
     <script>
 
 'use strict';
-Lastly_WithDraftExtsEnabled(function() {
-    EnsureExt('WEBGL_compressed_texture_es3');
-});
+EnsureExt('WEBGL_compressed_texture_etc');
 
     </script>
   </body>
 </html>
--- a/dom/canvas/test/webgl-mochitest/mochitest.ini
+++ b/dom/canvas/test/webgl-mochitest/mochitest.ini
@@ -27,17 +27,17 @@ fail-if = (os == 'android') || (os == 'l
 fail-if = (os == 'android')
 [ensure-exts/test_WEBGL_color_buffer_float.html]
 fail-if = (os == 'android')
 [ensure-exts/test_WEBGL_compressed_texture_atc.html]
 fail-if = (os == 'android') || (os == 'linux') || (os == 'mac') || (os == 'win')
 [ensure-exts/test_WEBGL_compressed_texture_es3.html]
 fail-if = (os == 'android') || (os == 'linux') || (os == 'mac') || (os == 'win')
 [ensure-exts/test_WEBGL_compressed_texture_etc1.html]
-fail-if = (os == 'linux') || (os == 'mac') || (os == 'win' && os_version == '5.1')
+fail-if = (os == 'linux') || (os == 'mac') || (os == 'win')
 [ensure-exts/test_WEBGL_compressed_texture_pvrtc.html]
 fail-if = (os == 'android') || (os == 'linux') || (os == 'mac') || (os == 'win')
 [ensure-exts/test_WEBGL_compressed_texture_s3tc.html]
 fail-if = (os == 'android') || (os == 'linux')
 [ensure-exts/test_WEBGL_depth_texture.html]
 fail-if = (os == 'mac' && os_version == '10.6')
 [ensure-exts/test_WEBGL_draw_buffers.html]
 fail-if = (os == 'android') || (os == 'win' && os_version == '5.1')
--- a/dom/messagechannel/MessagePort.cpp
+++ b/dom/messagechannel/MessagePort.cpp
@@ -134,23 +134,20 @@ private:
     RefPtr<MessageEvent> event =
       new MessageEvent(eventTarget, nullptr, nullptr);
 
     Sequence<OwningNonNull<MessagePort>> ports;
     if (!mData->TakeTransferredPortsAsSequence(ports)) {
       return NS_ERROR_OUT_OF_MEMORY;
     }
 
-    Nullable<WindowProxyOrMessagePort> source;
-    source.SetValue().SetAsMessagePort() = mPort;
-
     event->InitMessageEvent(nullptr, NS_LITERAL_STRING("message"),
                             false /* non-bubbling */,
                             false /* cancelable */, value, EmptyString(),
-                            EmptyString(), source, ports);
+                            EmptyString(), nullptr, ports);
     event->SetTrusted(true);
 
     bool dummy;
     mPort->DispatchEvent(static_cast<dom::Event*>(event.get()), &dummy);
 
     return NS_OK;
   }
 
--- a/editor/libeditor/EditorBase.cpp
+++ b/editor/libeditor/EditorBase.cpp
@@ -922,17 +922,24 @@ EditorBase::BeginPlaceHolderTransaction(
     // time to turn on the batch
     BeginUpdateViewBatch();
     mPlaceHolderTxn = nullptr;
     mPlaceHolderName = aName;
     RefPtr<Selection> selection = GetSelection();
     if (selection) {
       mSelState = new SelectionState();
       mSelState->SaveSelection(selection);
-      mRangeUpdater.RegisterSelectionState(*mSelState);
+      // Composition transaction can modify multiple nodes and it merges text
+      // node for ime into single text node.
+      // So if current selection is into IME text node, it might be failed
+      // to restore selection by UndoTransaction.
+      // So we need update selection by range updater.
+      if (mPlaceHolderName == nsGkAtoms::IMETxnName) {
+        mRangeUpdater.RegisterSelectionState(*mSelState);
+      }
     }
   }
   mPlaceHolderBatch++;
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
@@ -974,17 +981,19 @@ EditorBase::EndPlaceHolderTransaction()
     // cached for frame offset are Not available now
     if (selection) {
       selection->SetCanCacheFrameOffset(false);
     }
 
     if (mSelState) {
       // we saved the selection state, but never got to hand it to placeholder
       // (else we ould have nulled out this pointer), so destroy it to prevent leaks.
-      mRangeUpdater.DropSelectionState(*mSelState);
+      if (mPlaceHolderName == nsGkAtoms::IMETxnName) {
+        mRangeUpdater.DropSelectionState(*mSelState);
+      }
       delete mSelState;
       mSelState = nullptr;
     }
     // We might have never made a placeholder if no action took place.
     if (mPlaceHolderTxn) {
       nsCOMPtr<nsIAbsorbingTransaction> plcTxn = do_QueryReferent(mPlaceHolderTxn);
       if (plcTxn) {
         plcTxn->EndPlaceHolderBatch();
--- a/editor/libeditor/tests/mochitest.ini
+++ b/editor/libeditor/tests/mochitest.ini
@@ -220,16 +220,17 @@ skip-if = toolkit == 'android'
 [test_bug1306532.html]
 subsuite = clipboard
 skip-if = toolkit == 'android'
 [test_bug1310912.html]
 skip-if = toolkit == 'android' # bug 1315898
 [test_bug1314790.html]
 [test_bug1315065.html]
 [test_bug1316302.html]
+[test_bug1328023.html]
 [test_bug1330796.html]
 [test_bug1332876.html]
 
 [test_CF_HTML_clipboard.html]
 subsuite = clipboard
 [test_composition_event_created_in_chrome.html]
 [test_contenteditable_focus.html]
 [test_dom_input_event_on_htmleditor.html]
new file mode 100644
--- /dev/null
+++ b/editor/libeditor/tests/test_bug1328023.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1328023
+-->
+<html>
+<head>
+  <title>Test for Bug 1328023</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1328023">Mozilla Bug 1328023</a>
+<p id="display"></p>
+<div id="content" style="display: none;">
+
+</div>
+
+<input type="text" id="input1"/>
+<pre id="test">
+
+<script class="testbody" type="application/javascript">
+SimpleTest.waitForExplicitFinish();
+SimpleTest.waitForFocus(function() {
+  let elm = document.getElementById("input1");
+
+  elm.focus();
+  synthesizeKey("A", {});
+  synthesizeKey("B", {});
+  is(elm.value, "AB", "AB is input.value now");
+
+  synthesizeKey("VK_BACK_SPACE", {});
+  is(elm.value, "A", "A is input.value now");
+
+  synthesizeKey("Z", { accelKey: true });
+  is(elm.value, "AB", "AB is input.value now");
+
+  synthesizeKey("C", {});
+  is(elm.value, "ABC", "ABC is input.value now");
+
+  synthesizeKey("VK_BACK_SPACE", {});
+  synthesizeKey("VK_BACK_SPACE", {});
+  synthesizeKey("VK_BACK_SPACE", {});
+
+  synthesizeKey("A", {});
+  synthesizeKey("B", {});
+  synthesizeKey("C", {});
+  is(elm.value, "ABC", "ABC is input.value now");
+
+  synthesizeKey("Z", { accelKey: true });
+  is(elm.value, "", "'' is input.value now");
+
+  synthesizeKey("Z", { accelKey: true, shiftKey: true });
+  is(elm.value, "ABC", "ABC is input.value now");
+
+  synthesizeKey("D", {});
+  is(elm.value, "ABCD", "ABCD is input.value now");
+
+  SimpleTest.finish();
+});
+</script>
+</pre>
+</body>
+</html>
--- a/gfx/layers/Layers.cpp
+++ b/gfx/layers/Layers.cpp
@@ -908,17 +908,17 @@ Layer::HasTransformAnimation() const
 }
 
 void
 Layer::ApplyPendingUpdatesForThisTransaction()
 {
   if (mPendingTransform && *mPendingTransform != mSimpleAttrs.Transform()) {
     MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) PendingUpdatesForThisTransaction", this));
     mSimpleAttrs.SetTransform(*mPendingTransform);
-    Mutated();
+    MutatedSimple();
   }
   mPendingTransform = nullptr;
 
   if (mPendingAnimations) {
     MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) PendingUpdatesForThisTransaction", this));
     mPendingAnimations->SwapElements(mAnimations);
     mPendingAnimations = nullptr;
     Mutated();
--- a/js/public/HeapAPI.h
+++ b/js/public/HeapAPI.h
@@ -318,23 +318,18 @@ CellIsMarkedGray(const Cell* cell)
     if (js::gc::IsInsideNursery(cell))
         return false;
 
     uintptr_t* word, mask;
     js::gc::detail::GetGCThingMarkWordAndMask(uintptr_t(cell), js::gc::GRAY, &word, &mask);
     return *word & mask;
 }
 
-static MOZ_ALWAYS_INLINE bool
-CellIsMarkedGrayIfKnown(const Cell* cell)
-{
-    MOZ_ASSERT(cell);
-    auto rt = js::gc::detail::GetCellRuntime(cell);
-    return rt->areGCGrayBitsValid() && CellIsMarkedGray(cell);
-}
+extern JS_PUBLIC_API(bool)
+CellIsMarkedGrayIfKnown(const Cell* cell);
 
 } /* namespace detail */
 
 MOZ_ALWAYS_INLINE bool
 IsInsideNursery(const js::gc::Cell* cell)
 {
     if (!cell)
         return false;
--- a/js/src/ds/PageProtectingVector.h
+++ b/js/src/ds/PageProtectingVector.h
@@ -3,16 +3,17 @@
  * 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/. */
 
 #ifndef ds_PageProtectingVector_h
 #define ds_PageProtectingVector_h
 
 #include "mozilla/Atomics.h"
+#include "mozilla/PodOperations.h"
 #include "mozilla/Vector.h"
 
 #include "ds/MemoryProtectionExceptionHandler.h"
 #include "gc/Memory.h"
 #include "js/Utility.h"
 
 namespace js {
 
@@ -30,20 +31,19 @@ namespace js {
  * not be fully protected unless it is aligned on a page boundary. Altogether,
  * up to two pages of memory may not be protected.
  */
 template<typename T,
          size_t MinInlineCapacity = 0,
          class AllocPolicy = mozilla::MallocAllocPolicy,
          bool ProtectUsed = true,
          bool ProtectUnused = true,
-         bool GuardAgainstReentrancy = true,
-         bool DetectPoison = false,
          size_t InitialLowerBound = 0,
-         uint8_t PoisonPattern = 0xe5>
+         bool PoisonUnused = true,
+         uint8_t PoisonPattern = 0xe3>
 class PageProtectingVector final
 {
     mozilla::Vector<T, MinInlineCapacity, AllocPolicy> vector;
 
     static constexpr size_t toShift(size_t v) { return v <= 1 ? 0 : 1 + toShift(v >> 1); }
 
     static_assert((sizeof(T) & (sizeof(T) - 1)) == 0, "For performance reasons, "
                   "PageProtectingVector only works with power-of-2 sized elements!");
@@ -85,36 +85,25 @@ class PageProtectingVector final
 
     /*
      * The size in elems that a buffer needs to be before its pages will be
      * protected. This is intended to reduce churn for small vectors while
      * still offering protection when they grow large enough.
      */
     size_t lowerBound;
 
-    /*
-     * The number of subsequent bytes containing the poison pattern detected
-     * thus far. This detection may span several append calls.
-     */
-    size_t poisonBytes;
-
 #ifdef DEBUG
     bool regionUnprotected;
 #endif
 
     bool usable;
     bool enabled;
     bool protectUsedEnabled;
     bool protectUnusedEnabled;
 
-    bool reentrancyGuardEnabled;
-    mutable mozilla::Atomic<bool, mozilla::ReleaseAcquire> reentrancyGuard;
-
-    bool detectPoisonEnabled;
-
     MOZ_ALWAYS_INLINE void resetTest() {
         MOZ_ASSERT(protectUsedEnabled || protectUnusedEnabled);
         size_t nextPage = (pageSize - (uintptr_t(begin() + length()) & pageMask)) >> elemShift;
         size_t nextResize = capacity() - length();
         if (MOZ_LIKELY(nextPage <= nextResize))
             elemsUntilTest = intptr_t(nextPage);
         else
             elemsUntilTest = intptr_t(nextResize);
@@ -130,21 +119,27 @@ class PageProtectingVector final
     MOZ_ALWAYS_INLINE void resetForNewBuffer() {
         initPage = (uintptr_t(begin() - 1) >> pageShift) + 1;
         currPage = (uintptr_t(begin() + length()) >> pageShift);
         lastPage = (uintptr_t(begin() + capacity()) >> pageShift) - 1;
         protectUsedEnabled = ProtectUsed && usable && enabled && initPage <= lastPage &&
                              (uintptr_t(begin()) & elemMask) == 0 && capacity() >= lowerBound;
         protectUnusedEnabled = ProtectUnused && usable && enabled && initPage <= lastPage &&
                                (uintptr_t(begin()) & elemMask) == 0 && capacity() >= lowerBound;
-        reentrancyGuardEnabled = GuardAgainstReentrancy && enabled && capacity() >= lowerBound;
-        detectPoisonEnabled = DetectPoison && enabled && capacity() >= lowerBound;
         setTestInitial();
     }
 
+    MOZ_ALWAYS_INLINE void poisonNewBuffer() {
+        if (!PoisonUnused)
+            return;
+        T* addr = begin() + length();
+        size_t toPoison = (capacity() - length()) * sizeof(T);
+        memset(addr, PoisonPattern, toPoison);
+    }
+
     MOZ_ALWAYS_INLINE void addExceptionHandler() {
         if (MOZ_UNLIKELY(protectUsedEnabled || protectUnusedEnabled))
             MemoryProtectionExceptionHandler::addRegion(begin(), capacity() << elemShift);
     }
 
     MOZ_ALWAYS_INLINE void removeExceptionHandler() {
         if (MOZ_UNLIKELY(protectUsedEnabled || protectUnusedEnabled))
             MemoryProtectionExceptionHandler::removeRegion(begin());
@@ -188,16 +183,17 @@ class PageProtectingVector final
         T* addr = reinterpret_cast<T*>((currPage + 1) << pageShift);
         size_t size = (lastPage - currPage) << pageShift;
         gc::UnprotectPages(addr, size);
     }
 
     MOZ_ALWAYS_INLINE void protectNewBuffer() {
         resetForNewBuffer();
         addExceptionHandler();
+        poisonNewBuffer();
         protectUsed();
         protectUnused();
     }
 
     MOZ_ALWAYS_INLINE void unprotectOldBuffer() {
         MOZ_ASSERT(!regionUnprotected);
         unprotectUnused();
         unprotectUsed();
@@ -288,87 +284,31 @@ class PageProtectingVector final
     MOZ_NEVER_INLINE MOZ_MUST_USE bool reserveSlow(size_t size);
 
     template<typename U>
     MOZ_NEVER_INLINE void infallibleAppendSlow(const U* values, size_t size);
 
     template<typename U>
     MOZ_NEVER_INLINE MOZ_MUST_USE bool appendSlow(const U* values, size_t size);
 
-    MOZ_ALWAYS_INLINE void lock() const {
-        if (MOZ_LIKELY(!GuardAgainstReentrancy || !reentrancyGuardEnabled))
-            return;
-        if (MOZ_UNLIKELY(!reentrancyGuard.compareExchange(false, true)))
-            lockSlow();
-    }
-
-    MOZ_ALWAYS_INLINE void unlock() const {
-        if (!GuardAgainstReentrancy)
-            return;
-        reentrancyGuard = false;
-    }
-
-    MOZ_NEVER_INLINE void lockSlow() const;
-
-    /* A helper class to guard against concurrent access. */
-    class AutoGuardAgainstReentrancy
-    {
-        PageProtectingVector& vector;
-
-      public:
-        MOZ_ALWAYS_INLINE explicit AutoGuardAgainstReentrancy(PageProtectingVector& holder)
-          : vector(holder)
-        {
-            vector.lock();
-        }
-
-        MOZ_ALWAYS_INLINE ~AutoGuardAgainstReentrancy() {
-            vector.unlock();
-        }
-    };
-
-    template<typename U>
-    MOZ_ALWAYS_INLINE void checkForPoison(const U* values, size_t size) {
-        if (MOZ_LIKELY(!DetectPoison || !detectPoisonEnabled))
-            return;
-        const uint8_t* addr = reinterpret_cast<const uint8_t*>(values);
-        size_t bytes = size * sizeof(U);
-        for (size_t i = 0; i < bytes; ++i) {
-            if (MOZ_LIKELY(addr[i] != PoisonPattern)) {
-                poisonBytes = 0;
-            } else {
-                ++poisonBytes;
-                if (MOZ_UNLIKELY(poisonBytes >= 16))
-                    MOZ_CRASH("Caller is writing the poison pattern into this buffer!");
-            }
-        }
-    }
-
-    MOZ_ALWAYS_INLINE T* begin() { return vector.begin(); }
-    MOZ_ALWAYS_INLINE const T* begin() const { return vector.begin(); }
-
   public:
     explicit PageProtectingVector(AllocPolicy policy = AllocPolicy())
       : vector(policy),
         elemsUntilTest(0),
         currPage(0),
         initPage(0),
         lastPage(0),
         lowerBound(InitialLowerBound),
-        poisonBytes(0),
 #ifdef DEBUG
         regionUnprotected(false),
 #endif
         usable(true),
         enabled(true),
         protectUsedEnabled(false),
-        protectUnusedEnabled(false),
-        reentrancyGuardEnabled(false),
-        reentrancyGuard(false),
-        detectPoisonEnabled(false)
+        protectUnusedEnabled(false)
     {
         if (gc::SystemPageSize() != pageSize)
             usable = false;
         protectNewBuffer();
     }
 
     ~PageProtectingVector() { unprotectOldBuffer(); }
 
@@ -421,172 +361,142 @@ class PageProtectingVector final
             if (r >= initPage && l < currPage)
                 reprotectRegionSlow(l, r);
         }
     }
 
     MOZ_ALWAYS_INLINE size_t capacity() const { return vector.capacity(); }
     MOZ_ALWAYS_INLINE size_t length() const { return vector.length(); }
 
-    MOZ_ALWAYS_INLINE T* acquire() {
-        lock();
-        return begin();
-    }
-
-    MOZ_ALWAYS_INLINE const T* acquire() const {
-        lock();
-        return begin();
-    }
-
-    MOZ_ALWAYS_INLINE void release() const {
-        unlock();
-    }
+    MOZ_ALWAYS_INLINE T* begin() { return vector.begin(); }
+    MOZ_ALWAYS_INLINE const T* begin() const { return vector.begin(); }
 
     void clear() {
-        AutoGuardAgainstReentrancy guard(*this);
         unprotectOldBuffer();
         vector.clear();
         protectNewBuffer();
     }
 
     MOZ_ALWAYS_INLINE MOZ_MUST_USE bool reserve(size_t size) {
-        AutoGuardAgainstReentrancy guard(*this);
         if (MOZ_LIKELY(size <= capacity()))
             return vector.reserve(size);
         return reserveSlow(size);
     }
 
     template<typename U>
     MOZ_ALWAYS_INLINE void infallibleAppend(const U* values, size_t size) {
-        AutoGuardAgainstReentrancy guard(*this);
-        checkForPoison(values, size);
         elemsUntilTest -= size;
         if (MOZ_LIKELY(elemsUntilTest >= 0))
             return vector.infallibleAppend(values, size);
         infallibleAppendSlow(values, size);
     }
 
     template<typename U>
     MOZ_ALWAYS_INLINE MOZ_MUST_USE bool append(const U* values, size_t size) {
-        AutoGuardAgainstReentrancy guard(*this);
-        checkForPoison(values, size);
         elemsUntilTest -= size;
         if (MOZ_LIKELY(elemsUntilTest >= 0))
             return vector.append(values, size);
         return appendSlow(values, size);
     }
 };
 
-template<typename T, size_t N, class A, bool P, bool Q, bool G, bool D, size_t I, uint8_t X>
+template<typename T, size_t A, class B, bool C, bool D, size_t E, bool F, uint8_t G>
 MOZ_NEVER_INLINE void
-PageProtectingVector<T, N, A, P, Q, G, D, I, X>::unprotectRegionSlow(uintptr_t l, uintptr_t r)
+PageProtectingVector<T, A, B, C, D, E, F, G>::unprotectRegionSlow(uintptr_t l, uintptr_t r)
 {
     if (l < initPage)
         l = initPage;
     if (r >= currPage)
         r = currPage - 1;
     T* addr = reinterpret_cast<T*>(l << pageShift);
     size_t size = (r - l + 1) << pageShift;
     gc::UnprotectPages(addr, size);
 }
 
-template<typename T, size_t N, class A, bool P, bool Q, bool G, bool D, size_t I, uint8_t X>
+template<typename T, size_t A, class B, bool C, bool D, size_t E, bool F, uint8_t G>
 MOZ_NEVER_INLINE void
-PageProtectingVector<T, N, A, P, Q, G, D, I, X>::reprotectRegionSlow(uintptr_t l, uintptr_t r)
+PageProtectingVector<T, A, B, C, D, E, F, G>::reprotectRegionSlow(uintptr_t l, uintptr_t r)
 {
     if (l < initPage)
         l = initPage;
     if (r >= currPage)
         r = currPage - 1;
     T* addr = reinterpret_cast<T*>(l << pageShift);
     size_t size = (r - l + 1) << pageShift;
     gc::MakePagesReadOnly(addr, size);
 }
 
-template<typename T, size_t N, class A, bool P, bool Q, bool G, bool D, size_t I, uint8_t X>
+template<typename T, size_t A, class B, bool C, bool D, size_t E, bool F, uint8_t G>
 MOZ_NEVER_INLINE MOZ_MUST_USE bool
-PageProtectingVector<T, N, A, P, Q, G, D, I, X>::reserveSlow(size_t size)
+PageProtectingVector<T, A, B, C, D, E, F, G>::reserveSlow(size_t size)
 {
     return reserveNewBuffer(size);
 }
 
-template<typename T, size_t N, class A, bool P, bool Q, bool G, bool D, size_t I, uint8_t X>
+template<typename T, size_t A, class B, bool C, bool D, size_t E, bool F, uint8_t G>
 template<typename U>
 MOZ_NEVER_INLINE void
-PageProtectingVector<T, N, A, P, Q, G, D, I, X>::infallibleAppendSlow(const U* values, size_t size)
+PageProtectingVector<T, A, B, C, D, E, F, G>::infallibleAppendSlow(const U* values, size_t size)
 {
     // Ensure that we're here because we reached a page
     // boundary and not because of a buffer overflow.
     MOZ_RELEASE_ASSERT(MOZ_LIKELY(length() + size <= capacity()),
                        "About to overflow our AssemblerBuffer using infallibleAppend!");
     infallibleAppendNewPage(values, size);
 }
 
-template<typename T, size_t N, class A, bool P, bool Q, bool G, bool D, size_t I, uint8_t X>
+template<typename T, size_t A, class B, bool C, bool D, size_t E, bool F, uint8_t G>
 template<typename U>
 MOZ_NEVER_INLINE MOZ_MUST_USE bool
-PageProtectingVector<T, N, A, P, Q, G, D, I, X>::appendSlow(const U* values, size_t size)
+PageProtectingVector<T, A, B, C, D, E, F, G>::appendSlow(const U* values, size_t size)
 {
     if (MOZ_LIKELY(length() + size <= capacity()))
         return appendNewPage(values, size);
     return appendNewBuffer(values, size);
 }
 
-template<typename T, size_t N, class A, bool P, bool Q, bool G, bool D, size_t I, uint8_t X>
-MOZ_NEVER_INLINE void
-PageProtectingVector<T, N, A, P, Q, G, D, I, X>::lockSlow() const
-{
-    MOZ_CRASH("Cannot access PageProtectingVector from more than one thread at a time!");
-}
-
 class ProtectedReallocPolicy
 {
-    /* We hardcode the page size here to minimize administrative overhead. */
-    static const size_t pageShift = 12;
-    static const size_t pageSize = 1 << pageShift;
-    static const size_t pageMask = pageSize - 1;
-
   public:
     template <typename T> T* maybe_pod_malloc(size_t numElems) {
         return js_pod_malloc<T>(numElems);
     }
     template <typename T> T* maybe_pod_calloc(size_t numElems) {
         return js_pod_calloc<T>(numElems);
     }
     template <typename T> T* maybe_pod_realloc(T* oldAddr, size_t oldSize, size_t newSize) {
         MOZ_ASSERT_IF(oldAddr, oldSize);
-        MOZ_ASSERT(gc::SystemPageSize() == pageSize);
         if (MOZ_UNLIKELY(!newSize))
             return nullptr;
         if (MOZ_UNLIKELY(!oldAddr))
             return js_pod_malloc<T>(newSize);
 
-        T* newAddr = nullptr;
-        size_t initPage = (uintptr_t(oldAddr - 1) >> pageShift) + 1;
-        size_t lastPage = (uintptr_t(oldAddr + oldSize) >> pageShift) - 1;
-        size_t toCopy = (newSize >= oldSize ? oldSize : newSize) * sizeof(T);
-        if (MOZ_UNLIKELY(oldSize >= 32 * 1024 && lastPage >= initPage)) {
-            T* protectAddr = reinterpret_cast<T*>(initPage << pageShift);
-            size_t protectSize = (lastPage - initPage + 1) << pageShift;
-            MemoryProtectionExceptionHandler::addRegion(protectAddr, protectSize);
-            gc::MakePagesReadOnly(protectAddr, protectSize);
-            newAddr = js_pod_malloc<T>(newSize);
-            if (MOZ_LIKELY(newAddr))
-                memcpy(newAddr, oldAddr, toCopy);
-            gc::UnprotectPages(protectAddr, protectSize);
-            MemoryProtectionExceptionHandler::removeRegion(protectAddr);
-            if (MOZ_LIKELY(newAddr))
-                js_free(oldAddr);
-        } else {
-            newAddr = js_pod_malloc<T>(newSize);
-            if (MOZ_LIKELY(newAddr)) {
-                memcpy(newAddr, oldAddr, toCopy);
-                js_free(oldAddr);
-            }
+        T* tmpAddr = js_pod_malloc<T>(newSize);
+        if (MOZ_UNLIKELY(!tmpAddr))
+            return js_pod_realloc<T>(oldAddr, oldSize, newSize);
+
+        size_t bytes = (newSize >= oldSize ? oldSize : newSize) * sizeof(T);
+        memcpy(tmpAddr, oldAddr, bytes);
+
+        T* newAddr = js_pod_realloc<T>(oldAddr, oldSize, newSize);
+        if (MOZ_UNLIKELY(!newAddr)) {
+            js_free(tmpAddr);
+            return js_pod_realloc<T>(oldAddr, oldSize, newSize);
         }
+
+        const uint8_t* newAddrBytes = reinterpret_cast<const uint8_t*>(newAddr);
+        const uint8_t* tmpAddrBytes = reinterpret_cast<const uint8_t*>(tmpAddr);
+        if (!mozilla::PodEqual(tmpAddrBytes, newAddrBytes, bytes)) {
+            if (oldAddr == newAddr)
+                MOZ_CRASH("New buffer doesn't match the old buffer (newAddr == oldAddr)!");
+            else
+                MOZ_CRASH("New buffer doesn't match the old buffer (newAddr != oldAddr)!");
+        }
+
+        js_free(tmpAddr);
         return newAddr;
     }
 
     template <typename T> T* pod_malloc(size_t numElems) { return maybe_pod_malloc<T>(numElems); }
     template <typename T> T* pod_calloc(size_t numElems) { return maybe_pod_calloc<T>(numElems); }
     template <typename T> T* pod_realloc(T* p, size_t oldSize, size_t newSize) {
         return maybe_pod_realloc<T>(p, oldSize, newSize);
     }
new file mode 100644
--- /dev/null
+++ b/js/src/jit-test/modules/export-default-async-asi.js
@@ -0,0 +1,4 @@
+function async() { return 42; } // overwritten by subsequent declaration
+
+export default async // ASI occurs here due to the [no LineTerminator here] restriction on default-exporting an async function
+function async() { return 17; }
new file mode 100644
--- /dev/null
+++ b/js/src/jit-test/modules/export-default-async-regexpy.js
@@ -0,0 +1,6 @@
+var async = 42;
+var x = 3;
+var g = 2;
+
+export default async
+/x/g;
new file mode 100644
--- /dev/null
+++ b/js/src/jit-test/tests/ion/bug1334314.js
@@ -0,0 +1,16 @@
+// |jit-test| error: TypeError
+
+var g = newGlobal();
+g.parent = this;
+g.eval("new Debugger(parent).onExceptionUnwind = function () { };");
+
+function f() {
+    [[]] = [];
+}
+try {
+    f();
+} catch (e) {};
+try {
+    f();
+} catch (e) {};
+f();
new file mode 100644
--- /dev/null
+++ b/js/src/jit-test/tests/modules/import-default-async-asi.js
@@ -0,0 +1,7 @@
+// |jit-test| module
+
+import v from "export-default-async-asi.js";
+
+assertEq(typeof v, "function");
+assertEq(v.name, "async");
+assertEq(v(), 17);
new file mode 100644
--- /dev/null
+++ b/js/src/jit-test/tests/modules/import-default-async-regexpy.js
@@ -0,0 +1,5 @@
+// |jit-test| module
+
+import v from "export-default-async-regexpy.js";
+
+assertEq(v, 7);
--- a/js/src/jit/BaselineBailouts.cpp
+++ b/js/src/jit/BaselineBailouts.cpp
@@ -482,38 +482,61 @@ GetNextNonLoopEntryPc(jsbytecode* pc)
     if (op == JSOP_GOTO)
         return pc + GET_JUMP_OFFSET(pc);
     if (op == JSOP_LOOPENTRY || op == JSOP_NOP || op == JSOP_LOOPHEAD)
         return GetNextPc(pc);
     return pc;
 }
 
 static bool
-HasLiveIteratorAtStackDepth(JSScript* script, jsbytecode* pc, uint32_t stackDepth)
+HasLiveStackValueAtDepth(JSScript* script, jsbytecode* pc, uint32_t stackDepth)
 {
     if (!script->hasTrynotes())
         return false;
 
     JSTryNote* tn = script->trynotes()->vector;
     JSTryNote* tnEnd = tn + script->trynotes()->length;
     uint32_t pcOffset = uint32_t(pc - script->main());
     for (; tn != tnEnd; ++tn) {
         if (pcOffset < tn->start)
             continue;
         if (pcOffset >= tn->start + tn->length)
             continue;
 
-        // For-in loops have only the iterator on stack.
-        if (tn->kind == JSTRY_FOR_IN && stackDepth == tn->stackDepth)
-            return true;
+        switch (tn->kind) {
+          case JSTRY_FOR_IN:
+            // For-in loops have only the iterator on stack.
+            if (stackDepth == tn->stackDepth)
+                return true;
+            break;
+
+          case JSTRY_FOR_OF:
+            // For-of loops have both the iterator and the result object on
+            // stack. The iterator is below the result object.
+            if (stackDepth == tn->stackDepth - 1)
+                return true;
+            break;
 
-        // For-of loops have both the iterator and the result object on
-        // stack. The iterator is below the result object.
-        if (tn->kind == JSTRY_FOR_OF && stackDepth == tn->stackDepth - 1)
-            return true;
+          case JSTRY_ITERCLOSE:
+            // Code that need to call IteratorClose have the iterator on the
+            // stack.
+            if (stackDepth == tn->stackDepth)
+                return true;
+            break;
+
+          case JSTRY_DESTRUCTURING_ITERCLOSE:
+            // Destructuring code that need to call IteratorClose have both
+            // the iterator and the "done" value on the stack.
+            if (stackDepth == tn->stackDepth || stackDepth == tn->stackDepth - 1)
+                return true;
+            break;
+
+          default:
+            break;
+        }
     }
 
     return false;
 }
 
 static bool
 IsPrologueBailout(const SnapshotIterator& iter, const ExceptionBailoutInfo* excInfo)
 {
@@ -938,17 +961,17 @@ InitFromBailout(JSContext* cx, HandleScr
             // the stack if we are at the newest frame.
             //
             // For instance, if calling |f()| pushed an Ion frame which threw,
             // the snapshot expects the return value to be pushed, but it's
             // possible nothing was pushed before we threw. We can't drop
             // iterators, however, so read them out. They will be closed by
             // HandleExceptionBaseline.
             MOZ_ASSERT(cx->compartment()->isDebuggee());
-            if (iter.moreFrames() || HasLiveIteratorAtStackDepth(script, pc, i + 1)) {
+            if (iter.moreFrames() || HasLiveStackValueAtDepth(script, pc, i + 1)) {
                 v = iter.read();
             } else {
                 iter.skip();
                 v = MagicValue(JS_OPTIMIZED_OUT);
             }
         } else {
             v = iter.read();
         }
--- a/js/src/jit/IonAnalysis.cpp
+++ b/js/src/jit/IonAnalysis.cpp
@@ -988,26 +988,32 @@ jit::EliminateDeadResumePointOperands(MI
     // disable the pass in this case.
     if (graph.hasTryBlock())
         return true;
 
     for (PostorderIterator block = graph.poBegin(); block != graph.poEnd(); block++) {
         if (mir->shouldCancel("Eliminate Dead Resume Point Operands (main loop)"))
             return false;
 
-        if (MResumePoint* rp = block->entryResumePoint())
+        if (MResumePoint* rp = block->entryResumePoint()) {
+            if (!graph.alloc().ensureBallast())
+                return false;
             EliminateTriviallyDeadResumePointOperands(graph, rp);
+        }
 
         // The logic below can get confused on infinite loops.
         if (block->isLoopHeader() && block->backedge() == *block)
             continue;
 
         for (MInstructionIterator ins = block->begin(); ins != block->end(); ins++) {
-            if (MResumePoint* rp = ins->resumePoint())
+            if (MResumePoint* rp = ins->resumePoint()) {
+                if (!graph.alloc().ensureBallast())
+                    return false;
                 EliminateTriviallyDeadResumePointOperands(graph, rp);
+            }
 
             // No benefit to replacing constant operands with other constants.
             if (ins->isConstant())
                 continue;
 
             // Scanning uses does not give us sufficient information to tell
             // where instructions that are involved in box/unbox operations or
             // parameter passing might be live. Rewriting uses of these terms
--- a/js/src/jit/x64/Assembler-x64.h
+++ b/js/src/jit/x64/Assembler-x64.h
@@ -357,19 +357,18 @@ class Assembler : public AssemblerX86Sha
         return CodeOffset(masm.currentOffset());
     }
     CodeOffset movWithPatch(ImmPtr imm, Register dest) {
         return movWithPatch(ImmWord(uintptr_t(imm.value)), dest);
     }
 
     // This is for patching during code generation, not after.
     void patchAddq(CodeOffset offset, int32_t n) {
-        unsigned char* code = masm.acquireData();
+        unsigned char* code = masm.data();
         X86Encoding::SetInt32(code + offset.offset(), n);
-        masm.releaseData();
     }
 
     // Load an ImmWord value into a register. Note that this instruction will
     // attempt to optimize its immediate field size. When a full 64-bit
     // immediate is needed for a relocation, use movWithPatch.
     void movq(ImmWord word, Register dest) {
         // Load a 64-bit immediate into a register. If the value falls into
         // certain ranges, we can use specialized instructions which have
--- a/js/src/jit/x86-shared/Assembler-x86-shared.cpp
+++ b/js/src/jit/x86-shared/Assembler-x86-shared.cpp
@@ -92,19 +92,18 @@ AssemblerX86Shared::trace(JSTracer* trc)
         if (rp.kind == Relocation::JITCODE) {
             JitCode* code = JitCode::FromExecutable((uint8_t*)rp.target);
             TraceManuallyBarrieredEdge(trc, &code, "masmrel32");
             MOZ_ASSERT(code == JitCode::FromExecutable((uint8_t*)rp.target));
         }
     }
     if (dataRelocations_.length()) {
         CompactBufferReader reader(dataRelocations_);
-        unsigned char* code = masm.acquireData();
+        unsigned char* code = masm.data();
         ::TraceDataRelocations(trc, code, reader);
-        masm.releaseData();
     }
 }
 
 void
 AssemblerX86Shared::executableCopy(void* buffer)
 {
     masm.executableCopy(buffer);
 
@@ -258,19 +257,18 @@ AssemblerX86Shared::InvertCondition(Doub
 
 void
 AssemblerX86Shared::verifyHeapAccessDisassembly(uint32_t begin, uint32_t end,
                                                 const Disassembler::HeapAccess& heapAccess)
 {
 #ifdef DEBUG
     if (masm.oom())
         return;
-    unsigned char* code = masm.acquireData();
+    unsigned char* code = masm.data();
     Disassembler::VerifyHeapAccess(code + begin, code + end, heapAccess);
-    masm.releaseData();
 #endif
 }
 
 CPUInfo::SSEVersion CPUInfo::maxSSEVersion = UnknownSSE;
 CPUInfo::SSEVersion CPUInfo::maxEnabledSSEVersion = UnknownSSE;
 bool CPUInfo::avxPresent = false;
 bool CPUInfo::avxEnabled = false;
 bool CPUInfo::popcntPresent = false;
--- a/js/src/jit/x86-shared/Assembler-x86-shared.h
+++ b/js/src/jit/x86-shared/Assembler-x86-shared.h
@@ -1068,37 +1068,34 @@ class AssemblerX86Shared : public Assemb
         }
     }
 
     CodeOffset callWithPatch() {
         return CodeOffset(masm.call().offset());
     }
 
     void patchCall(uint32_t callerOffset, uint32_t calleeOffset) {
-        unsigned char* code = masm.acquireData();
+        unsigned char* code = masm.data();
         X86Encoding::SetRel32(code + callerOffset, code + calleeOffset);
-        masm.releaseData();
     }
     CodeOffset farJumpWithPatch() {
         return CodeOffset(masm.jmp().offset());
     }
     void patchFarJump(CodeOffset farJump, uint32_t targetOffset) {
-        unsigned char* code = masm.acquireData();
+        unsigned char* code = masm.data();
         X86Encoding::SetRel32(code + farJump.offset(), code + targetOffset);
-        masm.releaseData();
     }
     static void repatchFarJump(uint8_t* code, uint32_t farJumpOffset, uint32_t targetOffset) {
         X86Encoding::SetRel32(code + farJumpOffset, code + targetOffset);
     }
 
     // This is for patching during code generation, not after.
     void patchAddl(CodeOffset offset, int32_t n) {
-        unsigned char* code = masm.acquireData();
+        unsigned char* code = masm.data();
         X86Encoding::SetInt32(code + offset.offset(), n);
-        masm.releaseData();
     }
 
     CodeOffset twoByteNop() {
         return CodeOffset(masm.twoByteNop().offset());
     }
     static void patchTwoByteNopToJump(uint8_t* jump, uint8_t* target) {
         X86Encoding::BaseAssembler::patchTwoByteNopToJump(jump, target);
     }
--- a/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h
+++ b/js/src/jit/x86-shared/AssemblerBuffer-x86-shared.h
@@ -121,48 +121,43 @@ namespace jit {
             return m_buffer.length();
         }
 
         bool oom() const
         {
             return m_oom;
         }
 
-#ifndef RELEASE_OR_BETA
-        const unsigned char* acquireBuffer() const
+        const unsigned char* buffer() const
         {
             MOZ_RELEASE_ASSERT(!m_oom);
-            return m_buffer.acquire();
+            return m_buffer.begin();
         }
-        void releaseBuffer() const { m_buffer.release(); }
-        unsigned char* acquireData() { return m_buffer.acquire(); }
-        void releaseData() const { m_buffer.release(); }
+
+        unsigned char* data()
+        {
+            return m_buffer.begin();
+        }
+
+#ifndef RELEASE_OR_BETA
         void disableProtection() { m_buffer.disableProtection(); }
         void enableProtection() { m_buffer.enableProtection(); }
         void setLowerBoundForProtection(size_t size)
         {
             m_buffer.setLowerBoundForProtection(size);
         }
         void unprotectRegion(unsigned char* first, size_t size)
         {
             m_buffer.unprotectRegion(first, size);
         }
         void reprotectRegion(unsigned char* first, size_t size)
         {
             m_buffer.reprotectRegion(first, size);
         }
 #else
-        const unsigned char* acquireBuffer() const
-        {
-            MOZ_RELEASE_ASSERT(!m_oom);
-            return m_buffer.begin();
-        }
-        void releaseBuffer() const {}
-        unsigned char* acquireData() { return m_buffer.begin(); }
-        void releaseData() const {}
         void disableProtection() {}
         void enableProtection() {}
         void setLowerBoundForProtection(size_t) {}
         void unprotectRegion(unsigned char*, size_t) {}
         void reprotectRegion(unsigned char*, size_t) {}
 #endif
 
     protected:
@@ -175,43 +170,41 @@ namespace jit {
          *
          * Our strategy for handling an OOM is to set m_oom, and then clear (but
          * not free) m_buffer, preserving the current buffer. This way, the user
          * can continue assembling into the buffer, deferring OOM checking
          * until the user wants to read code out of the buffer.
          *
          * See also the |buffer| method.
          */
-        void oomDetected() {
+        void oomDetected()
+        {
             m_oom = true;
             m_buffer.clear();
         }
 
 #ifndef RELEASE_OR_BETA
         PageProtectingVector<unsigned char, 256, ProtectedReallocPolicy,
-                             /* ProtectUsed = */ false, /* ProtectUnused = */ false,
-                             /* GuardAgainstReentrancy = */ true, /* DetectPoison = */ true,
-                             /* InitialLowerBound = */ 32 * 1024> m_buffer;
+                             /* ProtectUsed = */ false, /* ProtectUnused = */ false> m_buffer;
 #else
         mozilla::Vector<unsigned char, 256, SystemAllocPolicy> m_buffer;
 #endif
         bool m_oom;
     };
 
     class GenericAssembler
     {
         Sprinter* printer;
 
       public:
 
-        GenericAssembler()
-          : printer(NULL)
-        {}
+        GenericAssembler() : printer(nullptr) {}
 
-        void setPrinter(Sprinter* sp) {
+        void setPrinter(Sprinter* sp)
+        {
             printer = sp;
         }
 
         void spew(const char* fmt, ...) MOZ_FORMAT_PRINTF(2, 3)
         {
             if (MOZ_UNLIKELY(printer || JitSpewEnabled(JitSpew_Codegen))) {
                 va_list va;
                 va_start(va, fmt);
--- a/js/src/jit/x86-shared/BaseAssembler-x86-shared.h
+++ b/js/src/jit/x86-shared/BaseAssembler-x86-shared.h
@@ -49,20 +49,18 @@ class BaseAssembler : public GenericAsse
 public:
     BaseAssembler()
       : useVEX_(true)
     { }
 
     void disableVEX() { useVEX_ = false; }
 
     size_t size() const { return m_formatter.size(); }
-    const unsigned char* acquireBuffer() const { return m_formatter.acquireBuffer(); }
-    void releaseBuffer() const { m_formatter.releaseBuffer(); }
-    unsigned char* acquireData() { return m_formatter.acquireData(); }
-    void releaseData() const { m_formatter.releaseData(); }
+    const unsigned char* buffer() const { return m_formatter.buffer(); }
+    unsigned char* data() { return m_formatter.data(); }
     bool oom() const { return m_formatter.oom(); }
 
     void disableProtection() { m_formatter.disableProtection(); }
     void enableProtection() { m_formatter.enableProtection(); }
     void setLowerBoundForProtection(size_t size)
     {
         m_formatter.setLowerBoundForProtection(size);
     }
@@ -3809,19 +3807,18 @@ threeByteOpImmSimd("vblendps", VEX_PD, O
     {
         // Sanity check - if the assembler has OOM'd, it will start overwriting
         // its internal buffer and thus our links could be garbage.
         if (oom())
             return false;
 
         assertValidJmpSrc(from);
 
-        const unsigned char* code = m_formatter.acquireData();
+        const unsigned char* code = m_formatter.data();
         int32_t offset = GetInt32(code + from.offset());
-        m_formatter.releaseData();
         if (offset == -1)
             return false;
 
         if (MOZ_UNLIKELY(size_t(offset) >= size())) {
 #ifdef NIGHTLY_BUILD
             // Stash some data on the stack so we can retrieve it from minidumps,
             // see bug 1124397.
             int32_t startOffset = from.offset() - 1;
@@ -3854,51 +3851,47 @@ threeByteOpImmSimd("vblendps", VEX_PD, O
         // Sanity check - if the assembler has OOM'd, it will start overwriting
         // its internal buffer and thus our links could be garbage.
         if (oom())
             return;
 
         assertValidJmpSrc(from);
         MOZ_RELEASE_ASSERT(to.offset() == -1 || size_t(to.offset()) <= size());
 
-        unsigned char* code = m_formatter.acquireData();
+        unsigned char* code = m_formatter.data();
         SetInt32(code + from.offset(), to.offset());
-        m_formatter.releaseData();
     }
 
     void linkJump(JmpSrc from, JmpDst to)
     {
         MOZ_ASSERT(from.offset() != -1);
         MOZ_ASSERT(to.offset() != -1);
 
         // Sanity check - if the assembler has OOM'd, it will start overwriting
         // its internal buffer and thus our links could be garbage.
         if (oom())
             return;
 
         assertValidJmpSrc(from);
         MOZ_RELEASE_ASSERT(size_t(to.offset()) <= size());
 
         spew(".set .Lfrom%d, .Llabel%d", from.offset(), to.offset());
-        unsigned char* code = m_formatter.acquireData();
+        unsigned char* code = m_formatter.data();
         SetRel32(code + from.offset(), code + to.offset());
-        m_formatter.releaseData();
     }
 
     void executableCopy(void* dst)
     {
-        const unsigned char* src = m_formatter.acquireBuffer();
+        const unsigned char* src = m_formatter.buffer();
         memcpy(dst, src, size());
-        m_formatter.releaseBuffer();
     }
     MOZ_MUST_USE bool appendBuffer(const BaseAssembler& other)
     {
-        const unsigned char* buf = other.m_formatter.acquireBuffer();
+        const unsigned char* buf = other.m_formatter.buffer();
         bool ret = m_formatter.append(buf, other.size());
-        other.m_formatter.releaseBuffer();
         return ret;
     }
 
   protected:
     static bool CAN_SIGN_EXTEND_8_32(int32_t value) { return value == (int32_t)(int8_t)value; }
     static bool CAN_SIGN_EXTEND_16_32(int32_t value) { return value == (int32_t)(int16_t)value; }
     static bool CAN_ZERO_EXTEND_8_32(int32_t value) { return value == (int32_t)(uint8_t)value; }
     static bool CAN_ZERO_EXTEND_8H_32(int32_t value) { return value == (value & 0xff00); }
@@ -5153,20 +5146,18 @@ threeByteOpImmSimd("vblendps", VEX_PD, O
         {
             m_buffer.ensureSpace(sizeof(int32_t));
             m_buffer.putIntUnchecked(i);
         }
 
         // Administrative methods:
 
         size_t size() const { return m_buffer.size(); }
-        const unsigned char* acquireBuffer() const { return m_buffer.acquireBuffer(); }
-        void releaseBuffer() const { m_buffer.releaseBuffer(); }
-        unsigned char* acquireData() { return m_buffer.acquireData(); }
-        void releaseData() const { m_buffer.releaseData(); }
+        const unsigned char* buffer() const { return m_buffer.buffer(); }
+        unsigned char* data() { return m_buffer.data(); }
         bool oom() const { return m_buffer.oom(); }
         bool isAligned(int alignment) const { return m_buffer.isAligned(alignment); }
 
         void disableProtection() { m_buffer.disableProtection(); }
         void enableProtection() { m_buffer.enableProtection(); }
         void setLowerBoundForProtection(size_t size)
         {
             m_buffer.setLowerBoundForProtection(size);
--- a/js/src/jsgc.cpp
+++ b/js/src/jsgc.cpp
@@ -7667,8 +7667,33 @@ js::gc::Cell::dump(FILE* fp) const
 
 // For use in a debugger.
 void
 js::gc::Cell::dump() const
 {
     dump(stderr);
 }
 #endif
+
+JS_PUBLIC_API(bool)
+js::gc::detail::CellIsMarkedGrayIfKnown(const Cell* cell)
+{
+    MOZ_ASSERT(cell);
+    if (!cell->isTenured())
+        return false;
+
+    // We ignore the gray marking state of cells and return false in two cases:
+    //
+    // 1) When OOM has caused us to clear the gcGrayBitsValid_ flag.
+    //
+    // 2) When we are in an incremental GC and examine a cell that is in a zone
+    // that is not being collected. Gray targets of CCWs that are marked black
+    // by a barrier will eventually be marked black in the next GC slice.
+    auto tc = &cell->asTenured();
+    auto rt = tc->runtimeFromMainThread();
+    if (!rt->areGCGrayBitsValid() ||
+        (rt->gc.isIncrementalGCInProgress() && !tc->zone()->wasGCStarted()))
+    {
+        return false;
+    }
+
+    return detail::CellIsMarkedGray(tc);
+}
--- a/layout/reftests/border-radius/reftest.list
+++ b/layout/reftests/border-radius/reftest.list
@@ -62,18 +62,18 @@ fuzzy-if(true,1,33) fuzzy-if(d2d,48,350)
 
 # Inheritance
 == inherit-1.html inherit-1-ref.html # border-radius shouldn't inherit
 
 # Table elements
 == table-collapse-1.html table-collapse-1-ref.html # border-radius is ignored on internal table elements
 # when border-collapse: collapse
 
-fuzzy-if(azureQuartz,1,3) fuzzy-if(skiaContent,1,116) == invalidate-1a.html invalidate-1-ref.html
-fuzzy-if(azureQuartz,1,3) fuzzy-if(skiaContent,1,117) == invalidate-1b.html invalidate-1-ref.html
+fuzzy-if(skiaContent,1,116) == invalidate-1a.html invalidate-1-ref.html
+fuzzy-if(skiaContent,1,117) == invalidate-1b.html invalidate-1-ref.html
 
 # test that border-radius is reduced for scrollbars
 fails-if(Android) fuzzy-if(asyncPan&&!layersGPUAccelerated,12,12) fuzzy-if(browserIsRemote&&layersGPUAccelerated&&/^Windows\x20NT\x206\.1/.test(http.oscpu),12,12) fuzzy-if(skiaContent&&!Android,1,50) fuzzy-if(gtkWidget&&layersGPUAccelerated,12,12) == scrollbar-clamping-1.html scrollbar-clamping-1-ref.html
 fails-if(Android) == scrollbar-clamping-2.html scrollbar-clamping-2-ref.html
 
 # Test for bad corner joins.
 fuzzy-if(true,1,1) == corner-joins-1.xhtml corner-joins-1-ref.xhtml
 fuzzy(255,20) random-if(winWidget) fuzzy-if(skiaContent,255,610) HTTP(..) == corner-joins-2.xhtml corner-joins-2-ref.xhtml
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -1743,18 +1743,18 @@ fuzzy-if(true,17,5886) == 759036-2.html 
 == 776265-2b.html 776265-2-ref.html
 == 776265-2c.html 776265-2-ref.html
 == 776265-2d.html 776265-2-ref.html
 == 776443-1.html 776443-1-ref.html
 == 776443-2.html 776443-2-ref.html
 == 786254-1.html 786254-1-ref.html
 == 787947-1.html 787947-1-ref.html
 == 796847-1.svg 796847-1-ref.svg
-fuzzy(40,875) fuzzy-if(azureQuartz,73,542) fuzzy-if(skiaContent,1,2500) == 797797-1.html 797797-1-ref.html # 'opacity:N' and rgba(,,,N) text don't match precisely
-fuzzy(40,850) fuzzy-if(azureQuartz,68,586) fuzzy-if(skiaContent,2,2310) == 797797-2.html 797797-2-ref.html # 'opacity:N' and rgba(,,,N) text don't match precisely
+fuzzy(40,875) fuzzy-if(skiaContent,1,2500) == 797797-1.html 797797-1-ref.html # 'opacity:N' and rgba(,,,N) text don't match precisely
+fuzzy(40,850) fuzzy-if(skiaContent,2,2310) == 797797-2.html 797797-2-ref.html # 'opacity:N' and rgba(,,,N) text don't match precisely
 == 801994-1.html 801994-1-ref.html
 == 804323-1.html 804323-1-ref.html
 fuzzy-if(Android,8,608) == 811301-1.html 811301-1-ref.html
 == 812824-1.html 812824-1-ref.html
 == 814677.html 814677-ref.html
 == 814952-1.html 814952-1-ref.html
 fuzzy-if(Android,4,400) == 815593-1.html 815593-1-ref.html
 == 816359-1.html 816359-1-ref.html
--- a/layout/reftests/canvas/reftest.list
+++ b/layout/reftests/canvas/reftest.list
@@ -58,20 +58,20 @@ random-if(!d2d) != text-subpixel-1.html 
 ## Currently fails most places due to partial backout of bug 808288, see bug 837461.
 ## (Marking "random" rather than "fails" because it would pass for people
 ## if they have an Emoji font installed when running the tests.)
 random != text-emoji.html text-emoji-notref.html
 
 # azure quartz uses CGDrawLinearGradient instead of DrawShading
 # so we have less control over degenerate behaviour as tested by this
 # test
-fails-if((azureSkia&&!azureSkiaGL)||azureQuartz||(azureSkiaGL&&Android)) == linear-gradient-1a.html linear-gradient-1-ref.html
+fails-if((azureSkia&&!azureSkiaGL)||(azureSkiaGL&&Android)) == linear-gradient-1a.html linear-gradient-1-ref.html
 
 # this passes with cairo on 10.7 and 10.8 but not with azure for reasons unknown
-fails-if((azureSkia&&!azureSkiaGL)||azureQuartz||(azureSkiaGL&&Android)) == linear-gradient-1b.html linear-gradient-1-ref.html
+fails-if((azureSkia&&!azureSkiaGL)||(azureSkiaGL&&Android)) == linear-gradient-1b.html linear-gradient-1-ref.html
 
 == zero-dimensions.html zero-dimensions-ref.html
 
 != evenodd-fill-1.html nonzero-fill-1.html
 == evenodd-fill-1.html evenodd-fill-ref.html
 
 == dash-sanity.html data:text/html,<body>Pass
 fuzzy-if(azureSkia||skiaContent,9,470) random-if(Android) == dash-1.html dash-1-ref.svg  # Bug 668412 (really is android-specific, not IPC-specific)
@@ -89,17 +89,17 @@ fuzzy-if(azureSkia||skiaContent,9,470) r
 
 == transformed-clip.html transformed-clip-ref.html
 fuzzy-if(azureSkia,1,15) fuzzy-if(skiaContent,1,20) == transformed-gradient.html transformed-gradient-ref.html
 == transformed-path.html transformed-path.html
 
 == 749467-1.html 749467-1-ref.html
 
 # You get a little bit of rounding fuzz on OSX from transforming the paths between user space and device space
-fuzzy-if(azureQuartz,2,128) fuzzy-if(d2d,12,21) fuzzy-if(skiaContent,12,7) fuzzy-if(d2d&&/^Windows\x20NT\x2010\.0/.test(http.oscpu),2,141) == 784573-1.html 784573-1-ref.html
+fuzzy-if(d2d,12,21) fuzzy-if(skiaContent,12,7) fuzzy-if(d2d&&/^Windows\x20NT\x2010\.0/.test(http.oscpu),2,141) == 784573-1.html 784573-1-ref.html
 
 == 802658-1.html 802658-1-ref.html
 == 1074733-1.html 1074733-1-ref.html
 == 1107096-invisibles.html 1107096-invisibles-ref.html
 == 1151821-1.html 1151821-1-ref.html
 == 1201272-1.html 1201272-1-ref.html
 == 1224976-1.html 1224976-1-ref.html
 == 1238795-1.html 1238795-1-ref.html
--- a/layout/reftests/css-blending/reftest.list
+++ b/layout/reftests/css-blending/reftest.list
@@ -2,45 +2,45 @@ pref(layout.css.mix-blend-mode.enabled,t
 pref(layout.css.mix-blend-mode.enabled,true) == blend-constant-background-color.html blend-constant-background-color-ref.html
 pref(layout.css.mix-blend-mode.enabled,true) == blend-gradient-background-color.html blend-gradient-background-color-ref.html
 pref(layout.css.mix-blend-mode.enabled,true) == blend-image.html blend-image-ref.html
 pref(layout.css.mix-blend-mode.enabled,true) == blend-difference-stacking.html blend-difference-stacking-ref.html
 
 fuzzy-if(skiaContent,1,30000) pref(layout.css.background-blend-mode.enabled,true) == background-blending-alpha.html background-blending-alpha-ref.html
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-gradient-color.html background-blending-gradient-color-ref.html
 fuzzy-if(azureSkiaGL,3,7597) fuzzy-if(cocoaWidget,3,7597) fuzzy-if(d2d,1,3800) fuzzy-if(d3d11,1,4200) fuzzy-if(skiaContent,2,9450) pref(layout.css.background-blend-mode.enabled,true) == background-blending-gradient-gradient.html background-blending-gradient-gradient-ref.html
-fuzzy-if(azureSkiaGL,2,7174) fuzzy-if(azureQuartz,2,7174) pref(layout.css.background-blend-mode.enabled,true) == background-blending-gradient-image.html background-blending-gradient-color-ref.html
-fuzzy-if(azureQuartz,2,10000) fuzzy-if(azureSkia||d2d||gtkWidget,1,10000) pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-jpg.html background-blending-image-color-ref.html
+fuzzy-if(azureSkiaGL,2,7174) pref(layout.css.background-blend-mode.enabled,true) == background-blending-gradient-image.html background-blending-gradient-color-ref.html
+fuzzy-if(azureSkia||d2d||gtkWidget,1,10000) pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-jpg.html background-blending-image-color-ref.html
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-png.html background-blending-image-color-ref.html
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-svg.html background-blending-image-color-ref.html
-fuzzy-if(azureSkiaGL,2,7174) fuzzy-if(azureQuartz,2,7174) pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-gradient.html background-blending-gradient-color-ref.html
+fuzzy-if(azureSkiaGL,2,7174) pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-gradient.html background-blending-gradient-color-ref.html
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-image.html background-blending-image-color-ref.html
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-isolation.html background-blending-isolation-ref.html
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-list-repeat.html background-blending-list-repeat-ref.html
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-multiple-images.html background-blending-multiple-images-ref.html
 
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-color-burn.html background-blending-color-burn-ref.svg
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-color-dodge.html background-blending-color-dodge-ref.svg
 # need to investigate why these tests are fuzzy - first suspect is a possible color space conversion on some platforms; same for mix-blend-mode tests
-fuzzy-if(azureQuartz,2,8000) fuzzy-if(azureSkia||gtkWidget,2,9600) fuzzy-if(d2d,1,8000) pref(layout.css.background-blend-mode.enabled,true) == background-blending-color.html background-blending-color-ref.svg
+fuzzy-if(azureSkia||gtkWidget,2,9600) fuzzy-if(d2d,1,8000) pref(layout.css.background-blend-mode.enabled,true) == background-blending-color.html background-blending-color-ref.svg
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-darken.html background-blending-darken-ref.svg
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-difference.html background-blending-difference-ref.svg
 fuzzy-if(skiaContent,1,1600) pref(layout.css.background-blend-mode.enabled,true) == background-blending-exclusion.html background-blending-exclusion-ref.svg
 fuzzy-if(cocoaWidget||d2d,1,1600) pref(layout.css.background-blend-mode.enabled,true) == background-blending-hard-light.html background-blending-hard-light-ref.svg
-fuzzy-if(azureQuartz,2,8000) fuzzy-if(d2d,1,9600) fuzzy-if(azureSkia||gtkWidget,2,9600) pref(layout.css.background-blend-mode.enabled,true) == background-blending-hue.html background-blending-hue-ref.svg
+fuzzy-if(d2d,1,9600) fuzzy-if(azureSkia||gtkWidget,2,9600) pref(layout.css.background-blend-mode.enabled,true) == background-blending-hue.html background-blending-hue-ref.svg
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-lighten.html background-blending-lighten-ref.svg
-fuzzy-if(azureQuartz,2,8000) fuzzy-if(d2d,1,8000) fuzzy-if(azureSkia||gtkWidget,2,9600) pref(layout.css.background-blend-mode.enabled,true) == background-blending-luminosity.html background-blending-luminosity-ref.svg
+fuzzy-if(d2d,1,8000) fuzzy-if(azureSkia||gtkWidget,2,9600) pref(layout.css.background-blend-mode.enabled,true) == background-blending-luminosity.html background-blending-luminosity-ref.svg
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-multiply.html background-blending-multiply-ref.svg
 pref(layout.css.background-blend-mode.enabled,true) == background-blending-normal.html background-blending-normal-ref.svg
 fuzzy-if(azureSkia||gtkWidget,1,1600) pref(layout.css.background-blend-mode.enabled,true) == background-blending-overlay.html background-blending-overlay-ref.svg
 fuzzy-if(d2d,1,1600) fuzzy-if(azureSkia||gtkWidget,2,12800) pref(layout.css.background-blend-mode.enabled,true) == background-blending-saturation.html background-blending-saturation-ref.svg
 fuzzy-if(d2d||azureSkia||gtkWidget,1,1600) pref(layout.css.background-blend-mode.enabled,true) == background-blending-screen.html background-blending-screen-ref.svg
-fuzzy-if(azureQuartz,1,1600) fuzzy-if(d2d||azureSkia||gtkWidget,10,4800) pref(layout.css.background-blend-mode.enabled,true) == background-blending-soft-light.html background-blending-soft-light-ref.svg
+fuzzy-if(d2d||azureSkia||gtkWidget,10,4800) pref(layout.css.background-blend-mode.enabled,true) == background-blending-soft-light.html background-blending-soft-light-ref.svg
 
-fuzzy-if(azureQuartz,2,40000) fuzzy-if(azureSkia||d2d||gtkWidget,1,40000) pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-959674.html background-blending-image-color-959674-ref.html
+fuzzy-if(azureSkia||d2d||gtkWidget,1,40000) pref(layout.css.background-blend-mode.enabled,true) == background-blending-image-color-959674.html background-blending-image-color-959674-ref.html
 
 #fuzzy due to inconsistencies in rounded rect cliping between parent and child; may be related to antialiasing. Between platforms, the max difference is the same, and the number of different pixels is either 36 or 37. (Win, Mac and Lin)
 fuzzy(64,53) pref(layout.css.mix-blend-mode.enabled,true) == mix-blend-mode-952051.html mix-blend-mode-952051-ref.html
 
 fuzzy-if(d3d11,49,200) pref(layout.css.mix-blend-mode.enabled,true) pref(layout.css.filters.enabled,true) == mix-blend-mode-and-filter.html mix-blend-mode-and-filter-ref.html
 fuzzy-if(d3d11,1,3) pref(layout.css.mix-blend-mode.enabled,true) pref(layout.css.filters.enabled,true) == mix-blend-mode-and-filter.svg mix-blend-mode-and-filter-ref.svg
 
 fuzzy(2,14400) pref(layout.css.mix-blend-mode.enabled,true) == mix-blend-mode-child-of-blended-has-opacity.html mix-blend-mode-child-of-blended-has-opacity-ref.html
--- a/layout/reftests/css-gradients/reftest.list
+++ b/layout/reftests/css-gradients/reftest.list
@@ -1,14 +1,14 @@
-fuzzy-if(!contentSameGfxBackendAsCanvas,4,88500) fuzzy-if(azureSkiaGL||skiaContent,4,89700) fuzzy-if(azureQuartz,1,34792) == linear-1a.html linear-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,4,88500) fuzzy-if(azureSkiaGL||skiaContent,4,89700) fuzzy-if(azureQuartz,1,34792) == linear-1b.html linear-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,2,89997) fuzzy-if(azureQuartz,1,11469) fuzzy-if(skiaContent,1,16000) == linear-keywords-1a.html linear-keywords-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,2,89997) fuzzy-if(azureQuartz,1,11985) fuzzy-if(skiaContent,1,16000) == linear-keywords-1b.html linear-keywords-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureQuartz,1,10230) fuzzy-if(skiaContent,1,18000) == linear-percent.html linear-percent-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,4,92400) fuzzy-if(azureSkiaGL||skiaContent,3,143400) fuzzy-if(azureQuartz,1,27827) fuzzy-if(Android,4,93000) == linear-mix.html linear-mix-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,4,88500) fuzzy-if(azureSkiaGL||skiaContent,4,89700) == linear-1a.html linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,4,88500) fuzzy-if(azureSkiaGL||skiaContent,4,89700) == linear-1b.html linear-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,2,89997) fuzzy-if(skiaContent,1,16000) == linear-keywords-1a.html linear-keywords-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(azureSkiaGL,2,89997) fuzzy-if(skiaContent,1,16000) == linear-keywords-1b.html linear-keywords-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,88500) fuzzy-if(skiaContent,1,18000) == linear-percent.html linear-percent-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,4,92400) fuzzy-if(azureSkiaGL||skiaContent,3,143400) fuzzy-if(Android,4,93000) == linear-mix.html linear-mix-ref.html
 == linear-diagonal-1a.html linear-diagonal-1-ref.html
 == linear-diagonal-1b.html linear-diagonal-1-ref.html
 == linear-diagonal-1c.html linear-diagonal-1-ref.html
 == linear-diagonal-2a.html linear-diagonal-2-ref.html
 == linear-diagonal-2b.html linear-diagonal-2-ref.html
 == linear-diagonal-2c.html linear-diagonal-2-ref.html
 == linear-diagonal-3a.html linear-diagonal-3-ref.html
 == linear-diagonal-3b.html linear-diagonal-3-ref.html
@@ -40,21 +40,21 @@ fails-if(d2d) == linear-repeat-1g.html l
 fuzzy-if(skiaContent,1,500) == linear-rotated-1.html linear-rotated-1-ref.html
 fuzzy-if(winWidget,1,36000) fuzzy-if(skiaContent,1,45000) == linear-size-1a.html linear-size-1-ref.html
 == linear-stops-1a.html linear-stops-1-ref.html
 == linear-stops-1b.html linear-stops-1-ref.html
 == linear-stops-1c.html linear-stops-1-ref.html
 == linear-stops-1d.html linear-stops-1-ref.html
 == linear-stops-1e.html linear-stops-1-ref.html
 == linear-stops-1f.html linear-stops-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) fuzzy-if(azureQuartz,1,22367) == linear-vertical-1a.html linear-vertical-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) fuzzy-if(azureQuartz,1,22367) == linear-vertical-1b.html linear-vertical-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) fuzzy-if(azureQuartz,2,26777) == linear-vertical-1c.html linear-vertical-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) fuzzy-if(azureQuartz,2,26777) == linear-vertical-1d.html linear-vertical-1-ref.html
-fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) fuzzy-if(azureQuartz,1,22367) == linear-vertical-1e.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) == linear-vertical-1a.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) == linear-vertical-1b.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) == linear-vertical-1c.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) == linear-vertical-1d.html linear-vertical-1-ref.html
+fuzzy-if(!contentSameGfxBackendAsCanvas,3,88500) fuzzy-if(azureSkiaGL||skiaContent,3,89700) == linear-vertical-1e.html linear-vertical-1-ref.html
 == linear-vertical-subpixel-1.html linear-vertical-subpixel-1-ref.html
 == linear-viewport.html linear-viewport-ref.html
 fails-if(OSX==1010&&!skiaContent) fuzzy-if(Android,4,248) == linear-zero-length-1a.html linear-zero-length-1-ref.html
 fails-if(OSX==1010&&!skiaContent) fuzzy-if(Android,4,248) == linear-zero-length-1b.html linear-zero-length-1-ref.html
 fails-if(OSX==1010&&!skiaContent) fuzzy-if(Android,4,248) == linear-zero-length-1c.html linear-zero-length-1-ref.html
 == nostops.html about:blank
 == onestop.html about:blank
 fuzzy-if(!contentSameGfxBackendAsCanvas,1,5884) fuzzy-if(cocoaWidget,9,87824) fuzzy-if(azureSkiaGL,6,88024) random-if(d2d) fuzzy-if(skiaContent,4,6000) == radial-1a.html radial-1-ref.html
@@ -65,17 +65,17 @@ fuzzy(3,7860) fuzzy-if(cocoaWidget,5,890
 fuzzy(3,7860) fuzzy-if(cocoaWidget,5,89041) fuzzy-if(azureSkiaGL,4,90000) == radial-2c.html radial-2-ref.html
 fuzzy(3,7860) fuzzy-if(cocoaWidget,5,89041) fuzzy-if(azureSkiaGL,4,90000) == radial-2d.html radial-2-ref.html
 fuzzy(3,7860) fuzzy-if(cocoaWidget,5,89041) fuzzy-if(azureSkiaGL,4,90000) == radial-2e.html radial-2-ref.html
 fuzzy(3,7860) fuzzy-if(cocoaWidget,5,89041) fuzzy-if(azureSkiaGL,4,90000) == radial-2f.html radial-2-ref.html
 == radial-position-1a.html radial-position-1-ref.html
 fuzzy-if(cocoaWidget,1,28) fuzzy-if(winWidget,1,18) fuzzy-if(skiaContent,1,50) == radial-position-1b.html radial-position-1-ref.html
 fuzzy-if(cocoaWidget,4,22317) fuzzy-if(Android,8,771) == radial-shape-closest-corner-1a.html radial-shape-closest-corner-1-ref.html
 fuzzy(1,238) fuzzy-if(cocoaWidget,4,22608) fuzzy-if((/^Windows\x20NT\x2010\.0/.test(http.oscpu)||/^Windows\x20NT\x206\./.test(http.oscpu))&&d2d,1,336) fuzzy-if(Android,8,787) fuzzy-if(skiaContent,2,300) == radial-shape-closest-corner-1b.html radial-shape-closest-corner-1-ref.html
-fuzzy-if(azureQuartz,2,41171) fuzzy-if(Android,8,771) == radial-shape-closest-corner-1c.html radial-shape-closest-corner-1-ref.html
+fuzzy-if(Android,8,771) == radial-shape-closest-corner-1c.html radial-shape-closest-corner-1-ref.html
 fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)||/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) fuzzy-if(Android,17,3880) == radial-shape-closest-side-1a.html radial-shape-closest-side-1-ref.html
 fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)||/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) fuzzy-if(Android,17,3880) == radial-shape-closest-side-1b.html radial-shape-closest-side-1-ref.html
 fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)||/^Windows\x20NT\x206\.2/.test(http.oscpu),1,5) fuzzy-if(Android,17,3880) == radial-shape-closest-side-1c.html radial-shape-closest-side-1-ref.html
 fuzzy-if(Android,8,771) == radial-shape-farthest-corner-1a.html radial-shape-farthest-corner-1-ref.html
 fails-if(gtkWidget&&/x86_64-/.test(xulRuntime.XPCOMABI)) fuzzy(1,1569) fuzzy-if(cocoaWidget,2,41281) fuzzy-if(Android,8,1091) fuzzy-if(skiaContent,2,500) == radial-shape-farthest-corner-1b.html radial-shape-farthest-corner-1-ref.html
 fuzzy-if(Android,8,771) == radial-shape-farthest-corner-1c.html radial-shape-farthest-corner-1-ref.html
 fuzzy-if(Android,17,13320) == radial-shape-farthest-side-1a.html radial-shape-farthest-side-1-ref.html
 fuzzy-if(Android,17,13320) == radial-shape-farthest-side-1b.html radial-shape-farthest-side-1-ref.html
@@ -120,22 +120,22 @@ fuzzy-if(!contentSameGfxBackendAsCanvas,
 fuzzy-if(!contentSameGfxBackendAsCanvas,3,20000) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-1d.html aja-linear-1-ref.html 
 fuzzy-if(!contentSameGfxBackendAsCanvas,3,20000) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-1e.html aja-linear-1-ref.html 
 fuzzy-if(!contentSameGfxBackendAsCanvas,3,20000) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-1f.html aja-linear-1-ref.html 
 fuzzy-if(!contentSameGfxBackendAsCanvas,3,20000) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-1g.html aja-linear-1-ref.html 
 fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-2a.html aja-linear-2-ref.html 
 fuzzy-if(!contentSameGfxBackendAsCanvas,2,20000) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-2b.html aja-linear-2-ref.html 
 fails == aja-linear-2c.html aja-linear-2-ref.html # bug 522607
 fails-if(!d2d&&!(skiaContent&&winWidget)) fuzzy-if(skiaContent&&!winWidget,1,200) == aja-linear-2d.html aja-linear-2-ref.html # bug 526694
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,19999) fuzzy-if(azureSkiaGL||skiaContent,8,20000) fuzzy-if(azureQuartz,1,10553) == aja-linear-3a.html aja-linear-3-ref.html 
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,19999) fuzzy-if(azureSkiaGL||skiaContent,8,20000) fuzzy-if(azureQuartz,1,10553) == aja-linear-3b.html aja-linear-3-ref.html 
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,19999) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-3a.html aja-linear-3-ref.html 
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,19999) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-3b.html aja-linear-3-ref.html 
 fuzzy-if(!contentSameGfxBackendAsCanvas,4,20000) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-4a.html aja-linear-4-ref.html 
 fuzzy-if(!contentSameGfxBackendAsCanvas,4,20000) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-4b.html aja-linear-4-ref.html 
 fuzzy-if(!contentSameGfxBackendAsCanvas,4,20000) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-5a.html aja-linear-5-ref.html 
-fuzzy-if(!contentSameGfxBackendAsCanvas,2,16500) fuzzy-if(azureSkiaGL||skiaContent,8,20000) fuzzy-if(azureQuartz,2,10163) == aja-linear-6a.html aja-linear-6-ref.html # bug 526708 
+fuzzy-if(!contentSameGfxBackendAsCanvas,2,16500) fuzzy-if(azureSkiaGL||skiaContent,8,20000) == aja-linear-6a.html aja-linear-6-ref.html # bug 526708 
 fails == aja-linear-6b.html aja-linear-6-ref.html # bug 522607
 fuzzy-if(Android,6,10576) == height-dependence-1.html height-dependence-1-ref.html
 fuzzy-if(cocoaWidget,1,40000) fuzzy-if(Android,6,10576) == height-dependence-2.html height-dependence-2-ref.html
 fuzzy-if(Android,6,10576) == height-dependence-3.html height-dependence-3-ref.html
 
 == linear-onestopposition-1.html linear-onestopposition-1-ref.html
 fuzzy-if(d2d,47,400) == linear-onestopposition-1.html linear-onestopposition-1-ref2.html # d2d interpolates the hard stop
 == radial-onestopposition-1a.html radial-onestopposition-1-ref.html
--- a/layout/reftests/svg/reftest.list
+++ b/layout/reftests/svg/reftest.list
@@ -27,17 +27,17 @@ include svg-integration/reftest.list
 
 == baseline-middle-01.svg pass.svg
 == border-radius-01.html pass.svg
 == cssComment-in-attribute-01.svg cssComment-in-attribute-01-ref.svg
 == clip-01.svg pass.svg
 == clip-02a.svg clip-02-ref.svg
 == clip-02b.svg clip-02-ref.svg
 == clipPath-advanced-01.svg pass.svg
-fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)||/^Windows\x20NT\x206\.[12]/.test(http.oscpu),1,5) fuzzy-if(azureQuartz,1,6) fuzzy-if(OSX,1,6) fuzzy-if(skiaContent,1,630) == clipPath-and-shape-rendering-01.svg clipPath-and-shape-rendering-01-ref.svg # bug 614840
+fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu)||/^Windows\x20NT\x206\.[12]/.test(http.oscpu),1,5) fuzzy-if(OSX,1,6) fuzzy-if(skiaContent,1,630) == clipPath-and-shape-rendering-01.svg clipPath-and-shape-rendering-01-ref.svg # bug 614840
 == clipPath-and-transform-01.svg pass.svg
 == clipPath-basic-01.svg pass.svg
 == clipPath-basic-02.svg pass.svg
 == clipPath-basic-03.svg pass.svg
 == clipPath-basic-04.svg pass.svg
 == clipPath-basic-05.svg pass.svg
 == clipPath-basic-06.svg pass.svg
 == clipPath-basic-07.svg pass.svg
--- a/layout/reftests/svg/text/reftest.list
+++ b/layout/reftests/svg/text/reftest.list
@@ -162,17 +162,17 @@ fuzzy-if(/^Windows\x20NT\x2010\.0/.test(
 
 # dynamic document changes
 == dynamic-font-size.svg dynamic-font-size-ref.svg
 == dynamic-font-size-2.svg dynamic-font-size-2-ref.svg
 == dynamic-font-size-3.svg dynamic-font-size-3-ref.svg
 == dynamic-font-size-4.svg dynamic-font-size-4-ref.svg
 == dynamic-dominant-baseline.svg dynamic-dominant-baseline-ref.svg
 == dynamic-multiple-x.svg dynamic-multiple-x-ref.svg
-fuzzy-if(!d2d,14,2) fuzzy-if(azureQuartz,1,6) fuzzy-if(skiaContent,1,200) == dynamic-non-scaling-stroke.svg dynamic-non-scaling-stroke-ref.svg #Bug 885316
+fuzzy-if(!d2d,14,2) fuzzy-if(skiaContent,1,200) == dynamic-non-scaling-stroke.svg dynamic-non-scaling-stroke-ref.svg #Bug 885316
 == dynamic-text-shadow.svg text-shadow-ref.svg
 
 # text and masks
 fuzzy-if(skiaContent&&winWidget,50,224) HTTP(../..)  == mask-applied.svg mask-applied-ref.svg
 fuzzy-if(skiaContent&&winWidget,105,112) HTTP(../..) == mask-content.svg mask-content-ref.svg
 fuzzy-if(skiaContent&&winWidget,53,112) HTTP(../..) == mask-content-2.svg mask-content-2-ref.svg
 
 # text and clipPaths
--- a/layout/style/ServoBindings.cpp
+++ b/layout/style/ServoBindings.cpp
@@ -940,17 +940,23 @@ Gecko_EnsureImageLayersLength(nsStyleIma
 }
 
 void
 Gecko_EnsureStyleAnimationArrayLength(void* aArray, size_t aLen)
 {
   auto base =
     reinterpret_cast<nsStyleAutoArray<StyleAnimation>*>(aArray);
 
+  size_t oldLength = base->Length();
+
   base->EnsureLengthAtLeast(aLen);
+
+  for (size_t i = oldLength; i < aLen; ++i) {
+    (*base)[i].SetInitialValues();
+  }
 }
 
 Keyframe*
 Gecko_AnimationAppendKeyframe(RawGeckoKeyframeListBorrowedMut aKeyframes,
                               float aOffset,
                               const nsTimingFunction* aTimingFunction)
 {
   Keyframe* keyframe = aKeyframes->AppendElement();
--- a/layout/style/crashtests/crashtests.list
+++ b/layout/style/crashtests/crashtests.list
@@ -93,17 +93,17 @@ load 788836.html
 load 806310-1.html
 load 812824.html
 load 822766-1.html
 load 822842.html
 load 827591-1.html
 load 829817.html
 load 840898.html
 load 842134.html
-skip-if(stylo) load 861489-1.html # bug 1334982
+load 861489-1.html
 load 862113.html
 asserts-if(stylo,5) load 867487.html # bug 1324634
 load 873222.html
 asserts-if(stylo,2) load 880862.html # bug 1324701
 load 894245-1.html
 load 915440.html
 load 927734-1.html
 load 930270-1.html
@@ -132,17 +132,17 @@ load 1200568-1.html
 load 1206105-1.html
 skip-if(stylo) load 1223688-1.html # bug 1323715
 load 1223694-1.html
 load 1226400-1.html
 load 1227501-1.html
 skip-if(stylo) load 1230408-1.html # bug 1323716
 skip-if(stylo) load 1233135-1.html # bug 1323716
 skip-if(stylo) load 1233135-2.html # bug 1323716
-skip-if(stylo) load 1238660-1.html # bug 1334982
+load 1238660-1.html
 load 1245260-1.html
 load 1247865-1.html
 asserts-if(stylo,0-1) load 1264396-1.html # bug 1324677
 # The following test relies on -webkit-text-fill-color being behind the
 # layout.css.prefixes.webkit pref
 pref(layout.css.prefixes.webkit,false) load 1265611-1.html
 load border-image-visited-link.html
 load font-face-truncated-src.html 
@@ -161,11 +161,11 @@ pref(dom.animations-api.core.enabled,tru
 pref(dom.animations-api.core.enabled,true) load 1290994-3.html
 load 1290994-4.html
 load 1314531.html
 load 1315889-1.html
 load 1315894-1.html
 skip-if(stylo) load 1319072-1.html # bug 1323733
 HTTP load 1320423-1.html
 asserts-if(stylo,5-28) load 1321357-1.html # bug 1324669
-skip-if(stylo) load 1328535-1.html # bug 1334982
+load 1328535-1.html
 load 1331272.html
 asserts-if(stylo,4) HTTP load 1333001-1.html
--- a/layout/tools/reftest/reftest.jsm
+++ b/layout/tools/reftest/reftest.jsm
@@ -659,17 +659,16 @@ function BuildConditionSandbox(aURL) {
 
     var info = gfxInfo.getInfo();
     var canvasBackend = readGfxInfo(info, "AzureCanvasBackend");
     var contentBackend = readGfxInfo(info, "AzureContentBackend");
     var canvasAccelerated = readGfxInfo(info, "AzureCanvasAccelerated");
 
     sandbox.gpuProcess = gfxInfo.usingGPUProcess;
     sandbox.azureCairo = canvasBackend == "cairo";
-    sandbox.azureQuartz = canvasBackend == "quartz";
     sandbox.azureSkia = canvasBackend == "skia";
     sandbox.skiaContent = contentBackend == "skia";
     sandbox.azureSkiaGL = canvasAccelerated; // FIXME: assumes GL right now
     // true if we are using the same Azure backend for rendering canvas and content
     sandbox.contentSameGfxBackendAsCanvas = contentBackend == canvasBackend
                                             || (contentBackend == "none" && canvasBackend == "cairo");
 
     sandbox.layersGPUAccelerated =
--- a/media/webrtc/signaling/src/media-conduit/VideoConduit.cpp
+++ b/media/webrtc/signaling/src/media-conduit/VideoConduit.cpp
@@ -1593,24 +1593,30 @@ WebrtcVideoConduit::ReconfigureSendCodec
     }
 
     CSFLogDebug(
       logTag, "%s: Encoder resolution changed to %ux%u @ %ufps, bitrate %u:%u",
       __FUNCTION__, static_cast<unsigned int>(video_stream.width),
       static_cast<unsigned int>(video_stream.height), mSendingFramerate,
       video_stream.min_bitrate_bps, video_stream.max_bitrate_bps);
   });
-  if (!mSendStream->ReconfigureVideoEncoder(mEncoderConfig.GenerateConfig())) {
-    CSFLogError(logTag, "%s: ReconfigureVideoEncoder failed", __FUNCTION__);
-    return NS_ERROR_FAILURE;
-  }
-  if (frame) {
-    // XXX I really don't like doing this from MainThread...
-    mSendStream->Input()->IncomingCapturedFrame(*frame);
-    CSFLogDebug(logTag, "%s Inserted a frame from reconfig lambda", __FUNCTION__);
+  // Test in case the stream hasn't started yet!  We could get a frame in
+  // before we get around to StartTransmitting(), and that would dispatch a
+  // runnable to call this.
+  if (mSendStream) {
+    if (!mSendStream->ReconfigureVideoEncoder(mEncoderConfig.GenerateConfig())) {
+      CSFLogError(logTag, "%s: ReconfigureVideoEncoder failed", __FUNCTION__);
+      return NS_ERROR_FAILURE;
+    }
+
+    if (frame) {
+      // XXX I really don't like doing this from MainThread...
+      mSendStream->Input()->IncomingCapturedFrame(*frame);
+      CSFLogDebug(logTag, "%s Inserted a frame from reconfig lambda", __FUNCTION__);
+    }
   }
   return NS_OK;
 }
 
 unsigned int
 WebrtcVideoConduit::SelectSendFrameRate(const VideoCodecConfig* codecConfig,
                                         unsigned int old_framerate,
                                         unsigned short sending_width,
@@ -1685,17 +1691,19 @@ WebrtcVideoConduit::SendVideoFrame(webrt
                     __FUNCTION__, frame.width(), frame.height());
       if (SelectSendResolution(frame.width(), frame.height(), &frame)) {
         // SelectSendResolution took ownership of the data in i420_frame.
         // Submit the frame after reconfig is done
         return kMediaConduitNoError;
       }
     }
 
-    mSendStream->Input()->IncomingCapturedFrame(frame);
+    if (mSendStream) { // can happen before StartTransmitting()
+      mSendStream->Input()->IncomingCapturedFrame(frame);
+    }
   }
 
   mSendStreamStats.SentFrame();
   CSFLogDebug(logTag, "%s Inserted a frame", __FUNCTION__);
   return kMediaConduitNoError;
 }
 
 // Transport Layer Callbacks
--- a/mfbt/STYLE
+++ b/mfbt/STYLE
@@ -2,10 +2,10 @@ MFBT uses standard Mozilla style, with t
 
 - Some of the files use a lower-case letter at the start of function names.
   This is because MFBT used to use a different style, and was later converted
   to standard Mozilla style. These functions have not been changed to use an
   upper-case letter because it would cause a lot of churn in other parts of the
   codebase. However, new files should follow standard Mozilla style and use an
   upper-case letter at the start of function names.
 
-- Imported third-party code (such as decimal/*, double-conversion/*, and lz4*)
-  remains in its original style.
+- Imported third-party code (such as decimal/*, double-conversion/source/*, and
+  lz4*) remains in its original style.
--- a/mfbt/decimal/moz-decimal-utils.h
+++ b/mfbt/decimal/moz-decimal-utils.h
@@ -5,17 +5,17 @@
 
 #ifndef MOZ_DECIMAL_UTILS_H
 #define MOZ_DECIMAL_UTILS_H
 
 // This file contains extra includes, defines and typedefs to allow compilation
 // of Decimal.cpp under the Mozilla source without blink core dependencies. Do
 // not include it into any file other than Decimal.cpp.
 
-#include "../double-conversion/double-conversion.h"
+#include "../double-conversion/source/double-conversion.h"
 #include "mozilla/ArrayUtils.h"
 #include "mozilla/Casting.h"
 #include "mozilla/FloatingPoint.h"
 
 #include <cmath>
 #include <cstring>
 #include <iomanip>
 #include <limits>
new file mode 100644
--- /dev/null
+++ b/mfbt/double-conversion/GIT-INFO
@@ -0,0 +1,9 @@
+commit d8d4e668ee1e6e10b728f0671a89b07d7c4d45be
+Merge: 79fb300 48b5e70
+Author: Florian Loitsch <florian@loitsch.com>
+Date:   Wed Nov 23 19:14:38 2016 +0100
+
+    Merge pull request #39 from uburuntu/master
+    
+    Some small fixes: compilation, null ptr derefence and const qualifiers
+
deleted file mode 100644
--- a/mfbt/double-conversion/README
+++ /dev/null
@@ -1,11 +0,0 @@
-http://code.google.com/p/double-conversion
-
-This project (double-conversion) provides binary-decimal and decimal-binary
-routines for IEEE doubles.
-
-The library consists of efficient conversion routines that have been extracted
-from the V8 JavaScript engine. The code has been refactored and improved so that
-it can be used more easily in other projects.
-
-There is extensive documentation in src/double-conversion.h. Other examples can
-be found in test/cctest/test-conversions.cc.
--- a/mfbt/double-conversion/ToPrecision-exponential.patch
+++ b/mfbt/double-conversion/ToPrecision-exponential.patch
@@ -1,13 +1,13 @@
 1e7bf0c636b8cca54dd83456a0f8fa219343e2a1 Bug 608195 - part 2 - extend ToPrecision to tell use whether exponential notation was used
-diff --git a/mfbt/double-conversion/double-conversion.cc b/mfbt/double-conversion/double-conversion.cc
+diff --git a/mfbt/double-conversion/source/double-conversion.cc b/mfbt/double-conversion/source/double-conversion.cc
 index febba6c..394b6a0 100644
---- a/mfbt/double-conversion/double-conversion.cc
-+++ b/mfbt/double-conversion/double-conversion.cc
+--- a/mfbt/double-conversion/source/double-conversion.cc
++++ b/mfbt/double-conversion/source/double-conversion.cc
 @@ -283,7 +283,9 @@ bool DoubleToStringConverter::ToExponential(
  
  bool DoubleToStringConverter::ToPrecision(double value,
                                            int precision,
 +                                          bool* used_exponential_notation,
                                            StringBuilder* result_builder) const {
 +  *used_exponential_notation = false;
    if (Double(value).IsSpecial()) {
@@ -16,20 +16,20 @@ index febba6c..394b6a0 100644
 @@ -325,6 +327,7 @@ bool DoubleToStringConverter::ToPrecision(double value,
        decimal_rep[i] = '0';
      }
  
 +    *used_exponential_notation = true;
      CreateExponentialRepresentation(decimal_rep,
                                      precision,
                                      exponent,
-diff --git a/mfbt/double-conversion/double-conversion.h b/mfbt/double-conversion/double-conversion.h
+diff --git a/mfbt/double-conversion/source/double-conversion.h b/mfbt/double-conversion/source/double-conversion.h
 index 0900ba0..957575c 100644
---- a/mfbt/double-conversion/double-conversion.h
-+++ b/mfbt/double-conversion/double-conversion.h
+--- a/mfbt/double-conversion/source/double-conversion.h
++++ b/mfbt/double-conversion/source/double-conversion.h
 @@ -270,6 +270,7 @@ class DoubleToStringConverter {
    // exponent character, the exponent's sign, and at most 3 exponent digits).
    MFBT_API bool ToPrecision(double value,
                     int precision,
 +                   bool* used_exponential_notation,
                     StringBuilder* result_builder) const;
  
    enum DtoaMode {
--- a/mfbt/double-conversion/add-mfbt-api-markers.patch
+++ b/mfbt/double-conversion/add-mfbt-api-markers.patch
@@ -1,12 +1,12 @@
-diff --git a/mfbt/double-conversion/double-conversion.h b/mfbt/double-conversion/double-conversion.h
+diff --git a/mfbt/double-conversion/source/double-conversion.h b/mfbt/double-conversion/source/double-conversion.h
 index f98edae..c62b16b 100644
---- a/mfbt/double-conversion/double-conversion.h
-+++ b/mfbt/double-conversion/double-conversion.h
+--- a/mfbt/double-conversion/source/double-conversion.h
++++ b/mfbt/double-conversion/source/double-conversion.h
 @@ -28,6 +28,7 @@
  #ifndef DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
  #define DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
  
 +#include "mozilla/Types.h"
  #include "utils.h"
  
  namespace double_conversion {
rename from mfbt/double-conversion/LICENSE
rename to mfbt/double-conversion/source/LICENSE
new file mode 100644
--- /dev/null
+++ b/mfbt/double-conversion/source/README.md
@@ -0,0 +1,54 @@
+https://github.com/google/double-conversion
+
+This project (double-conversion) provides binary-decimal and decimal-binary
+routines for IEEE doubles.
+
+The library consists of efficient conversion routines that have been extracted
+from the V8 JavaScript engine. The code has been refactored and improved so that
+it can be used more easily in other projects.
+
+There is extensive documentation in `double-conversion/double-conversion.h`. Other 
+examples can be found in `test/cctest/test-conversions.cc`.
+
+
+Building
+========
+
+This library can be built with [scons][0] or [cmake][1].
+The checked-in Makefile simply forwards to scons, and provides a
+shortcut to run all tests:
+
+    make
+    make test
+
+Scons
+-----
+
+The easiest way to install this library is to use `scons`. It builds
+the static and shared library, and is set up to install those at the
+correct locations:
+
+    scons install
+
+Use the `DESTDIR` option to change the target directory:
+
+    scons DESTDIR=alternative_directory install
+
+Cmake
+-----
+
+To use cmake run `cmake .` in the root directory. This overwrites the
+existing Makefile.
+
+Use `-DBUILD_SHARED_LIBS=ON` to enable the compilation of shared libraries.
+Note that this disables static libraries. There is currently no way to
+build both libraries at the same time with cmake.
+
+Use `-DBUILD_TESTING=ON` to build the test executable.
+
+    cmake . -DBUILD_TESTING=ON
+    make
+    test/cctest/cctest --list | tr -d '<' | xargs test/cctest/cctest
+
+[0]: http://www.scons.org/
+[1]: https://cmake.org/
rename from mfbt/double-conversion/bignum-dtoa.cc
rename to mfbt/double-conversion/source/bignum-dtoa.cc
--- a/mfbt/double-conversion/bignum-dtoa.cc
+++ b/mfbt/double-conversion/source/bignum-dtoa.cc
@@ -187,23 +187,23 @@ static void GenerateShortestDigits(Bignu
                                    bool is_even,
                                    Vector<char> buffer, int* length) {
   // Small optimization: if delta_minus and delta_plus are the same just reuse
   // one of the two bignums.
   if (Bignum::Equal(*delta_minus, *delta_plus)) {
     delta_plus = delta_minus;
   }
   *length = 0;
-  while (true) {
+  for (;;) {
     uint16_t digit;
     digit = numerator->DivideModuloIntBignum(*denominator);
     ASSERT(digit <= 9);  // digit is a uint16_t and therefore always positive.
     // digit = numerator / denominator (integer division).
     // numerator = numerator % denominator.
-    buffer[(*length)++] = digit + '0';
+    buffer[(*length)++] = static_cast<char>(digit + '0');
 
     // Can we stop already?
     // If the remainder of the division is less than the distance to the lower
     // boundary we can stop. In this case we simply round down (discarding the
     // remainder).
     // Similarly we test if we can round up (using the upper boundary).
     bool in_delta_room_minus;
     bool in_delta_room_plus;
@@ -277,35 +277,36 @@ static void GenerateShortestDigits(Bignu
 // Let v = numerator / denominator < 10.
 // Then we generate 'count' digits of d = x.xxxxx... (without the decimal point)
 // from left to right. Once 'count' digits have been produced we decide wether
 // to round up or down. Remainders of exactly .5 round upwards. Numbers such
 // as 9.999999 propagate a carry all the way, and change the
 // exponent (decimal_point), when rounding upwards.
 static void GenerateCountedDigits(int count, int* decimal_point,
                                   Bignum* numerator, Bignum* denominator,
-                                  Vector<char>(buffer), int* length) {
+                                  Vector<char> buffer, int* length) {
   ASSERT(count >= 0);
   for (int i = 0; i < count - 1; ++i) {
     uint16_t digit;
     digit = numerator->DivideModuloIntBignum(*denominator);
     ASSERT(digit <= 9);  // digit is a uint16_t and therefore always positive.
     // digit = numerator / denominator (integer division).
     // numerator = numerator % denominator.
-    buffer[i] = digit + '0';
+    buffer[i] = static_cast<char>(digit + '0');
     // Prepare for next iteration.
     numerator->Times10();
   }
   // Generate the last digit.
   uint16_t digit;
   digit = numerator->DivideModuloIntBignum(*denominator);
   if (Bignum::PlusCompare(*numerator, *numerator, *denominator) >= 0) {
     digit++;
   }
-  buffer[count - 1] = digit + '0';
+  ASSERT(digit <= 10);
+  buffer[count - 1] = static_cast<char>(digit + '0');
   // Correct bad digits (in case we had a sequence of '9's). Propagate the
   // carry until we hat a non-'9' or til we reach the first digit.
   for (int i = count - 1; i > 0; --i) {
     if (buffer[i] != '0' + 10) break;
     buffer[i] = '0';
     buffer[i - 1]++;
   }
   if (buffer[0] == '0' + 10) {
rename from mfbt/double-conversion/bignum-dtoa.h
rename to mfbt/double-conversion/source/bignum-dtoa.h
rename from mfbt/double-conversion/bignum.cc
rename to mfbt/double-conversion/source/bignum.cc
--- a/mfbt/double-conversion/bignum.cc
+++ b/mfbt/double-conversion/source/bignum.cc
@@ -35,16 +35,17 @@ Bignum::Bignum()
   for (int i = 0; i < kBigitCapacity; ++i) {
     bigits_[i] = 0;
   }
 }
 
 
 template<typename S>
 static int BitSize(S value) {
+  (void) value;  // Mark variable as used.
   return 8 * sizeof(value);
 }
 
 // Guaranteed to lie in one Bigit.
 void Bignum::AssignUInt16(uint16_t value) {
   ASSERT(kBigitSize >= BitSize(value));
   Zero();
   if (value == 0) return;
@@ -98,17 +99,17 @@ static uint64_t ReadUInt64(Vector<const 
 }
 
 
 void Bignum::AssignDecimalString(Vector<const char> value) {
   // 2^64 = 18446744073709551616 > 10^19
   const int kMaxUint64DecimalDigits = 19;
   Zero();
   int length = value.length();
-  int pos = 0;
+  unsigned int pos = 0;
   // Let's just say that each digit needs 4 bits.
   while (length >= kMaxUint64DecimalDigits) {
     uint64_t digits = ReadUInt64(value, pos, kMaxUint64DecimalDigits);
     pos += kMaxUint64DecimalDigits;
     length -= kMaxUint64DecimalDigits;
     MultiplyByPowerOfTen(kMaxUint64DecimalDigits);
     AddUInt64(digits);
   }
@@ -117,19 +118,18 @@ void Bignum::AssignDecimalString(Vector<
   AddUInt64(digits);
   Clamp();
 }
 
 
 static int HexCharValue(char c) {
   if ('0' <= c && c <= '9') return c - '0';
   if ('a' <= c && c <= 'f') return 10 + c - 'a';
-  if ('A' <= c && c <= 'F') return 10 + c - 'A';
-  UNREACHABLE();
-  return 0;  // To make compiler happy.
+  ASSERT('A' <= c && c <= 'F');
+  return 10 + c - 'A';
 }
 
 
 void Bignum::AssignHexString(Vector<const char> value) {
   Zero();
   int length = value.length();
 
   int needed_bigits = length * 4 / kBigitSize + 1;
@@ -500,41 +500,44 @@ uint16_t Bignum::DivideModuloIntBignum(c
 
   // Start by removing multiples of 'other' until both numbers have the same
   // number of digits.
   while (BigitLength() > other.BigitLength()) {
     // This naive approach is extremely inefficient if `this` divided by other
     // is big. This function is implemented for doubleToString where
     // the result should be small (less than 10).
     ASSERT(other.bigits_[other.used_digits_ - 1] >= ((1 << kBigitSize) / 16));
+    ASSERT(bigits_[used_digits_ - 1] < 0x10000);
     // Remove the multiples of the first digit.
     // Example this = 23 and other equals 9. -> Remove 2 multiples.
-    result += bigits_[used_digits_ - 1];
+    result += static_cast<uint16_t>(bigits_[used_digits_ - 1]);
     SubtractTimes(other, bigits_[used_digits_ - 1]);
   }
 
   ASSERT(BigitLength() == other.BigitLength());
 
   // Both bignums are at the same length now.
   // Since other has more than 0 digits we know that the access to
   // bigits_[used_digits_ - 1] is safe.
   Chunk this_bigit = bigits_[used_digits_ - 1];
   Chunk other_bigit = other.bigits_[other.used_digits_ - 1];
 
   if (other.used_digits_ == 1) {
     // Shortcut for easy (and common) case.
     int quotient = this_bigit / other_bigit;
     bigits_[used_digits_ - 1] = this_bigit - other_bigit * quotient;
-    result += quotient;
+    ASSERT(quotient < 0x10000);
+    result += static_cast<uint16_t>(quotient);
     Clamp();
     return result;
   }
 
   int division_estimate = this_bigit / (other_bigit + 1);
-  result += division_estimate;
+  ASSERT(division_estimate < 0x10000);
+  result += static_cast<uint16_t>(division_estimate);
   SubtractTimes(other, division_estimate);
 
   if (other_bigit * (division_estimate + 1) > this_bigit) {
     // No need to even try to subtract. Even if other's remaining digits were 0
     // another subtraction would be too much.
     return result;
   }
 
@@ -555,18 +558,18 @@ static int SizeInHexChars(S number) {
     result++;
   }
   return result;
 }
 
 
 static char HexCharOfValue(int value) {
   ASSERT(0 <= value && value <= 16);
-  if (value < 10) return value + '0';
-  return value - 10 + 'A';
+  if (value < 10) return static_cast<char>(value + '0');
+  return static_cast<char>(value - 10 + 'A');
 }
 
 
 bool Bignum::ToHexString(char* buffer, int buffer_size) const {
   ASSERT(IsClamped());
   // Each bigit must be printable as separate hex-character.
   ASSERT(kBigitSize % 4 == 0);
   const int kHexCharsPerBigit = kBigitSize / 4;
rename from mfbt/double-conversion/bignum.h
rename to mfbt/double-conversion/source/bignum.h
--- a/mfbt/double-conversion/bignum.h
+++ b/mfbt/double-conversion/source/bignum.h
@@ -44,17 +44,16 @@ class Bignum {
   void AssignUInt64(uint64_t value);
   void AssignBignum(const Bignum& other);
 
   void AssignDecimalString(Vector<const char> value);
   void AssignHexString(Vector<const char> value);
 
   void AssignPowerUInt16(uint16_t base, int exponent);
 
-  void AddUInt16(uint16_t operand);
   void AddUInt64(uint64_t operand);
   void AddBignum(const Bignum& other);
   // Precondition: this >= other.
   void SubtractBignum(const Bignum& other);
 
   void Square();
   void ShiftLeft(int shift_amount);
   void MultiplyByUInt32(uint32_t factor);
rename from mfbt/double-conversion/cached-powers.cc
rename to mfbt/double-conversion/source/cached-powers.cc
--- a/mfbt/double-conversion/cached-powers.cc
+++ b/mfbt/double-conversion/source/cached-powers.cc
@@ -126,17 +126,16 @@ static const CachedPower kCachedPowers[]
   {UINT64_2PART_C(0xbf21e440, 03acdd2d), 933, 300},
   {UINT64_2PART_C(0x8e679c2f, 5e44ff8f), 960, 308},
   {UINT64_2PART_C(0xd433179d, 9c8cb841), 986, 316},
   {UINT64_2PART_C(0x9e19db92, b4e31ba9), 1013, 324},
   {UINT64_2PART_C(0xeb96bf6e, badf77d9), 1039, 332},
   {UINT64_2PART_C(0xaf87023b, 9bf0ee6b), 1066, 340},
 };
 
-static const int kCachedPowersLength = ARRAY_SIZE(kCachedPowers);
 static const int kCachedPowersOffset = 348;  // -1 * the first decimal_exponent.
 static const double kD_1_LOG2_10 = 0.30102999566398114;  //  1 / lg(10)
 // Difference between the decimal exponents in the table above.
 const int PowersOfTenCache::kDecimalExponentDistance = 8;
 const int PowersOfTenCache::kMinDecimalExponent = -348;
 const int PowersOfTenCache::kMaxDecimalExponent = 340;
 
 void PowersOfTenCache::GetCachedPowerForBinaryExponentRange(
@@ -144,19 +143,20 @@ void PowersOfTenCache::GetCachedPowerFor
     int max_exponent,
     DiyFp* power,
     int* decimal_exponent) {
   int kQ = DiyFp::kSignificandSize;
   double k = ceil((min_exponent + kQ - 1) * kD_1_LOG2_10);
   int foo = kCachedPowersOffset;
   int index =
       (foo + static_cast<int>(k) - 1) / kDecimalExponentDistance + 1;
-  ASSERT(0 <= index && index < kCachedPowersLength);
+  ASSERT(0 <= index && index < static_cast<int>(ARRAY_SIZE(kCachedPowers)));
   CachedPower cached_power = kCachedPowers[index];
   ASSERT(min_exponent <= cached_power.binary_exponent);
+  (void) max_exponent;  // Mark variable as used.
   ASSERT(cached_power.binary_exponent <= max_exponent);
   *decimal_exponent = cached_power.decimal_exponent;
   *power = DiyFp(cached_power.significand, cached_power.binary_exponent);
 }
 
 
 void PowersOfTenCache::GetCachedPowerForDecimalExponent(int requested_exponent,
                                                         DiyFp* power,
rename from mfbt/double-conversion/cached-powers.h
rename to mfbt/double-conversion/source/cached-powers.h
rename from mfbt/double-conversion/diy-fp.cc
rename to mfbt/double-conversion/source/diy-fp.cc
rename from mfbt/double-conversion/diy-fp.h
rename to mfbt/double-conversion/source/diy-fp.h
--- a/mfbt/double-conversion/diy-fp.h
+++ b/mfbt/double-conversion/source/diy-fp.h
@@ -37,17 +37,17 @@ namespace double_conversion {
 // have the most significant bit of the significand set.
 // Multiplication and Subtraction do not normalize their results.
 // DiyFp are not designed to contain special doubles (NaN and Infinity).
 class DiyFp {
  public:
   static const int kSignificandSize = 64;
 
   DiyFp() : f_(0), e_(0) {}
-  DiyFp(uint64_t f, int e) : f_(f), e_(e) {}
+  DiyFp(uint64_t significand, int exponent) : f_(significand), e_(exponent) {}
 
   // this = this - other.
   // The exponents of both numbers must be the same and the significand of this
   // must be bigger than the significand of other.
   // The result will not be normalized.
   void Subtract(const DiyFp& other) {
     ASSERT(e_ == other.e_);
     ASSERT(f_ >= other.f_);
@@ -71,32 +71,32 @@ class DiyFp {
   static DiyFp Times(const DiyFp& a, const DiyFp& b) {
     DiyFp result = a;
     result.Multiply(b);
     return result;
   }
 
   void Normalize() {
     ASSERT(f_ != 0);
-    uint64_t f = f_;
-    int e = e_;
+    uint64_t significand = f_;
+    int exponent = e_;
 
     // This method is mainly called for normalizing boundaries. In general
     // boundaries need to be shifted by 10 bits. We thus optimize for this case.
     const uint64_t k10MSBits = UINT64_2PART_C(0xFFC00000, 00000000);
-    while ((f & k10MSBits) == 0) {
-      f <<= 10;
-      e -= 10;
+    while ((significand & k10MSBits) == 0) {
+      significand <<= 10;
+      exponent -= 10;
     }
-    while ((f & kUint64MSB) == 0) {
-      f <<= 1;
-      e--;
+    while ((significand & kUint64MSB) == 0) {
+      significand <<= 1;
+      exponent--;
     }
-    f_ = f;
-    e_ = e;
+    f_ = significand;
+    e_ = exponent;
   }
 
   static DiyFp Normalize(const DiyFp& a) {
     DiyFp result = a;
     result.Normalize();
     return result;
   }
 
rename from mfbt/double-conversion/double-conversion.cc
rename to mfbt/double-conversion/source/double-conversion.cc
--- a/mfbt/double-conversion/double-conversion.cc
+++ b/mfbt/double-conversion/source/double-conversion.cc
@@ -113,36 +113,36 @@ void DoubleToStringConverter::CreateExpo
 void DoubleToStringConverter::CreateDecimalRepresentation(
     const char* decimal_digits,
     int length,
     int decimal_point,
     int digits_after_point,
     StringBuilder* result_builder) const {
   // Create a representation that is padded with zeros if needed.
   if (decimal_point <= 0) {
-      // "0.00000decimal_rep".
+      // "0.00000decimal_rep" or "0.000decimal_rep00".
     result_builder->AddCharacter('0');
     if (digits_after_point > 0) {
       result_builder->AddCharacter('.');
       result_builder->AddPadding('0', -decimal_point);
       ASSERT(length <= digits_after_point - (-decimal_point));
       result_builder->AddSubstring(decimal_digits, length);
       int remaining_digits = digits_after_point - (-decimal_point) - length;
       result_builder->AddPadding('0', remaining_digits);
     }
   } else if (decimal_point >= length) {
-    // "decimal_rep0000.00000" or "decimal_rep.0000"
+    // "decimal_rep0000.00000" or "decimal_rep.0000".
     result_builder->AddSubstring(decimal_digits, length);
     result_builder->AddPadding('0', decimal_point - length);
     if (digits_after_point > 0) {
       result_builder->AddCharacter('.');
       result_builder->AddPadding('0', digits_after_point);
     }
   } else {
-    // "decima.l_rep000"
+    // "decima.l_rep000".
     ASSERT(digits_after_point > 0);
     result_builder->AddSubstring(decimal_digits, decimal_point);
     result_builder->AddCharacter('.');
     ASSERT(length - decimal_point <= digits_after_point);
     result_builder->AddSubstring(&decimal_digits[decimal_point],
                                  length - decimal_point);
     int remaining_digits = digits_after_point - (length - decimal_point);
     result_builder->AddPadding('0', remaining_digits);
@@ -346,17 +346,16 @@ static BignumDtoaMode DtoaToBignumDtoaMo
   switch (dtoa_mode) {
     case DoubleToStringConverter::SHORTEST:  return BIGNUM_DTOA_SHORTEST;
     case DoubleToStringConverter::SHORTEST_SINGLE:
         return BIGNUM_DTOA_SHORTEST_SINGLE;
     case DoubleToStringConverter::FIXED:     return BIGNUM_DTOA_FIXED;
     case DoubleToStringConverter::PRECISION: return BIGNUM_DTOA_PRECISION;
     default:
       UNREACHABLE();
-      return BIGNUM_DTOA_SHORTEST;  // To silence compiler.
   }
 }
 
 
 void DoubleToStringConverter::DoubleToAscii(double v,
                                             DtoaMode mode,
                                             int requested_digits,
                                             char* buffer,
@@ -401,32 +400,33 @@ void DoubleToStringConverter::DoubleToAs
     case FIXED:
       fast_worked = FastFixedDtoa(v, requested_digits, vector, length, point);
       break;
     case PRECISION:
       fast_worked = FastDtoa(v, FAST_DTOA_PRECISION, requested_digits,
                              vector, length, point);
       break;
     default:
+      fast_worked = false;
       UNREACHABLE();
-      fast_worked = false;
   }
   if (fast_worked) return;
 
   // If the fast dtoa didn't succeed use the slower bignum version.
   BignumDtoaMode bignum_mode = DtoaToBignumDtoaMode(mode);
   BignumDtoa(v, bignum_mode, requested_digits, vector, length, point);
   vector[*length] = '\0';
 }
 
 
 // Consumes the given substring from the iterator.
 // Returns false, if the substring does not match.
-static bool ConsumeSubString(const char** current,
-                             const char* end,
+template <class Iterator>
+static bool ConsumeSubString(Iterator* current,
+                             Iterator end,
                              const char* substring) {
   ASSERT(**current == *substring);
   for (substring++; *substring != '\0'; substring++) {
     ++*current;
     if (*current == end || **current != *substring) return false;
   }
   ++*current;
   return true;
@@ -438,20 +438,46 @@ static bool ConsumeSubString(const char*
 // (2^53 - 1) * 2 ^ -1074 that is (2 ^ 53 - 1) * 5 ^ 1074 / 10 ^ 1074
 // (768 digits). If we parse a number whose first digits are equal to a
 // mean of 2 adjacent doubles (that could have up to 769 digits) the result
 // must be rounded to the bigger one unless the tail consists of zeros, so
 // we don't need to preserve all the digits.
 const int kMaxSignificantDigits = 772;
 
 
+static const char kWhitespaceTable7[] = { 32, 13, 10, 9, 11, 12 };
+static const int kWhitespaceTable7Length = ARRAY_SIZE(kWhitespaceTable7);
+
+
+static const uc16 kWhitespaceTable16[] = {
+  160, 8232, 8233, 5760, 6158, 8192, 8193, 8194, 8195,
+  8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288, 65279
+};
+static const int kWhitespaceTable16Length = ARRAY_SIZE(kWhitespaceTable16);
+
+
+static bool isWhitespace(int x) {
+  if (x < 128) {
+    for (int i = 0; i < kWhitespaceTable7Length; i++) {
+      if (kWhitespaceTable7[i] == x) return true;
+    }
+  } else {
+    for (int i = 0; i < kWhitespaceTable16Length; i++) {
+      if (kWhitespaceTable16[i] == x) return true;
+    }
+  }
+  return false;
+}
+
+
 // Returns true if a nonspace found and false if the end has reached.
-static inline bool AdvanceToNonspace(const char** current, const char* end) {
+template <class Iterator>
+static inline bool AdvanceToNonspace(Iterator* current, Iterator end) {
   while (*current != end) {
-    if (**current != ' ') return true;
+    if (!isWhitespace(**current)) return true;
     ++*current;
   }
   return false;
 }
 
 
 static bool isDigit(int x, int radix) {
   return (x >= '0' && x <= '9' && x < '0' + radix)
@@ -460,54 +486,85 @@ static bool isDigit(int x, int radix) {
 }
 
 
 static double SignedZero(bool sign) {
   return sign ? -0.0 : 0.0;
 }
 
 
+// Returns true if 'c' is a decimal digit that is valid for the given radix.
+//
+// The function is small and could be inlined, but VS2012 emitted a warning
+// because it constant-propagated the radix and concluded that the last
+// condition was always true. By moving it into a separate function the
+// compiler wouldn't warn anymore.
+#if _MSC_VER
+#pragma optimize("",off)
+static bool IsDecimalDigitForRadix(int c, int radix) {
+  return '0' <= c && c <= '9' && (c - '0') < radix;
+}
+#pragma optimize("",on)
+#else
+static bool inline IsDecimalDigitForRadix(int c, int radix) {
+	return '0' <= c && c <= '9' && (c - '0') < radix;
+}
+#endif
+// Returns true if 'c' is a character digit that is valid for the given radix.
+// The 'a_character' should be 'a' or 'A'.
+//
+// The function is small and could be inlined, but VS2012 emitted a warning
+// because it constant-propagated the radix and concluded that the first
+// condition was always false. By moving it into a separate function the
+// compiler wouldn't warn anymore.
+static bool IsCharacterDigitForRadix(int c, int radix, char a_character) {
+  return radix > 10 && c >= a_character && c < a_character + radix - 10;
+}
+
+
 // Parsing integers with radix 2, 4, 8, 16, 32. Assumes current != end.
-template <int radix_log_2>
-static double RadixStringToIeee(const char* current,
-                                const char* end,
+template <int radix_log_2, class Iterator>
+static double RadixStringToIeee(Iterator* current,
+                                Iterator end,
                                 bool sign,
                                 bool allow_trailing_junk,
                                 double junk_string_value,
                                 bool read_as_double,
-                                const char** trailing_pointer) {
-  ASSERT(current != end);
+                                bool* result_is_junk) {
+  ASSERT(*current != end);
 
   const int kDoubleSize = Double::kSignificandSize;
   const int kSingleSize = Single::kSignificandSize;
   const int kSignificandSize = read_as_double? kDoubleSize: kSingleSize;
 
+  *result_is_junk = true;
+
   // Skip leading 0s.
-  while (*current == '0') {
-    ++current;
-    if (current == end) {
-      *trailing_pointer = end;
+  while (**current == '0') {
+    ++(*current);
+    if (*current == end) {
+      *result_is_junk = false;
       return SignedZero(sign);
     }
   }
 
   int64_t number = 0;
   int exponent = 0;
   const int radix = (1 << radix_log_2);
 
   do {
     int digit;
-    if (*current >= '0' && *current <= '9' && *current < '0' + radix) {
-      digit = static_cast<char>(*current) - '0';
-    } else if (radix > 10 && *current >= 'a' && *current < 'a' + radix - 10) {
-      digit = static_cast<char>(*current) - 'a' + 10;
-    } else if (radix > 10 && *current >= 'A' && *current < 'A' + radix - 10) {
-      digit = static_cast<char>(*current) - 'A' + 10;
+    if (IsDecimalDigitForRadix(**current, radix)) {
+      digit = static_cast<char>(**current) - '0';
+    } else if (IsCharacterDigitForRadix(**current, radix, 'a')) {
+      digit = static_cast<char>(**current) - 'a' + 10;
+    } else if (IsCharacterDigitForRadix(**current, radix, 'A')) {
+      digit = static_cast<char>(**current) - 'A' + 10;
     } else {
-      if (allow_trailing_junk || !AdvanceToNonspace(&current, end)) {
+      if (allow_trailing_junk || !AdvanceToNonspace(current, end)) {
         break;
       } else {
         return junk_string_value;
       }
     }
 
     number = number * radix + digit;
     int overflow = static_cast<int>(number >> kSignificandSize);
@@ -521,24 +578,24 @@ static double RadixStringToIeee(const ch
       }
 
       int dropped_bits_mask = ((1 << overflow_bits_count) - 1);
       int dropped_bits = static_cast<int>(number) & dropped_bits_mask;
       number >>= overflow_bits_count;
       exponent = overflow_bits_count;
 
       bool zero_tail = true;
-      while (true) {
-        ++current;
-        if (current == end || !isDigit(*current, radix)) break;
-        zero_tail = zero_tail && *current == '0';
+      for (;;) {
+        ++(*current);
+        if (*current == end || !isDigit(**current, radix)) break;
+        zero_tail = zero_tail && **current == '0';
         exponent += radix_log_2;
       }
 
-      if (!allow_trailing_junk && AdvanceToNonspace(&current, end)) {
+      if (!allow_trailing_junk && AdvanceToNonspace(current, end)) {
         return junk_string_value;
       }
 
       int middle_value = (1 << (overflow_bits_count - 1));
       if (dropped_bits > middle_value) {
         number++;  // Rounding up.
       } else if (dropped_bits == middle_value) {
         // Rounding to even to consistency with decimals: half-way case rounds
@@ -550,44 +607,45 @@ static double RadixStringToIeee(const ch
 
       // Rounding up may cause overflow.
       if ((number & ((int64_t)1 << kSignificandSize)) != 0) {
         exponent++;
         number >>= 1;
       }
       break;
     }
-    ++current;
-  } while (current != end);
+    ++(*current);
+  } while (*current != end);
 
   ASSERT(number < ((int64_t)1 << kSignificandSize));
   ASSERT(static_cast<int64_t>(static_cast<double>(number)) == number);
 
-  *trailing_pointer = current;
+  *result_is_junk = false;
 
   if (exponent == 0) {
     if (sign) {
       if (number == 0) return -0.0;
       number = -number;
     }
     return static_cast<double>(number);
   }
 
   ASSERT(number != 0);
   return Double(DiyFp(number, exponent)).value();
 }
 
 
+template <class Iterator>
 double StringToDoubleConverter::StringToIeee(
-    const char* input,
+    Iterator input,
     int length,
-    int* processed_characters_count,
-    bool read_as_double) const {
-  const char* current = input;
-  const char* end = input + length;
+    bool read_as_double,
+    int* processed_characters_count) const {
+  Iterator current = input;
+  Iterator end = input + length;
 
   *processed_characters_count = 0;
 
   const bool allow_trailing_junk = (flags_ & ALLOW_TRAILING_JUNK) != 0;
   const bool allow_leading_spaces = (flags_ & ALLOW_LEADING_SPACES) != 0;
   const bool allow_trailing_spaces = (flags_ & ALLOW_TRAILING_SPACES) != 0;
   const bool allow_spaces_after_sign = (flags_ & ALLOW_SPACES_AFTER_SIGN) != 0;
 
@@ -598,17 +656,17 @@ double StringToDoubleConverter::StringTo
   // 3. If 'current' becomes equal to 'end' the function returns or goes to
   // 'parsing_done'.
   // 4. 'current' is not dereferenced after the 'parsing_done' label.
   // 5. Code before 'parsing_done' may rely on 'current != end'.
   if (current == end) return empty_string_value_;
 
   if (allow_leading_spaces || allow_trailing_spaces) {
     if (!AdvanceToNonspace(&current, end)) {
-      *processed_characters_count = current - input;
+      *processed_characters_count = static_cast<int>(current - input);
       return empty_string_value_;
     }
     if (!allow_leading_spaces && (input != current)) {
       // No leading spaces allowed, but AdvanceToNonspace moved forward.
       return junk_string_value_;
     }
   }
 
@@ -624,17 +682,17 @@ double StringToDoubleConverter::StringTo
   int insignificant_digits = 0;
   bool nonzero_digit_dropped = false;
 
   bool sign = false;
 
   if (*current == '+' || *current == '-') {
     sign = (*current == '-');
     ++current;
-    const char* next_non_space = current;
+    Iterator next_non_space = current;
     // Skip following spaces (if allowed).
     if (!AdvanceToNonspace(&next_non_space, end)) return junk_string_value_;
     if (!allow_spaces_after_sign && (current != next_non_space)) {
       return junk_string_value_;
     }
     current = next_non_space;
   }
 
@@ -647,17 +705,17 @@ double StringToDoubleConverter::StringTo
       if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) {
         return junk_string_value_;
       }
       if (!allow_trailing_junk && AdvanceToNonspace(&current, end)) {
         return junk_string_value_;
       }
 
       ASSERT(buffer_pos == 0);
-      *processed_characters_count = current - input;
+      *processed_characters_count = static_cast<int>(current - input);
       return sign ? -Double::Infinity() : Double::Infinity();
     }
   }
 
   if (nan_symbol_ != NULL) {
     if (*current == nan_symbol_[0]) {
       if (!ConsumeSubString(&current, end, nan_symbol_)) {
         return junk_string_value_;
@@ -666,58 +724,58 @@ double StringToDoubleConverter::StringTo
       if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) {
         return junk_string_value_;
       }
       if (!allow_trailing_junk && AdvanceToNonspace(&current, end)) {
         return junk_string_value_;
       }
 
       ASSERT(buffer_pos == 0);
-      *processed_characters_count = current - input;
+      *processed_characters_count = static_cast<int>(current - input);
       return sign ? -Double::NaN() : Double::NaN();
     }
   }
 
   bool leading_zero = false;
   if (*current == '0') {
     ++current;
     if (current == end) {
-      *processed_characters_count = current - input;
+      *processed_characters_count = static_cast<int>(current - input);
       return SignedZero(sign);
     }
 
     leading_zero = true;
 
     // It could be hexadecimal value.
     if ((flags_ & ALLOW_HEX) && (*current == 'x' || *current == 'X')) {
       ++current;
       if (current == end || !isDigit(*current, 16)) {
         return junk_string_value_;  // "0x".
       }
 
-      const char* tail_pointer = NULL;
-      double result = RadixStringToIeee<4>(current,
+      bool result_is_junk;
+      double result = RadixStringToIeee<4>(&current,
                                            end,
                                            sign,
                                            allow_trailing_junk,
                                            junk_string_value_,
                                            read_as_double,
-                                           &tail_pointer);
-      if (tail_pointer != NULL) {
-        if (allow_trailing_spaces) AdvanceToNonspace(&tail_pointer, end);
-        *processed_characters_count = tail_pointer - input;
+                                           &result_is_junk);
+      if (!result_is_junk) {
+        if (allow_trailing_spaces) AdvanceToNonspace(&current, end);
+        *processed_characters_count = static_cast<int>(current - input);
       }
       return result;
     }
 
     // Ignore leading zeros in the integer part.
     while (*current == '0') {
       ++current;
       if (current == end) {
-        *processed_characters_count = current - input;
+        *processed_characters_count = static_cast<int>(current - input);
         return SignedZero(sign);
       }
     }
   }
 
   bool octal = leading_zero && (flags_ & ALLOW_OCTALS) != 0;
 
   // Copy significant digits of the integer part (if any) to the buffer.
@@ -755,17 +813,17 @@ double StringToDoubleConverter::StringTo
 
     if (significant_digits == 0) {
       // octal = false;
       // Integer part consists of 0 or is absent. Significant digits start after
       // leading zeros (if any).
       while (*current == '0') {
         ++current;
         if (current == end) {
-          *processed_characters_count = current - input;
+          *processed_characters_count = static_cast<int>(current - input);
           return SignedZero(sign);
         }
         exponent--;  // Move this 0 into the exponent.
       }
     }
 
     // There is a fractional part.
     // We don't emit a '.', but adjust the exponent instead.
@@ -799,19 +857,19 @@ double StringToDoubleConverter::StringTo
     ++current;
     if (current == end) {
       if (allow_trailing_junk) {
         goto parsing_done;
       } else {
         return junk_string_value_;
       }
     }
-    char sign = '+';
+    char exponen_sign = '+';
     if (*current == '+' || *current == '-') {
-      sign = static_cast<char>(*current);
+      exponen_sign = static_cast<char>(*current);
       ++current;
       if (current == end) {
         if (allow_trailing_junk) {
           goto parsing_done;
         } else {
           return junk_string_value_;
         }
       }
@@ -835,17 +893,17 @@ double StringToDoubleConverter::StringTo
           && !(num == max_exponent / 10 && digit <= max_exponent % 10)) {
         num = max_exponent;
       } else {
         num = num * 10 + digit;
       }
       ++current;
     } while (current != end && *current >= '0' && *current <= '9');
 
-    exponent += (sign == '-' ? -num : num);
+    exponent += (exponen_sign == '-' ? -num : num);
   }
 
   if (!(allow_trailing_spaces || allow_trailing_junk) && (current != end)) {
     return junk_string_value_;
   }
   if (!allow_trailing_junk && AdvanceToNonspace(&current, end)) {
     return junk_string_value_;
   }
@@ -853,26 +911,27 @@ double StringToDoubleConverter::StringTo
     AdvanceToNonspace(&current, end);
   }
 
   parsing_done:
   exponent += insignificant_digits;
 
   if (octal) {
     double result;
-    const char* tail_pointer = NULL;
-    result = RadixStringToIeee<3>(buffer,
+    bool result_is_junk;
+    char* start = buffer;
+    result = RadixStringToIeee<3>(&start,
                                   buffer + buffer_pos,
                                   sign,
                                   allow_trailing_junk,
                                   junk_string_value_,
                                   read_as_double,
-                                  &tail_pointer);
-    ASSERT(tail_pointer != NULL);
-    *processed_characters_count = current - input;
+                                  &result_is_junk);
+    ASSERT(!result_is_junk);
+    *processed_characters_count = static_cast<int>(current - input);
     return result;
   }
 
   if (nonzero_digit_dropped) {
     buffer[buffer_pos++] = '1';
     exponent--;
   }
 
@@ -880,13 +939,47 @@ double StringToDoubleConverter::StringTo
   buffer[buffer_pos] = '\0';
 
   double converted;
   if (read_as_double) {
     converted = Strtod(Vector<const char>(buffer, buffer_pos), exponent);
   } else {
     converted = Strtof(Vector<const char>(buffer, buffer_pos), exponent);
   }
-  *processed_characters_count = current - input;
+  *processed_characters_count = static_cast<int>(current - input);
   return sign? -converted: converted;
 }
 
+
+double StringToDoubleConverter::StringToDouble(
+    const char* buffer,
+    int length,
+    int* processed_characters_count) const {
+  return StringToIeee(buffer, length, true, processed_characters_count);
+}
+
+
+double StringToDoubleConverter::StringToDouble(
+    const uc16* buffer,
+    int length,
+    int* processed_characters_count) const {
+  return StringToIeee(buffer, length, true, processed_characters_count);
+}
+
+
+float StringToDoubleConverter::StringToFloat(
+    const char* buffer,
+    int length,
+    int* processed_characters_count) const {
+  return static_cast<float>(StringToIeee(buffer, length, false,
+                                         processed_characters_count));
+}
+
+
+float StringToDoubleConverter::StringToFloat(
+    const uc16* buffer,
+    int length,
+    int* processed_characters_count) const {
+  return static_cast<float>(StringToIeee(buffer, length, false,
+                                         processed_characters_count));
+}
+
 }  // namespace double_conversion
rename from mfbt/double-conversion/double-conversion.h
rename to mfbt/double-conversion/source/double-conversion.h
--- a/mfbt/double-conversion/double-conversion.h
+++ b/mfbt/double-conversion/source/double-conversion.h
@@ -412,19 +412,20 @@ class StringToDoubleConverter {
   //                                               // digits.
   //          In StringToDouble("01234.56") the characters ".56" are trailing
   //          junk. The result of the call is hence dependent on
   //          the ALLOW_TRAILING_JUNK flag and/or the junk value.
   //          In StringToDouble("01234e56") the characters "e56" are trailing
   //          junk, too.
   //  - ALLOW_TRAILING_JUNK: ignore trailing characters that are not part of
   //      a double literal.
-  //  - ALLOW_LEADING_SPACES: skip over leading spaces.
-  //  - ALLOW_TRAILING_SPACES: ignore trailing spaces.
-  //  - ALLOW_SPACES_AFTER_SIGN: ignore spaces after the sign.
+  //  - ALLOW_LEADING_SPACES: skip over leading whitespace, including spaces,
+  //                          new-lines, and tabs.
+  //  - ALLOW_TRAILING_SPACES: ignore trailing whitespace.
+  //  - ALLOW_SPACES_AFTER_SIGN: ignore whitespace after the sign.
   //       Ex: StringToDouble("-   123.2") -> -123.2.
   //           StringToDouble("+   123.2") -> 123.2
   //
   // empty_string_value is returned when an empty string is given as input.
   // If ALLOW_LEADING_SPACES or ALLOW_TRAILING_SPACES are set, then a string
   // containing only spaces is converted to the 'empty_string_value', too.
   //
   // junk_string_value is returned when
@@ -499,40 +500,46 @@ class StringToDoubleConverter {
 
   // Performs the conversion.
   // The output parameter 'processed_characters_count' is set to the number
   // of characters that have been processed to read the number.
   // Spaces than are processed with ALLOW_{LEADING|TRAILING}_SPACES are included
   // in the 'processed_characters_count'. Trailing junk is never included.
   double StringToDouble(const char* buffer,
                         int length,
-                        int* processed_characters_count) const {
-    return StringToIeee(buffer, length, processed_characters_count, true);
-  }
+                        int* processed_characters_count) const;
+
+  // Same as StringToDouble above but for 16 bit characters.
+  double StringToDouble(const uc16* buffer,
+                        int length,
+                        int* processed_characters_count) const;
 
   // Same as StringToDouble but reads a float.
   // Note that this is not equivalent to static_cast<float>(StringToDouble(...))
   // due to potential double-rounding.
   float StringToFloat(const char* buffer,
                       int length,
-                      int* processed_characters_count) const {
-    return static_cast<float>(StringToIeee(buffer, length,
-                                           processed_characters_count, false));
-  }
+                      int* processed_characters_count) const;
+
+  // Same as StringToFloat above but for 16 bit characters.
+  float StringToFloat(const uc16* buffer,
+                      int length,
+                      int* processed_characters_count) const;
 
  private:
   const int flags_;
   const double empty_string_value_;
   const double junk_string_value_;
   const char* const infinity_symbol_;
   const char* const nan_symbol_;
 
-  double StringToIeee(const char* buffer,
+  template <class Iterator>
+  double StringToIeee(Iterator start_pointer,
                       int length,
-                      int* processed_characters_count,
-                      bool read_as_double) const;
+                      bool read_as_double,
+                      int* processed_characters_count) const;
 
   DISALLOW_IMPLICIT_CONSTRUCTORS(StringToDoubleConverter);
 };
 
 }  // namespace double_conversion
 
 #endif  // DOUBLE_CONVERSION_DOUBLE_CONVERSION_H_
rename from mfbt/double-conversion/fast-dtoa.cc
rename to mfbt/double-conversion/source/fast-dtoa.cc
--- a/mfbt/double-conversion/fast-dtoa.cc
+++ b/mfbt/double-conversion/source/fast-dtoa.cc
@@ -243,20 +243,17 @@ static void BiggestPowerTen(uint32_t num
                             int* exponent_plus_one) {
   ASSERT(number < (1u << (number_bits + 1)));
   // 1233/4096 is approximately 1/lg(10).
   int exponent_plus_one_guess = ((number_bits + 1) * 1233 >> 12);
   // We increment to skip over the first entry in the kPowersOf10 table.
   // Note: kPowersOf10[i] == 10^(i-1).
   exponent_plus_one_guess++;
   // We don't have any guarantees that 2^number_bits <= number.
-  // TODO(floitsch): can we change the 'while' into an 'if'? We definitely see
-  // number < (2^number_bits - 1), but I haven't encountered
-  // number < (2^number_bits - 2) yet.
-  while (number < kSmallPowersOfTen[exponent_plus_one_guess]) {
+  if (number < kSmallPowersOfTen[exponent_plus_one_guess]) {
     exponent_plus_one_guess--;
   }
   *power = kSmallPowersOfTen[exponent_plus_one_guess];
   *exponent_plus_one = exponent_plus_one_guess;
 }
 
 // Generates the digits of input number w.
 // w is a floating-point number (DiyFp), consisting of a significand and an
@@ -345,17 +342,18 @@ static bool DigitGen(DiyFp low,
   *kappa = divisor_exponent_plus_one;
   *length = 0;
   // Loop invariant: buffer = too_high / 10^kappa  (integer division)
   // The invariant holds for the first iteration: kappa has been initialized
   // with the divisor exponent + 1. And the divisor is the biggest power of ten
   // that is smaller than integrals.
   while (*kappa > 0) {
     int digit = integrals / divisor;
-    buffer[*length] = '0' + digit;
+    ASSERT(digit <= 9);
+    buffer[*length] = static_cast<char>('0' + digit);
     (*length)++;
     integrals %= divisor;
     (*kappa)--;
     // Note that kappa now equals the exponent of the divisor and that the
     // invariant thus holds again.
     uint64_t rest =
         (static_cast<uint64_t>(integrals) << -one.e()) + fractionals;
     // Invariant: too_high = buffer * 10^kappa + DiyFp(rest, one.e())
@@ -374,23 +372,24 @@ static bool DigitGen(DiyFp low,
   // separator. In the following loop we simply multiply the remaining digits by
   // 10 and divide by one. We just need to pay attention to multiply associated
   // data (like the interval or 'unit'), too.
   // Note that the multiplication by 10 does not overflow, because w.e >= -60
   // and thus one.e >= -60.
   ASSERT(one.e() >= -60);
   ASSERT(fractionals < one.f());
   ASSERT(UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f());
-  while (true) {
+  for (;;) {
     fractionals *= 10;
     unit *= 10;
     unsafe_interval.set_f(unsafe_interval.f() * 10);
     // Integer division by one.
     int digit = static_cast<int>(fractionals >> -one.e());
-    buffer[*length] = '0' + digit;
+    ASSERT(digit <= 9);
+    buffer[*length] = static_cast<char>('0' + digit);
     (*length)++;
     fractionals &= one.f() - 1;  // Modulo by one.
     (*kappa)--;
     if (fractionals < unsafe_interval.f()) {
       return RoundWeed(buffer, *length, DiyFp::Minus(too_high, w).f() * unit,
                        unsafe_interval.f(), fractionals, one.f(), unit);
     }
   }
@@ -454,17 +453,18 @@ static bool DigitGenCounted(DiyFp w,
   *length = 0;
 
   // Loop invariant: buffer = w / 10^kappa  (integer division)
   // The invariant holds for the first iteration: kappa has been initialized
   // with the divisor exponent + 1. And the divisor is the biggest power of ten
   // that is smaller than 'integrals'.
   while (*kappa > 0) {
     int digit = integrals / divisor;
-    buffer[*length] = '0' + digit;
+    ASSERT(digit <= 9);
+    buffer[*length] = static_cast<char>('0' + digit);
     (*length)++;
     requested_digits--;
     integrals %= divisor;
     (*kappa)--;
     // Note that kappa now equals the exponent of the divisor and that the
     // invariant thus holds again.
     if (requested_digits == 0) break;
     divisor /= 10;
@@ -487,17 +487,18 @@ static bool DigitGenCounted(DiyFp w,
   ASSERT(one.e() >= -60);
   ASSERT(fractionals < one.f());
   ASSERT(UINT64_2PART_C(0xFFFFFFFF, FFFFFFFF) / 10 >= one.f());
   while (requested_digits > 0 && fractionals > w_error) {
     fractionals *= 10;
     w_error *= 10;
     // Integer division by one.
     int digit = static_cast<int>(fractionals >> -one.e());
-    buffer[*length] = '0' + digit;
+    ASSERT(digit <= 9);
+    buffer[*length] = static_cast<char>('0' + digit);
     (*length)++;
     requested_digits--;
     fractionals &= one.f() - 1;  // Modulo by one.
     (*kappa)--;
   }
   if (requested_digits != 0) return false;
   return RoundWeedCounted(buffer, *length, fractionals, one.f(), w_error,
                           kappa);
rename from mfbt/double-conversion/fast-dtoa.h
rename to mfbt/double-conversion/source/fast-dtoa.h
rename from mfbt/double-conversion/fixed-dtoa.cc
rename to mfbt/double-conversion/source/fixed-dtoa.cc
--- a/mfbt/double-conversion/fixed-dtoa.cc
+++ b/mfbt/double-conversion/source/fixed-dtoa.cc
@@ -93,17 +93,17 @@ class UInt128 {
       return result;
     }
   }
 
   bool IsZero() const {
     return high_bits_ == 0 && low_bits_ == 0;
   }
 
-  int BitAt(int position) {
+  int BitAt(int position) const {
     if (position >= 64) {
       return static_cast<int>(high_bits_ >> (position - 64)) & 1;
     } else {
       return static_cast<int>(low_bits_ >> position) & 1;
     }
   }
 
  private:
@@ -128,34 +128,34 @@ static void FillDigits32FixedLength(uint
 
 
 static void FillDigits32(uint32_t number, Vector<char> buffer, int* length) {
   int number_length = 0;
   // We fill the digits in reverse order and exchange them afterwards.
   while (number != 0) {
     int digit = number % 10;
     number /= 10;
-    buffer[(*length) + number_length] = '0' + digit;
+    buffer[(*length) + number_length] = static_cast<char>('0' + digit);
     number_length++;
   }
   // Exchange the digits.
   int i = *length;
   int j = *length + number_length - 1;
   while (i < j) {
     char tmp = buffer[i];
     buffer[i] = buffer[j];
     buffer[j] = tmp;
     i++;
     j--;
   }
   *length += number_length;
 }
 
 
-static void FillDigits64FixedLength(uint64_t number, int requested_length,
+static void FillDigits64FixedLength(uint64_t number,
                                     Vector<char> buffer, int* length) {
   const uint32_t kTen7 = 10000000;
   // For efficiency cut the number into 3 uint32_t parts, and print those.
   uint32_t part2 = static_cast<uint32_t>(number % kTen7);
   number /= kTen7;
   uint32_t part1 = static_cast<uint32_t>(number % kTen7);
   uint32_t part0 = static_cast<uint32_t>(number / kTen7);
 
@@ -248,17 +248,18 @@ static void FillFractionals(uint64_t fra
       // Note that 5^3 = 125 < 128 = 2^7.
       // Therefore three iterations of this loop will not overflow fractionals
       // (even without the subtraction at the end of the loop body). At this
       // time point will satisfy point <= 61 and therefore fractionals < 2^point
       // and any further multiplication of fractionals by 5 will not overflow.
       fractionals *= 5;
       point--;
       int digit = static_cast<int>(fractionals >> point);
-      buffer[*length] = '0' + digit;
+      ASSERT(digit <= 9);
+      buffer[*length] = static_cast<char>('0' + digit);
       (*length)++;
       fractionals -= static_cast<uint64_t>(digit) << point;
     }
     // If the first bit after the point is set we have to round up.
     if (((fractionals >> (point - 1)) & 1) == 1) {
       RoundUp(buffer, length, decimal_point);
     }
   } else {  // We need 128 bits.
@@ -269,17 +270,18 @@ static void FillFractionals(uint64_t fra
     for (int i = 0; i < fractional_count; ++i) {
       if (fractionals128.IsZero()) break;
       // As before: instead of multiplying by 10 we multiply by 5 and adjust the
       // point location.
       // This multiplication will not overflow for the same reasons as before.
       fractionals128.Multiply(5);
       point--;
       int digit = fractionals128.DivModPowerOf2(point);
-      buffer[*length] = '0' + digit;
+      ASSERT(digit <= 9);
+      buffer[*length] = static_cast<char>('0' + digit);
       (*length)++;
     }
     if (fractionals128.BitAt(point - 1) == 1) {
       RoundUp(buffer, length, decimal_point);
     }
   }
 }
 
@@ -353,17 +355,17 @@ bool FastFixedDtoa(double v,
       quotient = static_cast<uint32_t>(dividend / divisor);
       remainder = (dividend % divisor) << divisor_power;
     } else {
       divisor <<= divisor_power - exponent;
       quotient = static_cast<uint32_t>(dividend / divisor);
       remainder = (dividend % divisor) << exponent;
     }
     FillDigits32(quotient, buffer, length);
-    FillDigits64FixedLength(remainder, divisor_power, buffer, length);
+    FillDigits64FixedLength(remainder, buffer, length);
     *decimal_point = *length;
   } else if (exponent >= 0) {
     // 0 <= exponent <= 11
     significand <<= exponent;
     FillDigits64(significand, buffer, length);
     *decimal_point = *length;
   } else if (exponent > -kDoubleSignificandSize) {
     // We have to cut the number.
rename from mfbt/double-conversion/fixed-dtoa.h
rename to mfbt/double-conversion/source/fixed-dtoa.h
rename from mfbt/double-conversion/ieee.h
rename to mfbt/double-conversion/source/ieee.h
--- a/mfbt/double-conversion/ieee.h
+++ b/mfbt/double-conversion/source/ieee.h
@@ -94,17 +94,17 @@ class Double {
     if (Sign() < 0) {
       return Double(d64_ - 1).value();
     } else {
       return Double(d64_ + 1).value();
     }
   }
 
   double PreviousDouble() const {
-    if (d64_ == (kInfinity | kSignMask)) return -Double::Infinity();
+    if (d64_ == (kInfinity | kSignMask)) return -Infinity();
     if (Sign() < 0) {
       return Double(d64_ + 1).value();
     } else {
       if (Significand() == 0) return -0.0;
       return Double(d64_ - 1).value();
     }
   }
 
@@ -251,16 +251,18 @@ class Double {
     if (exponent == kDenormalExponent && (significand & kHiddenBit) == 0) {
       biased_exponent = 0;
     } else {
       biased_exponent = static_cast<uint64_t>(exponent + kExponentBias);
     }
     return (significand & kSignificandMask) |
         (biased_exponent << kPhysicalSignificandSize);
   }
+
+  DISALLOW_COPY_AND_ASSIGN(Double);
 };
 
 class Single {
  public:
   static const uint32_t kSignMask = 0x80000000;
   static const uint32_t kExponentMask = 0x7F800000;
   static const uint32_t kSignificandMask = 0x007FFFFF;
   static const uint32_t kHiddenBit = 0x00800000;
@@ -386,13 +388,15 @@ class Single {
  private:
   static const int kExponentBias = 0x7F + kPhysicalSignificandSize;
   static const int kDenormalExponent = -kExponentBias + 1;
   static const int kMaxExponent = 0xFF - kExponentBias;
   static const uint32_t kInfinity = 0x7F800000;
   static const uint32_t kNaN = 0x7FC00000;
 
   const uint32_t d32_;
+
+  DISALLOW_COPY_AND_ASSIGN(Single);
 };
 
 }  // namespace double_conversion
 
 #endif  // DOUBLE_CONVERSION_DOUBLE_H_
rename from mfbt/double-conversion/strtod.cc
rename to mfbt/double-conversion/source/strtod.cc
--- a/mfbt/double-conversion/strtod.cc
+++ b/mfbt/double-conversion/source/strtod.cc
@@ -132,16 +132,17 @@ static void CutToMaxSignificantDigits(Ve
 // buffer_copy_space.
 static void TrimAndCut(Vector<const char> buffer, int exponent,
                        char* buffer_copy_space, int space_size,
                        Vector<const char>* trimmed, int* updated_exponent) {
   Vector<const char> left_trimmed = TrimLeadingZeros(buffer);
   Vector<const char> right_trimmed = TrimTrailingZeros(left_trimmed);
   exponent += left_trimmed.length() - right_trimmed.length();
   if (right_trimmed.length() > kMaxSignificantDecimalDigits) {
+    (void) space_size;  // Mark variable as used.
     ASSERT(space_size >= kMaxSignificantDecimalDigits);
     CutToMaxSignificantDigits(right_trimmed, exponent,
                               buffer_copy_space, updated_exponent);
     *trimmed = Vector<const char>(buffer_copy_space,
                                  kMaxSignificantDecimalDigits);
   } else {
     *trimmed = right_trimmed;
     *updated_exponent = exponent;
@@ -258,17 +259,16 @@ static DiyFp AdjustmentPowerOfTen(int ex
     case 2: return DiyFp(UINT64_2PART_C(0xc8000000, 00000000), -57);
     case 3: return DiyFp(UINT64_2PART_C(0xfa000000, 00000000), -54);
     case 4: return DiyFp(UINT64_2PART_C(0x9c400000, 00000000), -50);
     case 5: return DiyFp(UINT64_2PART_C(0xc3500000, 00000000), -47);
     case 6: return DiyFp(UINT64_2PART_C(0xf4240000, 00000000), -44);
     case 7: return DiyFp(UINT64_2PART_C(0x98968000, 00000000), -40);
     default:
       UNREACHABLE();
-      return DiyFp(0, 0);
   }
 }
 
 
 // If the function returns true then the result is the correct double.
 // Otherwise it is either the correct double or the double that is just below
 // the correct double.
 static bool DiyFpStrtod(Vector<const char> buffer,
@@ -281,17 +281,17 @@ static bool DiyFpStrtod(Vector<const cha
   // If remaining_decimals is different than 0 than the error is at most
   // .5 ulp (unit in the last place).
   // We don't want to deal with fractions and therefore keep a common
   // denominator.
   const int kDenominatorLog = 3;
   const int kDenominator = 1 << kDenominatorLog;
   // Move the remaining decimals into the exponent.
   exponent += remaining_decimals;
-  int error = (remaining_decimals == 0 ? 0 : kDenominator / 2);
+  uint64_t error = (remaining_decimals == 0 ? 0 : kDenominator / 2);
 
   int old_e = input.e();
   input.Normalize();
   error <<= old_e - input.e();
 
   ASSERT(exponent <= PowersOfTenCache::kMaxDecimalExponent);
   if (exponent < PowersOfTenCache::kMinDecimalExponent) {
     *result = 0.0;
@@ -510,17 +510,17 @@ float Strtof(Vector<const char> buffer, 
   float f3 = static_cast<float>(double_next);
   float f4;
   if (is_correct) {
     f4 = f3;
   } else {
     double double_next2 = Double(double_next).NextDouble();
     f4 = static_cast<float>(double_next2);
   }
-  (void) f2; // Mark variable as used.
+  (void) f2;  // Mark variable as used.
   ASSERT(f1 <= f2 && f2 <= f3 && f3 <= f4);
 
   // If the guess doesn't lie near a single-precision boundary we can simply
   // return its float-value.
   if (f1 == f4) {
     return float_guess;
   }
 
rename from mfbt/double-conversion/strtod.h
rename to mfbt/double-conversion/source/strtod.h
rename from mfbt/double-conversion/utils.h
rename to mfbt/double-conversion/source/utils.h
--- a/mfbt/double-conversion/utils.h
+++ b/mfbt/double-conversion/source/utils.h
@@ -28,59 +28,85 @@
 #ifndef DOUBLE_CONVERSION_UTILS_H_
 #define DOUBLE_CONVERSION_UTILS_H_
 
 #include <stdlib.h>
 #include <string.h>
 
 #include "mozilla/Assertions.h"
 #ifndef ASSERT
-#define ASSERT(condition)      MOZ_ASSERT(condition)
+#define ASSERT(condition)         \
+    MOZ_ASSERT(condition)
 #endif
 #ifndef UNIMPLEMENTED
 #define UNIMPLEMENTED() MOZ_CRASH()
 #endif
+#ifndef DOUBLE_CONVERSION_NO_RETURN
+#ifdef _MSC_VER
+#define DOUBLE_CONVERSION_NO_RETURN __declspec(noreturn)
+#else
+#define DOUBLE_CONVERSION_NO_RETURN __attribute__((noreturn))
+#endif
+#endif
 #ifndef UNREACHABLE
+#ifdef _MSC_VER
+void DOUBLE_CONVERSION_NO_RETURN abort_noreturn();
+inline void abort_noreturn() { MOZ_CRASH(); }
+#define UNREACHABLE()   (abort_noreturn())
+#else
 #define UNREACHABLE()   MOZ_CRASH()
 #endif
+#endif
+
 
 // Double operations detection based on target architecture.
 // Linux uses a 80bit wide floating point stack on x86. This induces double
 // rounding, which in turn leads to wrong results.
 // An easy way to test if the floating-point operations are correct is to
 // evaluate: 89255.0/1e22. If the floating-point stack is 64 bits wide then
 // the result is equal to 89255e-22.
 // The best way to test this, is to create a division-function and to compare
 // the output of the division with the expected result. (Inlining must be
 // disabled.)
 // On Linux,x86 89255e-22 != Div_double(89255.0/1e22)
 #if defined(_M_X64) || defined(__x86_64__) || \
     defined(__ARMEL__) || defined(__avr32__) || \
     defined(__hppa__) || defined(__ia64__) || \
     defined(__mips__) || \
     defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \
+    defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \
     defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
     defined(__SH4__) || defined(__alpha__) || \
     defined(_MIPS_ARCH_MIPS32R2) || \
-    defined(__AARCH64EL__) || defined(__aarch64__)
+    defined(__AARCH64EL__) || defined(__aarch64__) || \
+    defined(__riscv)
 #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
+#elif defined(__mc68000__)
+#undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS
 #elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
 #if defined(_WIN32)
 // Windows uses a 64bit wide floating point stack.
 #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
 #else
 #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS
 #endif  // _WIN32
 #else
 #error Target architecture was not detected as supported by Double-Conversion.
 #endif
 
+#if defined(__GNUC__)
+#define DOUBLE_CONVERSION_UNUSED __attribute__((unused))
+#else
+#define DOUBLE_CONVERSION_UNUSED
+#endif
 
 #include <stdint.h>
 
+typedef uint16_t uc16;
+
 // The following macro works on both 32 and 64-bit platforms.
 // Usage: instead of writing 0x1234567890123456
 //      write UINT64_2PART_C(0x12345678,90123456);
 #define UINT64_2PART_C(a, b) (((static_cast<uint64_t>(a) << 32) + 0x##b##u))
 
 
 // The expression ARRAY_SIZE(a) is a compile-time constant of type
 // size_t which represents the number of elements of the given
@@ -275,18 +301,20 @@ class StringBuilder {
 // There is an additional use for BitCast.
 // Recent gccs will warn when they see casts that may result in breakage due to
 // the type-based aliasing rule.  If you have checked that there is no breakage
 // you can use BitCast to cast one pointer type to another.  This confuses gcc
 // enough that it can no longer see that you have cast one pointer type to
 // another thus avoiding the warning.
 template <class Dest, class Source>
 inline Dest BitCast(const Source& source) {
-  static_assert(sizeof(Dest) == sizeof(Source),
-                "BitCast's source and destination types must be the same size");
+  // Compile time assertion: sizeof(Dest) == sizeof(Source)
+  // A compile error here means your Dest and Source have different sizes.
+  DOUBLE_CONVERSION_UNUSED
+      typedef char VerifySizesAreEqual[sizeof(Dest) == sizeof(Source) ? 1 : -1];
 
   Dest dest;
   memmove(&dest, &source, sizeof(dest));
   return dest;
 }
 
 template <class Dest, class Source>
 inline Dest BitCast(Source* source) {