projects
/
openwrt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[ppc40x] update dts of Magicbox V2
[openwrt.git]
/
package
/
lua
/
patches
/
300-opcode_performance.patch
diff --git
a/package/lua/patches/300-opcode_performance.patch
b/package/lua/patches/300-opcode_performance.patch
index
dbc89a8
..
fb1f9a1
100644
(file)
--- a/
package/lua/patches/300-opcode_performance.patch
+++ b/
package/lua/patches/300-opcode_performance.patch
@@
-10,15
+10,13
@@
/*
* If 'obj' is a string, it is tried to be interpreted as a number.
/*
* If 'obj' is a string, it is tried to be interpreted as a number.
-@@ -56
2,12 +565,65
@@
+@@ -56
4,12 +567,63
@@
ARITH_OP1_END
#endif
+#ifdef COMPUTED_GOTO
+#define OPCODE_TARGET(op) DO_OP_##op:
ARITH_OP1_END
#endif
+#ifdef COMPUTED_GOTO
+#define OPCODE_TARGET(op) DO_OP_##op:
-+#define CALL_OPCODE(op) \
-+ if ((op < sizeof(opcodes) / sizeof(opcodes[0])) && opcodes[op]) \
-+ goto *opcodes[op];
++#define CALL_OPCODE(op) goto *opcodes[op];
+#define OPCODE_PTR(op) [OP_##op] = &&DO_OP_##op
+#else
+#define OPCODE_TARGET(op) case OP_##op:
+#define OPCODE_PTR(op) [OP_##op] = &&DO_OP_##op
+#else
+#define OPCODE_TARGET(op) case OP_##op:
@@
-76,11
+74,13
@@
reentry: /* entry point */
lua_assert(isLua(L->ci));
pc = L->savedpc;
reentry: /* entry point */
lua_assert(isLua(L->ci));
pc = L->savedpc;
-@@ -593,32 +649,32 @@
+@@ -594,33 +648,33 @@
+ lua_assert(base == L->base && L->base == L->ci->base);
lua_assert(base <= L->top && L->top <= L->stack + L->stacksize);
lua_assert(L->top == L->ci->top || luaG_checkopenop(i));
lua_assert(base <= L->top && L->top <= L->stack + L->stacksize);
lua_assert(L->top == L->ci->top || luaG_checkopenop(i));
-
switch (GET_OPCODE(i)) {
+
-
switch (GET_OPCODE(i)) {
- case OP_MOVE: {
- case OP_MOVE: {
++ CALL_OPCODE(GET_OPCODE(i)) {
+ OPCODE_TARGET(MOVE) {
setobjs2s(L, ra, RB(i));
continue;
+ OPCODE_TARGET(MOVE) {
setobjs2s(L, ra, RB(i));
continue;
@@
-115,7
+115,7
@@
TValue g;
TValue *rb = KBx(i);
sethvalue(L, &g, cl->env);
TValue g;
TValue *rb = KBx(i);
sethvalue(L, &g, cl->env);
-@@ -62
6
,88 +682,88 @@
+@@ -62
8
,88 +682,88 @@
Protect(luaV_gettable(L, &g, rb, ra));
continue;
}
Protect(luaV_gettable(L, &g, rb, ra));
continue;
}
@@
-219,7
+219,7
@@
const TValue *rb = RB(i);
switch (ttype(rb)) {
case LUA_TTABLE: {
const TValue *rb = RB(i);
switch (ttype(rb)) {
case LUA_TTABLE: {
-@@ -72
7
,18 +783,18 @@
+@@ -72
9
,18 +783,18 @@
}
continue;
}
}
continue;
}
@@
-241,7
+241,7
@@
TValue *rb = RKB(i);
TValue *rc = RKC(i);
Protect(
TValue *rb = RKB(i);
TValue *rc = RKC(i);
Protect(
-@@ -7
48
,7 +804,7 @@
+@@ -7
50
,7 +804,7 @@
pc++;
continue;
}
pc++;
continue;
}
@@
-250,7
+250,7
@@
Protect(
if (luaV_lessthan(L, RKB(i), RKC(i)) == GETARG_A(i))
dojump(L, pc, GETARG_sBx(*pc));
Protect(
if (luaV_lessthan(L, RKB(i), RKC(i)) == GETARG_A(i))
dojump(L, pc, GETARG_sBx(*pc));
-@@ -75
6
,7 +812,7 @@
+@@ -75
8
,7 +812,7 @@
pc++;
continue;
}
pc++;
continue;
}
@@
-259,7
+259,7
@@
Protect(
if (lessequal(L, RKB(i), RKC(i)) == GETARG_A(i))
dojump(L, pc, GETARG_sBx(*pc));
Protect(
if (lessequal(L, RKB(i), RKC(i)) == GETARG_A(i))
dojump(L, pc, GETARG_sBx(*pc));
-@@ -76
4
,13 +820,13 @@
+@@ -76
6
,13 +820,13 @@
pc++;
continue;
}
pc++;
continue;
}
@@
-275,7
+275,7
@@
TValue *rb = RB(i);
if (l_isfalse(rb) != GETARG_C(i)) {
setobjs2s(L, ra, rb);
TValue *rb = RB(i);
if (l_isfalse(rb) != GETARG_C(i)) {
setobjs2s(L, ra, rb);
-@@ -7
79
,7 +835,7 @@
+@@ -7
81
,7 +835,7 @@
pc++;
continue;
}
pc++;
continue;
}
@@
-284,7
+284,7
@@
int b = GETARG_B(i);
int nresults = GETARG_C(i) - 1;
if (b != 0) L->top = ra+b; /* else previous instruction set top */
int b = GETARG_B(i);
int nresults = GETARG_C(i) - 1;
if (b != 0) L->top = ra+b; /* else previous instruction set top */
-@@ -80
0
,7 +856,7 @@
+@@ -80
2
,7 +856,7 @@
}
}
}
}
}
}
@@
-293,7
+293,7
@@
int b = GETARG_B(i);
if (b != 0) L->top = ra+b; /* else previous instruction set top */
L->savedpc = pc;
int b = GETARG_B(i);
if (b != 0) L->top = ra+b; /* else previous instruction set top */
L->savedpc = pc;
-@@ -83
2
,7 +888,7 @@
+@@ -83
4
,7 +888,7 @@
}
}
}
}
}
}
@@
-302,7
+302,7
@@
int b = GETARG_B(i);
if (b != 0) L->top = ra+b-1;
if (L->openupval) luaF_close(L, base);
int b = GETARG_B(i);
if (b != 0) L->top = ra+b-1;
if (L->openupval) luaF_close(L, base);
-@@ -84
7
,7 +903,7 @@
+@@ -84
9
,7 +903,7 @@
goto reentry;
}
}
goto reentry;
}
}
@@
-311,7
+311,7
@@
/* If start,step and limit are all integers, we don't need to check
* against overflow in the looping.
*/
/* If start,step and limit are all integers, we don't need to check
* against overflow in the looping.
*/
-@@ -87
5
,7 +931,7 @@
+@@ -87
7
,7 +931,7 @@
}
continue;
}
}
continue;
}
@@
-320,7
+320,7
@@
const TValue *init = ra;
const TValue *plimit = ra+1;
const TValue *pstep = ra+2;
const TValue *init = ra;
const TValue *plimit = ra+1;
const TValue *pstep = ra+2;
-@@ -
898
,7 +954,7 @@
+@@ -
900
,7 +954,7 @@
dojump(L, pc, GETARG_sBx(i));
continue;
}
dojump(L, pc, GETARG_sBx(i));
continue;
}
@@
-329,7
+329,7
@@
StkId cb = ra + 3; /* call base */
setobjs2s(L, cb+2, ra+2);
setobjs2s(L, cb+1, ra+1);
StkId cb = ra + 3; /* call base */
setobjs2s(L, cb+2, ra+2);
setobjs2s(L, cb+1, ra+1);
-@@ -91
4
,7 +970,7 @@
+@@ -91
6
,7 +970,7 @@
pc++;
continue;
}
pc++;
continue;
}
@@
-338,7
+338,7
@@
int n = GETARG_B(i);
int c = GETARG_C(i);
int last;
int n = GETARG_B(i);
int c = GETARG_C(i);
int last;
-@@ -93
6
,11 +992,11 @@
+@@ -93
8
,11 +992,11 @@
}
continue;
}
}
continue;
}
@@
-352,7
+352,7
@@
Proto *p;
Closure *ncl;
int nup, j;
Proto *p;
Closure *ncl;
int nup, j;
-@@ -96
0
,7 +1016,7 @@
+@@ -96
2
,7 +1016,7 @@
Protect(luaC_checkGC(L));
continue;
}
Protect(luaC_checkGC(L));
continue;
}
This page took
0.026748 seconds
and
4
git commands to generate.