JS_GetFrameCallObject(JSContext *cx, JSStackFrame *fpArg) { StackFrame *fp = Valueify(fpArg); JS_ASSERT(cx->stack.containsSlow(fp)); if (!fp->isFunctionFrame()) return NULL; js::AutoCompartment ac(cx, &fp->scopeChain()); if (!ac.enter()) return NULL; /* * XXX ill-defined: null return here means error was reported, unlike a * null returned above or in the #else */ if (!fp->hasCallObj() && fp->isNonEvalFunctionFrame()) return CreateFunCallObject(cx, fp); return &fp->callObj(); }