Bug 1576303 part 2 - remove now unnecessary workarounds for ppc64le in js/src/gc and js/xpconnect/src. r=tcampbell a=lizzard
authorCameron Kaiser <spectre@floodgap.com>
Thu, 19 Sep 2019 16:49:33 +0000
changeset 555276 ebe8cd92f00173021ba335de15ad279ad0985866
parent 555275 73d7b1a30ec50a1057348f2c6a04b08dae70c847
child 555277 7cb6568eb69b4a520b3b3b7778dc9a3ebfbb4cb2
push id2165
push userffxbld-merge
push dateMon, 14 Oct 2019 16:30:58 +0000
treeherdermozilla-release@0eae18af659f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstcampbell, lizzard
bugs1576303
milestone70.0
Bug 1576303 part 2 - remove now unnecessary workarounds for ppc64le in js/src/gc and js/xpconnect/src. r=tcampbell a=lizzard Depends on D46421 Differential Revision: https://phabricator.services.mozilla.com/D46422
js/src/gc/Barrier.h
js/xpconnect/src/XPCWrappedNative.cpp
--- a/js/src/gc/Barrier.h
+++ b/js/src/gc/Barrier.h
@@ -2,24 +2,16 @@
  * vim: set ts=8 sts=2 et sw=2 tw=80:
  * This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef gc_Barrier_h
 #define gc_Barrier_h
 
-#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
-// Work around a possible compiler bug on ppc64le (bug 1576303).
-// This file and anything downstream of it should not have functions
-// inlined on that architecture due to crashes.
-#pragma GCC push_options
-#pragma GCC optimize ("no-inline-functions")
-#endif
-
 #include "NamespaceImports.h"
 
 #include "gc/Cell.h"
 #include "gc/StoreBuffer.h"
 #include "js/HeapAPI.h"
 #include "js/Id.h"
 #include "js/RootingAPI.h"
 #include "js/Value.h"
@@ -1091,13 +1083,9 @@ template <>
 struct DefineComparisonOps<HeapSlot> : mozilla::TrueType {
   static const Value& get(const HeapSlot& v) { return v.get(); }
 };
 
 } /* namespace detail */
 
 } /* namespace js */
 
-#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
-#pragma GCC pop_options
-#endif
-
 #endif /* gc_Barrier_h */
--- a/js/xpconnect/src/XPCWrappedNative.cpp
+++ b/js/xpconnect/src/XPCWrappedNative.cpp
@@ -1144,20 +1144,16 @@ bool XPCWrappedNative::CallMethod(XPCCal
   if (NS_FAILED(rv)) {
     return Throw(rv, ccx);
   }
 
   JS::Rooted<CallMethodHelper> helper(ccx, /* init = */ ccx);
   return helper.get().Call();
 }
 
-#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
-// Work around a compiler bug on ppc64le (bug 1512162).
-__attribute__ ((noinline,noclone))
-#endif
 bool CallMethodHelper::Call() {
   mCallContext.SetRetVal(JS::UndefinedValue());
 
   mCallContext.GetContext()->SetPendingException(nullptr);
 
   if (mVTableIndex == 0) {
     return QueryInterfaceFastPath();
   }
@@ -1306,20 +1302,16 @@ bool CallMethodHelper::GetOutParamSource
         return false;
       }
     }
   }
 
   return true;
 }
 
-#if (__GNUC__ && __linux__ && __PPC64__ && _LITTLE_ENDIAN)
-// Work around a compiler bug on ppc64le (bug 1512162).
-__attribute__ ((noinline,noclone))
-#endif
 bool CallMethodHelper::GatherAndConvertResults() {
   // now we iterate through the native params to gather and convert results
   uint8_t paramCount = mMethodInfo->GetParamCount();
   for (uint8_t i = 0; i < paramCount; i++) {
     const nsXPTParamInfo& paramInfo = mMethodInfo->GetParam(i);
     if (!paramInfo.IsOut()) {
       continue;
     }