Bug 625484 - rename defaultCompartment r=gal

This commit is contained in:
Gregor Wagner 2011-01-13 14:42:36 -08:00
parent 5f17a91711
commit 4ba60cb773
8 changed files with 75 additions and 75 deletions

View File

@ -638,9 +638,9 @@ JSRuntime::init(uint32 maxbytes)
}
#endif
if (!(defaultCompartment = new JSCompartment(this)) ||
!defaultCompartment->init() ||
!compartments.append(defaultCompartment)) {
if (!(atomsCompartment = new JSCompartment(this)) ||
!atomsCompartment->init() ||
!compartments.append(atomsCompartment)) {
return false;
}
@ -1398,7 +1398,7 @@ private:
JSObject *
js_InitFunctionAndObjectClasses(JSContext *cx, JSObject *obj)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
JSObject *fun_proto, *obj_proto;
/* If cx has no global object, use obj so prototypes can be found. */
@ -1449,7 +1449,7 @@ js_InitFunctionAndObjectClasses(JSContext *cx, JSObject *obj)
JS_PUBLIC_API(JSBool)
JS_InitStandardClasses(JSContext *cx, JSObject *obj)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
/*
@ -2932,7 +2932,7 @@ JS_GetObjectId(JSContext *cx, JSObject *obj, jsid *idp)
JS_PUBLIC_API(JSObject *)
JS_NewGlobalObject(JSContext *cx, JSClass *clasp)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
JS_ASSERT(clasp->flags & JSCLASS_IS_GLOBAL);
JSObject *obj = NewNonFunction<WithProto::Given>(cx, Valueify(clasp), NULL, NULL);
@ -2971,7 +2971,7 @@ JS_NewCompartmentAndGlobalObject(JSContext *cx, JSClass *clasp, JSPrincipals *pr
JS_PUBLIC_API(JSObject *)
JS_NewObject(JSContext *cx, JSClass *jsclasp, JSObject *proto, JSObject *parent)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, proto, parent);
@ -2993,7 +2993,7 @@ JS_NewObject(JSContext *cx, JSClass *jsclasp, JSObject *proto, JSObject *parent)
JS_PUBLIC_API(JSObject *)
JS_NewObjectWithGivenProto(JSContext *cx, JSClass *jsclasp, JSObject *proto, JSObject *parent)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, proto, parent);
@ -3999,7 +3999,7 @@ JS_SetReservedSlot(JSContext *cx, JSObject *obj, uint32 index, jsval v)
JS_PUBLIC_API(JSObject *)
JS_NewArrayObject(JSContext *cx, jsint length, jsval *vector)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
/* NB: jsuint cast does ToUint32. */
assertSameCompartment(cx, JSValueArray(vector, vector ? (jsuint)length : 0));
@ -4102,7 +4102,7 @@ JS_PUBLIC_API(JSFunction *)
JS_NewFunction(JSContext *cx, JSNative native, uintN nargs, uintN flags,
JSObject *parent, const char *name)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
JSAtom *atom;
CHECK_REQUEST(cx);
@ -4123,7 +4123,7 @@ JS_NewFunctionById(JSContext *cx, JSNative native, uintN nargs, uintN flags, JSO
jsid id)
{
JS_ASSERT(JSID_IS_STRING(id));
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, parent);
@ -4288,7 +4288,7 @@ js_generic_native_method_dispatcher(JSContext *cx, uintN argc, Value *vp)
JS_PUBLIC_API(JSBool)
JS_DefineFunctions(JSContext *cx, JSObject *obj, JSFunctionSpec *fs)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
uintN flags;
JSObject *ctor;
JSFunction *fun;
@ -4338,7 +4338,7 @@ JS_PUBLIC_API(JSFunction *)
JS_DefineFunction(JSContext *cx, JSObject *obj, const char *name, JSNative call,
uintN nargs, uintN attrs)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, obj);
JSAtom *atom = js_Atomize(cx, name, strlen(name), 0);
@ -4352,7 +4352,7 @@ JS_DefineUCFunction(JSContext *cx, JSObject *obj,
const jschar *name, size_t namelen, JSNative call,
uintN nargs, uintN attrs)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, obj);
JSAtom *atom = js_AtomizeChars(cx, name, AUTO_NAMELEN(name, namelen), 0);
@ -4365,7 +4365,7 @@ extern JS_PUBLIC_API(JSFunction *)
JS_DefineFunctionById(JSContext *cx, JSObject *obj, jsid id, JSNative call,
uintN nargs, uintN attrs)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, obj);
return js_DefineFunction(cx, obj, id, Valueify(call), nargs, attrs);
@ -4409,7 +4409,7 @@ JS_CompileUCScriptForPrincipals(JSContext *cx, JSObject *obj, JSPrincipals *prin
const jschar *chars, size_t length,
const char *filename, uintN lineno)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, obj, principals);
@ -4428,7 +4428,7 @@ JS_PUBLIC_API(JSScript *)
JS_CompileUCScript(JSContext *cx, JSObject *obj, const jschar *chars, size_t length,
const char *filename, uintN lineno)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
return JS_CompileUCScriptForPrincipals(cx, obj, NULL, chars, length, filename, lineno);
}
@ -4449,7 +4449,7 @@ JS_CompileScriptForPrincipals(JSContext *cx, JSObject *obj,
const char *bytes, size_t length,
const char *filename, uintN lineno)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
jschar *chars = js_InflateString(cx, bytes, &length);
@ -4464,7 +4464,7 @@ JS_PUBLIC_API(JSScript *)
JS_CompileScript(JSContext *cx, JSObject *obj, const char *bytes, size_t length,
const char *filename, uintN lineno)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
return JS_CompileScriptForPrincipals(cx, obj, NULL, bytes, length, filename, lineno);
}
@ -4576,7 +4576,7 @@ CompileFileHelper(JSContext *cx, JSObject *obj, JSPrincipals *principals, uint32
JS_PUBLIC_API(JSScript *)
JS_CompileFile(JSContext *cx, JSObject *obj, const char *filename)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
FILE *fp;
uint32 tcflags;
JSScript *script;
@ -4611,7 +4611,7 @@ JS_PUBLIC_API(JSScript *)
JS_CompileFileHandleForPrincipals(JSContext *cx, JSObject *obj, const char *filename, FILE *file,
JSPrincipals *principals)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
uint32 tcflags;
JSScript *script;
@ -4639,14 +4639,14 @@ JS_CompileFileHandleForPrincipalsVersion(JSContext *cx, JSObject *obj, const cha
JS_PUBLIC_API(JSScript *)
JS_CompileFileHandle(JSContext *cx, JSObject *obj, const char *filename, FILE *file)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
return JS_CompileFileHandleForPrincipals(cx, obj, filename, file, NULL);
}
JS_PUBLIC_API(JSObject *)
JS_NewScriptObject(JSContext *cx, JSScript *script)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, script);
if (!script)
@ -4710,7 +4710,7 @@ JS_CompileUCFunctionForPrincipals(JSContext *cx, JSObject *obj,
const jschar *chars, size_t length,
const char *filename, uintN lineno)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
JSFunction *fun;
JSAtom *funAtom, *argAtom;
uintN i;
@ -4786,7 +4786,7 @@ JS_CompileUCFunction(JSContext *cx, JSObject *obj, const char *name,
const jschar *chars, size_t length,
const char *filename, uintN lineno)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
return JS_CompileUCFunctionForPrincipals(cx, obj, NULL, name, nargs, argnames,
chars, length, filename, lineno);
}
@ -4798,7 +4798,7 @@ JS_CompileFunctionForPrincipals(JSContext *cx, JSObject *obj,
const char *bytes, size_t length,
const char *filename, uintN lineno)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
jschar *chars = js_InflateString(cx, bytes, &length);
if (!chars)
return NULL;
@ -4815,7 +4815,7 @@ JS_CompileFunction(JSContext *cx, JSObject *obj, const char *name,
const char *bytes, size_t length,
const char *filename, uintN lineno)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
return JS_CompileFunctionForPrincipals(cx, obj, NULL, name, nargs, argnames, bytes, length,
filename, lineno);
}
@ -4823,7 +4823,7 @@ JS_CompileFunction(JSContext *cx, JSObject *obj, const char *name,
JS_PUBLIC_API(JSString *)
JS_DecompileScript(JSContext *cx, JSScript *script, const char *name, uintN indent)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
JSPrinter *jp;
JSString *str;
@ -4849,7 +4849,7 @@ JS_DecompileScript(JSContext *cx, JSScript *script, const char *name, uintN inde
JS_PUBLIC_API(JSString *)
JS_DecompileFunction(JSContext *cx, JSFunction *fun, uintN indent)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, fun);
return js_DecompileToString(cx, "JS_DecompileFunction", fun,
@ -4861,7 +4861,7 @@ JS_DecompileFunction(JSContext *cx, JSFunction *fun, uintN indent)
JS_PUBLIC_API(JSString *)
JS_DecompileFunctionBody(JSContext *cx, JSFunction *fun, uintN indent)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, fun);
return js_DecompileToString(cx, "JS_DecompileFunctionBody", fun,
@ -4873,7 +4873,7 @@ JS_DecompileFunctionBody(JSContext *cx, JSFunction *fun, uintN indent)
JS_PUBLIC_API(JSBool)
JS_ExecuteScript(JSContext *cx, JSObject *obj, JSScript *script, jsval *rval)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
JSBool ok;
CHECK_REQUEST(cx);
@ -4913,7 +4913,7 @@ JS_EvaluateUCScriptForPrincipals(JSContext *cx, JSObject *obj,
const char *filename, uintN lineno,
jsval *rval)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
JSScript *script;
JSBool ok;
@ -4937,7 +4937,7 @@ JS_PUBLIC_API(JSBool)
JS_EvaluateUCScript(JSContext *cx, JSObject *obj, const jschar *chars, uintN length,
const char *filename, uintN lineno, jsval *rval)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
return JS_EvaluateUCScriptForPrincipals(cx, obj, NULL, chars, length, filename, lineno, rval);
}
@ -4947,7 +4947,7 @@ JS_EvaluateScriptForPrincipals(JSContext *cx, JSObject *obj, JSPrincipals *princ
const char *bytes, uintN nbytes,
const char *filename, uintN lineno, jsval *rval)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
size_t length = nbytes;
jschar *chars = js_InflateString(cx, bytes, &length);
if (!chars)
@ -4972,7 +4972,7 @@ JS_PUBLIC_API(JSBool)
JS_EvaluateScript(JSContext *cx, JSObject *obj, const char *bytes, uintN nbytes,
const char *filename, uintN lineno, jsval *rval)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
return JS_EvaluateScriptForPrincipals(cx, obj, NULL, bytes, nbytes, filename, lineno, rval);
}
@ -4980,7 +4980,7 @@ JS_PUBLIC_API(JSBool)
JS_CallFunction(JSContext *cx, JSObject *obj, JSFunction *fun, uintN argc, jsval *argv,
jsval *rval)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
JSBool ok;
CHECK_REQUEST(cx);
@ -4994,7 +4994,7 @@ JS_PUBLIC_API(JSBool)
JS_CallFunctionName(JSContext *cx, JSObject *obj, const char *name, uintN argc, jsval *argv,
jsval *rval)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
CHECK_REQUEST(cx);
assertSameCompartment(cx, obj, JSValueArray(argv, argc));
@ -5011,7 +5011,7 @@ JS_PUBLIC_API(JSBool)
JS_CallFunctionValue(JSContext *cx, JSObject *obj, jsval fval, uintN argc, jsval *argv,
jsval *rval)
{
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->defaultCompartment);
JS_THREADSAFE_ASSERT(cx->compartment != cx->runtime->atomsCompartment);
JSBool ok;
CHECK_REQUEST(cx);

