Mercurial Hosting > luan
diff src/luan/lib/PackageLib.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 | f5af13062b10 |
line wrap: on
line diff
--- a/src/luan/lib/PackageLib.java Fri May 23 04:36:47 2014 +0000 +++ b/src/luan/lib/PackageLib.java Fri May 23 20:40:05 2014 +0000 @@ -19,7 +19,7 @@ public static final String NAME = "Package"; public static final LuanFunction LOADER = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) { LuanTable module = new LuanTable(); LuanTable global = luan.global(); module.put("loaded",luan.loaded()); @@ -36,7 +36,7 @@ searchers.add(fileSearcher); searchers.add(javaFileSearcher); module.put("searchers",searchers); - return new Object[]{module}; + return module; } }; @@ -62,7 +62,7 @@ searchers = new LuanTable(Collections.<Object>singletonList(preloadSearcher)); for( Object s : searchers.asList() ) { LuanFunction searcher = (LuanFunction)s; - Object[] a = luan.JAVA.call(searcher,"<searcher>",modName); + Object[] a = Luan.array(luan.JAVA.call(searcher,"<searcher>",modName)); if( a.length >= 1 && a[0] instanceof LuanFunction ) { LuanFunction loader = (LuanFunction)a[0]; a[0] = modName; @@ -93,11 +93,10 @@ } public static final LuanFunction fileLoader = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) throws LuanException { - String modName = (String)args[0]; + @Override public Object call(LuanState luan,Object[] args) throws LuanException { String fileName = (String)args[1]; LuanFunction fn = BasicLib.load_file(luan,fileName); - return fn.call(luan,new Object[]{args[0],fileName}); + return fn.call(luan,args); } }; @@ -124,13 +123,13 @@ public static final LuanFunction javaFileLoader = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) throws LuanException { - String modName = (String)args[0]; - URL url = (URL)args[0]; + @Override public Object call(LuanState luan,Object[] args) throws LuanException { + String urlStr = (String)args[1]; try { + URL url = new URL(urlStr); String src = Utils.read(url); - LuanFunction fn = BasicLib.load(luan,src,url.toString(),false); - return fn.call(luan,new Object[]{args[0],url.toString()}); + LuanFunction fn = BasicLib.load(luan,src,urlStr,false); + return fn.call(luan,args); } catch(IOException e) { throw luan.JAVA.exception(e); } @@ -147,7 +146,7 @@ String file = s.replaceAll("\\?",modName); URL url = ClassLoader.getSystemResource(file); if( url != null ) { - return new Object[]{javaFileLoader,url}; + return new Object[]{javaFileLoader,url.toString()}; } } return LuanFunction.EMPTY;