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();
 	}