Mercurial Hosting > luan
comparison src/luan/interp/LuaStateImpl.java @ 31:5cf15507d77e
separate interpreter from interface
git-svn-id: https://luan-java.googlecode.com/svn/trunk@32 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Thu, 13 Dec 2012 02:50:04 +0000 |
parents | src/luan/LuaState.java@7ee247560db5 |
children | c3eab5a3ce3c |
comparison
equal
deleted
inserted
replaced
30:8d8f4f5caef4 | 31:5cf15507d77e |
---|---|
1 package luan.interp; | |
2 | |
3 import luan.LuaState; | |
4 import luan.LuaTable; | |
5 import luan.LuaFunction; | |
6 | |
7 | |
8 final class LuaStateImpl implements LuaState { | |
9 private final LuaTable env = new LuaTable(); | |
10 | |
11 public LuaTable env() { | |
12 return env; | |
13 } | |
14 | |
15 | |
16 private static class LuaStack { | |
17 final LuaStack previousStack; | |
18 final Object[] a; | |
19 final Object[] varArgs; | |
20 | |
21 LuaStack( LuaStack previousStack, int stackSize, Object[] varArgs) { | |
22 this.previousStack = previousStack; | |
23 this.a = new Object[stackSize]; | |
24 this.varArgs = varArgs; | |
25 } | |
26 } | |
27 | |
28 private LuaStack stack = null; | |
29 public Object[] returnValues; | |
30 public LuaClosure tailFn; | |
31 | |
32 Object[] newStack(int stackSize, Object[] varArgs) { | |
33 stack = new LuaStack(stack,stackSize,varArgs); | |
34 return stack.a; | |
35 } | |
36 | |
37 void popStack() { | |
38 returnValues = LuaFunction.EMPTY_RTN; | |
39 tailFn = null; | |
40 stack = stack.previousStack; | |
41 } | |
42 | |
43 public Object[] stack() { | |
44 return stack.a; | |
45 } | |
46 | |
47 public Object[] varArgs() { | |
48 return stack.varArgs; | |
49 } | |
50 } |