Bug 830783 - Part c: Various rooting in RegExp.cpp; r=terrence

This commit is contained in:
Ms2ger 2013-02-07 09:13:08 +01:00
parent bbef5222c4
commit 7f2b3065c4

View File

@ -30,7 +30,7 @@ class RegExpMatchBuilder
}
public:
RegExpMatchBuilder(JSContext *cx, JSObject *array) : cx(cx), array(cx, array) {}
RegExpMatchBuilder(JSContext *cx, HandleObject array) : cx(cx), array(cx, array) {}
bool append(uint32_t index, HandleValue v) {
JS_ASSERT(!array->getOps()->getElement);
@ -43,7 +43,7 @@ class RegExpMatchBuilder
return setProperty(cx->names().index, value);
}
bool setInput(JSString *str) {
bool setInput(HandleString str) {
JS_ASSERT(str);
RootedValue value(cx, StringValue(str));
return setProperty(cx->names().input, value);
@ -84,7 +84,7 @@ js::CreateRegExpMatchResult(JSContext *cx, HandleString input_, StableCharPtr ch
for (size_t i = 0; i < numPairs; ++i) {
const MatchPair &pair = matches[i];
JSString *captured;
RootedString captured(cx);
if (pair.isUndefined()) {
JS_ASSERT(i != 0); /* Since we had a match, first pair must be present. */
if (!builder.append(i, undefinedValue))
@ -114,9 +114,9 @@ js::CreateRegExpMatchResult(JSContext *cx, HandleString string, MatchPairs &matc
return CreateRegExpMatchResult(cx, input, input->chars(), input->length(), matches, rval);
}
RegExpRunStatus
static RegExpRunStatus
ExecuteRegExpImpl(JSContext *cx, RegExpStatics *res, RegExpShared &re,
JSLinearString *input, StableCharPtr chars, size_t length,
Handle<JSLinearString*> input, StableCharPtr chars, size_t length,
size_t *lastIndex, MatchConduit &matches)
{
RegExpRunStatus status;
@ -174,7 +174,7 @@ js::ExecuteRegExpLegacy(JSContext *cx, RegExpStatics *res, RegExpObject &reobj,
/* Note: returns the original if no escaping need be performed. */
static JSAtom *
EscapeNakedForwardSlashes(JSContext *cx, JSAtom *unescaped)
EscapeNakedForwardSlashes(JSContext *cx, HandleAtom unescaped)
{
size_t oldLen = unescaped->length();
const jschar *oldChars = unescaped->chars();
@ -228,7 +228,7 @@ CompileRegExpObject(JSContext *cx, RegExpObjectBuilder &builder, CallArgs args)
return true;
}
Value sourceValue = args[0];
RootedValue sourceValue(cx, args[0]);
/*
* If we get passed in an object whose internal [[Class]] property is
@ -293,7 +293,7 @@ CompileRegExpObject(JSContext *cx, RegExpObjectBuilder &builder, CallArgs args)
RegExpFlag flags = RegExpFlag(0);
if (args.hasDefined(1)) {
JSString *flagStr = ToString<CanGC>(cx, args[1]);
RootedString flagStr(cx, ToString<CanGC>(cx, args[1]));
if (!flagStr)
return false;
args[1].setString(flagStr);
@ -367,7 +367,7 @@ regexp_toString_impl(JSContext *cx, CallArgs args)
{
JS_ASSERT(IsRegExp(args.thisv()));
JSString *str = args.thisv().toObject().asRegExp().toString(cx);
UnrootedString str = args.thisv().toObject().asRegExp().toString(cx);
if (!str)
return false;
@ -619,7 +619,7 @@ ExecuteRegExp(JSContext *cx, CallArgs args, MatchConduit &matches)
RootedObject regexp(cx, &args.thisv().toObject());
/* Step 2. */
RootedString string(cx, ToString<CanGC>(cx, (args.length() > 0) ? args[0] : UndefinedValue()));
RootedString string(cx, ToString<CanGC>(cx, args.get(0)));
if (!string)
return RegExpRunStatus_Error;