diff --git a/js/src/builtin/MapObject.h b/js/src/builtin/MapObject.h index f1eab2037b8a..838214351665 100644 --- a/js/src/builtin/MapObject.h +++ b/js/src/builtin/MapObject.h @@ -8,12 +8,13 @@ #ifndef MapObject_h__ #define MapObject_h__ +#include "mozilla/FloatingPoint.h" +#include "mozilla/GuardObjects.h" + #include "jsapi.h" #include "jscntxt.h" #include "jsobj.h" -#include "mozilla/FloatingPoint.h" - namespace js { /* @@ -48,10 +49,10 @@ class HashableValue { { public: explicit AutoRooter(JSContext *cx, HashableValue *v_ - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, HASHABLEVALUE), v(v_), skip(cx, v_) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } friend void AutoGCRooter::trace(JSTracer *trc); @@ -60,7 +61,7 @@ class HashableValue { private: HashableValue *v; SkipRoot skip; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; }; diff --git a/js/src/ds/LifoAlloc.h b/js/src/ds/LifoAlloc.h index ef0113ab55d4..831e98a127a3 100644 --- a/js/src/ds/LifoAlloc.h +++ b/js/src/ds/LifoAlloc.h @@ -10,6 +10,7 @@ #include "mozilla/Attributes.h" #include "mozilla/DebugOnly.h" +#include "mozilla/GuardObjects.h" /* * This data structure supports stacky LIFO allocation (mark/release and @@ -349,13 +350,14 @@ class LifoAllocScope LifoAlloc *lifoAlloc; void *mark; bool shouldRelease; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER public: explicit LifoAllocScope(LifoAlloc *lifoAlloc - JS_GUARD_OBJECT_NOTIFIER_PARAM) - : lifoAlloc(lifoAlloc), shouldRelease(true) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + : lifoAlloc(lifoAlloc), shouldRelease(true) + { + MOZ_GUARD_OBJECT_NOTIFIER_INIT; mark = lifoAlloc->mark(); } diff --git a/js/src/gc/Root.h b/js/src/gc/Root.h index ad11b1b26319..00729c7b2c48 100644 --- a/js/src/gc/Root.h +++ b/js/src/gc/Root.h @@ -8,10 +8,8 @@ #ifndef jsgc_root_h__ #define jsgc_root_h__ -#ifdef __cplusplus - -#include "mozilla/TypeTraits.h" #include "mozilla/GuardObjects.h" +#include "mozilla/TypeTraits.h" #include "js/Utility.h" #include "js/TemplateLib.h" @@ -809,10 +807,10 @@ class SkipRoot public: template SkipRoot(JSContext *cx, const T *ptr, size_t count = 1 - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) { init(ContextFriendFields::get(cx), ptr, count); - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } ~SkipRoot() { @@ -831,14 +829,14 @@ class SkipRoot public: template SkipRoot(JSContext *cx, const T *ptr, size_t count = 1 - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } #endif /* DEBUG && JSGC_ROOT_ANALYSIS */ - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; } /* namespace js */ @@ -959,6 +957,4 @@ class CompilerRootNode ForwardDeclareJS(Script); ForwardDeclareJS(Function); -#endif /* __cplusplus */ - #endif /* jsgc_root_h___ */ diff --git a/js/src/gc/Statistics.h b/js/src/gc/Statistics.h index 7c688899b61b..b447a947249f 100644 --- a/js/src/gc/Statistics.h +++ b/js/src/gc/Statistics.h @@ -11,6 +11,7 @@ #include #include "mozilla/DebugOnly.h" +#include "mozilla/GuardObjects.h" #include "jsfriendapi.h" #include "jspubtd.h" @@ -172,39 +173,56 @@ struct Statistics { double computeMMU(int64_t resolution); }; -struct AutoGCSlice { +struct AutoGCSlice +{ AutoGCSlice(Statistics &stats, int collectedCount, int compartmentCount, gcreason::Reason reason - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : stats(stats) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; stats.beginSlice(collectedCount, compartmentCount, reason); } ~AutoGCSlice() { stats.endSlice(); } Statistics &stats; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; -struct AutoPhase { - AutoPhase(Statistics &stats, Phase phase JS_GUARD_OBJECT_NOTIFIER_PARAM) - : stats(stats), phase(phase) { JS_GUARD_OBJECT_NOTIFIER_INIT; stats.beginPhase(phase); } - ~AutoPhase() { stats.endPhase(phase); } +struct AutoPhase +{ + AutoPhase(Statistics &stats, Phase phase + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + : stats(stats), phase(phase) + { + MOZ_GUARD_OBJECT_NOTIFIER_INIT; + stats.beginPhase(phase); + } + ~AutoPhase() { + stats.endPhase(phase); + } Statistics &stats; Phase phase; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; -struct AutoSCC { - AutoSCC(Statistics &stats, unsigned scc JS_GUARD_OBJECT_NOTIFIER_PARAM) - : stats(stats), scc(scc) { JS_GUARD_OBJECT_NOTIFIER_INIT; start = stats.beginSCC(); } - ~AutoSCC() { stats.endSCC(scc, start); } +struct AutoSCC +{ + AutoSCC(Statistics &stats, unsigned scc + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + : stats(stats), scc(scc) + { + MOZ_GUARD_OBJECT_NOTIFIER_INIT; + start = stats.beginSCC(); + } + ~AutoSCC() { + stats.endSCC(scc, start); + } Statistics &stats; unsigned scc; int64_t start; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; } /* namespace gcstats */ diff --git a/js/src/ion/IonAllocPolicy.h b/js/src/ion/IonAllocPolicy.h index 5ae0e1a72f73..c4e79d56a15d 100644 --- a/js/src/ion/IonAllocPolicy.h +++ b/js/src/ion/IonAllocPolicy.h @@ -8,6 +8,8 @@ #ifndef jsion_ion_alloc_policy_h__ #define jsion_ion_alloc_policy_h__ +#include "mozilla/GuardObjects.h" + #include "jscntxt.h" #include "ds/LifoAlloc.h" @@ -74,10 +76,10 @@ class AutoTempAllocatorRooter : private AutoGCRooter { public: explicit AutoTempAllocatorRooter(JSContext *cx, TempAllocator *temp - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, IONALLOC), temp(temp) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } friend void AutoGCRooter::trace(JSTracer *trc); @@ -85,7 +87,7 @@ class AutoTempAllocatorRooter : private AutoGCRooter private: TempAllocator *temp; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class IonAllocPolicy diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index 259967f89570..5bab69906ef8 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -10,6 +10,7 @@ */ #include "mozilla/FloatingPoint.h" +#include "mozilla/GuardObjects.h" #include "mozilla/ThreadLocal.h" #include @@ -3370,19 +3371,21 @@ JS_GetObjectId(JSContext *cx, JSRawObject obj, jsid *idp) class AutoHoldCompartment { public: - explicit AutoHoldCompartment(JSCompartment *compartment JS_GUARD_OBJECT_NOTIFIER_PARAM) + explicit AutoHoldCompartment(JSCompartment *compartment + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : holdp(&compartment->hold) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; *holdp = true; } ~AutoHoldCompartment() { *holdp = false; } + private: bool *holdp; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; JS_PUBLIC_API(JSObject *) @@ -5119,11 +5122,14 @@ JS_DefineFunctionById(JSContext *cx, JSObject *objArg, jsid id_, JSNative call, return js_DefineFunction(cx, obj, id, call, nargs, attrs); } -struct AutoLastFrameCheck { - AutoLastFrameCheck(JSContext *cx JS_GUARD_OBJECT_NOTIFIER_PARAM) - : cx(cx) { +struct AutoLastFrameCheck +{ + AutoLastFrameCheck(JSContext *cx + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + : cx(cx) + { JS_ASSERT(cx); - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } ~AutoLastFrameCheck() { @@ -5135,8 +5141,8 @@ struct AutoLastFrameCheck { } private: - JSContext *cx; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + JSContext *cx; + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; /* Use the fastest available getc. */ diff --git a/js/src/jsapi.h b/js/src/jsapi.h index b94966668f79..41103a35f0ae 100644 --- a/js/src/jsapi.h +++ b/js/src/jsapi.h @@ -13,8 +13,9 @@ #include "mozilla/Attributes.h" #include "mozilla/FloatingPoint.h" -#include "mozilla/StandardInteger.h" +#include "mozilla/GuardObjects.h" #include "mozilla/RangedPtr.h" +#include "mozilla/StandardInteger.h" #include "mozilla/ThreadLocal.h" #include @@ -1104,17 +1105,17 @@ class AutoValueRooter : private AutoGCRooter { public: explicit AutoValueRooter(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, JSVAL), val(NullValue()) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } AutoValueRooter(JSContext *cx, const Value &v - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, JSVAL), val(v) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } /* @@ -1152,16 +1153,17 @@ class AutoValueRooter : private AutoGCRooter private: Value val; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; -class AutoObjectRooter : private AutoGCRooter { +class AutoObjectRooter : private AutoGCRooter +{ public: AutoObjectRooter(JSContext *cx, JSObject *obj = NULL - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, OBJECT), obj(obj) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } void setObject(JSObject *obj) { @@ -1180,16 +1182,16 @@ class AutoObjectRooter : private AutoGCRooter { private: JSObject *obj; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoStringRooter : private AutoGCRooter { public: AutoStringRooter(JSContext *cx, JSString *str = NULL - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, STRING), str(str) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } void setString(JSString *str) { @@ -1212,16 +1214,16 @@ class AutoStringRooter : private AutoGCRooter { private: JSString *str; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoArrayRooter : private AutoGCRooter { public: AutoArrayRooter(JSContext *cx, size_t len, Value *vec - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, len), array(vec), skip(cx, array, len) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; JS_ASSERT(tag >= 0); } @@ -1240,7 +1242,7 @@ class AutoArrayRooter : private AutoGCRooter { friend void AutoGCRooter::trace(JSTracer *trc); private: - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER js::SkipRoot skip; }; @@ -1250,10 +1252,10 @@ class AutoVectorRooter : protected AutoGCRooter { public: explicit AutoVectorRooter(JSContext *cx, ptrdiff_t tag - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, tag), vector(cx), vectorRoot(cx, &vector) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } typedef T ElementType; @@ -1327,7 +1329,7 @@ class AutoVectorRooter : protected AutoGCRooter /* Prevent overwriting of inline elements in vector. */ js::SkipRoot vectorRoot; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; template @@ -1338,10 +1340,10 @@ class AutoHashMapRooter : protected AutoGCRooter public: explicit AutoHashMapRooter(JSContext *cx, ptrdiff_t tag - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, tag), map(cx) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } typedef Key KeyType; @@ -1450,46 +1452,46 @@ class AutoHashMapRooter : protected AutoGCRooter HashMapImpl map; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoValueVector : public AutoVectorRooter { public: explicit AutoValueVector(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoVectorRooter(cx, VALVECTOR) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoIdVector : public AutoVectorRooter { public: explicit AutoIdVector(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoVectorRooter(cx, IDVECTOR) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoScriptVector : public AutoVectorRooter { public: explicit AutoScriptVector(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoVectorRooter(cx, SCRIPTVECTOR) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class CallReceiver @@ -2558,10 +2560,10 @@ class AutoIdRooter : private AutoGCRooter { public: explicit AutoIdRooter(JSContext *cx, jsid id = INT_TO_JSID(0) - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, ID), id_(id) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } jsid id() { @@ -2576,7 +2578,7 @@ class AutoIdRooter : private AutoGCRooter private: jsid id_; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; } /* namespace JS */ @@ -3032,11 +3034,14 @@ template <> struct RootMethods } /* namespace js */ -class JSAutoRequest { +class JSAutoRequest +{ public: - JSAutoRequest(JSContext *cx JS_GUARD_OBJECT_NOTIFIER_PARAM) - : mContext(cx) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + JSAutoRequest(JSContext *cx + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + : mContext(cx) + { + MOZ_GUARD_OBJECT_NOTIFIER_INIT; JS_BeginRequest(mContext); } ~JSAutoRequest() { @@ -3045,7 +3050,7 @@ class JSAutoRequest { protected: JSContext *mContext; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER #if 0 private: @@ -3054,14 +3059,17 @@ class JSAutoRequest { #endif }; -class JSAutoCheckRequest { +class JSAutoCheckRequest +{ public: - JSAutoCheckRequest(JSContext *cx JS_GUARD_OBJECT_NOTIFIER_PARAM) { + JSAutoCheckRequest(JSContext *cx + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + { #if defined JS_THREADSAFE && defined DEBUG mContext = cx; JS_ASSERT(JS_IsInRequest(JS_GetRuntime(cx))); #endif - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } ~JSAutoCheckRequest() { @@ -3075,7 +3083,7 @@ class JSAutoCheckRequest { #if defined JS_THREADSAFE && defined DEBUG JSContext *mContext; #endif - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; extern JS_PUBLIC_API(JSContextCallback) @@ -4181,12 +4189,14 @@ JS_DestroyIdArray(JSContext *cx, JSIdArray *ida); namespace JS { -class AutoIdArray : private AutoGCRooter { +class AutoIdArray : private AutoGCRooter +{ public: - AutoIdArray(JSContext *cx, JSIdArray *ida JS_GUARD_OBJECT_NOTIFIER_PARAM) + AutoIdArray(JSContext *cx, JSIdArray *ida + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, IDARRAY), context(cx), idArray(ida) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } ~AutoIdArray() { if (idArray) @@ -4218,7 +4228,7 @@ class AutoIdArray : private AutoGCRooter { private: JSContext *context; JSIdArray *idArray; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER /* No copy or assignment semantics. */ AutoIdArray(AutoIdArray &ida) MOZ_DELETE; @@ -5537,8 +5547,10 @@ JS_EncodeStringToBuffer(JSString *str, char *buffer, size_t length); class JSAutoByteString { public: - JSAutoByteString(JSContext *cx, JSString *str JS_GUARD_OBJECT_NOTIFIER_PARAM) - : mBytes(JS_EncodeString(cx, str)) { + JSAutoByteString(JSContext *cx, JSString *str + JS_GUARD_OBJECT_NOTIFIER_PARAM) + : mBytes(JS_EncodeString(cx, str)) + { JS_ASSERT(cx); JS_GUARD_OBJECT_NOTIFIER_INIT; } diff --git a/js/src/jscntxt.h b/js/src/jscntxt.h index 281c8395ef5a..1571ced9caf7 100644 --- a/js/src/jscntxt.h +++ b/js/src/jscntxt.h @@ -11,6 +11,7 @@ #define jscntxt_h___ #include "mozilla/Attributes.h" +#include "mozilla/GuardObjects.h" #include "mozilla/LinkedList.h" #include @@ -65,14 +66,14 @@ class AutoCycleDetector bool cyclic; uint32_t hashsetGenerationAtInit; ObjectSet::AddPtr hashsetAddPointer; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER public: AutoCycleDetector(JSContext *cx, JSObject *obj - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : cx(cx), obj(obj), cyclic(true) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } ~AutoCycleDetector(); @@ -1702,10 +1703,10 @@ struct AutoResolving { }; AutoResolving(JSContext *cx, HandleObject obj, HandleId id, Kind kind = LOOKUP - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : context(cx), object(obj), id(id), kind(kind), link(cx->resolvingList) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; JS_ASSERT(obj); cx->resolvingList = this; } @@ -1727,17 +1728,17 @@ struct AutoResolving { HandleId id; Kind const kind; AutoResolving *const link; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; #if JS_HAS_XML_SUPPORT class AutoXMLRooter : private AutoGCRooter { public: AutoXMLRooter(JSContext *cx, JSXML *xml - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, XML), xml(xml) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; JS_ASSERT(xml); } @@ -1745,7 +1746,7 @@ class AutoXMLRooter : private AutoGCRooter { private: JSXML * const xml; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; #endif /* JS_HAS_XML_SUPPORT */ @@ -1792,36 +1793,38 @@ class AutoLockGC MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; -class AutoUnlockGC { +class AutoUnlockGC +{ private: #ifdef JS_THREADSAFE JSRuntime *rt; #endif - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER public: explicit AutoUnlockGC(JSRuntime *rt - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) #ifdef JS_THREADSAFE : rt(rt) #endif { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; JS_UNLOCK_GC(rt); } ~AutoUnlockGC() { JS_LOCK_GC(rt); } }; -class AutoKeepAtoms { +class AutoKeepAtoms +{ JSRuntime *rt; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER public: explicit AutoKeepAtoms(JSRuntime *rt - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : rt(rt) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; JS_KEEP_ATOMS(rt); } ~AutoKeepAtoms() { JS_UNKEEP_ATOMS(rt); } @@ -1833,10 +1836,10 @@ class JSAutoResolveFlags { public: JSAutoResolveFlags(JSContext *cx, unsigned flags - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : mContext(cx), mSaved(cx->resolveFlags) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; cx->resolveFlags = flags; } @@ -1845,7 +1848,7 @@ class JSAutoResolveFlags private: JSContext *mContext; unsigned mSaved; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; namespace js { @@ -2101,39 +2104,39 @@ class AutoObjectVector : public AutoVectorRooter { public: explicit AutoObjectVector(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoVectorRooter(cx, OBJVECTOR) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoStringVector : public AutoVectorRooter { public: explicit AutoStringVector(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoVectorRooter(cx, STRINGVECTOR) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoShapeVector : public AutoVectorRooter { public: explicit AutoShapeVector(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoVectorRooter(cx, SHAPEVECTOR) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoValueArray : public AutoGCRooter @@ -2144,29 +2147,29 @@ class AutoValueArray : public AutoGCRooter public: AutoValueArray(JSContext *cx, RawValue *start, unsigned length - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, VALARRAY), start_(start), length_(length), skip(cx, start, length) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } RawValue *start() { return start_; } unsigned length() const { return length_; } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoObjectObjectHashMap : public AutoHashMapRooter { public: explicit AutoObjectObjectHashMap(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoHashMapRooter(cx, OBJOBJHASHMAP) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; /* diff --git a/js/src/jscompartment.h b/js/src/jscompartment.h index ef30980e1664..2c93751a201b 100644 --- a/js/src/jscompartment.h +++ b/js/src/jscompartment.h @@ -9,6 +9,7 @@ #define jscompartment_h___ #include "mozilla/Attributes.h" +#include "mozilla/GuardObjects.h" #include "mozilla/Util.h" #include "jscntxt.h" @@ -578,20 +579,24 @@ JSContext::global() const namespace js { -class AssertCompartmentUnchanged { - protected: - JSContext * const cx; - JSCompartment * const oldCompartment; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER +class AssertCompartmentUnchanged +{ public: - AssertCompartmentUnchanged(JSContext *cx JS_GUARD_OBJECT_NOTIFIER_PARAM) - : cx(cx), oldCompartment(cx->compartment) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + AssertCompartmentUnchanged(JSContext *cx + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + : cx(cx), oldCompartment(cx->compartment) + { + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } ~AssertCompartmentUnchanged() { JS_ASSERT(cx->compartment == oldCompartment); } + + protected: + JSContext * const cx; + JSCompartment * const oldCompartment; + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoCompartment @@ -728,22 +733,22 @@ class AutoWrapperVector : public AutoVectorRooter { public: explicit AutoWrapperVector(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoVectorRooter(cx, WRAPVECTOR) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; class AutoWrapperRooter : private AutoGCRooter { public: AutoWrapperRooter(JSContext *cx, WrapperValue v - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, WRAPPER), value(v) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } operator JSObject *() const { @@ -754,7 +759,7 @@ class AutoWrapperRooter : private AutoGCRooter { private: WrapperValue value; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; } /* namespace js */ diff --git a/js/src/jscrashreport.h b/js/src/jscrashreport.h index d37c9b4ceddf..beeb76151ba1 100644 --- a/js/src/jscrashreport.h +++ b/js/src/jscrashreport.h @@ -8,8 +8,8 @@ #ifndef jscrashreport_h___ #define jscrashreport_h___ -#include "jstypes.h" -#include "jsutil.h" +#include "mozilla/GuardObjects.h" +#include "mozilla/StandardInteger.h" namespace js { namespace crash { @@ -24,21 +24,20 @@ void SaveCrashData(uint64_t tag, void *ptr, size_t size); template -class StackBuffer { - private: - JS_DECL_USE_GUARD_OBJECT_NOTIFIER - volatile unsigned char buffer[size + 4]; - +class StackBuffer +{ public: - StackBuffer(void *data JS_GUARD_OBJECT_NOTIFIER_PARAM) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + StackBuffer(void *data + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + { + MOZ_GUARD_OBJECT_NOTIFIER_INIT; buffer[0] = marker; buffer[1] = '['; for (size_t i = 0; i < size; i++) { if (data) - buffer[i + 2] = ((unsigned char *)data)[i]; + buffer[i + 2] = static_cast(data)[i]; else buffer[i + 2] = 0; } @@ -46,6 +45,10 @@ class StackBuffer { buffer[size - 2] = ']'; buffer[size - 1] = marker; } + + private: + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER + volatile unsigned char buffer[size + 4]; }; } /* namespace crash */ diff --git a/js/src/jsscope.h b/js/src/jsscope.h index 693d048eace9..ae9abdcd90e3 100644 --- a/js/src/jsscope.h +++ b/js/src/jsscope.h @@ -9,6 +9,7 @@ #define jsscope_h___ #include "mozilla/Attributes.h" +#include "mozilla/GuardObjects.h" #include "jsobj.h" #include "jspropertytree.h" @@ -419,10 +420,10 @@ struct StackBaseShape { public: explicit AutoRooter(JSContext *cx, const StackBaseShape *base_ - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, STACKBASESHAPE), base(base_), skip(cx, base_) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } friend void AutoGCRooter::trace(JSTracer *trc); @@ -430,7 +431,7 @@ struct StackBaseShape private: const StackBaseShape *base; SkipRoot skip; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; }; @@ -575,10 +576,10 @@ class Shape : public js::gc::Cell { public: explicit AutoRooter(JSContext *cx, Range *r_ - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, SHAPERANGE), r(r_), skip(cx, r_) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } friend void AutoGCRooter::trace(JSTracer *trc); @@ -587,7 +588,7 @@ class Shape : public js::gc::Cell private: Range *r; SkipRoot skip; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; }; @@ -882,18 +883,18 @@ class AutoRooterGetterSetter public: explicit AutoRooterGetterSetter(JSContext *cx, uint8_t attrs, PropertyOp *pgetter, StrictPropertyOp *psetter - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) { if (attrs & (JSPROP_GETTER | JSPROP_SETTER)) inner.construct(cx, attrs, pgetter, psetter); - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } friend void AutoGCRooter::trace(JSTracer *trc); private: mozilla::Maybe inner; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; struct EmptyShape : public js::Shape @@ -1014,10 +1015,10 @@ struct StackShape { public: explicit AutoRooter(JSContext *cx, const StackShape *shape_ - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, STACKSHAPE), shape(shape_), skip(cx, shape_) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } friend void AutoGCRooter::trace(JSTracer *trc); @@ -1025,7 +1026,7 @@ struct StackShape private: const StackShape *shape; SkipRoot skip; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; }; diff --git a/js/src/jsutil.h b/js/src/jsutil.h index ef7f94a8242f..7285de08f6fe 100644 --- a/js/src/jsutil.h +++ b/js/src/jsutil.h @@ -12,6 +12,7 @@ #define jsutil_h___ #include "mozilla/Attributes.h" +#include "mozilla/GuardObjects.h" #include "js/Utility.h" @@ -158,20 +159,21 @@ ImplicitCast(U &u) template class AutoScopedAssign { - private: - JS_DECL_USE_GUARD_OBJECT_NOTIFIER - T *addr; - T old; - public: - AutoScopedAssign(T *addr, const T &value JS_GUARD_OBJECT_NOTIFIER_PARAM) + AutoScopedAssign(T *addr, const T &value + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : addr(addr), old(*addr) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; *addr = value; } ~AutoScopedAssign() { *addr = old; } + + private: + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER + T *addr; + T old; }; template diff --git a/js/src/jsworkers.h b/js/src/jsworkers.h index 7cfba16f10f8..1b4c8237511c 100644 --- a/js/src/jsworkers.h +++ b/js/src/jsworkers.h @@ -13,6 +13,8 @@ #ifndef jsworkers_h___ #define jsworkers_h___ +#include "mozilla/GuardObjects.h" + #include "jscntxt.h" #include "jslock.h" @@ -125,14 +127,15 @@ OffThreadCompilationAvailable(JSContext *cx); class AutoLockWorkerThreadState { JSRuntime *rt; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER public: - AutoLockWorkerThreadState(JSRuntime *rt JS_GUARD_OBJECT_NOTIFIER_PARAM) + AutoLockWorkerThreadState(JSRuntime *rt + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : rt(rt) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; #ifdef JS_PARALLEL_COMPILATION JS_ASSERT(rt->workerThreadState); rt->workerThreadState->lock(); @@ -152,14 +155,15 @@ class AutoLockWorkerThreadState class AutoUnlockWorkerThreadState { JSRuntime *rt; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER public: - AutoUnlockWorkerThreadState(JSRuntime *rt JS_GUARD_OBJECT_NOTIFIER_PARAM) + AutoUnlockWorkerThreadState(JSRuntime *rt + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : rt(rt) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; #ifdef JS_PARALLEL_COMPILATION JS_ASSERT(rt->workerThreadState); rt->workerThreadState->unlock(); diff --git a/js/src/shell/js.cpp b/js/src/shell/js.cpp index c73f8645b561..d0338649cedc 100644 --- a/js/src/shell/js.cpp +++ b/js/src/shell/js.cpp @@ -16,6 +16,7 @@ #include #include "mozilla/DebugOnly.h" +#include "mozilla/GuardObjects.h" #include "mozilla/Util.h" #include "jstypes.h" @@ -3268,14 +3269,17 @@ Parse(JSContext *cx, unsigned argc, jsval *vp) return true; } -struct FreeOnReturn { +struct FreeOnReturn +{ JSContext *cx; const char *ptr; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER - FreeOnReturn(JSContext *cx, const char *ptr = NULL JS_GUARD_OBJECT_NOTIFIER_PARAM) - : cx(cx), ptr(ptr) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + FreeOnReturn(JSContext *cx, const char *ptr = NULL + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) + : cx(cx), ptr(ptr) + { + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } void init(const char *ptr) { diff --git a/js/src/vm/ObjectImpl.h b/js/src/vm/ObjectImpl.h index edd559aa821a..f2c01b3e7f7d 100644 --- a/js/src/vm/ObjectImpl.h +++ b/js/src/vm/ObjectImpl.h @@ -9,6 +9,7 @@ #define ObjectImpl_h___ #include "mozilla/Assertions.h" +#include "mozilla/GuardObjects.h" #include "mozilla/StandardInteger.h" #include "jsfriendapi.h" @@ -298,10 +299,10 @@ struct PropDesc { { public: explicit AutoRooter(JSContext *cx, PropDesc *pd_ - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, PROPDESC), pd(pd_), skip(cx, pd_) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } friend void AutoGCRooter::trace(JSTracer *trc); @@ -309,7 +310,7 @@ struct PropDesc { private: PropDesc *pd; SkipRoot skip; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; }; diff --git a/js/src/vm/RegExpStatics.h b/js/src/vm/RegExpStatics.h index aa742ccf6a3a..fe506d502cf1 100644 --- a/js/src/vm/RegExpStatics.h +++ b/js/src/vm/RegExpStatics.h @@ -8,6 +8,8 @@ #ifndef RegExpStatics_h__ #define RegExpStatics_h__ +#include "mozilla/GuardObjects.h" + #include "jscntxt.h" #include "gc/Barrier.h" @@ -149,10 +151,10 @@ class RegExpStatics { public: explicit AutoRooter(JSContext *cx, RegExpStatics *statics_ - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoGCRooter(cx, REGEXPSTATICS), statics(statics_), skip(cx, statics_) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } friend void AutoGCRooter::trace(JSTracer *trc); @@ -161,7 +163,7 @@ class RegExpStatics private: RegExpStatics *statics; SkipRoot skip; - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; }; diff --git a/js/src/vm/String.h b/js/src/vm/String.h index 7b1e4e9859f7..1e613380ae14 100644 --- a/js/src/vm/String.h +++ b/js/src/vm/String.h @@ -9,6 +9,7 @@ #define String_h_ #include "mozilla/Attributes.h" +#include "mozilla/GuardObjects.h" #include "jsapi.h" #include "jsatom.h" @@ -835,17 +836,17 @@ class AutoNameVector : public AutoVectorRooter typedef AutoVectorRooter BaseType; public: explicit AutoNameVector(JSContext *cx - JS_GUARD_OBJECT_NOTIFIER_PARAM) + MOZ_GUARD_OBJECT_NOTIFIER_PARAM) : AutoVectorRooter(cx, NAMEVECTOR) { - JS_GUARD_OBJECT_NOTIFIER_INIT; + MOZ_GUARD_OBJECT_NOTIFIER_INIT; } HandlePropertyName operator[](size_t i) const { return HandlePropertyName::fromMarkedLocation(&BaseType::operator[](i)); } - JS_DECL_USE_GUARD_OBJECT_NOTIFIER + MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER }; } /* namespace js */