Denormalize opcode fetching for performance.

This commit is contained in:
James Roseborough
2008-04-23 23:55:05 +00:00
parent b6cc568c6c
commit 2454606c41

View File

@@ -521,9 +521,11 @@ public class LuaState extends Lua {
// advance program counter
i = code[ci.pc++];
// get first opcode arg
a = LuaState.GETARG_A(i);
switch (LuaState.GET_OPCODE(i)) {
// get opcode and first arg
o = (i >> POS_OP) & MAX_OP;
a = (i >> POS_A) & MAXARG_A;
switch (o) {
case LuaState.OP_MOVE: {
b = LuaState.GETARG_B(i);
this.stack[base + a] = this.stack[base + b];
@@ -613,7 +615,6 @@ public class LuaState extends Lua {
case LuaState.OP_DIV:
case LuaState.OP_MOD:
case LuaState.OP_POW: {
o = LuaState.GET_OPCODE(i);
rkb = GETARG_RKB(k, i);
rkc = GETARG_RKC(k, i);
this.stack[base + a] = rkc.luaBinOpUnknown(o, rkb);
@@ -653,7 +654,6 @@ public class LuaState extends Lua {
case LuaState.OP_EQ:
case LuaState.OP_LT:
case LuaState.OP_LE: {
o = LuaState.GET_OPCODE(i);
rkb = GETARG_RKB(k, i);
rkc = GETARG_RKC(k, i);
boolean test = rkc.luaBinCmpUnknown(o, rkb);