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