зеркало из https://github.com/mozilla/gecko-dev.git
Bug 614338 - Move some call object property methods into the js namespace. r=dmandelin
--HG-- extra : rebase_source : 3816a3ae6d775e5866030c8a51cc305f09dda1f2
This commit is contained in:
Родитель
84e48a76c5
Коммит
9c4dda1c40
|
@ -1523,10 +1523,10 @@ JS_GetPropertyDesc(JSContext *cx, JSObject *obj, JSScopeProperty *sprop,
|
|||
| (!shape->writable() ? JSPD_READONLY : 0)
|
||||
| (!shape->configurable() ? JSPD_PERMANENT : 0);
|
||||
pd->spare = 0;
|
||||
if (shape->getter() == js_GetCallArg) {
|
||||
if (shape->getter() == GetCallArg) {
|
||||
pd->slot = shape->shortid;
|
||||
pd->flags |= JSPD_ARGUMENT;
|
||||
} else if (shape->getter() == js_GetCallVar) {
|
||||
} else if (shape->getter() == GetCallVar) {
|
||||
pd->slot = shape->shortid;
|
||||
pd->flags |= JSPD_VARIABLE;
|
||||
} else {
|
||||
|
|
|
@ -1232,6 +1232,8 @@ CallPropertyOp(JSContext *cx, JSObject *obj, jsid id, Value *vp,
|
|||
return true;
|
||||
}
|
||||
|
||||
namespace js {
|
||||
|
||||
static JSBool
|
||||
GetCallArguments(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
||||
{
|
||||
|
@ -1245,7 +1247,7 @@ SetCallArguments(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
|||
}
|
||||
|
||||
JSBool
|
||||
js_GetCallArg(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
||||
GetCallArg(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
||||
{
|
||||
return CallPropertyOp(cx, obj, id, vp, JSCPK_ARG);
|
||||
}
|
||||
|
@ -1269,13 +1271,13 @@ SetFlatUpvar(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
|||
}
|
||||
|
||||
JSBool
|
||||
js_GetCallVar(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
||||
GetCallVar(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
||||
{
|
||||
return CallPropertyOp(cx, obj, id, vp, JSCPK_VAR);
|
||||
}
|
||||
|
||||
JSBool
|
||||
js_GetCallVarChecked(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
||||
GetCallVarChecked(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
||||
{
|
||||
if (!CallPropertyOp(cx, obj, id, vp, JSCPK_VAR))
|
||||
return false;
|
||||
|
@ -1289,6 +1291,8 @@ SetCallVar(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
|||
return CallPropertyOp(cx, obj, id, vp, JSCPK_VAR, true);
|
||||
}
|
||||
|
||||
} // namespace js
|
||||
|
||||
#if JS_TRACER
|
||||
JSBool JS_FASTCALL
|
||||
js_SetCallArg(JSContext *cx, JSObject *obj, jsid slotid, ValueArgType arg)
|
||||
|
@ -3070,7 +3074,7 @@ JSFunction::lastArg() const
|
|||
{
|
||||
const Shape *shape = lastVar();
|
||||
if (u.i.nvars != 0) {
|
||||
while (shape->previous() && shape->getter() != js_GetCallArg)
|
||||
while (shape->previous() && shape->getter() != GetCallArg)
|
||||
shape = shape->previous();
|
||||
}
|
||||
return shape;
|
||||
|
@ -3107,7 +3111,7 @@ JSFunction::addLocal(JSContext *cx, JSAtom *atom, JSLocalKind kind)
|
|||
JS_ASSERT(u.i.nupvars == 0);
|
||||
|
||||
indexp = &nargs;
|
||||
getter = js_GetCallArg;
|
||||
getter = GetCallArg;
|
||||
setter = SetCallArg;
|
||||
slot += nargs;
|
||||
} else if (kind == JSLOCAL_UPVAR) {
|
||||
|
@ -3119,7 +3123,7 @@ JSFunction::addLocal(JSContext *cx, JSAtom *atom, JSLocalKind kind)
|
|||
JS_ASSERT(u.i.nupvars == 0);
|
||||
|
||||
indexp = &u.i.nvars;
|
||||
getter = js_GetCallVar;
|
||||
getter = GetCallVar;
|
||||
setter = SetCallVar;
|
||||
if (kind == JSLOCAL_CONST)
|
||||
attrs |= JSPROP_READONLY;
|
||||
|
@ -3168,7 +3172,7 @@ JSFunction::addLocal(JSContext *cx, JSAtom *atom, JSLocalKind kind)
|
|||
}
|
||||
|
||||
if (findArgInsertionPoint) {
|
||||
while (parent->parent && parent->getter() != js_GetCallArg) {
|
||||
while (parent->parent && parent->getter() != GetCallArg) {
|
||||
++parent->slot;
|
||||
JS_ASSERT(parent->slot == parent->slotSpan);
|
||||
++parent->slotSpan;
|
||||
|
@ -3197,7 +3201,7 @@ JSFunction::lookupLocal(JSContext *cx, JSAtom *atom, uintN *indexp)
|
|||
if (shape) {
|
||||
JSLocalKind localKind;
|
||||
|
||||
if (shape->getter() == js_GetCallArg)
|
||||
if (shape->getter() == GetCallArg)
|
||||
localKind = JSLOCAL_ARG;
|
||||
else if (shape->getter() == GetFlatUpvar)
|
||||
localKind = JSLOCAL_UPVAR;
|
||||
|
@ -3241,7 +3245,7 @@ JSFunction::getLocalNameArray(JSContext *cx, JSArenaPool *pool)
|
|||
uintN index = uint16(shape.shortid);
|
||||
jsuword constFlag = 0;
|
||||
|
||||
if (shape.getter() == js_GetCallArg) {
|
||||
if (shape.getter() == GetCallArg) {
|
||||
JS_ASSERT(index < nargs);
|
||||
} else if (shape.getter() == GetFlatUpvar) {
|
||||
JS_ASSERT(index < u.i.nupvars);
|
||||
|
@ -3258,7 +3262,7 @@ JSFunction::getLocalNameArray(JSContext *cx, JSArenaPool *pool)
|
|||
atom = JSID_TO_ATOM(shape.id);
|
||||
} else {
|
||||
JS_ASSERT(JSID_IS_INT(shape.id));
|
||||
JS_ASSERT(shape.getter() == js_GetCallArg);
|
||||
JS_ASSERT(shape.getter() == GetCallArg);
|
||||
atom = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -579,11 +579,20 @@ extern JSBool JS_FASTCALL
|
|||
js_PutCallObjectOnTrace(JSContext *cx, JSObject *scopeChain, uint32 nargs,
|
||||
js::Value *argv, uint32 nvars, js::Value *slots);
|
||||
|
||||
extern JSBool
|
||||
js_GetCallArg(JSContext *cx, JSObject *obj, jsid id, js::Value *vp);
|
||||
namespace js {
|
||||
|
||||
extern JSBool
|
||||
js_GetCallVar(JSContext *cx, JSObject *obj, jsid id, js::Value *vp);
|
||||
GetCallArg(JSContext *cx, JSObject *obj, jsid id, js::Value *vp);
|
||||
|
||||
extern JSBool
|
||||
GetCallVar(JSContext *cx, JSObject *obj, jsid id, js::Value *vp);
|
||||
|
||||
/*
|
||||
* Slower version of js_GetCallVar used when call_resolve detects an attempt to
|
||||
* leak an optimized closure via indirect or debugger eval.
|
||||
*/
|
||||
extern JSBool
|
||||
GetCallVarChecked(JSContext *cx, JSObject *obj, jsid id, js::Value *vp);
|
||||
|
||||
extern JSBool
|
||||
SetCallArg(JSContext *cx, JSObject *obj, jsid id, js::Value *vp);
|
||||
|
@ -591,12 +600,7 @@ SetCallArg(JSContext *cx, JSObject *obj, jsid id, js::Value *vp);
|
|||
extern JSBool
|
||||
SetCallVar(JSContext *cx, JSObject *obj, jsid id, js::Value *vp);
|
||||
|
||||
/*
|
||||
* Slower version of js_GetCallVar used when call_resolve detects an attempt to
|
||||
* leak an optimized closure via indirect or debugger eval.
|
||||
*/
|
||||
extern JSBool
|
||||
js_GetCallVarChecked(JSContext *cx, JSObject *obj, jsid id, js::Value *vp);
|
||||
} // namespace js
|
||||
|
||||
extern JSBool
|
||||
js_GetArgsValue(JSContext *cx, JSStackFrame *fp, js::Value *vp);
|
||||
|
|
|
@ -8051,12 +8051,12 @@ TraceRecorder::callProp(JSObject* obj, JSProperty* prop, jsid id, Value*& vp,
|
|||
vp = NULL;
|
||||
JSStackFrame* cfp = (JSStackFrame*) obj->getPrivate();
|
||||
if (cfp) {
|
||||
if (shape->getterOp() == js_GetCallArg) {
|
||||
if (shape->getterOp() == GetCallArg) {
|
||||
JS_ASSERT(slot < cfp->numFormalArgs());
|
||||
vp = &cfp->formalArg(slot);
|
||||
nr.v = *vp;
|
||||
} else if (shape->getterOp() == js_GetCallVar ||
|
||||
shape->getterOp() == js_GetCallVarChecked) {
|
||||
} else if (shape->getterOp() == GetCallVar ||
|
||||
shape->getterOp() == GetCallVarChecked) {
|
||||
JS_ASSERT(slot < cfp->numSlots());
|
||||
vp = &cfp->slots()[slot];
|
||||
nr.v = *vp;
|
||||
|
@ -8100,11 +8100,11 @@ TraceRecorder::callProp(JSObject* obj, JSProperty* prop, jsid id, Value*& vp,
|
|||
// object loses its frame it never regains one, on trace we will also
|
||||
// have a null private in the Call object. So all we need to do is
|
||||
// write the value to the Call object's slot.
|
||||
if (shape->getterOp() == js_GetCallArg) {
|
||||
if (shape->getterOp() == GetCallArg) {
|
||||
JS_ASSERT(slot < ArgClosureTraits::slot_count(obj));
|
||||
slot += ArgClosureTraits::slot_offset(obj);
|
||||
} else if (shape->getterOp() == js_GetCallVar ||
|
||||
shape->getterOp() == js_GetCallVarChecked) {
|
||||
} else if (shape->getterOp() == GetCallVar ||
|
||||
shape->getterOp() == GetCallVarChecked) {
|
||||
JS_ASSERT(slot < VarClosureTraits::slot_count(obj));
|
||||
slot += VarClosureTraits::slot_offset(obj);
|
||||
} else {
|
||||
|
@ -8137,10 +8137,10 @@ TraceRecorder::callProp(JSObject* obj, JSProperty* prop, jsid id, Value*& vp,
|
|||
cx_ins
|
||||
};
|
||||
const CallInfo* ci;
|
||||
if (shape->getterOp() == js_GetCallArg) {
|
||||
if (shape->getterOp() == GetCallArg) {
|
||||
ci = &GetClosureArg_ci;
|
||||
} else if (shape->getterOp() == js_GetCallVar ||
|
||||
shape->getterOp() == js_GetCallVarChecked) {
|
||||
} else if (shape->getterOp() == GetCallVar ||
|
||||
shape->getterOp() == GetCallVarChecked) {
|
||||
ci = &GetClosureVar_ci;
|
||||
} else {
|
||||
RETURN_STOP("dynamic property of Call object");
|
||||
|
|
|
@ -1329,9 +1329,9 @@ class ScopeNameCompiler : public PICStubCompiler
|
|||
|
||||
CallObjPropKind kind;
|
||||
const Shape *shape = getprop.shape;
|
||||
if (shape->getterOp() == js_GetCallArg) {
|
||||
if (shape->getterOp() == GetCallArg) {
|
||||
kind = ARG;
|
||||
} else if (shape->getterOp() == js_GetCallVar) {
|
||||
} else if (shape->getterOp() == GetCallVar) {
|
||||
kind = VAR;
|
||||
} else {
|
||||
return disable("unhandled callobj sprop getter");
|
||||
|
|
Загрузка…
Ссылка в новой задаче