void copyArgs(JSContext *, HeapValue *dst) const { unsigned numActuals = frame_->numActualArgs(); /* Copy all arguments. */ Value *src = frame_->argv() + 1; /* +1 to skip this. */ Value *end = src + numActuals; while (src != end) (dst++)->init(*src++); }
void copyArgs(JSContext *, HeapValue *dstBase, unsigned totalArgs) const { unsigned numActuals = frame_->numActualArgs(); unsigned numFormals = ion::CalleeTokenToFunction(frame_->calleeToken())->nargs; JS_ASSERT(numActuals <= totalArgs); JS_ASSERT(numFormals <= totalArgs); JS_ASSERT(Max(numActuals, numFormals) == totalArgs); /* Copy all arguments. */ Value *src = frame_->argv() + 1; /* +1 to skip this. */ Value *end = src + numActuals; HeapValue *dst = dstBase; while (src != end) (dst++)->init(*src++); if (numActuals < numFormals) { HeapValue *dstEnd = dstBase + totalArgs; while (dst != dstEnd) (dst++)->init(UndefinedValue()); } }