зеркало из https://github.com/mozilla/pjs.git
Bug 598682, part 1 - Minor cleanups to jsinterp.h and jsinterpinlines.h (r=lw)
--HG-- extra : rebase_source : ce5adce0b4f5155afd958f2a083085baf4dbe643
This commit is contained in:
Родитель
adb01eaa6a
Коммит
35ccc0ceae
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче