Mercurial Hosting > luan
view src/luan/LuaState.java @ 22:1e37f22a34c8
proper tail calls
git-svn-id: https://luan-java.googlecode.com/svn/trunk@23 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Wed, 05 Dec 2012 09:03:50 +0000 |
parents | c93d8c781853 |
children | 7ee247560db5 |
line wrap: on
line source
package luan; public class LuaState { private final LuaTable env = new LuaTable(); public LuaTable env() { return env; } private static class LuaStack { final LuaStack previousStack; final Object[] a; LuaStack( LuaStack previousStack, int stackSize) { this.previousStack = previousStack; this.a = new Object[stackSize]; } } private LuaStack stack = null; public Object[] returnValues; public LuaClosure tailFn; Object[] newStack(int stackSize) { stack = new LuaStack(stack,stackSize); return stack.a; } void popStack() { returnValues = LuaFunction.EMPTY_RTN; tailFn = null; stack = stack.previousStack; } public Object[] stack() { return stack.a; } }