comparison 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
comparison
equal deleted inserted replaced
110:7afa6df829f3 111:2428ecfed375
23 } 23 }
24 try { 24 try {
25 FnDef fnDef = parser.RequiredModule(); 25 FnDef fnDef = parser.RequiredModule();
26 final Closure c = new Closure((LuanStateImpl)luan,fnDef); 26 final Closure c = new Closure((LuanStateImpl)luan,fnDef);
27 return new LuanFunction() { 27 return new LuanFunction() {
28 public Object[] call(LuanState luan,Object[] args) throws LuanException { 28 @Override public Object call(LuanState luan,Object[] args) throws LuanException {
29 Object[] rtn = c.call(luan,args); 29 Object rtn = c.call(luan,args);
30 return rtn.length==0 ? new Object[]{c.upValues()[0].get()} : rtn; 30 if( rtn instanceof Object[] && ((Object[])rtn).length==0 )
31 rtn = c.upValues()[0].get();
32 return rtn;
31 } 33 }
32 }; 34 };
33 } catch(ParseException e) { 35 } catch(ParseException e) {
34 //e.printStackTrace(); 36 //e.printStackTrace();
35 LuanElement le = new LuanSource.CompilerElement(src); 37 LuanElement le = new LuanSource.CompilerElement(src);