diff --git a/aclocal.m4 b/aclocal.m4
index efaca9b457d3..2e6734a9440a 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -16,6 +16,7 @@ builtin(include, build/autoconf/mozheader.m4)dnl
builtin(include, build/autoconf/acwinpaths.m4)dnl
builtin(include, build/autoconf/lto.m4)dnl
builtin(include, build/autoconf/gcc-pr49911.m4)dnl
+builtin(include, build/autoconf/frameptr.m4)dnl
MOZ_PROG_CHECKMSYS()
diff --git a/browser/branding/nightly/pref/firefox-branding.js b/browser/branding/nightly/pref/firefox-branding.js
index ddcafbd00e9b..13e9dd53c86e 100644
--- a/browser/branding/nightly/pref/firefox-branding.js
+++ b/browser/branding/nightly/pref/firefox-branding.js
@@ -1,7 +1,8 @@
pref("startup.homepage_override_url","http://www.mozilla.org/projects/%APP%/%VERSION%/whatsnew/");
pref("startup.homepage_welcome_url","http://www.mozilla.org/projects/%APP%/%VERSION%/firstrun/");
// The time interval between checks for a new version (in seconds)
-pref("app.update.interval", 7200); // 2 hours
+// nightly=8 hours, official=24 hours
+pref("app.update.interval", 28800);
// The time interval between the downloading of mar file chunks in the
// background (in seconds)
pref("app.update.download.backgroundInterval", 60);
diff --git a/browser/branding/unofficial/pref/firefox-branding.js b/browser/branding/unofficial/pref/firefox-branding.js
index b3e8634aa003..17a7ce468e1d 100644
--- a/browser/branding/unofficial/pref/firefox-branding.js
+++ b/browser/branding/unofficial/pref/firefox-branding.js
@@ -1,7 +1,8 @@
pref("startup.homepage_override_url","http://www.mozilla.org/projects/%APP%/%VERSION%/whatsnew/");
pref("startup.homepage_welcome_url","http://www.mozilla.org/projects/%APP%/%VERSION%/firstrun/");
// The time interval between checks for a new version (in seconds)
-pref("app.update.interval", 86400); // 24 hours
+// nightly=8 hours, official=24 hours
+pref("app.update.interval", 28800);
// The time interval between the downloading of mar file chunks in the
// background (in seconds)
pref("app.update.download.backgroundInterval", 60);
diff --git a/browser/locales/en-US/searchplugins/list.txt b/browser/locales/en-US/searchplugins/list.txt
index 7c7d9ee7a1ef..2a1141a984f7 100644
--- a/browser/locales/en-US/searchplugins/list.txt
+++ b/browser/locales/en-US/searchplugins/list.txt
@@ -2,5 +2,6 @@ amazondotcom
bing
eBay
google
+twitter
wikipedia
yahoo
diff --git a/browser/locales/en-US/searchplugins/twitter.xml b/browser/locales/en-US/searchplugins/twitter.xml
new file mode 100644
index 000000000000..9f1850a59c7b
--- /dev/null
+++ b/browser/locales/en-US/searchplugins/twitter.xml
@@ -0,0 +1,11 @@
+
+Twitter
+Realtime Twitter Search
+UTF-8
+data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A/v7+D/7+/j/+/v5g/v7+YP7+/mD+/v5I/v7+KP///wD///8A////AP///wD///8A////AP///wD+/v4H/v7+UPbv4pHgx47B1K9Y3tWwWN7Ur1je3sKCx+rbuKj+/v5n/v7+GP///wD///8A////AP///wD+/v4Y+fbweM2ycMe2iB7/vI0f/8STIf/KlyL/zJki/8yZIv/LmCL/0ahK5/Hp1JH+/v4Y////AP///wD///8A7OTTaquHN+CujkXPs5ZTv6N6G/+2iB7/xpUh/8yZIv/MmSL/zJki/8yZIv/Kmy738OjUi////wD///8A////AMKtfY7w6+Ef////AP///wD///8A3sqbp8iWIf/MmSL/zJki/8yZIv/MmSL/y5gi/8mePO7+/v4w////AP///wD///8A////AP///wD+/v4H/v7+V9CtWN3KmCL/zJki/8yZIv/MmSL/zJki/8yZIv/JlyH/5tSqp/7+/mD+/v4/////AP///wD///8A+PXvJtGyZdXNnS/3y5gi/8qYIv/LmCL/zJki/8yZIv/MmSL/y5gi/82iPO7LqVfe0byMmf///wD///8A/v7+D/Do1JHKmy73ypci/8KSIP+/jyD/xpQh/8uYIv/MmSL/zJki/8qYIv+/jyD/rIEd/9nKqH7///8A////APPu4TzAlSz3wZEg/7mLH/+sgR3/uZdGz7mLH//JlyH/zJki/8yZIv/GlSH/to0r9eXbxD/Vx6dg////AP7+/h/p38WhtIsq9al/HP+kfyjuybaKgf///wCzjzjlwJAg/8qYIv/JlyH/u4wf/8CkYrn///8A////AP///wDj2sRMnHUa/7meYa7Vx6dg////AP///wD///8A2MmnYK6DHf++jiD/vo4g/62CHf/k2sQ/////AP///wD///8A8OvhH/f07w////8A////AP///wD///8A////AP///wC/p3Cfpnwc/66GKvPg1LZ8////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANXHp2DJtoqByLWKgf///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AADgPwAAwA8AAIAHAAB4BwAA+AMAAPAAAADgAQAA4AMAAMEDAADPhwAA/48AAP/nAAD//wAA//8AAA==
+https://twitter.com/search/
+
+
+
+
+
diff --git a/build/autoconf/frameptr.m4 b/build/autoconf/frameptr.m4
new file mode 100644
index 000000000000..77a6d71aedc8
--- /dev/null
+++ b/build/autoconf/frameptr.m4
@@ -0,0 +1,25 @@
+dnl Set MOZ_FRAMEPTR_FLAGS to the flags that should be used for enabling or
+dnl disabling frame pointers in this architecture based on the configure
+dnl options
+
+AC_DEFUN([MOZ_SET_FRAMEPTR_FLAGS], [
+ if test "$GNU_CC"; then
+ MOZ_ENABLE_FRAME_PTR="-fno-omit-frame-pointer"
+ MOZ_DISABLE_FRAME_PTR="-fomit-frame-pointer"
+ else
+ case "$target" in
+ *-mingw*)
+ MOZ_ENABLE_FRAME_PTR="-Oy-"
+ MOZ_DISABLE_FRAME_PTR="-Oy"
+ ;;
+ esac
+ fi
+
+ # if we are debugging or profiling, we want a frame pointer.
+ if test -z "$MOZ_OPTIMIZE" -o \
+ -n "$MOZ_PROFILING" -o -n "$MOZ_DEBUG"; then
+ MOZ_FRAMEPTR_FLAGS="$MOZ_ENABLE_FRAME_PTR"
+ else
+ MOZ_FRAMEPTR_FLAGS="$MOZ_DISABLE_FRAME_PTR"
+ fi
+])
diff --git a/config/autoconf.mk.in b/config/autoconf.mk.in
index ea68d9fcc3f0..52ccb44c59b5 100644
--- a/config/autoconf.mk.in
+++ b/config/autoconf.mk.in
@@ -303,6 +303,7 @@ ACDEFINES = @MOZ_DEFINES@
WARNINGS_AS_ERRORS = @WARNINGS_AS_ERRORS@
MOZ_OPTIMIZE = @MOZ_OPTIMIZE@
+MOZ_FRAMEPTR_FLAGS = @MOZ_FRAMEPTR_FLAGS@
MOZ_OPTIMIZE_FLAGS = @MOZ_OPTIMIZE_FLAGS@
MOZ_PGO_OPTIMIZE_FLAGS = @MOZ_PGO_OPTIMIZE_FLAGS@
MOZ_OPTIMIZE_LDFLAGS = @MOZ_OPTIMIZE_LDFLAGS@
diff --git a/config/config.mk b/config/config.mk
index 54c03ed8e989..bfb2c1596945 100644
--- a/config/config.mk
+++ b/config/config.mk
@@ -463,6 +463,9 @@ endif # MOZ_OPTIMIZE == 1
endif # MOZ_OPTIMIZE
endif # CROSS_COMPILE
+CFLAGS += $(MOZ_FRAMEPTR_FLAGS)
+CXXFLAGS += $(MOZ_FRAMEPTR_FLAGS)
+
# Check for FAIL_ON_WARNINGS & FAIL_ON_WARNINGS_DEBUG (Shorthand for Makefiles
# to request that we use the 'warnings as errors' compile flags)
diff --git a/configure.in b/configure.in
index cc0305262a09..261d86765953 100644
--- a/configure.in
+++ b/configure.in
@@ -2071,12 +2071,7 @@ case "$target" in
*-darwin*)
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- # If we're building with --enable-profiling, we need a frame pointer.
- if test -z "$MOZ_PROFILING"; then
- MOZ_OPTIMIZE_FLAGS="-O3 -fomit-frame-pointer"
- else
- MOZ_OPTIMIZE_FLAGS="-O3 -fno-omit-frame-pointer"
- fi
+ MOZ_OPTIMIZE_FLAGS="-O3"
_PEDANTIC=
CFLAGS="$CFLAGS -fno-common"
CXXFLAGS="$CXXFLAGS -fno-common"
@@ -2188,12 +2183,7 @@ ia64*-hpux*)
TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
MOZ_GFX_OPTIMIZE_MOBILE=1
- # If we're building with --enable-profiling, we need a frame pointer.
- if test -z "$MOZ_PROFILING"; then
- MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fomit-frame-pointer"
- else
- MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions -fno-omit-frame-pointer"
- fi
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks -fno-reorder-functions"
;;
*-*linux*)
@@ -2211,14 +2201,8 @@ ia64*-hpux*)
# -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
esac
- # If we're building with --enable-profiling, we need a frame pointer.
- if test -z "$MOZ_PROFILING"; then
- MOZ_FRAMEPTR_FLAGS="-fomit-frame-pointer"
- else
- MOZ_FRAMEPTR_FLAGS="-fno-omit-frame-pointer"
- fi
- MOZ_PGO_OPTIMIZE_FLAGS="-O3 $MOZ_FRAMEPTR_FLAGS"
- MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK $MOZ_FRAMEPTR_FLAGS"
+ MOZ_PGO_OPTIMIZE_FLAGS="-O3"
+ MOZ_OPTIMIZE_FLAGS="-Os -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
MOZ_DEBUG_FLAGS="-g"
fi
@@ -2315,12 +2299,7 @@ ia64*-hpux*)
MOZ_DEBUG_FLAGS='-Zi'
MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
WARNINGS_AS_ERRORS='-WX'
- # If we're building with --enable-profiling, we need -Oy-, which forces a frame pointer.
- if test -z "$MOZ_PROFILING"; then
- MOZ_OPTIMIZE_FLAGS='-O1'
- else
- MOZ_OPTIMIZE_FLAGS='-O1 -Oy-'
- fi
+ MOZ_OPTIMIZE_FLAGS='-O1'
MOZ_FIX_LINK_PATHS=
DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
XPCOM_FROZEN_LDOPTS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
@@ -6897,6 +6876,8 @@ else
MOZ_OPTIMIZE=
fi ], MOZ_OPTIMIZE=1)
+MOZ_SET_FRAMEPTR_FLAGS
+
if test "$COMPILE_ENVIRONMENT"; then
if test -n "$MOZ_OPTIMIZE"; then
AC_MSG_CHECKING([for valid optimization flags])
@@ -6915,6 +6896,7 @@ fi
fi # COMPILE_ENVIRONMENT
AC_SUBST(MOZ_OPTIMIZE)
+AC_SUBST(MOZ_FRAMEPTR_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
diff --git a/content/smil/crashtests/678847-1.svg b/content/smil/crashtests/678847-1.svg
deleted file mode 100644
index 1fa2718cbb75..000000000000
--- a/content/smil/crashtests/678847-1.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/content/smil/crashtests/678938-1.svg b/content/smil/crashtests/678938-1.svg
deleted file mode 100644
index f3f8308fa50f..000000000000
--- a/content/smil/crashtests/678938-1.svg
+++ /dev/null
@@ -1,11 +0,0 @@
-
diff --git a/content/smil/crashtests/crashtests.list b/content/smil/crashtests/crashtests.list
index d3e0f95ee2f5..631dfb9403d2 100644
--- a/content/smil/crashtests/crashtests.list
+++ b/content/smil/crashtests/crashtests.list
@@ -37,8 +37,6 @@ load 615872-1.svg
load 650732-1.svg
load 665334-1.svg
load 669225-1.svg
-load 669225-2.svg
load 670313-1.svg
+load 669225-2.svg
load 678822-1.svg
-load 678847-1.svg
-load 678938-1.svg
diff --git a/content/smil/nsSMILAnimationFunction.cpp b/content/smil/nsSMILAnimationFunction.cpp
index b7866cc93a58..1763381c0ad2 100644
--- a/content/smil/nsSMILAnimationFunction.cpp
+++ b/content/smil/nsSMILAnimationFunction.cpp
@@ -478,21 +478,6 @@ nsSMILAnimationFunction::InterpolateResult(const nsSMILValueArray& aValues,
if (calcMode == CALC_DISCRETE || NS_FAILED(rv)) {
double scaledSimpleProgress =
ScaleSimpleProgress(simpleProgress, CALC_DISCRETE);
-
- // Floating-point errors can mean that, for example, a sample time of 29s in
- // a 100s duration animation gives us a simple progress of 0.28999999999
- // instead of the 0.29 we'd expect. Normally this isn't a noticeable
- // problem, but when we have sudden jumps in animation values (such as is
- // the case here with discrete animation) we can get unexpected results.
- //
- // To counteract this, before we perform a floor() on the animation
- // progress, we add a tiny fudge factor to push us into the correct interval
- // in cases where floating-point errors might cause us to fall short.
- static const double kFloatingPointFudgeFactor = 1.0e-16;
- if (scaledSimpleProgress + kFloatingPointFudgeFactor <= 1.0) {
- scaledSimpleProgress += kFloatingPointFudgeFactor;
- }
-
if (IsToAnimation()) {
// We don't follow SMIL 3, 12.6.4, where discrete to animations
// are the same as animations. Instead, we treat it as a
diff --git a/content/smil/nsSMILTimedElement.cpp b/content/smil/nsSMILTimedElement.cpp
index c754dc937494..d3eec352d69b 100644
--- a/content/smil/nsSMILTimedElement.cpp
+++ b/content/smil/nsSMILTimedElement.cpp
@@ -758,10 +758,10 @@ nsSMILTimedElement::Rewind()
mSeekState == SEEK_BACKWARD_FROM_ACTIVE,
"Rewind in the middle of a forwards seek?");
- // Putting us in the startup state will ensure we skip doing any interval
- // updates
- mElementState = STATE_STARTUP;
ClearIntervals();
+ // ClearIntervals puts us in to the POSTACTIVE state but we're doing a full
+ // rewind so go back to the startup state
+ mElementState = STATE_STARTUP;
UnsetBeginSpec(RemoveNonDynamic);
UnsetEndSpec(RemoveNonDynamic);
@@ -784,8 +784,6 @@ nsSMILTimedElement::Rewind()
mPrevRegisteredMilestone = sMaxMilestone;
RegisterMilestone();
- NS_ABORT_IF_FALSE(!mCurrentInterval,
- "Current interval is set at end of rewind");
}
namespace
@@ -1334,9 +1332,7 @@ nsSMILTimedElement::ClearSpecs(TimeValueSpecList& aSpecs,
void
nsSMILTimedElement::ClearIntervals()
{
- if (mElementState != STATE_STARTUP) {
- mElementState = STATE_POSTACTIVE;
- }
+ mElementState = STATE_POSTACTIVE;
mCurrentRepeatIteration = 0;
ResetCurrentInterval();
@@ -1688,15 +1684,14 @@ nsSMILTimedElement::GetNextInterval(const nsSMILInterval* aPrevInterval,
// a) We never had any end attribute to begin with (and hence we should
// just use the active duration after allowing for the possibility of
// an end instance provided by a DOM call), OR
- // b) We have no resolved (not incl. indefinite) end instances
- // (SMIL only says "if the instance list is empty"--but if we have
- // indefinite/unresolved instance times then there must be a good
- // reason we haven't used them (since they'll be >= tempBegin) such as
- // avoiding creating a self-referential loop. In any case, the interval
- // should be allowed to be open.), OR
+ // b) We have an end attribute but no end instances--this is a special
+ // case that is needed for syncbase timing so that animations of the
+ // following sort: can be
+ // resolved (see SVGT 1.2 Test Suite animate-elem-221-t.svg) by first
+ // establishing an interval of unresolved duration, OR
// c) We have end events which leave the interval open-ended.
PRBool openEndedIntervalOk = mEndSpecs.IsEmpty() ||
- !HaveResolvedEndTimes() ||
+ mEndInstances.IsEmpty() ||
EndHasEventConditions();
if (!tempEnd && !openEndedIntervalOk)
return PR_FALSE; // Bad interval
@@ -2253,17 +2248,6 @@ nsSMILTimedElement::GetPreviousInterval() const
: mOldIntervals[mOldIntervals.Length()-1].get();
}
-PRBool
-nsSMILTimedElement::HaveResolvedEndTimes() const
-{
- if (mEndInstances.IsEmpty())
- return PR_FALSE;
-
- // mEndInstances is sorted so if the first time is not resolved then none of
- // them are
- return mEndInstances[0]->Time().IsResolved();
-}
-
PRBool
nsSMILTimedElement::EndHasEventConditions() const
{
diff --git a/content/smil/nsSMILTimedElement.h b/content/smil/nsSMILTimedElement.h
index 9ecd40dcf695..f214df5e5955 100644
--- a/content/smil/nsSMILTimedElement.h
+++ b/content/smil/nsSMILTimedElement.h
@@ -525,7 +525,6 @@ protected:
const nsSMILInstanceTime* GetEffectiveBeginInstance() const;
const nsSMILInterval* GetPreviousInterval() const;
PRBool HasPlayed() const { return !mOldIntervals.IsEmpty(); }
- PRBool HaveResolvedEndTimes() const;
PRBool EndHasEventConditions() const;
// Reset the current interval by first passing ownership to a temporary
diff --git a/dom/base/nsDOMClassInfo.cpp b/dom/base/nsDOMClassInfo.cpp
index 94f0342d2612..909145ef494a 100644
--- a/dom/base/nsDOMClassInfo.cpp
+++ b/dom/base/nsDOMClassInfo.cpp
@@ -48,6 +48,7 @@
#include "AccessCheck.h"
#include "xpcprivate.h"
+#include "XPCWrapper.h"
#include "nscore.h"
#include "nsDOMClassInfo.h"
@@ -516,7 +517,6 @@ static const char kDOMStringBundleURL[] =
#define WINDOW_SCRIPTABLE_FLAGS \
(nsIXPCScriptable::WANT_GETPROPERTY | \
- nsIXPCScriptable::WANT_SETPROPERTY | \
nsIXPCScriptable::WANT_PRECREATE | \
nsIXPCScriptable::WANT_FINALIZE | \
nsIXPCScriptable::WANT_EQUALITY | \
@@ -5269,39 +5269,6 @@ nsWindowSH::GetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
return NS_OK;
}
-NS_IMETHODIMP
-nsWindowSH::SetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
- JSObject *obj, jsid id, jsval *vp, PRBool *_retval)
-{
- if (id == sLocation_id) {
- JSAutoRequest ar(cx);
-
- JSString *val = ::JS_ValueToString(cx, *vp);
- NS_ENSURE_TRUE(val, NS_ERROR_UNEXPECTED);
-
- nsCOMPtr window = do_QueryWrappedNative(wrapper);
- NS_ENSURE_TRUE(window, NS_ERROR_UNEXPECTED);
-
- nsCOMPtr location;
- nsresult rv = window->GetLocation(getter_AddRefs(location));
- NS_ENSURE_TRUE(NS_SUCCEEDED(rv) && location, rv);
-
- nsCOMPtr holder;
- rv = WrapNative(cx, obj, location, &NS_GET_IID(nsIDOMLocation), PR_TRUE,
- vp, getter_AddRefs(holder));
- NS_ENSURE_SUCCESS(rv, rv);
-
- nsDependentJSString depStr;
- NS_ENSURE_TRUE(depStr.init(cx, val), NS_ERROR_UNEXPECTED);
-
- rv = location->SetHref(depStr);
-
- return NS_FAILED(rv) ? rv : NS_SUCCESS_I_DID_SOMETHING;
- }
-
- return NS_OK;
-}
-
NS_IMETHODIMP
nsWindowSH::Enumerate(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
JSObject *obj, PRBool *_retval)
@@ -6392,6 +6359,68 @@ static JSNewResolveOp sOtherResolveFuncs[] = {
mozilla::dom::workers::ResolveWorkerClasses
};
+template
+static nsresult
+LocationSetterGuts(JSContext *cx, JSObject *obj, jsval *vp)
+{
+ // This function duplicates some of the logic in XPC_WN_HelperSetProperty
+ XPCWrappedNative *wrapper =
+ XPCWrappedNative::GetWrappedNativeOfJSObject(cx, obj);
+
+ // The error checks duplicate code in THROW_AND_RETURN_IF_BAD_WRAPPER
+ NS_ENSURE_TRUE(wrapper, NS_ERROR_XPC_BAD_OP_ON_WN_PROTO);
+ NS_ENSURE_TRUE(wrapper->IsValid(), NS_ERROR_XPC_HAS_BEEN_SHUTDOWN);
+
+ nsCOMPtr xpcomObj = do_QueryWrappedNative(wrapper);
+ NS_ENSURE_TRUE(xpcomObj, NS_ERROR_UNEXPECTED);
+
+ nsCOMPtr location;
+ nsresult rv = xpcomObj->GetLocation(getter_AddRefs(location));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ JSString *val = ::JS_ValueToString(cx, *vp);
+ NS_ENSURE_TRUE(val, NS_ERROR_UNEXPECTED);
+
+ nsDependentJSString depStr;
+ NS_ENSURE_TRUE(depStr.init(cx, val), NS_ERROR_UNEXPECTED);
+
+ rv = location->SetHref(depStr);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr holder;
+ return WrapNative(cx, JS_GetGlobalForScopeChain(cx), location,
+ &NS_GET_IID(nsIDOMLocation), PR_TRUE, vp,
+ getter_AddRefs(holder));
+}
+
+template
+static JSBool
+LocationSetter(JSContext *cx, JSObject *obj, jsid id, JSBool strict,
+ jsval *vp)
+{
+ nsresult rv = LocationSetterGuts(cx, obj, vp);
+ if (NS_FAILED(rv)) {
+ if (!::JS_IsExceptionPending(cx)) {
+ nsDOMClassInfo::ThrowJSException(cx, rv);
+ }
+ return JS_FALSE;
+ }
+
+ return JS_TRUE;
+}
+
+static JSBool
+LocationSetterUnwrapper(JSContext *cx, JSObject *obj, jsid id, JSBool strict,
+ jsval *vp)
+{
+ JSObject *wrapped = XPCWrapper::UnsafeUnwrapSecurityWrapper(obj);
+ if (wrapped) {
+ obj = wrapped;
+ }
+
+ return LocationSetter(cx, obj, id, strict, vp);
+}
+
NS_IMETHODIMP
nsWindowSH::NewResolve(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
JSObject *obj, jsid id, PRUint32 flags,
@@ -6544,7 +6573,8 @@ nsWindowSH::NewResolve(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
NS_ENSURE_SUCCESS(rv, rv);
JSBool ok = JS_WrapValue(cx, &v) &&
- JS_DefinePropertyById(cx, obj, id, v, nsnull, nsnull,
+ JS_DefinePropertyById(cx, obj, id, v, nsnull,
+ LocationSetterUnwrapper,
JSPROP_PERMANENT | JSPROP_ENUMERATE);
if (!ok) {
@@ -8177,7 +8207,8 @@ nsDocumentSH::NewResolve(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
JSAutoRequest ar(cx);
- JSBool ok = ::JS_DefinePropertyById(cx, obj, id, v, nsnull, nsnull,
+ JSBool ok = ::JS_DefinePropertyById(cx, obj, id, v, nsnull,
+ LocationSetter,
JSPROP_PERMANENT | JSPROP_ENUMERATE);
if (!ok) {
@@ -8222,34 +8253,6 @@ NS_IMETHODIMP
nsDocumentSH::SetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
JSObject *obj, jsid id, jsval *vp, PRBool *_retval)
{
- if (id == sLocation_id) {
- nsCOMPtr doc = do_QueryWrappedNative(wrapper);
- NS_ENSURE_TRUE(doc, NS_ERROR_UNEXPECTED);
-
- nsCOMPtr location;
- nsresult rv = doc->GetLocation(getter_AddRefs(location));
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (location) {
- JSAutoRequest ar(cx);
-
- JSString *val = ::JS_ValueToString(cx, *vp);
- NS_ENSURE_TRUE(val, NS_ERROR_UNEXPECTED);
-
- nsDependentJSString depStr;
- NS_ENSURE_TRUE(depStr.init(cx, val), NS_ERROR_UNEXPECTED);
-
- rv = location->SetHref(depStr);
- NS_ENSURE_SUCCESS(rv, rv);
-
- nsCOMPtr holder;
- rv = WrapNative(cx, JS_GetGlobalForScopeChain(cx), location,
- &NS_GET_IID(nsIDOMLocation), PR_TRUE, vp,
- getter_AddRefs(holder));
- return NS_FAILED(rv) ? rv : NS_SUCCESS_I_DID_SOMETHING;
- }
- }
-
if (id == sDocumentURIObject_id && IsPrivilegedScript()) {
// We don't want privileged script that can read this property to set it,
// but _do_ want to allow everyone else to set a value they can then read.
diff --git a/dom/base/nsDOMClassInfo.h b/dom/base/nsDOMClassInfo.h
index 7f0e94bba1a8..5efb38084cb4 100644
--- a/dom/base/nsDOMClassInfo.h
+++ b/dom/base/nsDOMClassInfo.h
@@ -407,8 +407,6 @@ public:
#endif
NS_IMETHOD GetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
JSObject *obj, jsid id, jsval *vp, PRBool *_retval);
- NS_IMETHOD SetProperty(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
- JSObject *obj, jsid id, jsval *vp, PRBool *_retval);
NS_IMETHOD Enumerate(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
JSObject *obj, PRBool *_retval);
NS_IMETHOD NewResolve(nsIXPConnectWrappedNative *wrapper, JSContext *cx,
diff --git a/dom/tests/mochitest/dom-level0/Makefile.in b/dom/tests/mochitest/dom-level0/Makefile.in
index 55ace1c5d62f..a08896bb4a8b 100644
--- a/dom/tests/mochitest/dom-level0/Makefile.in
+++ b/dom/tests/mochitest/dom-level0/Makefile.in
@@ -55,6 +55,7 @@ _TEST_FILES = \
test_location.html \
test_innerWidthHeight_script.html \
innerWidthHeight_script.html \
+ test_location_setters.html \
$(NULL)
libs:: $(_TEST_FILES)
diff --git a/dom/tests/mochitest/dom-level0/test_location_setters.html b/dom/tests/mochitest/dom-level0/test_location_setters.html
new file mode 100644
index 000000000000..eb159c7ff2d9
--- /dev/null
+++ b/dom/tests/mochitest/dom-level0/test_location_setters.html
@@ -0,0 +1,78 @@
+
+
+
+
+ Test for Bug 639720
+
+
+
+
+Mozilla Bug 639720
+
+
+
+
+
+
+
+
+
+
+
diff --git a/editor/composer/src/nsEditorSpellCheck.cpp b/editor/composer/src/nsEditorSpellCheck.cpp
index ad4bc1675ec0..ff641d3ce438 100644
--- a/editor/composer/src/nsEditorSpellCheck.cpp
+++ b/editor/composer/src/nsEditorSpellCheck.cpp
@@ -729,8 +729,9 @@ nsEditorSpellCheck::UpdateCurrentDictionary()
}
// otherwise, get language from preferences
+ nsAutoString preferedDict(Preferences::GetLocalizedString("spellchecker.dictionary"));
if (dictName.IsEmpty()) {
- dictName.Assign(Preferences::GetLocalizedString("spellchecker.dictionary"));
+ dictName.Assign(preferedDict);
}
if (dictName.IsEmpty())
@@ -755,27 +756,50 @@ nsEditorSpellCheck::UpdateCurrentDictionary()
rv = SetCurrentDictionary(dictName);
if (NS_FAILED(rv)) {
// required dictionary was not available. Try to get a dictionary
- // matching at least language part of dictName: If required dictionary is
- // "aa-bb", we try "aa", then we try any available dictionary aa-XX
+ // matching at least language part of dictName:
+
nsAutoString langCode;
PRInt32 dashIdx = dictName.FindChar('-');
if (dashIdx != -1) {
langCode.Assign(Substring(dictName, 0, dashIdx));
- // try to use langCode
- rv = SetCurrentDictionary(langCode);
} else {
langCode.Assign(dictName);
}
+
+ nsDefaultStringComparator comparator;
+
+ // try dictionary.spellchecker preference if it starts with langCode (and
+ // if we haven't tried it already)
+ if (!preferedDict.IsEmpty() && !dictName.Equals(preferedDict) &&
+ nsStyleUtil::DashMatchCompare(preferedDict, langCode, comparator)) {
+ rv = SetCurrentDictionary(preferedDict);
+ }
+
+ // Otherwise, try langCode (if we haven't tried it already)
+ if (NS_FAILED(rv)) {
+ if (!dictName.Equals(langCode) && !preferedDict.Equals(langCode)) {
+ rv = SetCurrentDictionary(preferedDict);
+ }
+ }
+
+ // Otherwise, try any available dictionary aa-XX
if (NS_FAILED(rv)) {
// loop over avaible dictionaries; if we find one with required
// language, use it
nsTArray dictList;
rv = mSpellChecker->GetDictionaryList(&dictList);
NS_ENSURE_SUCCESS(rv, rv);
- nsDefaultStringComparator comparator;
PRInt32 i, count = dictList.Length();
for (i = 0; i < count; i++) {
nsAutoString dictStr(dictList.ElementAt(i));
+
+ if (dictStr.Equals(dictName) ||
+ dictStr.Equals(preferedDict) ||
+ dictStr.Equals(langCode)) {
+ // We have already tried it
+ continue;
+ }
+
if (nsStyleUtil::DashMatchCompare(dictStr, langCode, comparator) &&
NS_SUCCEEDED(SetCurrentDictionary(dictStr))) {
break;
diff --git a/gfx/cairo/README b/gfx/cairo/README
index 3605a8da1742..4c694156b07d 100644
--- a/gfx/cairo/README
+++ b/gfx/cairo/README
@@ -172,8 +172,6 @@ fixup-unbounded.patch: Hack to work around bad assumption.
quartz-get-image-performance: Make cairo_quartz_get_image faster in the failure case by not flushing unless we are going to succeed.
-lround-c99-only.patch: Only use lround in C99 programs.
-
==== pixman patches ====
pixman-android-cpu-detect.patch: Add CPU detection support for Android, where we can't reliably access /proc/self/auxv.
diff --git a/gfx/cairo/cairo/src/cairo-misc.c b/gfx/cairo/cairo/src/cairo-misc.c
index e0ed70cb6172..603725955813 100644
--- a/gfx/cairo/cairo/src/cairo-misc.c
+++ b/gfx/cairo/cairo/src/cairo-misc.c
@@ -483,7 +483,7 @@ _cairo_operator_bounded_by_either (cairo_operator_t op)
}
-#if DISABLE_SOME_FLOATING_POINT || __STDC_VERSION__ < 199901L
+#if DISABLE_SOME_FLOATING_POINT
/* This function is identical to the C99 function lround(), except that it
* performs arithmetic rounding (floor(d + .5) instead of away-from-zero rounding) and
* has a valid input range of (INT_MIN, INT_MAX] instead of
diff --git a/gfx/cairo/cairo/src/cairoint.h b/gfx/cairo/cairo/src/cairoint.h
index 828fde8f1b72..e44442a908a2 100644
--- a/gfx/cairo/cairo/src/cairoint.h
+++ b/gfx/cairo/cairo/src/cairoint.h
@@ -974,7 +974,7 @@ _cairo_round (double r)
return floor (r + .5);
}
-#if DISABLE_SOME_FLOATING_POINT || __STDC_VERSION__ < 199901L
+#if DISABLE_SOME_FLOATING_POINT
cairo_private int
_cairo_lround (double d) cairo_const;
#else
diff --git a/gfx/cairo/lround-c99-only.patch b/gfx/cairo/lround-c99-only.patch
deleted file mode 100644
index 9002235f0e2c..000000000000
--- a/gfx/cairo/lround-c99-only.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Only use lround in C99 programs.
-
-diff --git a/gfx/cairo/cairo/src/cairo-misc.c b/gfx/cairo/cairo/src/cairo-misc.c
---- a/gfx/cairo/cairo/src/cairo-misc.c
-+++ b/gfx/cairo/cairo/src/cairo-misc.c
-@@ -478,17 +478,17 @@ _cairo_operator_bounded_by_either (cairo
- case CAIRO_OPERATOR_IN:
- case CAIRO_OPERATOR_DEST_IN:
- case CAIRO_OPERATOR_DEST_ATOP:
- return 0;
- }
-
- }
-
--#if DISABLE_SOME_FLOATING_POINT
-+#if DISABLE_SOME_FLOATING_POINT || __STDC_VERSION__ < 199901L
- /* This function is identical to the C99 function lround(), except that it
- * performs arithmetic rounding (floor(d + .5) instead of away-from-zero rounding) and
- * has a valid input range of (INT_MIN, INT_MAX] instead of
- * [INT_MIN, INT_MAX]. It is much faster on both x86 and FPU-less systems
- * than other commonly used methods for rounding (lround, round, rint, lrint
- * or float (d + 0.5)).
- *
- * The reason why this function is much faster on x86 than other
-diff --git a/gfx/cairo/cairo/src/cairoint.h b/gfx/cairo/cairo/src/cairoint.h
---- a/gfx/cairo/cairo/src/cairoint.h
-+++ b/gfx/cairo/cairo/src/cairoint.h
-@@ -969,17 +969,17 @@ _cairo_restrict_value (double value, dou
- * away from 0. _cairo_round rounds halfway cases toward negative infinity.
- * This matches the rounding behaviour of _cairo_lround. */
- static inline double cairo_const
- _cairo_round (double r)
- {
- return floor (r + .5);
- }
-
--#if DISABLE_SOME_FLOATING_POINT
-+#if DISABLE_SOME_FLOATING_POINT || __STDC_VERSION__ < 199901L
- cairo_private int
- _cairo_lround (double d) cairo_const;
- #else
- #define _cairo_lround lround
- #endif
-
- cairo_private uint16_t
- _cairo_half_from_float (float f) cairo_const;
diff --git a/js/src/aclocal.m4 b/js/src/aclocal.m4
index 6b0a411d8ca5..144a8641298a 100644
--- a/js/src/aclocal.m4
+++ b/js/src/aclocal.m4
@@ -11,5 +11,6 @@ builtin(include, build/autoconf/mozprog.m4)dnl
builtin(include, build/autoconf/acwinpaths.m4)dnl
builtin(include, build/autoconf/lto.m4)dnl
builtin(include, build/autoconf/gcc-pr49911.m4)dnl
+builtin(include, build/autoconf/frameptr.m4)dnl
MOZ_PROG_CHECKMSYS()
diff --git a/js/src/build/autoconf/frameptr.m4 b/js/src/build/autoconf/frameptr.m4
new file mode 100644
index 000000000000..77a6d71aedc8
--- /dev/null
+++ b/js/src/build/autoconf/frameptr.m4
@@ -0,0 +1,25 @@
+dnl Set MOZ_FRAMEPTR_FLAGS to the flags that should be used for enabling or
+dnl disabling frame pointers in this architecture based on the configure
+dnl options
+
+AC_DEFUN([MOZ_SET_FRAMEPTR_FLAGS], [
+ if test "$GNU_CC"; then
+ MOZ_ENABLE_FRAME_PTR="-fno-omit-frame-pointer"
+ MOZ_DISABLE_FRAME_PTR="-fomit-frame-pointer"
+ else
+ case "$target" in
+ *-mingw*)
+ MOZ_ENABLE_FRAME_PTR="-Oy-"
+ MOZ_DISABLE_FRAME_PTR="-Oy"
+ ;;
+ esac
+ fi
+
+ # if we are debugging or profiling, we want a frame pointer.
+ if test -z "$MOZ_OPTIMIZE" -o \
+ -n "$MOZ_PROFILING" -o -n "$MOZ_DEBUG"; then
+ MOZ_FRAMEPTR_FLAGS="$MOZ_ENABLE_FRAME_PTR"
+ else
+ MOZ_FRAMEPTR_FLAGS="$MOZ_DISABLE_FRAME_PTR"
+ fi
+])
diff --git a/js/src/config/autoconf.mk.in b/js/src/config/autoconf.mk.in
index a719c93c3e1f..b1094b41b9e9 100644
--- a/js/src/config/autoconf.mk.in
+++ b/js/src/config/autoconf.mk.in
@@ -143,6 +143,7 @@ WARNINGS_AS_ERRORS = @WARNINGS_AS_ERRORS@
FAIL_ON_WARNINGS = @FAIL_ON_WARNINGS@
MOZ_OPTIMIZE = @MOZ_OPTIMIZE@
+MOZ_FRAMEPTR_FLAGS = @MOZ_FRAMEPTR_FLAGS@
MOZ_OPTIMIZE_FLAGS = @MOZ_OPTIMIZE_FLAGS@
MOZ_PGO_OPTIMIZE_FLAGS = @MOZ_PGO_OPTIMIZE_FLAGS@
MOZ_OPTIMIZE_LDFLAGS = @MOZ_OPTIMIZE_LDFLAGS@
diff --git a/js/src/config/config.mk b/js/src/config/config.mk
index 54c03ed8e989..bfb2c1596945 100644
--- a/js/src/config/config.mk
+++ b/js/src/config/config.mk
@@ -463,6 +463,9 @@ endif # MOZ_OPTIMIZE == 1
endif # MOZ_OPTIMIZE
endif # CROSS_COMPILE
+CFLAGS += $(MOZ_FRAMEPTR_FLAGS)
+CXXFLAGS += $(MOZ_FRAMEPTR_FLAGS)
+
# Check for FAIL_ON_WARNINGS & FAIL_ON_WARNINGS_DEBUG (Shorthand for Makefiles
# to request that we use the 'warnings as errors' compile flags)
diff --git a/js/src/configure.in b/js/src/configure.in
index cd6d63436c7b..f8ce401ebff5 100644
--- a/js/src/configure.in
+++ b/js/src/configure.in
@@ -1972,13 +1972,7 @@ case "$target" in
*-darwin*)
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
- # If we're building with --enable-profiling, we need a frame pointer.
- if test -z "$MOZ_PROFILING"; then
- MOZ_FRAMEPTR_FLAGS="-fomit-frame-pointer"
- else
- MOZ_FRAMEPTR_FLAGS="-fno-omit-frame-pointer"
- fi
- MOZ_OPTIMIZE_FLAGS="-O3 $MOZ_FRAMEPTR_FLAGS -fno-stack-protector"
+ MOZ_OPTIMIZE_FLAGS="-O3 -fno-stack-protector"
_PEDANTIC=
CFLAGS="$CFLAGS -fpascal-strings -fno-common"
CXXFLAGS="$CXXFLAGS -fpascal-strings -fno-common"
@@ -2083,13 +2077,7 @@ ia64*-hpux*)
TARGET_NSPR_MDCPUCFG='\"md/_linux.cfg\"'
MOZ_GFX_OPTIMIZE_MOBILE=1
- # If we're building with --enable-profiling, we need a frame pointer.
- if test -z "$MOZ_PROFILING"; then
- MOZ_FRAMEPTR_FLAGS="-fomit-frame-pointer"
- else
- MOZ_FRAMEPTR_FLAGS="-fno-omit-frame-pointer"
- fi
- MOZ_OPTIMIZE_FLAGS="-O3 -freorder-blocks -fno-reorder-functions $MOZ_FRAMEPTR_FLAGS"
+ MOZ_OPTIMIZE_FLAGS="-O3 -freorder-blocks -fno-reorder-functions"
# The Maemo builders don't know about this flag
MOZ_ARM_VFP_FLAGS="-mfpu=vfp"
;;
@@ -2109,14 +2097,8 @@ ia64*-hpux*)
# -Os is broken on gcc 4.1.x 4.2.x, 4.5.x we need to tweak it to get good results.
MOZ_OPTIMIZE_SIZE_TWEAK="-finline-limit=50"
esac
- # If we're building with --enable-profiling, we need a frame pointer.
- if test -z "$MOZ_PROFILING"; then
- MOZ_FRAMEPTR_FLAGS="-fomit-frame-pointer"
- else
- MOZ_FRAMEPTR_FLAGS="-fno-omit-frame-pointer"
- fi
- MOZ_PGO_OPTIMIZE_FLAGS="-O3 $MOZ_FRAMEPTR_FLAGS"
- MOZ_OPTIMIZE_FLAGS="-O3 -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK $MOZ_FRAMEPTR_FLAGS"
+ MOZ_PGO_OPTIMIZE_FLAGS="-O3"
+ MOZ_OPTIMIZE_FLAGS="-O3 -freorder-blocks $MOZ_OPTIMIZE_SIZE_TWEAK"
MOZ_DEBUG_FLAGS="-g"
fi
@@ -2236,13 +2218,7 @@ ia64*-hpux*)
MOZ_DEBUG_FLAGS='-Zi'
MOZ_DEBUG_LDFLAGS='-DEBUG -DEBUGTYPE:CV'
WARNINGS_AS_ERRORS='-WX'
- # If we're building with --enable-profiling, we need -Oy-, which forces a frame pointer.
- if test -z "$MOZ_PROFILING"; then
- MOZ_FRAMEPTR_FLAGS=
- else
- MOZ_FRAMEPTR_FLAGS='-Oy-'
- fi
- MOZ_OPTIMIZE_FLAGS="-O2 $MOZ_FRAMEPTR_FLAGS"
+ MOZ_OPTIMIZE_FLAGS="-O2"
MOZ_JS_LIBS='$(libdir)/mozjs.lib'
MOZ_FIX_LINK_PATHS=
DYNAMIC_XPCOM_LIBS='$(LIBXUL_DIST)/lib/xpcom.lib $(LIBXUL_DIST)/lib/xpcom_core.lib $(LIBXUL_DIST)/lib/mozalloc.lib'
@@ -4393,6 +4369,8 @@ else
MOZ_OPTIMIZE=
fi ], MOZ_OPTIMIZE=1)
+MOZ_SET_FRAMEPTR_FLAGS
+
if test "$COMPILE_ENVIRONMENT"; then
if test -n "$MOZ_OPTIMIZE"; then
AC_MSG_CHECKING([for valid optimization flags])
@@ -4411,6 +4389,7 @@ fi
fi # COMPILE_ENVIRONMENT
AC_SUBST(MOZ_OPTIMIZE)
+AC_SUBST(MOZ_FRAMEPTR_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_FLAGS)
AC_SUBST(MOZ_OPTIMIZE_LDFLAGS)
AC_SUBST(MOZ_OPTIMIZE_SIZE_TWEAK)
diff --git a/js/src/jstracer.cpp b/js/src/jstracer.cpp
index 6ffe74f56640..99c9c4d2e6c9 100644
--- a/js/src/jstracer.cpp
+++ b/js/src/jstracer.cpp
@@ -17171,6 +17171,7 @@ LoopProfile::profileOperation(JSContext* cx, JSOp op)
stackPush(StackValue(v1.isConst && v2.isConst));
} else if (op == JSOP_AND) {
bool b = !!js_ValueToBoolean(cx->regs().sp[-1]);
+ StackValue v = stackAt(-1);
if (b)
stackPop();
} else {
diff --git a/layout/reftests/svg/smil/anim-discrete-values-2.svg b/layout/reftests/svg/smil/anim-discrete-values-2.svg
deleted file mode 100644
index c05693e143e9..000000000000
--- a/layout/reftests/svg/smil/anim-discrete-values-2.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-
diff --git a/layout/reftests/svg/smil/anim-discrete-values-3.svg b/layout/reftests/svg/smil/anim-discrete-values-3.svg
deleted file mode 100644
index c6b850bfd651..000000000000
--- a/layout/reftests/svg/smil/anim-discrete-values-3.svg
+++ /dev/null
@@ -1,21 +0,0 @@
-
diff --git a/layout/reftests/svg/smil/reftest.list b/layout/reftests/svg/smil/reftest.list
index ec5331521a25..ccba051c23a9 100644
--- a/layout/reftests/svg/smil/reftest.list
+++ b/layout/reftests/svg/smil/reftest.list
@@ -55,8 +55,6 @@ include event/reftest.list
# General tests
== anim-discrete-values-1.svg anim-standard-ref.svg
-== anim-discrete-values-2.svg anim-standard-ref.svg
-== anim-discrete-values-3.svg anim-standard-ref.svg
== anim-discrete-replace-sum-1.svg anim-standard-ref.svg
== anim-discrete-sum-none-1.svg anim-standard-ref.svg
== anim-discrete-sum-sum-1.svg anim-standard-ref.svg
diff --git a/modules/libjar/zipwriter/src/nsDeflateConverter.cpp b/modules/libjar/zipwriter/src/nsDeflateConverter.cpp
index 841c22d1f7bf..9975a8bccfa8 100644
--- a/modules/libjar/zipwriter/src/nsDeflateConverter.cpp
+++ b/modules/libjar/zipwriter/src/nsDeflateConverter.cpp
@@ -76,8 +76,6 @@ nsresult nsDeflateConverter::Init()
case WRAP_GZIP:
window += 16;
break;
- default:
- break;
}
zerr = deflateInit2(&mZstream, mLevel, Z_DEFLATED, window, 8,
diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/Makefile.in b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/Makefile.in
index cee6f8608edd..b1471a17de54 100644
--- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/Makefile.in
+++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/Makefile.in
@@ -52,7 +52,7 @@ ifdef MOZ_THUMB2 #{
# work around it by telling gcc that the THUMB frame pointer is a
# vanilla callee-save register.
OS_CXXFLAGS += -fomit-frame-pointer
-MOZ_OPTIMIZE_FLAGS := $(filter-out -fno-omit-frame-pointer,$(MOZ_OPTIMIZE_FLAGS))
+MOZ_FRAMEPTR_FLAGS := -fomit-frame-pointer
endif #}
MODULE = handler
diff --git a/toolkit/mozapps/installer/packager.mk b/toolkit/mozapps/installer/packager.mk
index bcbbf6e14939..93a54c6c7ba0 100644
--- a/toolkit/mozapps/installer/packager.mk
+++ b/toolkit/mozapps/installer/packager.mk
@@ -397,8 +397,18 @@ endif
ifdef MOZ_OMNIJAR
+# Set MOZ_CAN_RUN_PROGRAMS for trivial cases.
+ifndef MOZ_CAN_RUN_PROGRAMS
+ifdef UNIVERSAL_BINARY
+MOZ_CAN_RUN_PROGRAMS=1
+endif
+ifndef CROSS_COMPILE
+MOZ_CAN_RUN_PROGRAMS=1
+endif
+endif # MOZ_CAN_RUN_PROGRAMS
+
ifdef GENERATE_CACHE
-ifneq (1_,$(if $(CROSS_COMPILE),1,0)_$(UNIVERSAL_BINARY))
+ifdef MOZ_CAN_RUN_PROGRAMS
ifdef RUN_TEST_PROGRAM
_ABS_RUN_TEST_PROGRAM = $(call core_abspath,$(RUN_TEST_PROGRAM))
endif
@@ -477,7 +487,7 @@ endif
# dummy macro if we don't have PSM built
SIGN_NSS =
-ifneq (1_,$(if $(CROSS_COMPILE),1,0)_$(UNIVERSAL_BINARY))
+ifdef MOZ_CAN_RUN_PROGRAMS
ifdef MOZ_PSM
SIGN_NSS = @echo signing nss libraries;
diff --git a/widget/src/android/AndroidJNI.cpp b/widget/src/android/AndroidJNI.cpp
index 6aadc8e85e9a..ec7c8cb33538 100644
--- a/widget/src/android/AndroidJNI.cpp
+++ b/widget/src/android/AndroidJNI.cpp
@@ -171,11 +171,12 @@ Java_org_mozilla_gecko_GeckoAppShell_onChangeNetworkLinkStatus(JNIEnv *jenv, jcl
}
NS_EXPORT void JNICALL
-Java_org_mozilla_gecko_GeckoAppShell_reportJavaCrash(JNIEnv *jenv, jclass, jstring stack)
+Java_org_mozilla_gecko_GeckoAppShell_reportJavaCrash(JNIEnv *, jclass, jstring stack)
{
#ifdef MOZ_CRASHREPORTER
- nsJNIString javaStack(stack, jenv);
- CrashReporter::AppendAppNotesToCrashReport(NS_ConvertUTF16toUTF8(javaStack));
+ nsJNIString javaStack(stack);
+ CrashReporter::AppendAppNotesToCrashReport(
+ NS_ConvertUTF16toUTF8(javaStack));
#endif
abort();
}
diff --git a/xpcom/reflect/xptcall/src/md/unix/Makefile.in b/xpcom/reflect/xptcall/src/md/unix/Makefile.in
index c6d3a9bb00bf..deba1759dcbb 100644
--- a/xpcom/reflect/xptcall/src/md/unix/Makefile.in
+++ b/xpcom/reflect/xptcall/src/md/unix/Makefile.in
@@ -69,10 +69,14 @@ ifeq (Darwin,$(OS_ARCH))
ifeq (86,$(findstring 86,$(OS_TEST)))
ifneq (x86_64,$(OS_TEST))
# If we compile xptcinvoke_unixish_x86.cpp with -fomit-frame-pointer
-# we end up crashing on startup, presumably because of the %esp munging we do
-# when KEEP_STACK_16_BYTE_ALIGNED. So let's not use that flag here.
-# NOTE: MODULE_OPTIMIZE_FLAGS must be set before including config.mk
-MODULE_OPTIMIZE_FLAGS=-O3
+# we end up crashing on startup. This is because
+# "movl %5, %%eax\n\t" /* function index */
+# becomes
+# mov 0x1c(%esp),%eax
+# but we have modified esp.
+# NOTE: MOZ_FRAMEPTR_FLAGS must be set before including config.mk
+# FIXME: change the file instead of using this hack.
+MOZ_FRAMEPTR_FLAGS=-fno-omit-frame-pointer
endif
endif
endif