View File

@ -480,7 +480,7 @@ js_AtomizeString(JSContext *cx, JSString *strArg, uintN flags)
JSAtomState *state = &cx->runtime->atomState;
AtomSet &atoms = state->atoms;
AutoLockDefaultCompartment lock(cx);
AutoLockAtomsCompartment lock(cx);
AtomSet::AddPtr p = atoms.lookupForAdd(str);
/* Hashing the string should have flattened it if it was a rope. */
@ -495,7 +495,7 @@ js_AtomizeString(JSContext *cx, JSString *strArg, uintN flags)
* compartment.
*/
bool needNewString = !!(flags & ATOM_TMPSTR) ||
str->asCell()->compartment() != cx->runtime->defaultCompartment;
str->asCell()->compartment() != cx->runtime->atomsCompartment;
/*
* Unless str is already comes from the default compartment and flat,
@ -509,7 +509,7 @@ js_AtomizeString(JSContext *cx, JSString *strArg, uintN flags)
atoms.add(p, StringToInitialAtomEntry(key));
} else {
if (needNewString) {
SwitchToCompartment sc(cx, cx->runtime->defaultCompartment);
SwitchToCompartment sc(cx, cx->runtime->atomsCompartment);
if (flags & ATOM_NOCOPY) {
key = js_NewString(cx, const_cast<jschar *>(str->flatChars()), length);
if (!key)

View File

@ -1007,9 +1007,9 @@ typedef js::Vector<JSCompartment *, 0, js::SystemAllocPolicy> WrapperVector;
struct JSRuntime {
/* Default compartment. */
JSCompartment *defaultCompartment;
JSCompartment *atomsCompartment;
#ifdef JS_THREADSAFE
bool defaultCompartmentIsLocked;
bool atomsCompartmentIsLocked;
#endif
/* List of compartments (protected by the GC lock). */
@ -2630,49 +2630,49 @@ class AutoUnlockGC {
~AutoUnlockGC() { JS_LOCK_GC(rt); }
};
class AutoLockDefaultCompartment {
class AutoLockAtomsCompartment {
private:
JSContext *cx;
JS_DECL_USE_GUARD_OBJECT_NOTIFIER
public:
AutoLockDefaultCompartment(JSContext *cx
AutoLockAtomsCompartment(JSContext *cx
JS_GUARD_OBJECT_NOTIFIER_PARAM)
: cx(cx)
{
JS_GUARD_OBJECT_NOTIFIER_INIT;
JS_LOCK(cx, &cx->runtime->atomState.lock);
#ifdef JS_THREADSAFE
cx->runtime->defaultCompartmentIsLocked = true;
cx->runtime->atomsCompartmentIsLocked = true;
#endif
}
~AutoLockDefaultCompartment() {
~AutoLockAtomsCompartment() {
#ifdef JS_THREADSAFE
cx->runtime->defaultCompartmentIsLocked = false;
cx->runtime->atomsCompartmentIsLocked = false;
#endif
JS_UNLOCK(cx, &cx->runtime->atomState.lock);
}
};
class AutoUnlockDefaultCompartment {
class AutoUnlockAtomsCompartment {
JSContext *cx;
JS_DECL_USE_GUARD_OBJECT_NOTIFIER
public:
AutoUnlockDefaultCompartment(JSContext *cx
AutoUnlockAtomsCompartment(JSContext *cx
JS_GUARD_OBJECT_NOTIFIER_PARAM)
: cx(cx)
{
JS_GUARD_OBJECT_NOTIFIER_INIT;
#ifdef JS_THREADSAFE
cx->runtime->defaultCompartmentIsLocked = false;
cx->runtime->atomsCompartmentIsLocked = false;
#endif
JS_UNLOCK(cx, &cx->runtime->atomState.lock);
}
~AutoUnlockDefaultCompartment() {
~AutoUnlockAtomsCompartment() {
JS_LOCK(cx, &cx->runtime->atomState.lock);
#ifdef JS_THREADSAFE
cx->runtime->defaultCompartmentIsLocked = true;
cx->runtime->atomsCompartmentIsLocked = true;
#endif
}
};

View File

@ -543,14 +543,14 @@ class CompartmentChecker
/* Note: should only be used when neither c1 nor c2 may be the default compartment. */
static void check(JSCompartment *c1, JSCompartment *c2) {
JS_ASSERT(c1 != c1->rt->defaultCompartment);
JS_ASSERT(c2 != c2->rt->defaultCompartment);
JS_ASSERT(c1 != c1->rt->atomsCompartment);
JS_ASSERT(c2 != c2->rt->atomsCompartment);
if (c1 != c2)
fail(c1, c2);
}
void check(JSCompartment *c) {
if (c && c != context->runtime->defaultCompartment) {
if (c && c != context->runtime->atomsCompartment) {
if (!compartment)
compartment = c;
else if (c != compartment)

View File

@ -169,7 +169,7 @@ JSCompartment::wrap(JSContext *cx, Value *vp)
/* If the string is an atom, we don't have to copy. */
if (str->isAtomized()) {
JS_ASSERT(str->asCell()->compartment() == cx->runtime->defaultCompartment);
JS_ASSERT(str->asCell()->compartment() == cx->runtime->atomsCompartment);
return true;
}
}

View File

@ -560,7 +560,7 @@ js_InitGC(JSRuntime *rt, uint32 maxbytes)
rt->gcTriggerFactor = uint32(100.0f * GC_HEAP_GROWTH_FACTOR);
rt->defaultCompartment->setGCLastBytes(8192);
rt->atomsCompartment->setGCLastBytes(8192);
/*
* The assigned value prevents GC from running when GC memory is too low
@ -854,14 +854,14 @@ js_FinishGC(JSRuntime *rt)
js_DumpGCStats(rt, stdout);
#endif
/* Delete all remaining Compartments. Ideally only the defaultCompartment should be left. */
/* Delete all remaining Compartments. Ideally only the atomsCompartment should be left. */
for (JSCompartment **c = rt->compartments.begin(); c != rt->compartments.end(); ++c) {
JSCompartment *comp = *c;
comp->finishArenaLists();
delete comp;
}
rt->compartments.clear();
rt->defaultCompartment = NULL;
rt->atomsCompartment = NULL;
for (GCChunkSet::Range r(rt->gcChunkSet.all()); !r.empty(); r.popFront())
ReleaseGCChunk(rt, r.front());
@ -1027,7 +1027,7 @@ JSRuntime::setGCTriggerFactor(uint32 factor)
for (JSCompartment **c = compartments.begin(); c != compartments.end(); ++c) {
(*c)->setGCLastBytes(gcLastBytes);
}
defaultCompartment->setGCLastBytes(gcLastBytes);
atomsCompartment->setGCLastBytes(gcLastBytes);
}
void
@ -1108,9 +1108,9 @@ RunLastDitchGC(JSContext *cx)
JSRuntime *rt = cx->runtime;
METER(rt->gcStats.lastditch++);
#ifdef JS_THREADSAFE
Conditionally<AutoUnlockDefaultCompartment>
unlockDefaultCompartmenIf(cx->compartment == rt->defaultCompartment &&
rt->defaultCompartmentIsLocked, cx);
Conditionally<AutoUnlockAtomsCompartment>
unlockAtomsCompartmenIf(cx->compartment == rt->atomsCompartment &&
rt->atomsCompartmentIsLocked, cx);
#endif
/* The last ditch GC preserves all atoms. */
AutoKeepAtoms keep(rt);
@ -1794,7 +1794,7 @@ TriggerCompartmentGC(JSCompartment *comp)
}
#endif
if (rt->gcMode != JSGC_MODE_COMPARTMENT || comp == rt->defaultCompartment) {
if (rt->gcMode != JSGC_MODE_COMPARTMENT || comp == rt->atomsCompartment) {
/* We can't do a compartmental GC of the default compartment. */
TriggerGC(rt);
return;
@ -2192,8 +2192,8 @@ SweepCompartments(JSContext *cx, JSGCInvocationKind gckind)
JSCompartment **end = rt->compartments.end();
JSCompartment **write = read;
/* Delete defaultCompartment only during runtime shutdown */
rt->defaultCompartment->marked = true;
/* Delete atomsCompartment only during runtime shutdown */
rt->atomsCompartment->marked = true;
while (read < end) {
JSCompartment *compartment = (*read++);

View File

@ -112,7 +112,7 @@ NewFinalizableGCThing(JSContext *cx, unsigned thingKind)
{
JS_ASSERT(thingKind < js::gc::FINALIZE_LIMIT);
#ifdef JS_THREADSAFE
JS_ASSERT_IF((cx->compartment == cx->runtime->defaultCompartment),
JS_ASSERT_IF((cx->compartment == cx->runtime->atomsCompartment),
(thingKind == js::gc::FINALIZE_STRING) ||
(thingKind == js::gc::FINALIZE_SHORT_STRING));
#endif
@ -413,10 +413,10 @@ NonRopeTypedMarker(JSRuntime *rt, JSString *str)
/*
* If we perform single-compartment GC don't mark Strings outside the current compartment.
* Dependent Strings are not shared between compartments and they can't be in the defaultCompartment.
* Dependent Strings are not shared between compartments and they can't be in the atomsCompartment.
*/
if (str->asCell()->compartment() != rt->gcCurrentCompartment) {
JS_ASSERT(str->asCell()->compartment() == rt->defaultCompartment);
JS_ASSERT(str->asCell()->compartment() == rt->atomsCompartment);
break;
}
if (!str->asCell()->markIfUnmarked())
@ -460,7 +460,7 @@ TypedMarker(JSTracer *trc, JSString *str)
*/
JSString *parent = NULL;
first_visit_node: {
JS_ASSERT(strComp == str->asCell()->compartment() || str->asCell()->compartment() == rt->defaultCompartment);
JS_ASSERT(strComp == str->asCell()->compartment() || str->asCell()->compartment() == rt->atomsCompartment);
JS_ASSERT(!JSString::isStatic(str));
if (!str->asCell()->markIfUnmarked())
goto finish_node;
@ -474,7 +474,7 @@ TypedMarker(JSTracer *trc, JSString *str)
}
JS_ASSERT_IF(!JSString::isStatic(left),
strComp == left->asCell()->compartment()
|| left->asCell()->compartment() == rt->defaultCompartment);
|| left->asCell()->compartment() == rt->atomsCompartment);
NonRopeTypedMarker(rt, left);
}
visit_right_child: {
@ -488,7 +488,7 @@ TypedMarker(JSTracer *trc, JSString *str)
}
JS_ASSERT_IF(!JSString::isStatic(right),
strComp == right->asCell()->compartment()
|| right->asCell()->compartment() == rt->defaultCompartment);
|| right->asCell()->compartment() == rt->atomsCompartment);
NonRopeTypedMarker(rt, right);
}
finish_node: {

View File

@ -279,8 +279,8 @@ DumpArenaStats(JSGCArenaStats *stp, FILE *fp)
void
DumpCompartmentStats(JSCompartment *comp, FILE *fp)
{
if (comp->rt->defaultCompartment == comp)
fprintf(fp, "\n**** DefaultCompartment Allocation Statistics: %p ****\n\n", (void *) comp);
if (comp->rt->atomsCompartment == comp)
fprintf(fp, "\n**** AtomsCompartment Allocation Statistics: %p ****\n\n", (void *) comp);
else
fprintf(fp, "\n**** Compartment Allocation Statistics: %p ****\n\n", (void *) comp);