diff --git a/mozilla/js2/src/js2function.cpp b/mozilla/js2/src/js2function.cpp index 4c0fdba49ee..d044be8b715 100644 --- a/mozilla/js2/src/js2function.cpp +++ b/mozilla/js2/src/js2function.cpp @@ -78,12 +78,22 @@ namespace MetaData { ASSERT(fnExpr); // otherwise, an exception would have been thrown out of here fnExpr->obj = NULL; DEFINE_ROOTKEEPER(rk, fnExpr->obj); - JS2Class *exprType; +// JS2Class *exprType; meta->ValidateExpression(&meta->cxt, meta->env, fnExpr); Arena *oldArena = meta->referenceArena; meta->referenceArena = new Arena; try { - meta->SetupExprNode(meta->env, RunPhase, fnExpr, &exprType); +// meta->SetupExprNode(meta->env, RunPhase, fnExpr, &exprType); + + + CompilationData *oldData = meta->startCompilationUnit(fnExpr->function.fWrap->bCon, *bodyStr, srcLoc); + meta->env->addFrame(fnExpr->function.fWrap->compileFrame); + meta->SetupStmt(meta->env, RunPhase, fnExpr->function.body); + fnExpr->function.fWrap->bCon->emitOp(eReturnVoid, meta->engine->errorPos()); + meta->env->removeTopFrame(); + meta->restoreCompilationUnit(oldData); + + } catch (Exception &x) { meta->referenceArena->clear();