mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-15 22:35:43 +00:00
Bug 752578 - Use mfbt's guard object implementation rather than using our own in all the easy cases. r=Ms2ger
--HG-- extra : rebase_source : ba7faa490cdc5c9b85b5617ff5bb17246b74868e
This commit is contained in:
parent
ba6c1b8899
commit
99654cf0f4
@ -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
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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 <typename T>
|
||||
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 <typename T>
|
||||
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___ */
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#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 */
|
||||
|
@ -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
|
||||
|
@ -10,6 +10,7 @@
|
||||
*/
|
||||
|
||||
#include "mozilla/FloatingPoint.h"
|
||||
#include "mozilla/GuardObjects.h"
|
||||
#include "mozilla/ThreadLocal.h"
|
||||
|
||||
#include <ctype.h>
|
||||
@ -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() {
|
||||
@ -5136,7 +5142,7 @@ struct AutoLastFrameCheck {
|
||||
|
||||
private:
|
||||
JSContext *cx;
|
||||
JS_DECL_USE_GUARD_OBJECT_NOTIFIER
|
||||
MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
|
||||
};
|
||||
|
||||
/* Use the fastest available getc. */
|
||||
|
110
js/src/jsapi.h
110
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 <stddef.h>
|
||||
@ -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<class Key, class Value>
|
||||
@ -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<Value>
|
||||
{
|
||||
public:
|
||||
explicit AutoValueVector(JSContext *cx
|
||||
JS_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: AutoVectorRooter<Value>(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<jsid>
|
||||
{
|
||||
public:
|
||||
explicit AutoIdVector(JSContext *cx
|
||||
JS_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: AutoVectorRooter<jsid>(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<JSScript *>
|
||||
{
|
||||
public:
|
||||
explicit AutoScriptVector(JSContext *cx
|
||||
JS_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: AutoVectorRooter<JSScript *>(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<jsid>
|
||||
|
||||
} /* 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;
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
#define jscntxt_h___
|
||||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/GuardObjects.h"
|
||||
#include "mozilla/LinkedList.h"
|
||||
|
||||
#include <string.h>
|
||||
@ -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<RawObject>
|
||||
{
|
||||
public:
|
||||
explicit AutoObjectVector(JSContext *cx
|
||||
JS_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: AutoVectorRooter<RawObject>(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<RawString>
|
||||
{
|
||||
public:
|
||||
explicit AutoStringVector(JSContext *cx
|
||||
JS_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: AutoVectorRooter<RawString>(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<RawShape>
|
||||
{
|
||||
public:
|
||||
explicit AutoShapeVector(JSContext *cx
|
||||
JS_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: AutoVectorRooter<RawShape>(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<RawObject, RawObject>
|
||||
{
|
||||
public:
|
||||
explicit AutoObjectObjectHashMap(JSContext *cx
|
||||
JS_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: AutoHashMapRooter<RawObject, RawObject>(cx, OBJOBJHASHMAP)
|
||||
{
|
||||
JS_GUARD_OBJECT_NOTIFIER_INIT;
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_INIT;
|
||||
}
|
||||
|
||||
JS_DECL_USE_GUARD_OBJECT_NOTIFIER
|
||||
MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -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<WrapperValue>
|
||||
{
|
||||
public:
|
||||
explicit AutoWrapperVector(JSContext *cx
|
||||
JS_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: AutoVectorRooter<WrapperValue>(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 */
|
||||
|
@ -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<size_t size, unsigned char marker>
|
||||
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<unsigned char*>(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 */
|
||||
|
@ -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> 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
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -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<typename T>
|
||||
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 <class T>
|
||||
|
@ -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();
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#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) {
|
||||
|
@ -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
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -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<PropertyName *>
|
||||
typedef AutoVectorRooter<PropertyName *> BaseType;
|
||||
public:
|
||||
explicit AutoNameVector(JSContext *cx
|
||||
JS_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
MOZ_GUARD_OBJECT_NOTIFIER_PARAM)
|
||||
: AutoVectorRooter<PropertyName *>(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 */
|
||||
|
Loading…
Reference in New Issue
Block a user