Mercurial Hosting > luan
diff src/luan/interp/Block.java @ 17:09d41f7490a8
add local variables
git-svn-id: https://luan-java.googlecode.com/svn/trunk@18 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 30 Nov 2012 11:46:34 +0000 |
parents | b7d7069fee58 |
children | c93d8c781853 |
line wrap: on
line diff
--- a/src/luan/interp/Block.java Thu Nov 29 10:36:38 2012 +0000 +++ b/src/luan/interp/Block.java Fri Nov 30 11:46:34 2012 +0000 @@ -6,14 +6,25 @@ final class Block implements Stmt { private final Stmt[] stmts; + private final int stackStart; + private final int stackEnd; - Block(Stmt[] stmts) { + Block(Stmt[] stmts,int stackStart,int stackEnd) { this.stmts = stmts; + this.stackStart = stackStart; + this.stackEnd = stackEnd; } @Override public void eval(LuaState lua) throws LuaException { - for( Stmt stmt : stmts ) { - stmt.eval(lua); + try { + for( Stmt stmt : stmts ) { + stmt.eval(lua); + } + } finally { + Object[] stack = lua.stack(); + for( int i=stackStart; i<stackEnd; i++ ) { + stack[i] = null; + } } }