Bug 637572: Assert that JSScript:: and LazyScript::sourceObject_ are never cross-compartment references. r=billm

This commit is contained in:
Jim Blandy 2013-11-21 13:25:14 -08:00
parent 97a88673eb
commit b34dabcabb

View File

@ -818,6 +818,7 @@ js::XDRScript(XDRState<XDR_DECODE> *, HandleObject, HandleScript, HandleFunction
void
JSScript::setSourceObject(js::ScriptSourceObject *object)
{
JS_ASSERT(compartment() == object->compartment());
sourceObject_ = object;
}
@ -1768,7 +1769,7 @@ JSScript::Create(ExclusiveContext *cx, HandleObject enclosingScope, bool savedCa
}
script->staticLevel = uint16_t(staticLevel);
script->sourceObject_ = sourceObject;
script->setSourceObject(sourceObject);
script->sourceStart = bufStart;
script->sourceEnd = bufEnd;
@ -3038,7 +3039,10 @@ LazyScript::initScript(JSScript *script)
void
LazyScript::setParent(JSObject *enclosingScope, ScriptSourceObject *sourceObject)
{
JS_ASSERT(sourceObject && !sourceObject_ && !enclosingScope_);
JS_ASSERT(!sourceObject_ && !enclosingScope_);
JS_ASSERT_IF(enclosingScope, function_->compartment() == enclosingScope->compartment());
JS_ASSERT(function_->compartment() == sourceObject->compartment());
enclosingScope_ = enclosingScope;
sourceObject_ = sourceObject;
}