Bug 598682, part 1 - Minor cleanups to jsinterp.h and jsinterpinlines.h (r=lw)

--HG--
extra : rebase_source : ce5adce0b4f5155afd958f2a083085baf4dbe643
This commit is contained in:
Jim Blandy 2010-10-05 14:41:55 -07:00
Родитель adb01eaa6a
Коммит 35ccc0ceae
2 изменённых файлов: 16 добавлений и 12 удалений

Просмотреть файл

@ -347,8 +347,13 @@ struct JSStackFrame
* lazily created, so a given function frame may or may not have one.
*/
/* True if this frame has arguments. Contrast with hasArgsObj. */
bool hasArgs() const {
return isFunctionFrame() && !isEvalFrame();
}
uintN numFormalArgs() const {
JS_ASSERT(isFunctionFrame() && !isEvalFrame());
JS_ASSERT(hasArgs());
return fun()->nargs;
}
@ -358,12 +363,12 @@ struct JSStackFrame
}
js::Value *formalArgs() const {
JS_ASSERT(isFunctionFrame() && !isEvalFrame());
JS_ASSERT(hasArgs());
return (js::Value *)this - numFormalArgs();
}
js::Value *formalArgsEnd() const {
JS_ASSERT(isFunctionFrame() && !isEvalFrame());
JS_ASSERT(hasArgs());
return (js::Value *)this;
}
@ -381,6 +386,7 @@ struct JSStackFrame
template <class Op> inline void forEachCanonicalActualArg(Op op);
template <class Op> inline void forEachFormalArg(Op op);
/* True if we have created an arguments object for this frame; implies hasArgs(). */
bool hasArgsObj() const {
return !!(flags_ & JSFRAME_HAS_ARGS_OBJ);
}
@ -420,7 +426,7 @@ struct JSStackFrame
}
JSObject &constructorThis() const {
JS_ASSERT(isFunctionFrame() && !isEvalFrame());
JS_ASSERT(hasArgs());
return formalArgs()[-1].toObject();
}

Просмотреть файл

@ -276,7 +276,7 @@ JSStackFrame::varobj(JSContext *cx) const
inline uintN
JSStackFrame::numActualArgs() const
{
JS_ASSERT(isFunctionFrame() && !isEvalFrame());
JS_ASSERT(hasArgs());
if (JS_UNLIKELY(flags_ & (JSFRAME_OVERFLOW_ARGS | JSFRAME_UNDERFLOW_ARGS)))
return hasArgsObj() ? argsObj().getArgsInitialLength() : args.nactual;
return numFormalArgs();
@ -285,8 +285,8 @@ JSStackFrame::numActualArgs() const
inline js::Value *
JSStackFrame::actualArgs() const
{
JS_ASSERT(isFunctionFrame() && !isEvalFrame());
js::Value *argv = formalArgsEnd() - numFormalArgs();
JS_ASSERT(hasArgs());
js::Value *argv = formalArgs();
if (JS_UNLIKELY(flags_ & JSFRAME_OVERFLOW_ARGS)) {
uintN nactual = hasArgsObj() ? argsObj().getArgsInitialLength() : args.nactual;
return argv - (2 + nactual);
@ -297,12 +297,10 @@ JSStackFrame::actualArgs() const
inline js::Value *
JSStackFrame::actualArgsEnd() const
{
JS_ASSERT(isFunctionFrame() && !isEvalFrame());
JS_ASSERT(hasArgs());
if (JS_UNLIKELY(flags_ & JSFRAME_OVERFLOW_ARGS))
return formalArgsEnd() - (2 + numFormalArgs());
uintN argc = numActualArgs();
uintN nmissing = numFormalArgs() - argc;
return formalArgsEnd() - nmissing;
return formalArgs() - 2;
return formalArgs() + numActualArgs();
}
inline void