forked from mirrors/gecko-dev
Bug 1803495 - Use AutoStableStringChars overload for SourceText::init. r=arai
Remove duplicate code and transfer string buffer ownership in more cases. Depends on D163552 Differential Revision: https://phabricator.services.mozilla.com/D163553
This commit is contained in:
parent
9c73cd619c
commit
e727a5089f
8 changed files with 36 additions and 79 deletions
|
|
@ -330,12 +330,7 @@ static bool EvalKernel(JSContext* cx, HandleValue v, EvalType evalType,
|
|||
}
|
||||
|
||||
SourceText<char16_t> srcBuf;
|
||||
|
||||
const char16_t* chars = linearChars.twoByteRange().begin().get();
|
||||
SourceOwnership ownership = linearChars.maybeGiveOwnershipToCaller()
|
||||
? SourceOwnership::TakeOwnership
|
||||
: SourceOwnership::Borrowed;
|
||||
if (!srcBuf.init(cx, chars, linearStr->length(), ownership)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -222,12 +222,7 @@ static bool PerformShadowRealmEval(JSContext* cx, Handle<JSString*> sourceText,
|
|||
return false;
|
||||
}
|
||||
SourceText<char16_t> srcBuf;
|
||||
|
||||
const char16_t* chars = linearChars.twoByteRange().begin().get();
|
||||
SourceOwnership ownership = linearChars.maybeGiveOwnershipToCaller()
|
||||
? SourceOwnership::TakeOwnership
|
||||
: SourceOwnership::Borrowed;
|
||||
if (!srcBuf.init(cx, chars, linearChars.length(), ownership)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6131,15 +6131,6 @@ static bool EvalReturningScope(JSContext* cx, unsigned argc, Value* vp) {
|
|||
}
|
||||
}
|
||||
|
||||
AutoStableStringChars strChars(cx);
|
||||
if (!strChars.initTwoByte(cx, str)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
mozilla::Range<const char16_t> chars = strChars.twoByteRange();
|
||||
size_t srclen = chars.length();
|
||||
const char16_t* src = chars.begin().get();
|
||||
|
||||
JS::AutoFilename filename;
|
||||
unsigned lineno;
|
||||
|
||||
|
|
@ -6150,8 +6141,12 @@ static bool EvalReturningScope(JSContext* cx, unsigned argc, Value* vp) {
|
|||
options.setNoScriptRval(true);
|
||||
options.setNonSyntacticScope(true);
|
||||
|
||||
AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, str)) {
|
||||
return false;
|
||||
}
|
||||
JS::SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, src, srclen, SourceOwnership::Borrowed)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -6362,8 +6357,7 @@ static bool CompileToStencil(JSContext* cx, uint32_t argc, Value* vp) {
|
|||
return false;
|
||||
}
|
||||
JS::SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, linearChars.twoByteChars(), src->length(),
|
||||
JS::SourceOwnership::Borrowed)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -6508,8 +6502,7 @@ static bool CompileToStencilXDR(JSContext* cx, uint32_t argc, Value* vp) {
|
|||
return false;
|
||||
}
|
||||
JS::SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, linearChars.twoByteChars(), src->length(),
|
||||
JS::SourceOwnership::Borrowed)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -7694,20 +7687,13 @@ JSScript* js::TestingFunctionArgumentToScript(
|
|||
JSContext* cx, HandleValue v, JSFunction** funp /* = nullptr */) {
|
||||
if (v.isString()) {
|
||||
// To convert a string to a script, compile it. Parse it as an ES6 Program.
|
||||
Rooted<JSLinearString*> linearStr(
|
||||
cx, JS::StringToLinearString(cx, v.toString()));
|
||||
if (!linearStr) {
|
||||
return nullptr;
|
||||
}
|
||||
size_t len = JS::GetLinearStringLength(linearStr);
|
||||
Rooted<JSString*> str(cx, v.toString());
|
||||
AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, linearStr)) {
|
||||
if (!linearChars.initTwoByte(cx, str)) {
|
||||
return nullptr;
|
||||
}
|
||||
const char16_t* chars = linearChars.twoByteRange().begin().get();
|
||||
|
||||
SourceText<char16_t> source;
|
||||
if (!source.init(cx, chars, len, SourceOwnership::Borrowed)) {
|
||||
if (!source.initMaybeBorrowed(cx, linearChars)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1287,14 +1287,12 @@ bool DebuggerObject::CallData::createSource() {
|
|||
compileOptions.setIntroductionType("inlineScript");
|
||||
}
|
||||
|
||||
Vector<char16_t> textChars(cx);
|
||||
if (!CopyStringToVector(cx, text, textChars)) {
|
||||
AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, text)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
JS::SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, textChars.begin(), text->length(),
|
||||
JS::SourceOwnership::Borrowed)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -469,15 +469,13 @@ JSObject* ModuleLoader::loadAndParse(JSContext* cx, HandleString pathArg) {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
JS::AutoStableStringChars stableChars(cx);
|
||||
if (!stableChars.initTwoByte(cx, source)) {
|
||||
JS::AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, source)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const char16_t* chars = stableChars.twoByteRange().begin().get();
|
||||
JS::SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, chars, source->length(),
|
||||
JS::SourceOwnership::Borrowed)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2409,15 +2409,13 @@ static bool Evaluate(JSContext* cx, unsigned argc, Value* vp) {
|
|||
return false;
|
||||
}
|
||||
} else {
|
||||
AutoStableStringChars codeChars(cx);
|
||||
if (!codeChars.initTwoByte(cx, code)) {
|
||||
AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, code)) {
|
||||
return false;
|
||||
}
|
||||
mozilla::Range<const char16_t> chars = codeChars.twoByteRange();
|
||||
|
||||
JS::SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, chars.begin().get(), chars.length(),
|
||||
JS::SourceOwnership::Borrowed)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -2629,14 +2627,13 @@ static bool Run(JSContext* cx, unsigned argc, Value* vp) {
|
|||
return false;
|
||||
}
|
||||
|
||||
AutoStableStringChars chars(cx);
|
||||
if (!chars.initTwoByte(cx, str)) {
|
||||
AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, str)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
JS::SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, chars.twoByteRange().begin().get(), str->length(),
|
||||
JS::SourceOwnership::Borrowed)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -4892,15 +4889,13 @@ static bool ParseModule(JSContext* cx, unsigned argc, Value* vp) {
|
|||
}
|
||||
options.setModule();
|
||||
|
||||
AutoStableStringChars stableChars(cx);
|
||||
if (!stableChars.initTwoByte(cx, scriptContents)) {
|
||||
AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, scriptContents)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const char16_t* chars = stableChars.twoByteRange().begin().get();
|
||||
JS::SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, chars, scriptContents->length(),
|
||||
JS::SourceOwnership::Borrowed)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -8195,13 +8190,12 @@ static bool EntryPoints(JSContext* cx, unsigned argc, Value* vp) {
|
|||
return false;
|
||||
}
|
||||
|
||||
AutoStableStringChars stableChars(cx);
|
||||
if (!stableChars.initTwoByte(cx, codeString)) {
|
||||
AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, codeString)) {
|
||||
return false;
|
||||
}
|
||||
JS::SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, stableChars.twoByteRange().begin().get(),
|
||||
codeString->length(), JS::SourceOwnership::Borrowed)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1675,17 +1675,13 @@ static bool CreateDynamicFunction(JSContext* cx, const CallArgs& args,
|
|||
}
|
||||
|
||||
// Steps 7.a-b, 8.a-b, 9.a-b, 16-28.
|
||||
AutoStableStringChars stableChars(cx);
|
||||
if (!stableChars.initTwoByte(cx, functionText)) {
|
||||
AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, functionText)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
mozilla::Range<const char16_t> chars = stableChars.twoByteRange();
|
||||
SourceOwnership ownership = stableChars.maybeGiveOwnershipToCaller()
|
||||
? SourceOwnership::TakeOwnership
|
||||
: SourceOwnership::Borrowed;
|
||||
SourceText<char16_t> srcBuf;
|
||||
if (!srcBuf.init(cx, chars.begin().get(), chars.length(), ownership)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7009,18 +7009,13 @@ static bool HandleInstantiationFailure(JSContext* cx, CallArgs args,
|
|||
options.setForceStrictMode();
|
||||
}
|
||||
|
||||
AutoStableStringChars stableChars(cx);
|
||||
if (!stableChars.initTwoByte(cx, src)) {
|
||||
AutoStableStringChars linearChars(cx);
|
||||
if (!linearChars.initTwoByte(cx, src)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SourceText<char16_t> srcBuf;
|
||||
|
||||
const char16_t* chars = stableChars.twoByteRange().begin().get();
|
||||
SourceOwnership ownership = stableChars.maybeGiveOwnershipToCaller()
|
||||
? SourceOwnership::TakeOwnership
|
||||
: SourceOwnership::Borrowed;
|
||||
if (!srcBuf.init(cx, chars, end - begin, ownership)) {
|
||||
if (!srcBuf.initMaybeBorrowed(cx, linearChars)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue