Mercurial Hosting > luan
diff src/luan/interp/GenericForStmt.java @ 32:c3eab5a3ce3c
implement closures
git-svn-id: https://luan-java.googlecode.com/svn/trunk@33 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 14 Dec 2012 05:40:35 +0000 |
parents | 5cf15507d77e |
children | e3624b7cd603 |
line wrap: on
line diff
--- a/src/luan/interp/GenericForStmt.java Thu Dec 13 02:50:04 2012 +0000 +++ b/src/luan/interp/GenericForStmt.java Fri Dec 14 05:40:35 2012 +0000 @@ -20,22 +20,19 @@ @Override public void eval(LuaStateImpl lua) throws LuaException { LuaFunction iter = Lua.checkFunction( iterExpr.eval(lua) ); - Object[] stack = lua.stack(); try { while(true) { Object[] vals = iter.call(lua); if( vals.length==0 || vals[0]==null ) break; for( int i=0; i<nVars; i++ ) { - stack[iVars+i] = i < vals.length ? vals[i] : null; + lua.stackSet( iVars+i, i < vals.length ? vals[i] : null ); } block.eval(lua); } } catch(BreakException e) { } finally { - for( int i=iVars; i<iVars+nVars; i++ ) { - stack[i] = null; - } + lua.stackClear(iVars,iVars+nVars); } }