Improve compiler output

This commit is contained in:
James Roseborough
2010-04-23 05:17:57 +00:00
parent 8ea8ccb776
commit efd67d91ce
3 changed files with 26 additions and 7 deletions

View File

@@ -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<b )
s[a++] |= BIT_ASSIGN;
if ( b == 0 ) {
while ( a<m )
s[a++] |= BIT_INVALID;
} else {
for ( int i=1; i<b; ++a, ++i )
s[a] |= BIT_ASSIGN;
}
break;
}
}