view src/luan/interp/Chunk.java @ 21:c93d8c781853

add functions git-svn-id: https://luan-java.googlecode.com/svn/trunk@22 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Tue, 04 Dec 2012 09:16:03 +0000
parents 09d41f7490a8
children 2446c1755d9b
line wrap: on
line source

package luan.interp;

import luan.LuaState;
import luan.LuaException;
import luan.LuaClosure;


public final class Chunk implements Expr {
	public final Stmt block;
	public final int stackSize;
	public final int numArgs;

	Chunk(Stmt block,int stackSize,int numArgs) {
		this.block = block;
		this.stackSize = stackSize;
		this.numArgs = numArgs;
		Stmt stmt = block;
		while( stmt instanceof Block ) {
			Block b = (Block)stmt;
			if( b.stmts.length==0 )
				break;
			stmt = b.stmts[b.stmts.length-1];
		}
		if( stmt instanceof ReturnStmt ) {
			ReturnStmt rs = (ReturnStmt)stmt;
			rs.throwReturnException = false;
		}
	}

	public LuaClosure newClosure(LuaState lua) {
		return new LuaClosure(this,lua);
	}

	@Override public Object eval(LuaState lua) {
		return newClosure(lua);
	}

}