Mercurial Hosting > luan
diff core/src/luan/impl/ReturnStmt.java @ 659:f1150518c467
remove tail recursion
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 05 Apr 2016 20:30:42 -0600 |
parents | 8e8c30b72e9b |
children | b438a47196bc |
line wrap: on
line diff
--- a/core/src/luan/impl/ReturnStmt.java Tue Apr 05 18:38:29 2016 -0600 +++ b/core/src/luan/impl/ReturnStmt.java Tue Apr 05 20:30:42 2016 -0600 @@ -14,18 +14,7 @@ } @Override public void eval(LuanStateImpl luan) throws LuanException { - if( !(expressions instanceof FnCall) ) { - luan.returnValues = expressions.eval(luan); - } else { // tail call - FnCall tailFnCall = (FnCall)expressions; - LuanFunction tailFn = Luan.checkFunction( tailFnCall.fnExpr.eval(luan) ); - luan.returnValues = tailFnCall.args.eval(luan); - if( tailFn instanceof Closure ) { - luan.tailFn = (Closure)tailFn; - } else { - luan.returnValues = tailFn.call(luan,Luan.array(luan.returnValues)); - } - } + luan.returnValues = expressions.eval(luan); if( throwReturnException ) throw new ReturnException(); }