Mercurial Hosting > luan
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) {