664509a
diff -up firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162 firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp
664509a
--- firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp.1512162	2019-07-17 22:51:30.000000000 +0200
664509a
+++ firefox-68.0.1/js/xpconnect/src/XPCWrappedNative.cpp	2019-07-25 08:08:18.512528313 +0200
664509a
@@ -1092,7 +1092,7 @@ class MOZ_STACK_CLASS CallMethodHelper f
664509a
   MOZ_ALWAYS_INLINE bool GetOutParamSource(uint8_t paramIndex,
664509a
                                            MutableHandleValue srcp) const;
664509a
 
664509a
-  MOZ_ALWAYS_INLINE bool GatherAndConvertResults();
664509a
+  bool GatherAndConvertResults();
664509a
 
664509a
   MOZ_ALWAYS_INLINE bool QueryInterfaceFastPath();
664509a
 
664509a
@@ -1139,7 +1139,7 @@ class MOZ_STACK_CLASS CallMethodHelper f
664509a
 
664509a
   ~CallMethodHelper();
664509a
 
664509a
-  MOZ_ALWAYS_INLINE bool Call();
664509a
+  bool Call();
664509a
 
664509a
   // Trace implementation so we can put our CallMethodHelper in a Rooted<T>.
664509a
   void trace(JSTracer* aTrc);
664509a
@@ -1157,6 +1157,10 @@ bool XPCWrappedNative::CallMethod(XPCCal
664509a
   return helper.get().Call();
a832830
 }
a832830
 
a832830
+#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
a832830
+// Work around a compiler bug on ppc64le (bug 1512162).
a832830
+__attribute__ ((noinline,noclone))
a832830
+#endif
a832830
 bool CallMethodHelper::Call() {
a832830
   mCallContext.SetRetVal(JS::UndefinedValue());
a832830
 
664509a
@@ -1315,6 +1319,10 @@ bool CallMethodHelper::GetOutParamSource
a832830
   return true;
a832830
 }
a832830
 
a832830
+#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
a832830
+// Work around a compiler bug on ppc64le (bug 1512162).
a832830
+__attribute__ ((noinline,noclone))
a832830
+#endif
a832830
 bool CallMethodHelper::GatherAndConvertResults() {
a832830
   // now we iterate through the native params to gather and convert results
a832830
   uint8_t paramCount = mMethodInfo->GetParamCount();