diff --git a/src/j2se/org/luaj/lib/j2se/CoerceJavaToLua.java b/src/j2se/org/luaj/lib/j2se/CoerceJavaToLua.java index 29117dc0..4ad42262 100644 --- a/src/j2se/org/luaj/lib/j2se/CoerceJavaToLua.java +++ b/src/j2se/org/luaj/lib/j2se/CoerceJavaToLua.java @@ -24,7 +24,6 @@ package org.luaj.lib.j2se; import java.util.HashMap; import java.util.Map; -import org.luaj.lib.j2se.LuajavaLib.LInstance; import org.luaj.vm.LBoolean; import org.luaj.vm.LDouble; import org.luaj.vm.LInteger; @@ -81,7 +80,7 @@ public class CoerceJavaToLua { Coercion c = (Coercion) COERCIONS.get( clazz ); if ( c != null ) return c.coerce( o ); - return new LInstance( o, o.getClass() ); + return LuajavaLib.toUserdata( o, clazz ); } } diff --git a/src/j2se/org/luaj/lib/j2se/LuajavaLib.java b/src/j2se/org/luaj/lib/j2se/LuajavaLib.java index b1826014..01926d59 100644 --- a/src/j2se/org/luaj/lib/j2se/LuajavaLib.java +++ b/src/j2se/org/luaj/lib/j2se/LuajavaLib.java @@ -65,6 +65,8 @@ public final class LuajavaLib extends LFunction { "createProxy", "loadLib" }; + private static final Map classMetatables = new HashMap(); + private int id; private LuajavaLib( int id ) { this.id = id; @@ -83,7 +85,7 @@ public final class LuajavaLib extends LFunction { try { Class clazz = Class.forName(className); vm.resettop(); - vm.pushlvalue( new LInstance( clazz, clazz ) ); + vm.pushlvalue( toUserdata( clazz, clazz ) ); } catch (Exception e) { throw new LuaErrorException(e); } @@ -102,7 +104,7 @@ public final class LuajavaLib extends LFunction { // set the result vm.resettop(); - vm.pushlvalue( new LInstance( o, clazz ) ); + vm.pushlvalue( toUserdata( o, clazz ) ); } catch (Exception e) { throw new LuaErrorException(e); @@ -123,7 +125,7 @@ public final class LuajavaLib extends LFunction { values = new LValue[n]; classes = new Class[n]; for ( int i=0; i