Work around a JVM bug involving static initialization.

https://www.blackberry.com/jira/browse/JAVAAPI-1289
This commit is contained in:
Ian Farmer
2010-11-16 00:07:36 +00:00
parent 0a381d1921
commit f9b3180ede
4 changed files with 13 additions and 7 deletions

View File

@@ -21,8 +21,11 @@
******************************************************************************/ ******************************************************************************/
package org.luaj.vm2; package org.luaj.vm2;
public class LuaBoolean extends LuaValue { public final class LuaBoolean extends LuaValue {
static final LuaBoolean _TRUE = new LuaBoolean(true);
static final LuaBoolean _FALSE = new LuaBoolean(false);
public static LuaValue s_metatable; public static LuaValue s_metatable;
public final boolean v; public final boolean v;

View File

@@ -23,6 +23,8 @@ package org.luaj.vm2;
public class LuaNil extends LuaValue { public class LuaNil extends LuaValue {
static final LuaNil _NIL = new LuaNil();
public static LuaValue s_metatable; public static LuaValue s_metatable;
LuaNil() {} LuaNil() {}

View File

@@ -52,10 +52,10 @@ public class LuaValue extends Varargs {
"value", "value",
}; };
public static final LuaValue NIL = new LuaNil(); public static final LuaValue NIL = LuaNil._NIL;
public static final LuaBoolean TRUE = new LuaBoolean(true); public static final LuaBoolean TRUE = LuaBoolean._TRUE;
public static final LuaBoolean FALSE = new LuaBoolean(false); public static final LuaBoolean FALSE = LuaBoolean._FALSE;
public static final LuaValue NONE = new None(); public static final LuaValue NONE = None._NONE;
public static final LuaNumber ZERO = LuaInteger.valueOf(0); public static final LuaNumber ZERO = LuaInteger.valueOf(0);
public static final LuaNumber ONE = LuaInteger.valueOf(1); public static final LuaNumber ONE = LuaInteger.valueOf(1);
public static final LuaNumber MINUSONE = LuaInteger.valueOf(-1); public static final LuaNumber MINUSONE = LuaInteger.valueOf(-1);
@@ -521,6 +521,7 @@ public class LuaValue extends Varargs {
// empty varargs // empty varargs
private static final class None extends LuaNil { private static final class None extends LuaNil {
static None _NONE = new None();
public LuaValue arg(int i) { return NIL; } public LuaValue arg(int i) { return NIL; }
public int narg() { return 0; } public int narg() { return 0; }
public LuaValue arg1() { return NIL; } public LuaValue arg1() { return NIL; }

View File

@@ -461,11 +461,11 @@ public class FuncState extends LuaC {
} }
int boolK(boolean b) { int boolK(boolean b) {
return this.addk((b ? LuaValue.TRUE : LuaBoolean.FALSE)); return this.addk((b ? LuaValue.TRUE : LuaValue.FALSE));
} }
int nilK() { int nilK() {
return this.addk(LuaNil.NIL); return this.addk(LuaValue.NIL);
} }
void setreturns(expdesc e, int nresults) { void setreturns(expdesc e, int nresults) {