mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backout fdb7c9649a07 (bug 805967), 72003517a631 (bug 806538), 354250ed1e72 (bug 770538), ea6edd3749ce (bug 770538) for bustage on a CLOSED TREE
This commit is contained in:
parent
a7bb0ec116
commit
83cd16dcd5
@ -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
|
||||
|
@ -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|
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
30
mfbt/double-conversion/more-architectures.patch
Normal file
30
mfbt/double-conversion/more-architectures.patch
Normal 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.
|
@ -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));
|
||||
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user