ok = js_EmitTree(cx, cg, body) && js_Emit1(cx, cg, JSOP_STOP) >= 0;
ok = js_EmitTree(cx, cg, body);
js_EmitFunctionBody(JSContext *cx, JSCodeGenerator *cg, JSParseNode *body,                    JSFunction *fun){    JSStackFrame *fp, frame;    JSObject *funobj;    JSBool ok;    if (!js_AllocTryNotes(cx, cg))        return JS_FALSE;    fp = cx->fp;    funobj = fun->object;    JS_ASSERT(!fp || (fp->fun != fun && fp->varobj != funobj &&                      fp->scopeChain != funobj));    memset(&frame, 0, sizeof frame);    frame.fun = fun;    frame.varobj = frame.scopeChain = funobj;    frame.down = fp;    frame.flags = JS_HAS_COMPILE_N_GO_OPTION(cx)                  ? JSFRAME_COMPILING | JSFRAME_COMPILE_N_GO                  : JSFRAME_COMPILING;    cx->fp = &frame;    ok = js_EmitTree(cx, cg, body) && js_Emit1(cx, cg, JSOP_STOP) >= 0;    cx->fp = fp;    if (!ok)        return JS_FALSE;    fun->u.script = js_NewScriptFromCG(cx, cg, fun);    if (!fun->u.script)        return JS_FALSE;    JS_ASSERT(fun->interpreted);    if (cg->treeContext.flags & TCF_FUN_HEAVYWEIGHT)        fun->flags |= JSFUN_HEAVYWEIGHT;    return JS_TRUE;}