Bug 1413635 - Give AllocKind enum a uint8_t base r=sfink
authorJon Coppeard <jcoppeard@mozilla.com>
Thu, 02 Nov 2017 11:34:22 +0000
changeset 440608 1d72b8f7f10aa5add2209b9a3b61b9f3ba1e2d55
parent 440607 ec967bb543146d82433dfea5bec356088fbef992
child 440609 f7b7b510805eef3d86e884fc6c8ead9902894b5a
push id8118
push userryanvm@gmail.com
push dateFri, 03 Nov 2017 00:38:34 +0000
treeherdermozilla-beta@1c336e874ae8 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssfink
bugs1413635
milestone58.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1413635 - Give AllocKind enum a uint8_t base r=sfink
js/src/gc/AllocKind.h
js/src/gc/Cell.h
js/src/gc/Nursery.h
--- a/js/src/gc/AllocKind.h
+++ b/js/src/gc/AllocKind.h
@@ -68,19 +68,17 @@ namespace gc {
     D(JITCODE,             JitCode,      js::jit::JitCode,  js::jit::JitCode,  false,  false) \
     D(SCOPE,               Scope,        js::Scope,         js::Scope,         true,   false) \
     D(REGEXP_SHARED,       RegExpShared, js::RegExpShared,  js::RegExpShared,  true,   false)
 
 #define FOR_EACH_ALLOCKIND(D) \
     FOR_EACH_OBJECT_ALLOCKIND(D) \
     FOR_EACH_NONOBJECT_ALLOCKIND(D)
 
-// FIXME: uint8_t would make more sense for the underlying type, but causes
-// miscompilations in GCC (fixed in 4.8.5 and 4.9.3). See also bug 1143966.
-enum class AllocKind {
+enum class AllocKind : uint8_t {
 #define DEFINE_ALLOC_KIND(allocKind, _1, _2, _3, _4, _5) allocKind,
 
     FOR_EACH_OBJECT_ALLOCKIND(DEFINE_ALLOC_KIND)
 
     OBJECT_LIMIT,
     OBJECT_LAST = OBJECT_LIMIT - 1,
 
     FOR_EACH_NONOBJECT_ALLOCKIND(DEFINE_ALLOC_KIND)
--- a/js/src/gc/Cell.h
+++ b/js/src/gc/Cell.h
@@ -37,17 +37,17 @@ CurrentThreadIsIonCompiling();
 #endif
 
 extern void
 TraceManuallyBarrieredGenericPointerEdge(JSTracer* trc, gc::Cell** thingp, const char* name);
 
 namespace gc {
 
 class Arena;
-enum class AllocKind;
+enum class AllocKind : uint8_t;
 struct Chunk;
 class TenuredCell;
 
 // A GC cell is the base class for all GC things.
 struct Cell
 {
   public:
     MOZ_ALWAYS_INLINE bool isTenured() const { return !IsInsideNursery(this); }
--- a/js/src/gc/Nursery.h
+++ b/js/src/gc/Nursery.h
@@ -60,17 +60,17 @@ class JSONPrinter;
 void SetGCZeal(JSRuntime*, uint8_t, uint32_t);
 
 namespace gc {
 class AutoMaybeStartBackgroundAllocation;
 struct Cell;
 class MinorCollectionTracer;
 class RelocationOverlay;
 struct TenureCountCache;
-enum class AllocKind;
+enum class AllocKind : uint8_t;
 class TenuredCell;
 } /* namespace gc */
 
 namespace jit {
 class MacroAssembler;
 } // namespace jit
 
 class TenuringTracer : public JSTracer