From 0ee7223f8a02d507ccef480ba5bb422d920a9a60 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Wed, 11 Jan 2012 09:23:09 +0100 Subject: [PATCH] Bug 332648 - Part h: Move AutoEnumStateArray to jsapi.h; r=evilpie --- js/src/jsapi.cpp | 10 ++++++++++ js/src/jsapi.h | 29 +++++++++++++++++++++++++++++ js/src/jscntxt.cpp | 13 ------------- js/src/jscntxt.h | 30 ------------------------------ js/src/jsgc.cpp | 2 +- 5 files changed, 40 insertions(+), 44 deletions(-) diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index 8aafde9af32..96adb27f22b 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -87,6 +87,7 @@ #include "frontend/BytecodeCompiler.h" #include "frontend/BytecodeEmitter.h" #include "js/MemoryMetrics.h" +#include "mozilla/Util.h" // DebugOnly #include "jsatominlines.h" #include "jsinferinlines.h" @@ -6873,4 +6874,13 @@ AutoGCRooter::~AutoGCRooter() context->autoGCRooters = down; } +AutoEnumStateRooter::~AutoEnumStateRooter() +{ + if (!stateValue.isNull()) { + DebugOnly ok = + obj->enumerate(context, JSENUMERATE_DESTROY, &stateValue, 0); + JS_ASSERT(ok); + } +} + } // namespace JS diff --git a/js/src/jsapi.h b/js/src/jsapi.h index af0e9e2375d..11c104e9b3f 100644 --- a/js/src/jsapi.h +++ b/js/src/jsapi.h @@ -1003,6 +1003,35 @@ class AutoArrayRooter : private AutoGCRooter { JS_DECL_USE_GUARD_OBJECT_NOTIFIER }; +/* The auto-root for enumeration object and its state. */ +class AutoEnumStateRooter : private AutoGCRooter +{ + public: + AutoEnumStateRooter(JSContext *cx, JSObject *obj + JS_GUARD_OBJECT_NOTIFIER_PARAM) + : AutoGCRooter(cx, ENUMERATOR), obj(obj), stateValue() + { + JS_GUARD_OBJECT_NOTIFIER_INIT; + JS_ASSERT(obj); + } + + ~AutoEnumStateRooter(); + + friend void AutoGCRooter::trace(JSTracer *trc); + + const Value &state() const { return stateValue; } + Value *addr() { return &stateValue; } + + protected: + void trace(JSTracer *trc); + + JSObject * const obj; + + private: + Value stateValue; + JS_DECL_USE_GUARD_OBJECT_NOTIFIER +}; + } /* namespace JS */ /************************************************************************/ diff --git a/js/src/jscntxt.cpp b/js/src/jscntxt.cpp index 73cfd61f54a..df108217026 100644 --- a/js/src/jscntxt.cpp +++ b/js/src/jscntxt.cpp @@ -1700,19 +1700,6 @@ JSContext::sizeOfIncludingThis(JSMallocSizeOfFun mallocSizeOf) const busyArrays.sizeOfExcludingThis(mallocSizeOf); } -namespace js { - -AutoEnumStateRooter::~AutoEnumStateRooter() -{ - if (!stateValue.isNull()) { - DebugOnly ok = - obj->enumerate(context, JSENUMERATE_DESTROY, &stateValue, 0); - JS_ASSERT(ok); - } -} - -} /* namespace js */ - namespace JS { #if defined JS_THREADSAFE && defined DEBUG diff --git a/js/src/jscntxt.h b/js/src/jscntxt.h index 4e714629e96..12ce1e83bef 100644 --- a/js/src/jscntxt.h +++ b/js/src/jscntxt.h @@ -1597,36 +1597,6 @@ typedef RootedVar RootedVarAtom; typedef RootedVar RootedVarId; typedef RootedVar RootedVarValue; -/* FIXME(bug 332648): Move this into a public header. */ -/* The auto-root for enumeration object and its state. */ -class AutoEnumStateRooter : private AutoGCRooter -{ - public: - AutoEnumStateRooter(JSContext *cx, JSObject *obj - JS_GUARD_OBJECT_NOTIFIER_PARAM) - : AutoGCRooter(cx, ENUMERATOR), obj(obj), stateValue() - { - JS_GUARD_OBJECT_NOTIFIER_INIT; - JS_ASSERT(obj); - } - - ~AutoEnumStateRooter(); - - friend void AutoGCRooter::trace(JSTracer *trc); - - const Value &state() const { return stateValue; } - Value *addr() { return &stateValue; } - - protected: - void trace(JSTracer *trc); - - JSObject * const obj; - - private: - Value stateValue; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER -}; - #ifdef JS_HAS_XML_SUPPORT class AutoXMLRooter : private AutoGCRooter { public: diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index e1950b450b8..0a8c1ee5e50 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -1942,7 +1942,7 @@ AutoIdArray::trace(JSTracer *trc) void AutoEnumStateRooter::trace(JSTracer *trc) { - gc::MarkRoot(trc, obj, "js::AutoEnumStateRooter.obj"); + gc::MarkRoot(trc, obj, "JS::AutoEnumStateRooter.obj"); } inline void