Backout 671a52fff391
authorWes Kocher <wkocher@mozilla.com>
Mon, 12 Jan 2015 14:46:32 -0800
changeset 250554 c47d9b79f2e5f4a1ff3fd44c42cc4fd95673a6fb
parent 250553 50deb480e8774c4630101f1ee9c39a7be4403416
child 250555 38250fe6e828833dba43650237d920bf4896ee18
push id4610
push userjlund@mozilla.com
push dateMon, 30 Mar 2015 18:32:55 +0000
treeherdermozilla-beta@4df54044d9ef [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone38.0a1
backs out671a52fff391a9fb805e3a05e7e337d89e8142d5
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backout 671a52fff391
gfx/ycbcr/moz.build
ipc/app/sha256.c
toolkit/crashreporter/client/crashreporter_win.cpp
toolkit/mozapps/installer/upload-files.mk
toolkit/xre/WindowsCrtPatch.h
--- a/gfx/ycbcr/moz.build
+++ b/gfx/ycbcr/moz.build
@@ -33,19 +33,25 @@ if CONFIG['INTEL_ARCHITECTURE']:
                 'yuv_convert_mmx.cpp',
             ]
     else:
         SOURCES += ['yuv_convert_mmx.cpp']
         SOURCES['yuv_convert_mmx.cpp'].flags += CONFIG['MMX_FLAGS']
 
 if CONFIG['_MSC_VER']:
     if CONFIG['OS_TEST'] == 'x86_64':
