diff --git a/dom/apps/src/Webapps.jsm b/dom/apps/src/Webapps.jsm index eed667dae76..ebbea8a4e12 100644 --- a/dom/apps/src/Webapps.jsm +++ b/dom/apps/src/Webapps.jsm @@ -246,39 +246,9 @@ let DOMApplicationRegistry = { } }, - fixIndexedDb: function fixIndexedDb() { - debug("Fixing indexedDb folder names"); - let idbDir = FileUtils.getDir("indexedDBPDir", ["indexedDB"]); - - if (!idbDir.isDirectory()) { - return; - } - - let re = /^(\d+)\+(.*)\+(f|t)$/; - - let entries = idbDir.directoryEntries; - while (entries.hasMoreElements()) { - let entry = entries.getNext().QueryInterface(Ci.nsIFile); - if (!entry.isDirectory()) { - continue; - } - - let newName = entry.leafName.replace(re, "$1+$3+$2"); - if (newName != entry.leafName) { - try { - entry.moveTo(idbDir, newName); - } catch(e) { } - } - } - }, - loadAndUpdateApps: function loadAndUpdateApps() { let runUpdate = AppsUtils.isFirstRun(Services.prefs); - if (runUpdate) { - this.fixIndexedDb(); - } - let onAppsLoaded = (function onAppsLoaded() { if (runUpdate) { // At first run, set up the permissions diff --git a/dom/system/OSFileConstants.cpp b/dom/system/OSFileConstants.cpp index ded54b7f503..6033741d4e5 100644 --- a/dom/system/OSFileConstants.cpp +++ b/dom/system/OSFileConstants.cpp @@ -380,13 +380,6 @@ static dom::ConstantSpec gLibcProperties[] = { "OSFILE_OFFSETOF_DIRENT_D_TYPE", INT_TO_JSVAL(offsetof (struct dirent, d_type)) }, #endif // defined(DT_UNKNOWN) - // Under MacOS X, |dirfd| is a macro rather than a function, so we - // need a little help to get it to work -#if defined(dirfd) - { "OSFILE_SIZEOF_DIR", INT_TO_JSVAL(sizeof (DIR)) }, - - { "OSFILE_OFFSETOF_DIR_DD_FD", INT_TO_JSVAL(offsetof (DIR, __dd_fd)) }, -#endif // Defining |stat| diff --git a/mfbt/double-conversion/double-conversion.cc b/mfbt/double-conversion/double-conversion.cc index a79fe92d225..650137b492d 100644 --- a/mfbt/double-conversion/double-conversion.cc +++ b/mfbt/double-conversion/double-conversion.cc @@ -162,7 +162,7 @@ bool DoubleToStringConverter::ToShortestIeeeNumber( double value, StringBuilder* result_builder, DoubleToStringConverter::DtoaMode mode) const { - ASSERT(mode == SHORTEST || mode == SHORTEST_SINGLE); + assert(mode == SHORTEST || mode == SHORTEST_SINGLE); if (Double(value).IsSpecial()) { return HandleSpecialValues(value, result_builder); } diff --git a/mfbt/double-conversion/fast-dtoa.cc b/mfbt/double-conversion/fast-dtoa.cc index 1a0f8235092..0609422798a 100644 --- a/mfbt/double-conversion/fast-dtoa.cc +++ b/mfbt/double-conversion/fast-dtoa.cc @@ -529,7 +529,7 @@ static bool Grisu3(double v, if (mode == FAST_DTOA_SHORTEST) { Double(v).NormalizedBoundaries(&boundary_minus, &boundary_plus); } else { - ASSERT(mode == FAST_DTOA_SHORTEST_SINGLE); + assert(mode == FAST_DTOA_SHORTEST_SINGLE); float single_v = static_cast(v); Single(single_v).NormalizedBoundaries(&boundary_minus, &boundary_plus); } diff --git a/mfbt/double-conversion/more-architectures.patch b/mfbt/double-conversion/more-architectures.patch new file mode 100644 index 00000000000..b8d38047e36 --- /dev/null +++ b/mfbt/double-conversion/more-architectures.patch @@ -0,0 +1,30 @@ +diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h +--- a/mfbt/double-conversion/utils.h ++++ b/mfbt/double-conversion/utils.h +@@ -48,20 +48,24 @@ + // 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(__ARMEL__) || defined(__avr32__) || \ ++ defined(__hppa__) || defined(__ia64__) || \ ++ defined(__mips__) || defined(__powerpc__) || \ ++ defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ ++ defined(__SH4__) || defined(__alpha__) || \ + defined(_MIPS_ARCH_MIPS32R2) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +-#elif defined(_M_IX86) || defined(__i386__) ++#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. diff --git a/mfbt/double-conversion/strtod.cc b/mfbt/double-conversion/strtod.cc index 9758989f71d..d5abc937c9d 100644 --- a/mfbt/double-conversion/strtod.cc +++ b/mfbt/double-conversion/strtod.cc @@ -515,15 +515,15 @@ float Strtof(Vector buffer, int exponent) { double double_next2 = Double(double_next).NextDouble(); f4 = static_cast(double_next2); } - ASSERT(f1 <= f2 && f2 <= f3 && f3 <= f4); + 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) { + if ((f1 == f4)) { return float_guess; } - ASSERT((f1 != f2 && f2 == f3 && f3 == f4) || + assert((f1 != f2 && f2 == f3 && f3 == f4) || (f1 == f2 && f2 != f3 && f3 == f4) || (f1 == f2 && f2 == f3 && f3 != f4)); diff --git a/mfbt/double-conversion/update.sh b/mfbt/double-conversion/update.sh index 43091e31253..81add8ef7c0 100755 --- a/mfbt/double-conversion/update.sh +++ b/mfbt/double-conversion/update.sh @@ -3,10 +3,6 @@ # Copies the needed files from a directory containing the original # double-conversion source that we need. -# This was last updated with git rev e5b34421b763f7bf7e4f9081403db417d5a55a36. - -set -e - cp $1/LICENSE ./ cp $1/README ./ @@ -18,3 +14,4 @@ cp $1/src/*.cc ./ patch -p3 < add-mfbt-api-markers.patch patch -p3 < use-StandardInteger.patch +patch -p3 < more-architectures.patch diff --git a/toolkit/components/osfile/osfile_unix_back.jsm b/toolkit/components/osfile/osfile_unix_back.jsm index 720b7186b12..9c7ccb54065 100644 --- a/toolkit/components/osfile/osfile_unix_back.jsm +++ b/toolkit/components/osfile/osfile_unix_back.jsm @@ -108,6 +108,19 @@ Types.time_t = Types.intn_t(OS.Constants.libc.OSFILE_SIZEOF_TIME_T).withName("time_t"); + Types.DIR = + new Type("DIR", + ctypes.StructType("DIR")); + + Types.null_or_DIR_ptr = + Types.DIR.out_ptr.withName("null_or_DIR*"); + Types.null_or_DIR_ptr.importFromC = function importFromC(dir) { + if (dir == null || dir.isNull()) { + return null; + } + return ctypes.CDataFinalizer(dir, _close_dir); + }; + // Structure |dirent| // Building this type is rather complicated, as its layout varies between // variants of Unix. For this reason, we rely on a number of constants @@ -162,37 +175,6 @@ Types.stat = stat.getType(); } - // Structure |DIR| - if ("OSFILE_SIZEOF_DIR" in OS.Constants.libc) { - // On platforms for which we need to access the fields of DIR - // directly (e.g. because certain functions are implemented - // as macros), we need to define DIR as a hollow structure. - let DIR = new OS.Shared.HollowStructure( - "DIR", - OS.Constants.libc.OSFILE_SIZEOF_DIR); - - DIR.add_field_at( - OS.Constants.libc.OSFILE_OFFSETOF_DIR_DD_FD, - "dd_fd", - Types.fd.implementation); - - Types.DIR = DIR.getType(); - } else { - // On other platforms, we keep DIR as a blackbox - Types.DIR = - new Type("DIR", - ctypes.StructType("DIR")); - } - - Types.null_or_DIR_ptr = - Types.DIR.out_ptr.withName("null_or_DIR*"); - Types.null_or_DIR_ptr.importFromC = function importFromC(dir) { - if (dir == null || dir.isNull()) { - return null; - } - return ctypes.CDataFinalizer(dir, _close_dir); - }; - // Declare libc functions as functions of |OS.Unix.File| // Finalizer-related functions @@ -259,20 +241,6 @@ /*return*/ Types.negativeone_or_fd, /*fd*/ Types.fd); - if ("OSFILE_SIZEOF_DIR" in OS.Constants.libc) { - // On platforms for which |dirfd| is a macro - UnixFile.dirfd = - function dirfd(DIRp) { - return Types.DIR.in_ptr.implementation(DIRp).contents.dd_fd; - }; - } else { - // On platforms for which |dirfd| is a function - UnixFile.dirfd = - declareFFI("dirfd", ctypes.default_abi, - /*return*/ Types.negativeone_or_fd, - /*dir*/ Types.DIR.in_ptr); - } - UnixFile.chdir = declareFFI("chdir", ctypes.default_abi, /*return*/ Types.negativeone_or_nothing, diff --git a/toolkit/components/osfile/osfile_unix_front.jsm b/toolkit/components/osfile/osfile_unix_front.jsm index 8ba43653299..7c852b2c868 100644 --- a/toolkit/components/osfile/osfile_unix_front.jsm +++ b/toolkit/components/osfile/osfile_unix_front.jsm @@ -650,14 +650,6 @@ this._dir = null; }; - /** - * Return directory as |File| - */ - File.DirectoryIterator.prototype.unixAsFile = function unixAsFile() { - if (!this._dir) throw File.Error.closed(); - return error_or_file(UnixFile.dirfd(this._dir)); - }; - /** * An entry in a directory. */ diff --git a/toolkit/components/osfile/tests/mochi/worker_test_osfile_front.js b/toolkit/components/osfile/tests/mochi/worker_test_osfile_front.js index e745a428b11..6c9406bbe7a 100644 --- a/toolkit/components/osfile/tests/mochi/worker_test_osfile_front.js +++ b/toolkit/components/osfile/tests/mochi/worker_test_osfile_front.js @@ -553,28 +553,6 @@ function test_iter_dir() }); iterator.close(); - //test for prototype |OS.File.DirectoryIterator.unixAsFile| - if ("unixAsFile" in OS.File.DirectoryIterator.prototype) { - ok(true, "testing property unixAsFile"); - let path = OS.Path.join("chrome", "toolkit", "components", "osfile", "tests", "mochi"); - iterator = new OS.File.DirectoryIterator(path); - - let dir_file = iterator.unixAsFile();// return |File| - let stat0 = dir_file.stat(); - let stat1 = OS.File.stat(path); - - let unix_info_to_string = function unix_info_to_string(info) { - return "| " + info.unixMode + " | " + info.unixOwner + " | " + info.unixGroup + " | " + info.creationDate + " | " + info.lastModificationDate + " | " + info.lastAccessDate + " | " + info.size + " |"; - }; - - let s0_string = unix_info_to_string(stat0); - let s1_string = unix_info_to_string(stat1); - - ok(stat0.isDir, "unixAsFile returned a directory"); - is(s0_string, s1_string, "unixAsFile returned the correct file"); - dir_file.close(); - iterator.close(); - } ok(true, "test_iter_dir: Complete"); }