diff src/luan/interp/LuanCompiler.java @ 111:2428ecfed375

change LuanFunction.call() from returning Object[] to returning Object, to reduce garbage collection git-svn-id: https://luan-java.googlecode.com/svn/trunk@112 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Fri, 23 May 2014 20:40:05 +0000
parents 3c404a296995
children f0a4abe58593
line wrap: on
line diff
--- a/src/luan/interp/LuanCompiler.java	Fri May 23 04:36:47 2014 +0000
+++ b/src/luan/interp/LuanCompiler.java	Fri May 23 20:40:05 2014 +0000
@@ -25,9 +25,11 @@
 			FnDef fnDef = parser.RequiredModule();
 			final Closure c = new Closure((LuanStateImpl)luan,fnDef);
 			return new LuanFunction() {
-				public Object[] call(LuanState luan,Object[] args) throws LuanException {
-					Object[] rtn = c.call(luan,args);
-					return rtn.length==0 ? new Object[]{c.upValues()[0].get()} : rtn;
+				@Override public Object call(LuanState luan,Object[] args) throws LuanException {
+					Object rtn = c.call(luan,args);
+					if( rtn instanceof Object[] && ((Object[])rtn).length==0 )
+						rtn = c.upValues()[0].get();
+					return rtn;
 				}
 			};
 		} catch(ParseException e) {