Mercurial Hosting > luan
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;