зеркало из https://github.com/mozilla/gecko-dev.git
Bug 828248 - Part a: Pass MutableHandleId to ValueToId and DoubleIndexToId; r=sfink
This commit is contained in:
Родитель
61c6473b48
Коммит
d43e8bee85
|
@ -72,7 +72,7 @@ obj_propertyIsEnumerable(JSContext *cx, unsigned argc, Value *vp)
|
|||
|
||||
/* Step 1. */
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, args.length() ? args[0] : UndefinedValue(), id.address()))
|
||||
if (!ValueToId(cx, args.length() ? args[0] : UndefinedValue(), &id))
|
||||
return false;
|
||||
|
||||
/* Step 2. */
|
||||
|
@ -382,7 +382,7 @@ DefineAccessor(JSContext *cx, unsigned argc, Value *vp)
|
|||
}
|
||||
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, args[0], id.address()))
|
||||
if (!ValueToId(cx, args[0], &id))
|
||||
return false;
|
||||
|
||||
RootedObject descObj(cx, NewBuiltinClassInstance(cx, &ObjectClass));
|
||||
|
@ -434,7 +434,7 @@ obj_lookupGetter(JSContext *cx, unsigned argc, Value *vp)
|
|||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, args.length() ? args[0] : UndefinedValue(), id.address()))
|
||||
if (!ValueToId(cx, args.length() ? args[0] : UndefinedValue(), &id))
|
||||
return JS_FALSE;
|
||||
RootedObject obj(cx, ToObject(cx, args.thisv()));
|
||||
if (!obj)
|
||||
|
@ -470,7 +470,7 @@ obj_lookupSetter(JSContext *cx, unsigned argc, Value *vp)
|
|||
CallArgs args = CallArgsFromVp(argc, vp);
|
||||
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, args.length() ? args[0] : UndefinedValue(), id.address()))
|
||||
if (!ValueToId(cx, args.length() ? args[0] : UndefinedValue(), &id))
|
||||
return JS_FALSE;
|
||||
RootedObject obj(cx, ToObject(cx, args.thisv()));
|
||||
if (!obj)
|
||||
|
@ -575,7 +575,7 @@ obj_watch(JSContext *cx, unsigned argc, Value *vp)
|
|||
return false;
|
||||
|
||||
RootedId propid(cx);
|
||||
if (!ValueToId(cx, args[0], propid.address()))
|
||||
if (!ValueToId(cx, args[0], &propid))
|
||||
return false;
|
||||
|
||||
RootedObject obj(cx, ToObject(cx, args.thisv()));
|
||||
|
@ -603,7 +603,7 @@ obj_unwatch(JSContext *cx, unsigned argc, Value *vp)
|
|||
if (!obj)
|
||||
return false;
|
||||
args.rval().setUndefined();
|
||||
jsid id;
|
||||
RootedId id(cx);
|
||||
if (argc != 0) {
|
||||
if (!ValueToId(cx, args[0], &id))
|
||||
return false;
|
||||
|
@ -623,7 +623,7 @@ obj_hasOwnProperty(JSContext *cx, unsigned argc, Value *vp)
|
|||
|
||||
/* Step 1. */
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, args.length() ? args[0] : UndefinedValue(), id.address()))
|
||||
if (!ValueToId(cx, args.length() ? args[0] : UndefinedValue(), &id))
|
||||
return false;
|
||||
|
||||
/* Step 2. */
|
||||
|
@ -740,7 +740,7 @@ obj_getOwnPropertyDescriptor(JSContext *cx, unsigned argc, Value *vp)
|
|||
if (!GetFirstArgumentAsObject(cx, argc, vp, "Object.getOwnPropertyDescriptor", &obj))
|
||||
return JS_FALSE;
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, argc >= 2 ? vp[3] : UndefinedValue(), id.address()))
|
||||
if (!ValueToId(cx, argc >= 2 ? vp[3] : UndefinedValue(), &id))
|
||||
return JS_FALSE;
|
||||
return GetOwnPropertyDescriptor(cx, obj, id, vp);
|
||||
}
|
||||
|
@ -828,7 +828,7 @@ obj_defineProperty(JSContext *cx, unsigned argc, Value *vp)
|
|||
return false;
|
||||
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, argc >= 2 ? vp[3] : UndefinedValue(), id.address()))
|
||||
if (!ValueToId(cx, argc >= 2 ? vp[3] : UndefinedValue(), &id))
|
||||
return JS_FALSE;
|
||||
|
||||
const Value descval = argc >= 3 ? vp[4] : UndefinedValue();
|
||||
|
|
|
@ -3152,7 +3152,13 @@ JS_ValueToId(JSContext *cx, jsval valueArg, jsid *idp)
|
|||
AssertHeapIsIdle(cx);
|
||||
CHECK_REQUEST(cx);
|
||||
assertSameCompartment(cx, value);
|
||||
return ValueToId(cx, value, idp);
|
||||
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, value, &id))
|
||||
return false;
|
||||
|
||||
*idp = id;
|
||||
return true;
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(JSBool)
|
||||
|
|
|
@ -276,10 +276,10 @@ JSObject::arrayGetOwnDataElement(JSContext *cx, size_t i, Value *vp)
|
|||
}
|
||||
|
||||
bool
|
||||
DoubleIndexToId(JSContext *cx, double index, jsid *id)
|
||||
DoubleIndexToId(JSContext *cx, double index, MutableHandleId id)
|
||||
{
|
||||
if (index == uint32_t(index))
|
||||
return IndexToId(cx, uint32_t(index), id);
|
||||
return IndexToId(cx, uint32_t(index), id.address());
|
||||
|
||||
return ValueToId(cx, DoubleValue(index), id);
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ DoGetElement(JSContext *cx, HandleObject obj, double index, JSBool *hole, Mutabl
|
|||
{
|
||||
RootedId id(cx);
|
||||
|
||||
if (!DoubleIndexToId(cx, index, id.address()))
|
||||
if (!DoubleIndexToId(cx, index, &id))
|
||||
return false;
|
||||
|
||||
RootedObject obj2(cx);
|
||||
|
@ -432,7 +432,7 @@ SetArrayElement(JSContext *cx, HandleObject obj, double index, HandleValue v)
|
|||
}
|
||||
|
||||
RootedId id(cx);
|
||||
if (!DoubleIndexToId(cx, index, id.address()))
|
||||
if (!DoubleIndexToId(cx, index, &id))
|
||||
return false;
|
||||
|
||||
RootedValue tmp(cx, v);
|
||||
|
@ -1342,7 +1342,7 @@ JSObject::makeDenseArraySlow(JSContext *cx, HandleObject obj)
|
|||
uint32_t next = 0;
|
||||
for (uint32_t i = 0; i < arrayInitialized; i++) {
|
||||
/* Dense array indexes can always fit in a jsid. */
|
||||
jsid id;
|
||||
RootedId id(cx);
|
||||
JS_ALWAYS_TRUE(ValueToId(cx, Int32Value(i), &id));
|
||||
|
||||
if (elems[i].isMagic(JS_ARRAY_HOLE))
|
||||
|
@ -1719,7 +1719,7 @@ InitArrayElements(JSContext *cx, HandleObject obj, uint32_t start, uint32_t coun
|
|||
Value idval = DoubleValue(MAX_ARRAY_INDEX + 1);
|
||||
do {
|
||||
value = *vector++;
|
||||
if (!ValueToId(cx, idval, id.address()) ||
|
||||
if (!ValueToId(cx, idval, &id) ||
|
||||
!JSObject::setGeneric(cx, obj, obj, id, &value, true)) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -48,19 +48,19 @@ ToAtom(JSContext *cx, const js::Value &v)
|
|||
}
|
||||
|
||||
inline bool
|
||||
ValueToId(JSContext* cx, JSObject *obj, const Value &v, jsid *idp)
|
||||
ValueToId(JSContext* cx, JSObject *obj, const Value &v, MutableHandleId idp)
|
||||
{
|
||||
int32_t i;
|
||||
if (ValueFitsInInt32(v, &i) && INT_FITS_IN_JSID(i)) {
|
||||
*idp = INT_TO_JSID(i);
|
||||
idp.set(INT_TO_JSID(i));
|
||||
return true;
|
||||
}
|
||||
|
||||
return InternNonIntElementId(cx, obj, v, idp);
|
||||
return InternNonIntElementId(cx, obj, v, idp.address());
|
||||
}
|
||||
|
||||
inline bool
|
||||
ValueToId(JSContext* cx, const Value &v, jsid *idp)
|
||||
ValueToId(JSContext* cx, const Value &v, MutableHandleId idp)
|
||||
{
|
||||
return ValueToId(cx, NULL, v, idp);
|
||||
}
|
||||
|
|
|
@ -454,7 +454,12 @@ JSCompartment::wrapId(JSContext *cx, jsid *idp)
|
|||
RootedValue value(cx, IdToValue(*idp));
|
||||
if (!wrap(cx, value.address()))
|
||||
return false;
|
||||
return ValueToId(cx, value.get(), idp);
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, value.get(), &id))
|
||||
return false;
|
||||
|
||||
*idp = id;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -261,7 +261,7 @@ JS_SetWatchPoint(JSContext *cx, JSObject *obj_, jsid id,
|
|||
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_CANT_WATCH_PROP);
|
||||
return false;
|
||||
} else {
|
||||
if (!ValueToId(cx, IdToValue(id), propid.address()))
|
||||
if (!ValueToId(cx, IdToValue(id), &propid))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -1629,7 +1629,7 @@ END_CASE(JSOP_AND)
|
|||
#define FETCH_ELEMENT_ID(obj, n, id) \
|
||||
JS_BEGIN_MACRO \
|
||||
const Value &idval_ = regs.sp[n]; \
|
||||
if (!ValueToId(cx, obj, idval_, id.address())) \
|
||||
if (!ValueToId(cx, obj, idval_, &id)) \
|
||||
goto error; \
|
||||
JS_END_MACRO
|
||||
|
||||
|
|
|
@ -1107,7 +1107,7 @@ SuppressDeletedPropertyHelper(JSContext *cx, HandleObject obj, StringPredicate p
|
|||
RootedObject obj2(cx);
|
||||
RootedShape prop(cx);
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, StringValue(*idp), id.address()))
|
||||
if (!ValueToId(cx, StringValue(*idp), &id))
|
||||
return false;
|
||||
if (!JSObject::lookupGeneric(cx, proto, id, &obj2, &prop))
|
||||
return false;
|
||||
|
@ -1238,7 +1238,7 @@ js_IteratorMore(JSContext *cx, HandleObject iterobj, MutableHandleValue rval)
|
|||
if (ni) {
|
||||
JS_ASSERT(!ni->isKeyIter());
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, StringValue(*ni->current()), id.address()))
|
||||
if (!ValueToId(cx, StringValue(*ni->current()), &id))
|
||||
return false;
|
||||
ni->incCursor();
|
||||
RootedObject obj(cx, ni->obj);
|
||||
|
|
|
@ -644,7 +644,7 @@ js_Stringify(JSContext *cx, MutableHandleValue vp, JSObject *replacer_, Value sp
|
|||
if (!JSObject::getElement(cx, replacer, replacer, i, &v))
|
||||
return false;
|
||||
|
||||
jsid id;
|
||||
RootedId id(cx);
|
||||
if (v.isNumber()) {
|
||||
/* Step 4b(iv)(4). */
|
||||
int32_t n;
|
||||
|
|
|
@ -702,7 +702,7 @@ ArrayToIdVector(JSContext *cx, const Value &array, AutoIdVector &props)
|
|||
return false;
|
||||
if (!JSObject::getElement(cx, obj, obj, n, &v))
|
||||
return false;
|
||||
jsid id;
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, v, &id))
|
||||
return false;
|
||||
if (!props.append(id))
|
||||
|
@ -1484,7 +1484,7 @@ ArrayToIdVector(JSContext *cx, HandleObject proxy, HandleObject target, HandleVa
|
|||
|
||||
// step ii
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, v, id.address()))
|
||||
if (!ValueToId(cx, v, &id))
|
||||
return false;
|
||||
|
||||
// step iii
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
|
@ -278,8 +277,13 @@ Shape::getUserId(JSContext *cx, jsid *idp) const
|
|||
#endif
|
||||
if (self->hasShortID()) {
|
||||
int16_t id = self->shortid();
|
||||
if (id < 0)
|
||||
return ValueToId(cx, Int32Value(id), idp);
|
||||
if (id < 0) {
|
||||
RootedId rootedId(cx);
|
||||
if (!ValueToId(cx, Int32Value(id), &rootedId))
|
||||
return false;
|
||||
*idp = rootedId;
|
||||
return true;
|
||||
}
|
||||
*idp = INT_TO_JSID(id);
|
||||
} else {
|
||||
*idp = self->propid();
|
||||
|
|
|
@ -576,7 +576,7 @@ Reify(JSContext *cx, JSCompartment *origin, Value *vp)
|
|||
if (!keys.reserve(length))
|
||||
return false;
|
||||
for (size_t i = 0; i < length; ++i) {
|
||||
jsid id;
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, StringValue(ni->begin()[i]), &id))
|
||||
return false;
|
||||
keys.infallibleAppend(id);
|
||||
|
|
|
@ -5528,10 +5528,14 @@ ValueToIdForXML(JSContext *cx, jsval v, jsid *idp)
|
|||
{
|
||||
if (JSVAL_IS_INT(v)) {
|
||||
int32_t i = JSVAL_TO_INT(v);
|
||||
if (INT_FITS_IN_JSID(i))
|
||||
if (INT_FITS_IN_JSID(i)) {
|
||||
*idp = INT_TO_JSID(i);
|
||||
else if (!ValueToId(cx, v, idp))
|
||||
return JS_FALSE;
|
||||
} else {
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, v, &id))
|
||||
return JS_FALSE;
|
||||
*idp = id;
|
||||
}
|
||||
} else if (JSVAL_IS_STRING(v)) {
|
||||
JSAtom *atom = AtomizeString(cx, JSVAL_TO_STRING(v));
|
||||
if (!atom)
|
||||
|
@ -5885,7 +5889,7 @@ xml_hasOwnProperty(JSContext *cx, unsigned argc, jsval *vp)
|
|||
}
|
||||
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, name, id.address()))
|
||||
if (!ValueToId(cx, name, &id))
|
||||
return false;
|
||||
|
||||
RootedObject obj2(cx);
|
||||
|
|
|
@ -109,7 +109,7 @@ ReportObjectRequired(JSContext *cx)
|
|||
bool
|
||||
ValueToIdentifier(JSContext *cx, const Value &v, MutableHandleId id)
|
||||
{
|
||||
if (!ValueToId(cx, v, id.address()))
|
||||
if (!ValueToId(cx, v, id))
|
||||
return false;
|
||||
if (!JSID_IS_ATOM(id) || !IsIdentifier(JSID_TO_ATOM(id))) {
|
||||
RootedValue val(cx, v);
|
||||
|
@ -3043,7 +3043,7 @@ DebuggerScript_getAllOffsets(JSContext *cx, unsigned argc, Value *vp)
|
|||
RootedId id(cx);
|
||||
offsets = NewDenseEmptyArray(cx);
|
||||
if (!offsets ||
|
||||
!ValueToId(cx, NumberValue(lineno), id.address()))
|
||||
!ValueToId(cx, NumberValue(lineno), &id))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
@ -4098,7 +4098,7 @@ DebuggerObject_getOwnPropertyDescriptor(JSContext *cx, unsigned argc, Value *vp)
|
|||
THIS_DEBUGOBJECT_OWNER_REFERENT(cx, argc, vp, "getOwnPropertyDescriptor", args, dbg, obj);
|
||||
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, argc >= 1 ? args[0] : UndefinedValue(), id.address()))
|
||||
if (!ValueToId(cx, argc >= 1 ? args[0] : UndefinedValue(), &id))
|
||||
return false;
|
||||
|
||||
/* Bug: This can cause the debuggee to run! */
|
||||
|
@ -4189,7 +4189,7 @@ DebuggerObject_defineProperty(JSContext *cx, unsigned argc, Value *vp)
|
|||
REQUIRE_ARGC("Debugger.Object.defineProperty", 2);
|
||||
|
||||
RootedId id(cx);
|
||||
if (!ValueToId(cx, args[0], id.address()))
|
||||
if (!ValueToId(cx, args[0], &id))
|
||||
return false;
|
||||
|
||||
const Value &descval = args[1];
|
||||
|
|
Загрузка…
Ссылка в новой задаче