diff --git a/src/jse/org/luaj/vm2/luajc/Slots.java b/src/jse/org/luaj/vm2/luajc/Slots.java index 15edaa10..2933e7a8 100644 --- a/src/jse/org/luaj/vm2/luajc/Slots.java +++ b/src/jse/org/luaj/vm2/luajc/Slots.java @@ -333,13 +333,15 @@ public class Slots { } private void markuninitialized() { - for ( int j=p.numparams; j= p.code.length ) + return false; + int ins = p.code[index]; + switch ( Lua.GET_OPCODE(ins) ) { + case Lua.OP_LOADBOOL: + if ( Lua.GETARG_C(ins) == 0 ) + return true; + case Lua.OP_EQ: + case Lua.OP_LT: + case Lua.OP_LE: + case Lua.OP_TEST: + case Lua.OP_TESTSET: + case Lua.OP_TFORLOOP: + case Lua.OP_JMP: + case Lua.OP_FORPREP: + case Lua.OP_FORLOOP: + return true; + } + return false; + } + private void markupvalues( ) { for ( int pc=0; pc