diff core/src/luan/LuanBit.java @ 574:6cc2f047019b

remove LuanState.call()
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 13 Jul 2015 12:31:53 -0600
parents f1601a4ce1aa
children 7c3ad6db8ac3
line wrap: on
line diff
--- a/core/src/luan/LuanBit.java	Sun Jul 12 23:04:47 2015 -0600
+++ b/core/src/luan/LuanBit.java	Mon Jul 13 12:31:53 2015 -0600
@@ -31,19 +31,27 @@
 	}
 
 	public Object call(LuanFunction fn,String fnName,Object[] args) throws LuanException {
-		if( el == null )
-			return fn.call(luan,args);
-		List<StackTraceElement> stackTrace = luan.stackTrace;
-		stackTrace.add( new StackTraceElement(el,fnName) );
+		push(fnName);
 		try {
 			return fn.call(luan,args);
 		} catch(StackOverflowError e) {
 			throw exception("stack overflow");
 		} finally {
-			stackTrace.remove(stackTrace.size()-1);
+			pop();
 		}
 	}
 
+	public void push(String fnName) {
+		if( el == null )  throw new RuntimeException();
+		List<StackTraceElement> stackTrace = luan.stackTrace;
+		stackTrace.add( new StackTraceElement(el,fnName) );
+	}
+
+	public void pop() {
+		List<StackTraceElement> stackTrace = luan.stackTrace;
+		stackTrace.remove(stackTrace.size()-1);
+	}
+
 	public String checkString(Object obj) throws LuanException {
 		if( obj instanceof String )
 			return (String)obj;