From a054a9a07e33e55a4f5b32bb377b2c4315a7ae8b Mon Sep 17 00:00:00 2001 From: Brian Hackett Date: Wed, 18 Mar 2015 18:01:35 -0700 Subject: [PATCH] Bug 1143521 - Remove IsPoisonedPtr stuff, r=sfink. --- dom/xbl/nsXBLMaybeCompiled.h | 5 ---- js/public/HashTable.h | 3 --- js/public/Id.h | 12 ---------- js/public/RootingAPI.h | 13 ----------- js/public/Utility.h | 34 ---------------------------- js/public/Value.h | 15 ------------ js/src/NamespaceImports.h | 3 --- js/src/frontend/Parser.cpp | 4 ++-- js/src/frontend/TokenStream.h | 2 -- js/src/gc/Barrier.h | 9 -------- js/src/jit/shared/Assembler-shared.h | 6 ----- js/src/jsapi.h | 6 ----- js/src/jscntxtinlines.h | 1 - js/src/jscompartment.cpp | 3 --- js/src/jscompartment.h | 1 - js/src/jsscript.h | 3 --- js/src/vm/Debugger.cpp | 2 -- js/src/vm/ObjectGroup.h | 2 -- js/src/vm/Shape-inl.h | 5 +--- js/src/vm/Shape.h | 3 --- js/src/vm/String-inl.h | 1 - js/src/vm/TypeInference-inl.h | 8 ------- 22 files changed, 3 insertions(+), 138 deletions(-) diff --git a/dom/xbl/nsXBLMaybeCompiled.h b/dom/xbl/nsXBLMaybeCompiled.h index b5977c848a23..abf6084b371e 100644 --- a/dom/xbl/nsXBLMaybeCompiled.h +++ b/dom/xbl/nsXBLMaybeCompiled.h @@ -91,11 +91,6 @@ struct GCMethods > static nsXBLMaybeCompiled initial() { return nsXBLMaybeCompiled(); } - static bool poisoned(nsXBLMaybeCompiled function) - { - return function.IsCompiled() && Base::poisoned(function.GetJSFunction()); - } - static bool needsPostBarrier(nsXBLMaybeCompiled function) { return function.IsCompiled() && Base::needsPostBarrier(function.GetJSFunction()); diff --git a/js/public/HashTable.h b/js/public/HashTable.h index f0211afeb414..451fe6c74daa 100644 --- a/js/public/HashTable.h +++ b/js/public/HashTable.h @@ -539,7 +539,6 @@ struct PointerHasher { typedef Key Lookup; static HashNumber hash(const Lookup &l) { - MOZ_ASSERT(!JS::IsPoisonedPtr(l)); size_t word = reinterpret_cast(l) >> zeroBits; static_assert(sizeof(HashNumber) == 4, "subsequent code assumes a four-byte hash"); @@ -553,8 +552,6 @@ struct PointerHasher #endif } static bool match(const Key &k, const Lookup &l) { - MOZ_ASSERT(!JS::IsPoisonedPtr(k)); - MOZ_ASSERT(!JS::IsPoisonedPtr(l)); return k == l; } static void rekey(Key &k, const Key& newKey) { diff --git a/js/public/Id.h b/js/public/Id.h index e996a75693b6..adb99795d10f 100644 --- a/js/public/Id.h +++ b/js/public/Id.h @@ -126,7 +126,6 @@ SYMBOL_TO_JSID(JS::Symbol *sym) MOZ_ASSERT(sym != nullptr); MOZ_ASSERT((size_t(sym) & JSID_TYPE_MASK) == 0); MOZ_ASSERT(!js::gc::IsInsideNursery(reinterpret_cast(sym))); - MOZ_ASSERT(!JS::IsPoisonedPtr(sym)); JSID_BITS(id) = (size_t(sym) | JSID_TYPE_SYMBOL); return id; } @@ -169,20 +168,9 @@ extern JS_PUBLIC_DATA(const JS::HandleId) JSID_EMPTYHANDLE; namespace js { -inline bool -IsPoisonedId(jsid id) -{ - if (JSID_IS_STRING(id)) - return JS::IsPoisonedPtr(JSID_TO_STRING(id)); - if (JSID_IS_SYMBOL(id)) - return JS::IsPoisonedPtr(JSID_TO_SYMBOL(id)); - return false; -} - template <> struct GCMethods { static jsid initial() { return JSID_VOID; } - static bool poisoned(jsid id) { return IsPoisonedId(id); } static bool needsPostBarrier(jsid id) { return false; } static void postBarrier(jsid *idp) {} static void relocate(jsid *idp) {} diff --git a/js/public/RootingAPI.h b/js/public/RootingAPI.h index 1666350f2522..350e20e2e6c8 100644 --- a/js/public/RootingAPI.h +++ b/js/public/RootingAPI.h @@ -282,14 +282,12 @@ class Heap : public js::HeapBase private: void init(T newPtr) { - MOZ_ASSERT(!js::GCMethods::poisoned(newPtr)); ptr = newPtr; if (js::GCMethods::needsPostBarrier(ptr)) post(); } void set(T newPtr) { - MOZ_ASSERT(!js::GCMethods::poisoned(newPtr)); if (js::GCMethods::needsPostBarrier(newPtr)) { ptr = newPtr; post(); @@ -362,7 +360,6 @@ class TenuredHeap : public js::HeapBase void setPtr(T newPtr) { MOZ_ASSERT((reinterpret_cast(newPtr) & flagsMask) == 0); - MOZ_ASSERT(!js::GCMethods::poisoned(newPtr)); if (newPtr) AssertGCThingMustBeTenured(newPtr); bits = (bits & flagsMask) | reinterpret_cast(newPtr); @@ -526,7 +523,6 @@ class MOZ_STACK_CLASS MutableHandle : public js::MutableHandleBase public: void set(T v) { - MOZ_ASSERT(!js::GCMethods::poisoned(v)); *ptr = v; } @@ -642,7 +638,6 @@ template struct GCMethods { static T *initial() { return nullptr; } - static bool poisoned(T *v) { return JS::IsPoisonedPtr(v); } static bool needsPostBarrier(T *v) { return false; } static void postBarrier(T **vp) {} static void relocate(T **vp) {} @@ -652,7 +647,6 @@ template <> struct GCMethods { static JSObject *initial() { return nullptr; } - static bool poisoned(JSObject *v) { return JS::IsPoisonedPtr(v); } static gc::Cell *asGCThingOrNull(JSObject *v) { if (!v) return nullptr; @@ -674,7 +668,6 @@ template <> struct GCMethods { static JSFunction *initial() { return nullptr; } - static bool poisoned(JSFunction *v) { return JS::IsPoisonedPtr(v); } static bool needsPostBarrier(JSFunction *v) { return v != nullptr && gc::IsInsideNursery(reinterpret_cast(v)); } @@ -708,8 +701,6 @@ class MOZ_STACK_CLASS Rooted : public js::RootedBase this->stack = &cx->thingGCRooters[kind]; this->prev = *stack; *stack = reinterpret_cast*>(this); - - MOZ_ASSERT(!js::GCMethods::poisoned(ptr)); } public: @@ -789,7 +780,6 @@ class MOZ_STACK_CLASS Rooted : public js::RootedBase * interchangeably with a MutableHandleValue. */ void set(T value) { - MOZ_ASSERT(!js::GCMethods::poisoned(value)); ptr = value; } @@ -889,7 +879,6 @@ class FakeRooted : public RootedBase T ptr; void set(const T &value) { - MOZ_ASSERT(!GCMethods::poisoned(value)); ptr = value; } @@ -912,7 +901,6 @@ class FakeMutableHandle : public js::MutableHandleBase } void set(T v) { - MOZ_ASSERT(!js::GCMethods::poisoned(v)); *ptr = v; } @@ -1158,7 +1146,6 @@ class PersistentRooted : public js::PersistentRootedBase, private: void set(T value) { MOZ_ASSERT(initialized()); - MOZ_ASSERT(!js::GCMethods::poisoned(value)); ptr = value; } diff --git a/js/public/Utility.h b/js/public/Utility.h index 2d4c9bbadc46..8828d092f526 100644 --- a/js/public/Utility.h +++ b/js/public/Utility.h @@ -395,40 +395,6 @@ ScrambleHashCode(HashNumber h) } /* namespace js */ -namespace JS { - -/* - * Methods for poisoning GC heap pointer words and checking for poisoned words. - * These are in this file for use in Value methods and so forth. - * - * If the moving GC hazard analysis is in use and detects a non-rooted stack - * pointer to a GC thing, one byte of that pointer is poisoned to refer to an - * invalid location. For both 32 bit and 64 bit systems, the fourth byte of the - * pointer is overwritten, to reduce the likelihood of accidentally changing - * a live integer value. - */ - -inline void PoisonPtr(void *v) -{ -#if defined(JSGC_ROOT_ANALYSIS) && defined(JS_DEBUG) - uint8_t *ptr = (uint8_t *) v + 3; - *ptr = JS_FREE_PATTERN; -#endif -} - -template -inline bool IsPoisonedPtr(T *v) -{ -#if defined(JSGC_ROOT_ANALYSIS) && defined(JS_DEBUG) - uint32_t mask = uintptr_t(v) & 0xff000000; - return mask == uint32_t(JS_FREE_PATTERN << 24); -#else - return false; -#endif -} - -} - /* sixgill annotation defines */ #ifndef HAVE_STATIC_ANNOTATIONS # define HAVE_STATIC_ANNOTATIONS diff --git a/js/public/Value.h b/js/public/Value.h index 686a56ae6fe3..27b275cd98a9 100644 --- a/js/public/Value.h +++ b/js/public/Value.h @@ -1043,17 +1043,14 @@ class Value } void setString(JSString *str) { - MOZ_ASSERT(!IsPoisonedPtr(str)); data = STRING_TO_JSVAL_IMPL(str); } void setSymbol(JS::Symbol *sym) { - MOZ_ASSERT(!IsPoisonedPtr(sym)); data = SYMBOL_TO_JSVAL_IMPL(sym); } void setObject(JSObject &obj) { - MOZ_ASSERT(!IsPoisonedPtr(&obj)); data = OBJECT_TO_JSVAL_IMPL(&obj); } @@ -1641,17 +1638,11 @@ namespace js { template <> struct GCMethods { static JS::Value initial() { return JS::UndefinedValue(); } - static bool poisoned(const JS::Value &v) { - return v.isMarkable() && JS::IsPoisonedPtr(v.toGCThing()); - } }; template <> struct GCMethods { static JS::Value initial() { return JS::UndefinedValue(); } - static bool poisoned(const JS::Value &v) { - return v.isMarkable() && JS::IsPoisonedPtr(v.toGCThing()); - } static gc::Cell *asGCThingOrNull(const JS::Value &v) { return v.isMarkable() ? v.toGCThing() : nullptr; } @@ -1890,12 +1881,6 @@ IMPL_TO_JSVAL(jsval_layout l) namespace JS { -inline bool -IsPoisonedValue(const Value &v) -{ - return js::GCMethods::poisoned(v); -} - #ifdef JS_DEBUG namespace detail { diff --git a/js/src/NamespaceImports.h b/js/src/NamespaceImports.h index a78d42d00e33..84e0a0e494af 100644 --- a/js/src/NamespaceImports.h +++ b/js/src/NamespaceImports.h @@ -56,7 +56,6 @@ using JS::BooleanValue; using JS::DoubleValue; using JS::Float32Value; using JS::Int32Value; -using JS::IsPoisonedValue; using JS::MagicValue; using JS::NullValue; using JS::NumberValue; @@ -67,8 +66,6 @@ using JS::PrivateValue; using JS::StringValue; using JS::UndefinedValue; -using JS::IsPoisonedPtr; - using JS::Latin1Char; using JS::Latin1Chars; using JS::Latin1CharsZ; diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp index fc7915b691c1..324fcaf223d9 100644 --- a/js/src/frontend/Parser.cpp +++ b/js/src/frontend/Parser.cpp @@ -565,7 +565,7 @@ template ObjectBox * Parser::newObjectBox(JSObject *obj) { - MOZ_ASSERT(obj && !IsPoisonedPtr(obj)); + MOZ_ASSERT(obj); /* * We use JSContext.tempLifoAlloc to allocate parsed objects and place them @@ -660,7 +660,7 @@ FunctionBox * Parser::newFunctionBox(Node fn, JSFunction *fun, ParseContext *outerpc, Directives inheritedDirectives, GeneratorKind generatorKind) { - MOZ_ASSERT(fun && !IsPoisonedPtr(fun)); + MOZ_ASSERT(fun); /* * We use JSContext.tempLifoAlloc to allocate parsed objects and place them diff --git a/js/src/frontend/TokenStream.h b/js/src/frontend/TokenStream.h index dc005de9ece2..c685363cffbe 100644 --- a/js/src/frontend/TokenStream.h +++ b/js/src/frontend/TokenStream.h @@ -115,7 +115,6 @@ struct Token void setName(PropertyName *name) { MOZ_ASSERT(type == TOK_NAME); - MOZ_ASSERT(!IsPoisonedPtr(name)); u.name = name; } @@ -123,7 +122,6 @@ struct Token MOZ_ASSERT(type == TOK_STRING || type == TOK_TEMPLATE_HEAD || type == TOK_NO_SUBS_TEMPLATE); - MOZ_ASSERT(!IsPoisonedPtr(atom)); u.atom = atom; } diff --git a/js/src/gc/Barrier.h b/js/src/gc/Barrier.h index 54a3013e35e1..b447549fd920 100644 --- a/js/src/gc/Barrier.h +++ b/js/src/gc/Barrier.h @@ -427,7 +427,6 @@ class BarrieredBase : public BarrieredBaseMixins public: void init(T v) { - MOZ_ASSERT(!GCMethods::poisoned(v)); this->value = v; } @@ -492,7 +491,6 @@ class PreBarriered : public BarrieredBase private: void set(const T &v) { this->pre(); - MOZ_ASSERT(!GCMethods::poisoned(v)); this->value = v; } }; @@ -518,7 +516,6 @@ class HeapPtr : public BarrieredBase explicit HeapPtr(const HeapPtr &v) : BarrieredBase(v) { post(); } void init(T v) { - MOZ_ASSERT(!GCMethods::poisoned(v)); this->value = v; post(); } @@ -538,7 +535,6 @@ class HeapPtr : public BarrieredBase private: void set(const T &v) { this->pre(); - MOZ_ASSERT(!GCMethods::poisoned(v)); this->value = v; post(); } @@ -625,7 +621,6 @@ class RelocatablePtr : public BarrieredBase protected: void set(const T &v) { this->pre(); - MOZ_ASSERT(!GCMethods::poisoned(v)); if (GCMethods::needsPostBarrier(v)) { this->value = v; post(); @@ -840,14 +835,12 @@ class HeapSlot : public BarrieredBase explicit HeapSlot(NativeObject *obj, Kind kind, uint32_t slot, const Value &v) : BarrieredBase(v) { - MOZ_ASSERT(!IsPoisonedValue(v)); post(obj, kind, slot, v); } explicit HeapSlot(NativeObject *obj, Kind kind, uint32_t slot, const HeapSlot &s) : BarrieredBase(s.value) { - MOZ_ASSERT(!IsPoisonedValue(s.value)); post(obj, kind, slot, s); } @@ -868,7 +861,6 @@ class HeapSlot : public BarrieredBase void set(NativeObject *owner, Kind kind, uint32_t slot, const Value &v) { MOZ_ASSERT(preconditionForSet(owner, kind, slot)); - MOZ_ASSERT(!IsPoisonedValue(v)); pre(); value = v; post(owner, kind, slot, v); @@ -876,7 +868,6 @@ class HeapSlot : public BarrieredBase void set(Zone *zone, NativeObject *owner, Kind kind, uint32_t slot, const Value &v) { MOZ_ASSERT(preconditionForSet(zone, owner, kind, slot)); - MOZ_ASSERT(!IsPoisonedValue(v)); pre(zone); value = v; post(owner, kind, slot, v); diff --git a/js/src/jit/shared/Assembler-shared.h b/js/src/jit/shared/Assembler-shared.h index 50402685ecea..2418e8efdf5c 100644 --- a/js/src/jit/shared/Assembler-shared.h +++ b/js/src/jit/shared/Assembler-shared.h @@ -226,8 +226,6 @@ class ImmMaybeNurseryPtr public: explicit ImmMaybeNurseryPtr(const gc::Cell *ptr) : value(ptr) { - MOZ_ASSERT(!IsPoisonedPtr(ptr)); - // asm.js shouldn't be creating GC things MOZ_ASSERT(!IsCompilingAsmJS()); } @@ -257,7 +255,6 @@ class ImmGCPtr explicit ImmGCPtr(const gc::Cell *ptr) : value(ptr) { - MOZ_ASSERT(!IsPoisonedPtr(ptr)); MOZ_ASSERT_IF(ptr, ptr->isTenured()); // asm.js shouldn't be creating GC things @@ -266,7 +263,6 @@ class ImmGCPtr explicit ImmGCPtr(IonNurseryPtr ptr) : value(ptr.ptr) { - MOZ_ASSERT(!IsPoisonedPtr(value)); MOZ_ASSERT(value); // asm.js shouldn't be creating GC things @@ -279,8 +275,6 @@ class ImmGCPtr friend class AssemblerShared; explicit ImmGCPtr(ImmMaybeNurseryPtr ptr) : value(ptr.value) { - MOZ_ASSERT(!IsPoisonedPtr(ptr.value)); - // asm.js shouldn't be creating GC things MOZ_ASSERT(!IsCompilingAsmJS()); } diff --git a/js/src/jsapi.h b/js/src/jsapi.h index d4bdf39f9856..3b0acc8204ab 100644 --- a/js/src/jsapi.h +++ b/js/src/jsapi.h @@ -2671,12 +2671,6 @@ namespace js { template <> struct GCMethods { static JSPropertyDescriptor initial() { return JSPropertyDescriptor(); } - static bool poisoned(const JSPropertyDescriptor &desc) { - return (desc.obj && JS::IsPoisonedPtr(desc.obj)) || - (desc.attrs & JSPROP_GETTER && desc.getter && JS::IsPoisonedPtr(desc.getter)) || - (desc.attrs & JSPROP_SETTER && desc.setter && JS::IsPoisonedPtr(desc.setter)) || - (desc.value.isGCThing() && JS::IsPoisonedPtr(desc.value.toGCThing())); - } }; template <> diff --git a/js/src/jscntxtinlines.h b/js/src/jscntxtinlines.h index 0a6ba7e19f8f..b9810b97b5dc 100644 --- a/js/src/jscntxtinlines.h +++ b/js/src/jscntxtinlines.h @@ -378,7 +378,6 @@ ExclusiveContext::typeLifoAlloc() inline void JSContext::setPendingException(js::Value v) { - MOZ_ASSERT(!IsPoisonedValue(v)); // overRecursed_ is set after the fact by ReportOverRecursed. this->overRecursed_ = false; this->throwing = true; diff --git a/js/src/jscompartment.cpp b/js/src/jscompartment.cpp index 38d75ad195b4..cb9e3bf7a87d 100644 --- a/js/src/jscompartment.cpp +++ b/js/src/jscompartment.cpp @@ -252,9 +252,6 @@ bool JSCompartment::putWrapper(JSContext *cx, const CrossCompartmentKey &wrapped, const js::Value &wrapper) { MOZ_ASSERT(wrapped.wrapped); - MOZ_ASSERT(!IsPoisonedPtr(wrapped.wrapped)); - MOZ_ASSERT(!IsPoisonedPtr(wrapped.debugger)); - MOZ_ASSERT(!IsPoisonedPtr(wrapper.toGCThing())); MOZ_ASSERT_IF(wrapped.kind == CrossCompartmentKey::StringWrapper, wrapper.isString()); MOZ_ASSERT_IF(wrapped.kind != CrossCompartmentKey::StringWrapper, wrapper.isObject()); bool success = crossCompartmentWrappers.put(wrapped, ReadBarriered(wrapper)); diff --git a/js/src/jscompartment.h b/js/src/jscompartment.h index 3a3f8355ada9..0ce8b77afeae 100644 --- a/js/src/jscompartment.h +++ b/js/src/jscompartment.h @@ -110,7 +110,6 @@ struct CrossCompartmentKey struct WrapperHasher : public DefaultHasher { static HashNumber hash(const CrossCompartmentKey &key) { - MOZ_ASSERT(!IsPoisonedPtr(key.wrapped)); static_assert(sizeof(HashNumber) == sizeof(uint32_t), "subsequent code assumes a four-byte hash"); return uint32_t(uintptr_t(key.wrapped)) | uint32_t(key.kind); diff --git a/js/src/jsscript.h b/js/src/jsscript.h index 1c4a9e3936ac..019b9a286588 100644 --- a/js/src/jsscript.h +++ b/js/src/jsscript.h @@ -320,9 +320,6 @@ class Bindings template <> struct GCMethods { static Bindings initial(); - static bool poisoned(const Bindings &bindings) { - return IsPoisonedPtr(bindings.callObjShape()); - } }; class ScriptCounts diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp index de55c5c21a85..ea4e14080757 100644 --- a/js/src/vm/Debugger.cpp +++ b/js/src/vm/Debugger.cpp @@ -6127,8 +6127,6 @@ EvaluateInEnv(JSContext *cx, Handle env, HandleValue thisv, AbstractFrameP MOZ_ASSERT_IF(frame, thisv.get() == frame.thisValue()); MOZ_ASSERT_IF(frame, pc); - MOZ_ASSERT(!IsPoisonedPtr(chars.start().get())); - /* * NB: This function breaks the assumption that the compiler can see all * calls and properly compute a static level. In practice, any non-zero diff --git a/js/src/vm/ObjectGroup.h b/js/src/vm/ObjectGroup.h index b0fef7ad27b8..e80e408ffaee 100644 --- a/js/src/vm/ObjectGroup.h +++ b/js/src/vm/ObjectGroup.h @@ -71,13 +71,11 @@ struct RootKind template <> struct GCMethods { static TaggedProto initial() { return TaggedProto(); } - static bool poisoned(const TaggedProto &v) { return IsPoisonedPtr(v.raw()); } }; template <> struct GCMethods { static TaggedProto initial() { return TaggedProto(); } - static bool poisoned(const TaggedProto &v) { return IsPoisonedPtr(v.raw()); } }; template diff --git a/js/src/vm/Shape-inl.h b/js/src/vm/Shape-inl.h index 414cb98bc407..962982f9deb7 100644 --- a/js/src/vm/Shape-inl.h +++ b/js/src/vm/Shape-inl.h @@ -162,10 +162,7 @@ AutoRooterGetterSetter::Inner::Inner(ExclusiveContext *cx, uint8_t attrs, GetterOp *pgetter_, SetterOp *psetter_) : CustomAutoRooter(cx), attrs(attrs), pgetter(pgetter_), psetter(psetter_) -{ - MOZ_ASSERT_IF(attrs & JSPROP_GETTER, !IsPoisonedPtr(*pgetter)); - MOZ_ASSERT_IF(attrs & JSPROP_SETTER, !IsPoisonedPtr(*psetter)); -} +{} inline AutoRooterGetterSetter::AutoRooterGetterSetter(ExclusiveContext *cx, uint8_t attrs, diff --git a/js/src/vm/Shape.h b/js/src/vm/Shape.h index 71c11611d5af..ce10e5d21f84 100644 --- a/js/src/vm/Shape.h +++ b/js/src/vm/Shape.h @@ -1289,9 +1289,6 @@ struct StackShape {} void updateGetterSetter(GetterOp rawGetter, SetterOp rawSetter) { - MOZ_ASSERT_IF((attrs & JSPROP_GETTER) && rawGetter, !IsPoisonedPtr(rawGetter)); - MOZ_ASSERT_IF((attrs & JSPROP_SETTER) && rawSetter, !IsPoisonedPtr(rawSetter)); - if (rawGetter || rawSetter || (attrs & (JSPROP_GETTER|JSPROP_SETTER))) flags |= Shape::ACCESSOR_SHAPE; else diff --git a/js/src/vm/String-inl.h b/js/src/vm/String-inl.h index 18240b381d4f..f0c8353c39da 100644 --- a/js/src/vm/String-inl.h +++ b/js/src/vm/String-inl.h @@ -136,7 +136,6 @@ MOZ_ALWAYS_INLINE void JSDependentString::init(js::ExclusiveContext *cx, JSLinearString *base, size_t start, size_t length) { - MOZ_ASSERT(!js::IsPoisonedPtr(base)); MOZ_ASSERT(start + length <= base->length()); d.u1.length = length; JS::AutoCheckCannotGC nogc; diff --git a/js/src/vm/TypeInference-inl.h b/js/src/vm/TypeInference-inl.h index fe6d6fe9c8dc..123ec68ca87b 100644 --- a/js/src/vm/TypeInference-inl.h +++ b/js/src/vm/TypeInference-inl.h @@ -1098,20 +1098,12 @@ template <> struct GCMethods { static TypeSet::Type initial() { return TypeSet::UnknownType(); } - static bool poisoned(TypeSet::Type v) { - return (v.isGroup() && IsPoisonedPtr(v.group())) - || (v.isSingleton() && IsPoisonedPtr(v.singleton())); - } }; template <> struct GCMethods { static TypeSet::Type initial() { return TypeSet::UnknownType(); } - static bool poisoned(TypeSet::Type v) { - return (v.isGroup() && IsPoisonedPtr(v.group())) - || (v.isSingleton() && IsPoisonedPtr(v.singleton())); - } }; } // namespace js