Remove env from LuaFunction, replace with upValiue array, and remove most occurances of setfenv and getfenv.
This commit is contained in:
@@ -186,7 +186,6 @@ public class lua {
|
||||
try {
|
||||
// load as java class
|
||||
LuaValue v = (LuaValue) Class.forName(libname).newInstance();
|
||||
v.setfenv(_G);
|
||||
v.call(slibname, _G);
|
||||
} catch ( Exception f ) {
|
||||
throw new IOException("loadLibrary("+libname+") failed: "+e+","+f );
|
||||
|
||||
@@ -87,6 +87,7 @@ public class JsePlatform {
|
||||
*/
|
||||
public static LuaTable standardGlobals() {
|
||||
LuaTable _G = new LuaTable();
|
||||
LuaValue._G = _G;
|
||||
_G.load(new JseBaseLib());
|
||||
_G.load(new PackageLib());
|
||||
_G.load(new TableLib());
|
||||
@@ -96,7 +97,6 @@ public class JsePlatform {
|
||||
_G.load(new JseIoLib());
|
||||
_G.load(new JseOsLib());
|
||||
_G.load(new LuajavaLib());
|
||||
LuaThread.setGlobals(_G);
|
||||
LuaC.install();
|
||||
return _G;
|
||||
}
|
||||
|
||||
@@ -98,6 +98,7 @@ public class LuajavaLib extends VarArgFunction {
|
||||
try {
|
||||
switch ( opcode ) {
|
||||
case INIT: {
|
||||
LuaValue env = args.arg1();
|
||||
LuaTable t = new LuaTable();
|
||||
bind( t, LuajavaLib.class, NAMES, BINDCLASS );
|
||||
env.set("luajava", t);
|
||||
|
||||
@@ -112,7 +112,6 @@ public class Lua2Java implements LuaCompiler {
|
||||
Class clazz = cl.loadClass(className);
|
||||
Object instance = clazz.newInstance();
|
||||
LuaFunction value = (LuaFunction) instance;
|
||||
value.setfenv( env );
|
||||
return value;
|
||||
} else {
|
||||
}
|
||||
|
||||
@@ -30,12 +30,9 @@ import org.luaj.vm2.Prototype;
|
||||
******************************************************************************/
|
||||
public class JavaLoader extends ClassLoader {
|
||||
|
||||
private final LuaValue env;
|
||||
|
||||
private Map<String,byte[]> unloaded = new HashMap<String,byte[]>();
|
||||
|
||||
public JavaLoader( LuaValue env ) {
|
||||
this.env = env;
|
||||
public JavaLoader() {
|
||||
}
|
||||
|
||||
public LuaFunction load( Prototype p, String classname, String filename ) {
|
||||
@@ -49,10 +46,14 @@ public class JavaLoader extends ClassLoader {
|
||||
}
|
||||
|
||||
public LuaFunction load(String classname) {
|
||||
return load(classname, LuaValue._G);
|
||||
}
|
||||
|
||||
public LuaFunction load(String classname, LuaValue env) {
|
||||
try {
|
||||
Class c = loadClass( classname );
|
||||
LuaFunction v = (LuaFunction) c.newInstance();
|
||||
v.setfenv(env);
|
||||
v.initupvalue1(env);
|
||||
return v;
|
||||
} catch ( Exception e ) {
|
||||
e.printStackTrace();
|
||||
|
||||
@@ -99,7 +99,7 @@ public class LuaJC implements LuaCompiler {
|
||||
Prototype p = LuaC.instance.compile(stream, name);
|
||||
String classname = toStandardJavaClassName( name );
|
||||
String luaname = toStandardLuaFileName( name );
|
||||
JavaLoader loader = new JavaLoader(env);
|
||||
JavaLoader loader = new JavaLoader();
|
||||
return loader.load(p, classname, luaname);
|
||||
}
|
||||
|
||||
|
||||
@@ -203,7 +203,7 @@ public class LuaScriptEngine implements ScriptEngine, Compilable {
|
||||
Bindings b = context.getBindings(ScriptContext.ENGINE_SCOPE);
|
||||
LuaFunction f = newFunctionInstance();
|
||||
ClientBindings cb = new ClientBindings(b);
|
||||
f.setfenv(cb.env);
|
||||
f.initupvalue1(cb.env);
|
||||
Varargs result = f.invoke(LuaValue.NONE);
|
||||
cb.copyGlobalsToBindings();
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user