private synchronized void initialize(){ Prototype binary = null; String lua; if( mClosure != null ){ return; } lua = mElement.getTextContent(); if( mLuaType == LUA_TYPE.enum_function ){ lua = "function main()" + '\n' + lua + '\n' +"end"; } try{ binary = mGlobals.compilePrototype(new ByteArrayInputStream(lua.getBytes("UTF-8")), getID()); mClosure = new LuaClosure(binary, mGlobals); mClosure.call(); } catch (Exception e){ e.printStackTrace(); } }
private UpValue findupval(LuaValue[] stack, short idx, UpValue[] openups) { final int n = openups.length; for (int i = 0; i < n; ++i) if (openups[i] != null && openups[i].index == idx) return openups[i]; for (int i = 0; i < n; ++i) if (openups[i] == null) return openups[i] = new UpValue(stack, idx); error("No space for upvalue"); return null; }
public final LuaValue call(LuaValue arg1, LuaValue arg2, LuaValue arg3) { LuaValue[] stack = new LuaValue[p.maxstacksize]; for (int i = 3; i < p.numparams; ++i ) stack[i] = NIL; switch ( p.numparams ) { default: stack[0]=arg1; stack[1]=arg2; stack[2]=arg3; return execute(stack,NONE).arg1(); case 2: stack[0]=arg1; stack[1]=arg2; return execute(stack,arg3).arg1(); case 1: stack[0]=arg1; return execute(stack,p.is_vararg!=0? varargsOf(arg2,arg3): NONE).arg1(); case 0: return execute(stack,p.is_vararg!=0? varargsOf(arg1,arg2,arg3): NONE).arg1(); } }
private void loadSystemPackage(ClassLoader resourceLoader, String packageName) { String resourcePath = "udf/" + packageName + ".lua"; Prototype prototype = LuaCache.loadPackageFromResource(resourceLoader, resourcePath, packageName); LuaClosure function = new LuaClosure(prototype, globals); function.invoke(); loadedTable.set(packageName, LuaValue.TRUE); }
c = (i>>14)&0x1ff; v = stack[a].invoke(b>0? varargsOf(stack, a+1, b-1): // exact arg count varargsOf(stack, a+1, top-v.narg()-(a+1), v)); // from prev top if ( c > 0 ) { v.copyto(stack, a, c-1); case (1<<Lua.POS_B): return new TailcallVarargs(stack[a], NONE); case (2<<Lua.POS_B): return new TailcallVarargs(stack[a], stack[a+1]); case (3<<Lua.POS_B): return new TailcallVarargs(stack[a], varargsOf(stack[a+1],stack[a+2])); case (4<<Lua.POS_B): return new TailcallVarargs(stack[a], varargsOf(stack[a+1],stack[a+2],stack[a+3])); default: b = i>>>23; v = b>0? varargsOf(stack,a+1,b-1): // exact arg count varargsOf(stack, a+1, top-v.narg()-(a+1), v); // from prev top return new TailcallVarargs( stack[a], v ); b = i>>>23; switch ( b ) { case 0: return varargsOf(stack, a, top-v.narg()-a, v); case 1: return NONE; case 2: return stack[a]; default: return varargsOf(stack, a, b-1); v = stack[a].invoke(varargsOf(stack[a+1],stack[a+2])); c = (i>>14) & 0x1ff; while (--c >= 0)
@Override public LuaFunction load(Prototype prototype, String chunkname, LuaValue env) throws IOException { return new LuaClosure(prototype, env); } }
public final LuaValue call() { LuaValue[] stack = new LuaValue[p.maxstacksize]; for (int i = 0; i < p.numparams; ++i ) stack[i] = NIL; return execute(stack,NONE).arg1(); }
protected LuaValue loadFunction(String functionName, Prototype prototype, Frame frame) throws ScribuntoException { try { currentFrame = frame; LuaValue function = new LuaClosure(prototype, globals).checkfunction().call().get(functionName); if (function.isnil()) { throw new ScribuntoException("no such function '"+functionName+"'"); } return function; } catch (LuaError e) { throw new ScribuntoException(e); } finally { currentFrame = null; } }
private void processErrorHooks(LuaError le, Prototype p, int pc) { le.fileline = (p.source != null? p.source.tojstring(): "?") + ":" + (p.lineinfo != null && pc >= 0 && pc < p.lineinfo.length? String.valueOf(p.lineinfo[pc]): "?"); le.traceback = errorHook(le.getMessage(), le.level); }
@Override public final Varargs invoke(Varargs varargs) { return onInvoke(varargs).eval(); }
public boolean load(Globals globals, String name, Object... args){ LuaClosure closure = null; if( RapidStringUtils.isEmpty(name) || globals == null ){ return false; } try{ closure = getClosure(globals, name); if( args.length == 0 ){ closure.call(); } else if( args.length == 1 ){ closure.call( args[0] instanceof LuaValue ? (LuaValue) args[0] : CoerceJavaToLua.coerce(args[0]) ); } else if( args.length == 2 ){ closure.call( args[0] instanceof LuaValue ? (LuaValue) args[0] : CoerceJavaToLua.coerce(args[0]), args[1] instanceof LuaValue ? (LuaValue) args[1] : CoerceJavaToLua.coerce(args[1]) ); } else{ closure.call( args[0] instanceof LuaValue ? (LuaValue) args[0] : CoerceJavaToLua.coerce(args[0]), args[1] instanceof LuaValue ? (LuaValue) args[1] : CoerceJavaToLua.coerce(args[1]), args[2] instanceof LuaValue ? (LuaValue) args[2] : CoerceJavaToLua.coerce(args[2]) ); } } catch (Exception e){ e.printStackTrace(); } return true; }
c = (i>>14)&0x1ff; v = b>0? varargsOf(stack,a+1,b-1): // exact arg count varargsOf(stack, a+1, top-v.narg()-(a+1), v); // from prev top v = stack[a].invoke(v); if ( c > 0 ) { case (1<<Lua.POS_B): return new TailcallVarargs(stack[a], NONE); case (2<<Lua.POS_B): return new TailcallVarargs(stack[a], stack[a+1]); case (3<<Lua.POS_B): return new TailcallVarargs(stack[a], varargsOf(stack[a+1],stack[a+2])); case (4<<Lua.POS_B): return new TailcallVarargs(stack[a], varargsOf(stack[a+1],stack[a+2],stack[a+3])); default: b = i>>>23; v = b>0? varargsOf(stack,a+1,b-1): // exact arg count varargsOf(stack, a+1, top-v.narg()-(a+1), v); // from prev top return new TailcallVarargs( stack[a], v ); b = i>>>23; switch ( b ) { case 0: return varargsOf(stack, a, top-v.narg()-a, v); case 1: return NONE; case 2: return stack[a]; default: return varargsOf(stack, a, b-1); v = stack[a].invoke(varargsOf(stack[a+1],stack[a+2])); c = (i>>14) & 0x1ff; while (--c >= 0)
public LuaFunction load(Prototype prototype, String chunkname, LuaValue env) throws IOException { return new LuaClosure(prototype, env); }
private void loadSystemPackage(ClassLoader resourceLoader, String packageName) { String resourcePath = "udf/" + packageName + ".lua"; Prototype prototype = LuaCache.loadPackageFromResource(resourceLoader, resourcePath, packageName); LuaClosure function = new LuaClosure(prototype, globals); function.invoke(); loadedTable.set(packageName, LuaValue.TRUE); }
public final LuaValue call(LuaValue arg) { LuaValue[] stack = new LuaValue[p.maxstacksize]; System.arraycopy(NILS, 0, stack, 0, p.maxstacksize); for (int i = 1; i < p.numparams; ++i ) stack[i] = NIL; switch ( p.numparams ) { default: stack[0]=arg; return execute(stack,NONE).arg1(); case 0: return execute(stack,arg).arg1(); } }
private void processErrorHooks(LuaError le, Prototype p, int pc) { le.fileline = (p.source != null? p.source.tojstring(): "?") + ":" + (p.lineinfo != null && pc >= 0 && pc < p.lineinfo.length? String.valueOf(p.lineinfo[pc]): "?"); le.traceback = errorHook(le.getMessage(), le.level); }
public final Varargs invoke(Varargs varargs) { return onInvoke(varargs).eval(); }
public boolean load(RapidLuaEnvironment luaEnv, String name, Object... args){ LuaClosure closure = null; if( RapidStringUtils.isEmpty(name) || luaEnv == null ){ return false; } try{ closure = luaEnv.getClosure(name); if( args.length == 0 ){ closure.call(); } else if( args.length == 1 ){ closure.call( args[0] instanceof LuaValue ? (LuaValue) args[0] : CoerceJavaToLua.coerce(args[0]) ); } else if( args.length == 2 ){ closure.call( args[0] instanceof LuaValue ? (LuaValue) args[0] : CoerceJavaToLua.coerce(args[0]), args[1] instanceof LuaValue ? (LuaValue) args[1] : CoerceJavaToLua.coerce(args[1]) ); } else{ closure.call( args[0] instanceof LuaValue ? (LuaValue) args[0] : CoerceJavaToLua.coerce(args[0]), args[1] instanceof LuaValue ? (LuaValue) args[1] : CoerceJavaToLua.coerce(args[1]), args[2] instanceof LuaValue ? (LuaValue) args[2] : CoerceJavaToLua.coerce(args[2]) ); } } catch (Exception e){ e.printStackTrace(); } return true; } public boolean load(Globals globals, String name, Object... args){
c = (i>>14)&0x1ff; v = stack[a].invoke(b>0? varargsOf(stack, a+1, b-1): // exact arg count varargsOf(stack, a+1, top-v.narg()-(a+1), v)); // from prev top if ( c > 0 ) { v.copyto(stack, a, c-1); case (1<<Lua.POS_B): return new TailcallVarargs(stack[a], NONE); case (2<<Lua.POS_B): return new TailcallVarargs(stack[a], stack[a+1]); case (3<<Lua.POS_B): return new TailcallVarargs(stack[a], varargsOf(stack[a+1],stack[a+2])); case (4<<Lua.POS_B): return new TailcallVarargs(stack[a], varargsOf(stack[a+1],stack[a+2],stack[a+3])); default: b = i>>>23; v = b>0? varargsOf(stack,a+1,b-1): // exact arg count varargsOf(stack, a+1, top-v.narg()-(a+1), v); // from prev top return new TailcallVarargs( stack[a], v ); b = i>>>23; switch ( b ) { case 0: return varargsOf(stack, a, top-v.narg()-a, v); case 1: return NONE; case 2: return stack[a]; default: return varargsOf(stack, a, b-1); v = stack[a].invoke(varargsOf(stack[a+1],stack[a+2])); c = (i>>14) & 0x1ff; while (--c >= 0)
private LuaJScriptEngine create(KeyValueObjectCache aScene, String aScriptCode, String aMethodName) throws IOException { CacheEntry theCacheEntry = prototypes.get(aScriptCode); if (theCacheEntry == null) { Globals theGlobals = createGlobals(aScene); Prototype thePrototype = theGlobals.compilePrototype(new StringReader(aScriptCode), "script"); // Initialize the globals and the code LuaClosure theClosure = new LuaClosure(thePrototype, theGlobals); theClosure.call(); theCacheEntry = new CacheEntry(thePrototype, theGlobals); prototypes.put(aScriptCode, theCacheEntry); } return theCacheEntry.getScriptEngineFor(aScene, aMethodName); } }