From efd67d91cefc872cf3586b179aa493e735f176bb Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Fri, 23 Apr 2010 05:17:57 +0000 Subject: [PATCH] Improve compiler output --- src/jse/org/luaj/vm2/luajc/Slots.java | 16 +++++++++++++--- test/junit/org/luaj/vm2/FragmentsTest.java | 9 +++++++++ test/junit/org/luaj/vm2/TypeTest.java | 8 ++++---- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/jse/org/luaj/vm2/luajc/Slots.java b/src/jse/org/luaj/vm2/luajc/Slots.java index d0436762..49ec903e 100644 --- a/src/jse/org/luaj/vm2/luajc/Slots.java +++ b/src/jse/org/luaj/vm2/luajc/Slots.java @@ -135,6 +135,11 @@ public class Slots { break; case Lua.OP_SETTABLE: /* A B C R(A)[RK(B)]:= RK(C) */ + s[a] |= BIT_REFER; + if (b<=0xff) s[b] |= BIT_REFER; + if (c<=0xff) s[c] |= BIT_REFER; + break; + case Lua.OP_ADD: /* A B C R(A):= RK(B) + RK(C) */ case Lua.OP_SUB: /* A B C R(A):= RK(B) - RK(C) */ case Lua.OP_MUL: /* A B C R(A):= RK(B) * RK(C) */ @@ -142,7 +147,7 @@ public class Slots { case Lua.OP_MOD: /* A B C R(A):= RK(B) % RK(C) */ case Lua.OP_POW: /* A B C R(A):= RK(B) ^ RK(C) */ s[a] |= BIT_ASSIGN; - if (bx<=0xff) s[bx] |= BIT_REFER; + if (b<=0xff) s[b] |= BIT_REFER; if (c<=0xff) s[c] |= BIT_REFER; break; @@ -273,8 +278,13 @@ public class Slots { break; } case Lua.OP_VARARG: /* A B R(A), R(A+1), ..., R(A+B-1) = vararg */ - while ( a