diff --git a/src/jse/org/luaj/vm2/luajc/JavaBuilder.java b/src/jse/org/luaj/vm2/luajc/JavaBuilder.java index 600edcf8..3a96a854 100644 --- a/src/jse/org/luaj/vm2/luajc/JavaBuilder.java +++ b/src/jse/org/luaj/vm2/luajc/JavaBuilder.java @@ -338,6 +338,23 @@ public class JavaBuilder { append(new ASTORE(index)); } } + + public void createUpvalues(int pc, int firstslot, int numslots) { + for ( int i=0; i=0; ) { + int i = p.code[pc1]; + if ( Lua.GET_OPCODE(i) == Lua.OP_TFORLOOP ) { + int a = Lua.GETARG_A(i); + int c = Lua.GETARG_C(i); + for ( int pc0=pc1; --pc0>=0; ) { + i = p.code[pc0]; + int o = Lua.GET_OPCODE(i); + int sbx = Lua.GETARG_sBx(i); + if ( o == Lua.OP_JMP && (pc0 + 1 + sbx == pc1) ) { + for ( int j=0; j