-        SOURCES += [
-            'yuv_row_win64.cpp',
-        ]
+        if CONFIG['_MSC_VER'] == '1400':
+            # VC8 doesn't support some SSE2 built-in functions
+            SOURCES += [
+                'yuv_row_win.cpp',
+            ]
+        else:
+            SOURCES += [
+                'yuv_row_win64.cpp',
+            ]
     else:
         SOURCES += [
             'yuv_row_win.cpp',
         ]
 elif CONFIG['OS_ARCH'] in ('Linux', 'SunOS', 'Darwin', 'DragonFly',
                            'FreeBSD', 'NetBSD', 'OpenBSD'):
     SOURCES += [
         'yuv_row_posix.cpp',
--- a/ipc/app/sha256.c
+++ b/ipc/app/sha256.c
@@ -63,21 +63,43 @@ static const PRUint32 K256[64] = {
 };
 
 /* SHA-256 initial hash values */
 static const PRUint32 H256[8] = {
     0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 
     0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
 };
 
-#if defined(_MSC_VER)
+#if (_MSC_VER >= 1300)
 #include <stdlib.h>
 #pragma intrinsic(_byteswap_ulong)
 #define SHA_HTONL(x) _byteswap_ulong(x)
 #define BYTESWAP4(x)  x = SHA_HTONL(x)
+#elif defined(_MSC_VER) && defined(NSS_X86_OR_X64)
+#ifndef FORCEINLINE
+#if (_MSC_VER >= 1200)
+#define FORCEINLINE __forceinline
+#else
+#define FORCEINLINE __inline
+#endif
+#endif
+#define FASTCALL __fastcall
+
+static FORCEINLINE PRUint32 FASTCALL 
+swap4b(PRUint32 dwd) 
+{
+    __asm {
+    	mov   eax,dwd
+	bswap eax
+    }
+}
+
+#define SHA_HTONL(x) swap4b(x)
+#define BYTESWAP4(x)  x = SHA_HTONL(x)
+
 #elif defined(__GNUC__) && defined(NSS_X86_OR_X64)
 static __inline__ PRUint32 swap4b(PRUint32 value)
 {
     __asm__("bswap %0" : "+r" (value));
     return (value);
 }
 #define SHA_HTONL(x) swap4b(x)
 #define BYTESWAP4(x)  x = SHA_HTONL(x)
--- a/toolkit/crashreporter/client/crashreporter_win.cpp
+++ b/toolkit/crashreporter/client/crashreporter_win.cpp
@@ -1434,23 +1434,29 @@ bool UIDeleteFile(const string& oldfile)
 {
   return DeleteFile(UTF8ToWide(oldfile).c_str()) == TRUE;
 }
 
 ifstream* UIOpenRead(const string& filename)
 {
   // adapted from breakpad's src/common/windows/http_upload.cc
 
-#if defined(_MSC_VER)
+  // The "open" method on pre-MSVC8 ifstream implementations doesn't accept a
+  // wchar_t* filename, so use _wfopen directly in that case.  For VC8 and
+  // later, _wfopen has been deprecated in favor of _wfopen_s, which does
+  // not exist in earlier versions, so let the ifstream open the file itself.
+#if _MSC_VER >= 1400  // MSVC 2005/8
   ifstream* file = new ifstream();
   file->open(UTF8ToWide(filename).c_str(), ios::in);
+#elif defined(_MSC_VER)
+  ifstream* file = new ifstream(_wfopen(UTF8ToWide(filename).c_str(), L"r"));
 #else   // GCC
   ifstream* file = new ifstream(WideToMBCP(UTF8ToWide(filename), CP_ACP).c_str(),
                                 ios::in);
-#endif  // _MSC_VER
+#endif  // _MSC_VER >= 1400
 
   return file;
 }
 
 ofstream* UIOpenWrite(const string& filename,
                       bool append, // append=false
                       bool binary) // binary=false
 {
@@ -1458,23 +1464,28 @@ ofstream* UIOpenWrite(const string& file
   std::ios_base::openmode mode = ios::out;
   if (append) {
     mode = mode | ios::app;
   }
   if (binary) {
     mode = mode | ios::binary;
   }
 
-#if defined(_MSC_VER)
+  // For VC8 and later, _wfopen has been deprecated in favor of _wfopen_s,
+  // which does not exist in earlier versions, so let the ifstream open the
+  // file itself.
+#if _MSC_VER >= 1400  // MSVC 2005/8
   ofstream* file = new ofstream();
   file->open(UTF8ToWide(filename).c_str(), mode);
+#elif defined(_MSC_VER)
+#error "Compiling with your version of MSVC is no longer supported."
 #else   // GCC
   ofstream* file = new ofstream(WideToMBCP(UTF8ToWide(filename), CP_ACP).c_str(),
                                 mode);
-#endif  // _MSC_VER
+#endif  // _MSC_VER >= 1400
 
   return file;
 }
 
 struct FileData
 {
   FILETIME timestamp;
   wstring path;
--- a/toolkit/mozapps/installer/upload-files.mk
+++ b/toolkit/mozapps/installer/upload-files.mk
@@ -61,16 +61,24 @@ endif
 
 # JavaScript Shell packaging
 ifndef LIBXUL_SDK
 JSSHELL_BINS  = \
   $(DIST)/bin/js$(BIN_SUFFIX) \
   $(DIST)/bin/$(DLL_PREFIX)mozglue$(DLL_SUFFIX) \
   $(NULL)
 ifndef MOZ_NATIVE_NSPR
+ifeq ($(_MSC_VER),1600)
+JSSHELL_BINS += $(DIST)/bin/msvcr100.dll
+JSSHELL_BINS += $(DIST)/bin/msvcp100.dll
+endif
+ifeq ($(_MSC_VER),1700)
+JSSHELL_BINS += $(DIST)/bin/msvcr110.dll
+JSSHELL_BINS += $(DIST)/bin/msvcp110.dll
+endif
 ifeq ($(_MSC_VER),1800)
 JSSHELL_BINS += $(DIST)/bin/msvcr120.dll
 JSSHELL_BINS += $(DIST)/bin/msvcp120.dll
 endif
 ifdef MOZ_FOLD_LIBS
 JSSHELL_BINS += $(DIST)/bin/$(DLL_PREFIX)nss3$(DLL_SUFFIX)
 else
 JSSHELL_BINS += \
--- a/toolkit/xre/WindowsCrtPatch.h
+++ b/toolkit/xre/WindowsCrtPatch.h
@@ -122,17 +122,21 @@ Init()
   // catch breakage faster.
   //
   // If these assertions fail, see the comment at the top of this file for
   // possible causes. Any changes to the lines below MUST be tested on XP SP2!
   MOZ_ASSERT(!GetModuleHandleA("mozglue.dll"));
   MOZ_ASSERT(!GetModuleHandleA("msvcr120.dll"));
   MOZ_ASSERT(!GetModuleHandleA("msvcr120d.dll"));
 
-#if defined(_M_IX86) && defined(_MSC_VER)
+  // Temporary until we fully switch over to VS 2013:
+  MOZ_ASSERT(!GetModuleHandleA("msvcr100.dll"));
+  MOZ_ASSERT(!GetModuleHandleA("msvcr100d.dll"));
+
+#if defined(_M_IX86) && defined(_MSC_VER) && _MSC_VER >= 1800
   if (!mozilla::IsXPSP3OrLater()) {
     NtdllIntercept.Init("ntdll.dll");
     NtdllIntercept.AddHook("RtlImageNtHeader",
                            reinterpret_cast<intptr_t>(patched_RtlImageNtHeader),
                            reinterpret_cast<void**>(&stub_RtlImageNtHeader));
   }
 #endif
 }