зеркало из https://github.com/mozilla/gecko-dev.git
Bug 993772 - Stop serializing principals along with scripts. r=mrbkap
The principal of a script is determined by the compartment these days, so this field is useless.
This commit is contained in:
Родитель
41724a80a8
Коммит
598e9fa905
|
@ -46,7 +46,7 @@ FreezeThaw(JSContext *cx, JS::HandleScript script)
|
|||
|
||||
// thaw
|
||||
JSScript *script2 = JS_DecodeScript(cx, memory, nbytes,
|
||||
script->principals(), script->originPrincipals());
|
||||
script->originPrincipals());
|
||||
js_free(memory);
|
||||
return script2;
|
||||
}
|
||||
|
@ -70,7 +70,6 @@ FreezeThaw(JSContext *cx, JS::HandleObject funobj)
|
|||
// thaw
|
||||
JSScript *script = GetScript(cx, funobj);
|
||||
JSObject *funobj2 = JS_DecodeInterpretedFunction(cx, memory, nbytes,
|
||||
script->principals(),
|
||||
script->originPrincipals());
|
||||
js_free(memory);
|
||||
return funobj2;
|
||||
|
|
|
@ -6341,9 +6341,9 @@ JS_EncodeInterpretedFunction(JSContext *cx, HandleObject funobjArg, uint32_t *le
|
|||
|
||||
JS_PUBLIC_API(JSScript *)
|
||||
JS_DecodeScript(JSContext *cx, const void *data, uint32_t length,
|
||||
JSPrincipals *principals, JSPrincipals *originPrincipals)
|
||||
JSPrincipals *originPrincipals)
|
||||
{
|
||||
XDRDecoder decoder(cx, data, length, principals, originPrincipals);
|
||||
XDRDecoder decoder(cx, data, length, originPrincipals);
|
||||
RootedScript script(cx);
|
||||
if (!decoder.codeScript(&script))
|
||||
return nullptr;
|
||||
|
@ -6352,9 +6352,9 @@ JS_DecodeScript(JSContext *cx, const void *data, uint32_t length,
|
|||
|
||||
JS_PUBLIC_API(JSObject *)
|
||||
JS_DecodeInterpretedFunction(JSContext *cx, const void *data, uint32_t length,
|
||||
JSPrincipals *principals, JSPrincipals *originPrincipals)
|
||||
JSPrincipals *originPrincipals)
|
||||
{
|
||||
XDRDecoder decoder(cx, data, length, principals, originPrincipals);
|
||||
XDRDecoder decoder(cx, data, length, originPrincipals);
|
||||
RootedObject funobj(cx);
|
||||
if (!decoder.codeFunction(&funobj))
|
||||
return nullptr;
|
||||
|
|
|
@ -4762,12 +4762,11 @@ extern JS_PUBLIC_API(void *)
|
|||
JS_EncodeInterpretedFunction(JSContext *cx, JS::HandleObject funobj, uint32_t *lengthp);
|
||||
|
||||
extern JS_PUBLIC_API(JSScript *)
|
||||
JS_DecodeScript(JSContext *cx, const void *data, uint32_t length,
|
||||
JSPrincipals *principals, JSPrincipals *originPrincipals);
|
||||
JS_DecodeScript(JSContext *cx, const void *data, uint32_t length, JSPrincipals *originPrincipals);
|
||||
|
||||
extern JS_PUBLIC_API(JSObject *)
|
||||
JS_DecodeInterpretedFunction(JSContext *cx, const void *data, uint32_t length,
|
||||
JSPrincipals *principals, JSPrincipals *originPrincipals);
|
||||
JSPrincipals *originPrincipals);
|
||||
|
||||
namespace JS {
|
||||
|
||||
|
|
|
@ -1215,8 +1215,7 @@ Evaluate(JSContext *cx, unsigned argc, jsval *vp)
|
|||
}
|
||||
|
||||
if (loadBytecode) {
|
||||
script = JS_DecodeScript(cx, loadBuffer, loadLength, cx->compartment()->principals,
|
||||
options.originPrincipals(cx));
|
||||
script = JS_DecodeScript(cx, loadBuffer, loadLength, options.originPrincipals(cx));
|
||||
} else {
|
||||
script = JS::Compile(cx, global, options, codeChars, codeLength);
|
||||
}
|
||||
|
|
|
@ -122,12 +122,11 @@ XDRState<mode>::codeConstValue(MutableHandleValue vp)
|
|||
}
|
||||
|
||||
XDRDecoder::XDRDecoder(JSContext *cx, const void *data, uint32_t length,
|
||||
JSPrincipals *principals, JSPrincipals *originPrincipals)
|
||||
JSPrincipals *originPrincipals)
|
||||
: XDRState<XDR_DECODE>(cx)
|
||||
{
|
||||
buf.setData(data, length);
|
||||
this->principals_ = principals;
|
||||
this->originPrincipals_ = NormalizeOriginPrincipals(principals, originPrincipals);
|
||||
this->originPrincipals_ = originPrincipals;
|
||||
}
|
||||
|
||||
template class js::XDRState<XDR_ENCODE>;
|
||||
|
|
|
@ -95,11 +95,10 @@ class XDRState {
|
|||
XDRBuffer buf;
|
||||
|
||||
protected:
|
||||
JSPrincipals *principals_;
|
||||
JSPrincipals *originPrincipals_;
|
||||
|
||||
XDRState(JSContext *cx)
|
||||
: buf(cx), principals_(nullptr), originPrincipals_(nullptr) {
|
||||
: buf(cx), originPrincipals_(nullptr) {
|
||||
}
|
||||
|
||||
public:
|
||||
|
@ -256,7 +255,7 @@ class XDREncoder : public XDRState<XDR_ENCODE> {
|
|||
class XDRDecoder : public XDRState<XDR_DECODE> {
|
||||
public:
|
||||
XDRDecoder(JSContext *cx, const void *data, uint32_t length,
|
||||
JSPrincipals *principals, JSPrincipals *originPrincipals);
|
||||
JSPrincipals *originPrincipals);
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ ReadCachedScript(StartupCache* cache, nsACString &uri, JSContext *cx,
|
|||
if (NS_FAILED(rv))
|
||||
return rv; // don't warn since NOT_AVAILABLE is an ok error
|
||||
|
||||
scriptp.set(JS_DecodeScript(cx, buf, len, nsJSPrincipals::get(systemPrincipal), nullptr));
|
||||
scriptp.set(JS_DecodeScript(cx, buf, len, nullptr));
|
||||
if (!scriptp)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
return NS_OK;
|
||||
|
|
|
@ -1360,7 +1360,8 @@ nsXPConnect::NotifyDidPaint()
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
static const uint8_t HAS_PRINCIPALS_FLAG = 1;
|
||||
// Note - We used to have HAS_PRINCIPALS_FLAG = 1 here, so reusing that flag
|
||||
// will require bumping the XDR version number.
|
||||
static const uint8_t HAS_ORIGIN_PRINCIPALS_FLAG = 2;
|
||||
|
||||
static nsresult
|
||||
|
@ -1382,8 +1383,6 @@ WriteScriptOrFunction(nsIObjectOutputStream *stream, JSContext *cx,
|
|||
nsJSPrincipals::get(JS_GetScriptOriginPrincipals(script));
|
||||
|
||||
uint8_t flags = 0;
|
||||
if (principal)
|
||||
flags |= HAS_PRINCIPALS_FLAG;
|
||||
|
||||
// Optimize for the common case when originPrincipals == principals. As
|
||||
// originPrincipals is set to principals when the former is null we can
|
||||
|
@ -1395,12 +1394,6 @@ WriteScriptOrFunction(nsIObjectOutputStream *stream, JSContext *cx,
|
|||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (flags & HAS_PRINCIPALS_FLAG) {
|
||||
rv = stream->WriteObject(principal, true);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (flags & HAS_ORIGIN_PRINCIPALS_FLAG) {
|
||||
rv = stream->WriteObject(originPrincipal, true);
|
||||
if (NS_FAILED(rv))
|
||||
|
@ -1439,17 +1432,6 @@ ReadScriptOrFunction(nsIObjectInputStream *stream, JSContext *cx,
|
|||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsJSPrincipals* principal = nullptr;
|
||||
nsCOMPtr<nsIPrincipal> readPrincipal;
|
||||
if (flags & HAS_PRINCIPALS_FLAG) {
|
||||
nsCOMPtr<nsISupports> supports;
|
||||
rv = stream->ReadObject(true, getter_AddRefs(supports));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
readPrincipal = do_QueryInterface(supports);
|
||||
principal = nsJSPrincipals::get(readPrincipal);
|
||||
}
|
||||
|
||||
nsJSPrincipals* originPrincipal = nullptr;
|
||||
nsCOMPtr<nsIPrincipal> readOriginPrincipal;
|
||||
if (flags & HAS_ORIGIN_PRINCIPALS_FLAG) {
|
||||
|
@ -1473,14 +1455,14 @@ ReadScriptOrFunction(nsIObjectInputStream *stream, JSContext *cx,
|
|||
|
||||
{
|
||||
if (scriptp) {
|
||||
JSScript *script = JS_DecodeScript(cx, data, size, principal, originPrincipal);
|
||||
JSScript *script = JS_DecodeScript(cx, data, size, originPrincipal);
|
||||
if (!script)
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
else
|
||||
*scriptp = script;
|
||||
} else {
|
||||
JSObject *funobj = JS_DecodeInterpretedFunction(cx, data, size,
|
||||
principal, originPrincipal);
|
||||
originPrincipal);
|
||||
if (!funobj)
|
||||
rv = NS_ERROR_OUT_OF_MEMORY;
|
||||
else
|
||||
|
|
Загрузка…
Ссылка в новой задаче