Backout fdb7c9649a07 (bug 805967), 72003517a631 (bug 806538), 354250ed1e72 (bug 770538), ea6edd3749ce (bug 770538) for bustage on a CLOSED TREE

This commit is contained in:
Ed Morley 2012-10-30 17:56:20 +00:00
parent 777eed8444
commit 415466b584
10 changed files with 49 additions and 121 deletions

View File

@ -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

View File

@ -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|

View File

@ -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);
}

View File

@ -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<float>(v);
Single(single_v).NormalizedBoundaries(&boundary_minus, &boundary_plus);
}

View File

@ -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.

View File

@ -515,15 +515,15 @@ float Strtof(Vector<const char> buffer, int exponent) {
double double_next2 = Double(double_next).NextDouble();
f4 = static_cast<float>(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));

View File

@ -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

View File

@ -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,

View File

@ -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.
*/

View File

@ -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");
}