diff options
author | Mike Pall <mike> | 2012-09-12 11:20:47 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2012-09-12 11:20:47 +0200 |
commit | 23932a6c8b7ef434bc963139b4160b1058fa6f7f (patch) | |
tree | 37a8396d51de634046efe72bff36d9a6fb1324c4 /src | |
parent | 039bf85e2610927119254b9c922eab484820e6a7 (diff) | |
download | luajit-23932a6c8b7ef434bc963139b4160b1058fa6f7f.tar.gz luajit-23932a6c8b7ef434bc963139b4160b1058fa6f7f.tar.bz2 luajit-23932a6c8b7ef434bc963139b4160b1058fa6f7f.zip |
Use 0/1 macro for Lua 5.2 compatibility.
Diffstat (limited to 'src')
-rw-r--r-- | src/lib_base.c | 10 | ||||
-rw-r--r-- | src/lib_table.c | 2 | ||||
-rw-r--r-- | src/lj_arch.h | 7 | ||||
-rw-r--r-- | src/lj_ffrecord.c | 5 | ||||
-rw-r--r-- | src/lj_meta.c | 10 | ||||
-rw-r--r-- | src/lj_obj.h | 2 | ||||
-rw-r--r-- | src/lj_parse.c | 2 | ||||
-rw-r--r-- | src/lj_record.c | 10 | ||||
-rw-r--r-- | src/vm_arm.dasc | 14 | ||||
-rw-r--r-- | src/vm_mips.dasc | 12 | ||||
-rw-r--r-- | src/vm_ppc.dasc | 12 | ||||
-rw-r--r-- | src/vm_ppcspe.dasc | 12 | ||||
-rw-r--r-- | src/vm_x86.dasc | 10 |
13 files changed, 49 insertions, 59 deletions
diff --git a/src/lib_base.c b/src/lib_base.c index 824fc0e7..d5f5b0a6 100644 --- a/src/lib_base.c +++ b/src/lib_base.c | |||
@@ -278,16 +278,12 @@ LJLIB_ASM(next) | |||
278 | return FFH_UNREACHABLE; | 278 | return FFH_UNREACHABLE; |
279 | } | 279 | } |
280 | 280 | ||
281 | #if defined(LUAJIT_ENABLE_LUA52COMPAT) || LJ_HASFFI | 281 | #if LJ_52 || LJ_HASFFI |
282 | static int ffh_pairs(lua_State *L, MMS mm) | 282 | static int ffh_pairs(lua_State *L, MMS mm) |
283 | { | 283 | { |
284 | TValue *o = lj_lib_checkany(L, 1); | 284 | TValue *o = lj_lib_checkany(L, 1); |
285 | cTValue *mo = lj_meta_lookup(L, o, mm); | 285 | cTValue *mo = lj_meta_lookup(L, o, mm); |
286 | if ( | 286 | if ((LJ_52 || tviscdata(o)) && !tvisnil(mo)) { |
287 | #if !defined(LUAJIT_ENABLE_LUA52COMPAT) | ||
288 | tviscdata(o) && | ||
289 | #endif | ||
290 | !tvisnil(mo)) { | ||
291 | L->top = o+1; /* Only keep one argument. */ | 287 | L->top = o+1; /* Only keep one argument. */ |
292 | copyTV(L, L->base-1, mo); /* Replace callable. */ | 288 | copyTV(L, L->base-1, mo); /* Replace callable. */ |
293 | return FFH_TAILCALL; | 289 | return FFH_TAILCALL; |
@@ -542,7 +538,7 @@ LJLIB_CF(coroutine_status) | |||
542 | 538 | ||
543 | LJLIB_CF(coroutine_running) | 539 | LJLIB_CF(coroutine_running) |
544 | { | 540 | { |
545 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 541 | #if LJ_52 |
546 | int ismain = lua_pushthread(L); | 542 | int ismain = lua_pushthread(L); |
547 | setboolV(L->top++, ismain); | 543 | setboolV(L->top++, ismain); |
548 | return 2; | 544 | return 2; |
diff --git a/src/lib_table.c b/src/lib_table.c index 5210544b..25894eb0 100644 --- a/src/lib_table.c +++ b/src/lib_table.c | |||
@@ -273,7 +273,7 @@ LJLIB_CF(table_sort) | |||
273 | LUALIB_API int luaopen_table(lua_State *L) | 273 | LUALIB_API int luaopen_table(lua_State *L) |
274 | { | 274 | { |
275 | LJ_LIB_REG(L, LUA_TABLIBNAME, table); | 275 | LJ_LIB_REG(L, LUA_TABLIBNAME, table); |
276 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 276 | #if LJ_52 |
277 | lua_getglobal(L, "unpack"); | 277 | lua_getglobal(L, "unpack"); |
278 | lua_setfield(L, -2, "unpack"); | 278 | lua_setfield(L, -2, "unpack"); |
279 | #endif | 279 | #endif |
diff --git a/src/lj_arch.h b/src/lj_arch.h index a2032821..4df3e8d2 100644 --- a/src/lj_arch.h +++ b/src/lj_arch.h | |||
@@ -400,4 +400,11 @@ | |||
400 | #define LJ_NO_UNWIND 1 | 400 | #define LJ_NO_UNWIND 1 |
401 | #endif | 401 | #endif |
402 | 402 | ||
403 | /* Compatibility with Lua 5.1 vs. 5.2. */ | ||
404 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | ||
405 | #define LJ_52 1 | ||
406 | #else | ||
407 | #define LJ_52 0 | ||
408 | #endif | ||
409 | |||
403 | #endif | 410 | #endif |
diff --git a/src/lj_ffrecord.c b/src/lj_ffrecord.c index 1ac0112e..42bbc5f4 100644 --- a/src/lj_ffrecord.c +++ b/src/lj_ffrecord.c | |||
@@ -353,10 +353,7 @@ static void LJ_FASTCALL recff_ipairs_aux(jit_State *J, RecordFFData *rd) | |||
353 | 353 | ||
354 | static void LJ_FASTCALL recff_ipairs(jit_State *J, RecordFFData *rd) | 354 | static void LJ_FASTCALL recff_ipairs(jit_State *J, RecordFFData *rd) |
355 | { | 355 | { |
356 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 356 | if (!(LJ_52 && recff_metacall(J, rd, MM_ipairs))) { |
357 | if (!recff_metacall(J, rd, MM_ipairs)) | ||
358 | #endif | ||
359 | { | ||
360 | TRef tab = J->base[0]; | 357 | TRef tab = J->base[0]; |
361 | if (tref_istab(tab)) { | 358 | if (tref_istab(tab)) { |
362 | J->base[0] = lj_ir_kfunc(J, funcV(&J->fn->c.upvalue[0])); | 359 | J->base[0] = lj_ir_kfunc(J, funcV(&J->fn->c.upvalue[0])); |
diff --git a/src/lj_meta.c b/src/lj_meta.c index b33cb88d..de2b4068 100644 --- a/src/lj_meta.c +++ b/src/lj_meta.c | |||
@@ -315,19 +315,13 @@ TValue * LJ_FASTCALL lj_meta_len(lua_State *L, cTValue *o) | |||
315 | { | 315 | { |
316 | cTValue *mo = lj_meta_lookup(L, o, MM_len); | 316 | cTValue *mo = lj_meta_lookup(L, o, MM_len); |
317 | if (tvisnil(mo)) { | 317 | if (tvisnil(mo)) { |
318 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 318 | if (LJ_52 && tvistab(o)) |
319 | if (tvistab(o)) | ||
320 | tabref(tabV(o)->metatable)->nomm |= (uint8_t)(1u<<MM_len); | 319 | tabref(tabV(o)->metatable)->nomm |= (uint8_t)(1u<<MM_len); |
321 | else | 320 | else |
322 | #endif | ||
323 | lj_err_optype(L, o, LJ_ERR_OPLEN); | 321 | lj_err_optype(L, o, LJ_ERR_OPLEN); |
324 | return NULL; | 322 | return NULL; |
325 | } | 323 | } |
326 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 324 | return mmcall(L, lj_cont_ra, mo, o, LJ_52 ? o : niltv(L)); |
327 | return mmcall(L, lj_cont_ra, mo, o, o); | ||
328 | #else | ||
329 | return mmcall(L, lj_cont_ra, mo, o, niltv(L)); | ||
330 | #endif | ||
331 | } | 325 | } |
332 | 326 | ||
333 | /* Helper for equality comparisons. __eq metamethod. */ | 327 | /* Helper for equality comparisons. __eq metamethod. */ |
diff --git a/src/lj_obj.h b/src/lj_obj.h index 67fb5ed9..0b0b3a26 100644 --- a/src/lj_obj.h +++ b/src/lj_obj.h | |||
@@ -447,7 +447,7 @@ enum { | |||
447 | #define MMDEF_FFI(_) | 447 | #define MMDEF_FFI(_) |
448 | #endif | 448 | #endif |
449 | 449 | ||
450 | #if defined(LUAJIT_ENABLE_LUA52COMPAT) || LJ_HASFFI | 450 | #if LJ_52 || LJ_HASFFI |
451 | #define MMDEF_PAIRS(_) _(pairs) _(ipairs) | 451 | #define MMDEF_PAIRS(_) _(pairs) _(ipairs) |
452 | #else | 452 | #else |
453 | #define MMDEF_PAIRS(_) | 453 | #define MMDEF_PAIRS(_) |
diff --git a/src/lj_parse.c b/src/lj_parse.c index c5129ad5..6c2f0d31 100644 --- a/src/lj_parse.c +++ b/src/lj_parse.c | |||
@@ -2495,7 +2495,7 @@ static int parse_stmt(LexState *ls) | |||
2495 | lj_lex_next(ls); | 2495 | lj_lex_next(ls); |
2496 | parse_break(ls); | 2496 | parse_break(ls); |
2497 | return 1; /* Must be last. */ | 2497 | return 1; /* Must be last. */ |
2498 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 2498 | #if LJ_52 |
2499 | case ';': | 2499 | case ';': |
2500 | lj_lex_next(ls); | 2500 | lj_lex_next(ls); |
2501 | break; | 2501 | break; |
diff --git a/src/lj_record.c b/src/lj_record.c index ce25f29e..8718f8bb 100644 --- a/src/lj_record.c +++ b/src/lj_record.c | |||
@@ -906,17 +906,15 @@ static TRef rec_mm_len(jit_State *J, TRef tr, TValue *tv) | |||
906 | TValue *basev = J->L->base + func; | 906 | TValue *basev = J->L->base + func; |
907 | base[0] = ix.mobj; copyTV(J->L, basev+0, &ix.mobjv); | 907 | base[0] = ix.mobj; copyTV(J->L, basev+0, &ix.mobjv); |
908 | base[1] = tr; copyTV(J->L, basev+1, tv); | 908 | base[1] = tr; copyTV(J->L, basev+1, tv); |
909 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 909 | #if LJ_52 |
910 | base[2] = tr; copyTV(J->L, basev+2, tv); | 910 | base[2] = tr; copyTV(J->L, basev+2, tv); |
911 | #else | 911 | #else |
912 | base[2] = TREF_NIL; setnilV(basev+2); | 912 | base[2] = TREF_NIL; setnilV(basev+2); |
913 | #endif | 913 | #endif |
914 | lj_record_call(J, func, 2); | 914 | lj_record_call(J, func, 2); |
915 | } else { | 915 | } else { |
916 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 916 | if (LJ_52 && tref_istab(tr)) |
917 | if (tref_istab(tr)) | ||
918 | return lj_ir_call(J, IRCALL_lj_tab_len, tr); | 917 | return lj_ir_call(J, IRCALL_lj_tab_len, tr); |
919 | #endif | ||
920 | lj_trace_err(J, LJ_TRERR_NOMM); | 918 | lj_trace_err(J, LJ_TRERR_NOMM); |
921 | } | 919 | } |
922 | return 0; /* No result yet. */ | 920 | return 0; /* No result yet. */ |
@@ -1815,10 +1813,8 @@ void lj_record_ins(jit_State *J) | |||
1815 | case BC_LEN: | 1813 | case BC_LEN: |
1816 | if (tref_isstr(rc)) | 1814 | if (tref_isstr(rc)) |
1817 | rc = emitir(IRTI(IR_FLOAD), rc, IRFL_STR_LEN); | 1815 | rc = emitir(IRTI(IR_FLOAD), rc, IRFL_STR_LEN); |
1818 | #ifndef LUAJIT_ENABLE_LUA52COMPAT | 1816 | else if (!LJ_52 && tref_istab(rc)) |
1819 | else if (tref_istab(rc)) | ||
1820 | rc = lj_ir_call(J, IRCALL_lj_tab_len, rc); | 1817 | rc = lj_ir_call(J, IRCALL_lj_tab_len, rc); |
1821 | #endif | ||
1822 | else | 1818 | else |
1823 | rc = rec_mm_len(J, rc, rcv); | 1819 | rc = rec_mm_len(J, rc, rcv); |
1824 | break; | 1820 | break; |
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc index b9193213..b2c15f49 100644 --- a/src/vm_arm.dasc +++ b/src/vm_arm.dasc | |||
@@ -793,7 +793,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
793 | | bl extern lj_meta_len // (lua_State *L, TValue *o) | 793 | | bl extern lj_meta_len // (lua_State *L, TValue *o) |
794 | | // Returns NULL (retry) or TValue * (metamethod base). | 794 | | // Returns NULL (retry) or TValue * (metamethod base). |
795 | | .IOS ldr BASE, L->base | 795 | | .IOS ldr BASE, L->base |
796 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 796 | #if LJ_52 |
797 | | cmp CRET1, #0 | 797 | | cmp CRET1, #0 |
798 | | bne ->vmeta_binop // Binop call for compatibility. | 798 | | bne ->vmeta_binop // Binop call for compatibility. |
799 | | ldr TAB:CARG1, [BASE, RC] | 799 | | ldr TAB:CARG1, [BASE, RC] |
@@ -1085,12 +1085,12 @@ static void build_subroutines(BuildCtx *ctx) | |||
1085 | | | 1085 | | |
1086 | |.ffunc_1 pairs | 1086 | |.ffunc_1 pairs |
1087 | | checktab CARG2, ->fff_fallback | 1087 | | checktab CARG2, ->fff_fallback |
1088 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1088 | #if LJ_52 |
1089 | | ldr TAB:RB, TAB:CARG1->metatable | 1089 | | ldr TAB:RB, TAB:CARG1->metatable |
1090 | #endif | 1090 | #endif |
1091 | | ldrd CFUNC:CARG34, CFUNC:CARG3->upvalue[0] | 1091 | | ldrd CFUNC:CARG34, CFUNC:CARG3->upvalue[0] |
1092 | | ldr PC, [BASE, FRAME_PC] | 1092 | | ldr PC, [BASE, FRAME_PC] |
1093 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1093 | #if LJ_52 |
1094 | | cmp TAB:RB, #0 | 1094 | | cmp TAB:RB, #0 |
1095 | | bne ->fff_fallback | 1095 | | bne ->fff_fallback |
1096 | #endif | 1096 | #endif |
@@ -1135,12 +1135,12 @@ static void build_subroutines(BuildCtx *ctx) | |||
1135 | | | 1135 | | |
1136 | |.ffunc_1 ipairs | 1136 | |.ffunc_1 ipairs |
1137 | | checktab CARG2, ->fff_fallback | 1137 | | checktab CARG2, ->fff_fallback |
1138 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1138 | #if LJ_52 |
1139 | | ldr TAB:RB, TAB:CARG1->metatable | 1139 | | ldr TAB:RB, TAB:CARG1->metatable |
1140 | #endif | 1140 | #endif |
1141 | | ldrd CFUNC:CARG34, CFUNC:CARG3->upvalue[0] | 1141 | | ldrd CFUNC:CARG34, CFUNC:CARG3->upvalue[0] |
1142 | | ldr PC, [BASE, FRAME_PC] | 1142 | | ldr PC, [BASE, FRAME_PC] |
1143 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1143 | #if LJ_52 |
1144 | | cmp TAB:RB, #0 | 1144 | | cmp TAB:RB, #0 |
1145 | | bne ->fff_fallback | 1145 | | bne ->fff_fallback |
1146 | #endif | 1146 | #endif |
@@ -2906,7 +2906,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
2906 | | ins_next3 | 2906 | | ins_next3 |
2907 | |2: | 2907 | |2: |
2908 | | checktab CARG2, ->vmeta_len | 2908 | | checktab CARG2, ->vmeta_len |
2909 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 2909 | #if LJ_52 |
2910 | | ldr TAB:CARG3, TAB:CARG1->metatable | 2910 | | ldr TAB:CARG3, TAB:CARG1->metatable |
2911 | | cmp TAB:CARG3, #0 | 2911 | | cmp TAB:CARG3, #0 |
2912 | | bne >9 | 2912 | | bne >9 |
@@ -2918,7 +2918,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
2918 | | // Returns uint32_t (but less than 2^31). | 2918 | | // Returns uint32_t (but less than 2^31). |
2919 | | .IOS mov BASE, RC | 2919 | | .IOS mov BASE, RC |
2920 | | b <1 | 2920 | | b <1 |
2921 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 2921 | #if LJ_52 |
2922 | |9: | 2922 | |9: |
2923 | | ldrb CARG4, TAB:CARG3->nomm | 2923 | | ldrb CARG4, TAB:CARG3->nomm |
2924 | | tst CARG4, #1<<MM_len | 2924 | | tst CARG4, #1<<MM_len |
diff --git a/src/vm_mips.dasc b/src/vm_mips.dasc index 46038c36..6da7d4d2 100644 --- a/src/vm_mips.dasc +++ b/src/vm_mips.dasc | |||
@@ -842,7 +842,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
842 | | | 842 | | |
843 | |->vmeta_len: | 843 | |->vmeta_len: |
844 | | // CARG2 already set by BC_LEN. | 844 | | // CARG2 already set by BC_LEN. |
845 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 845 | #if LJ_52 |
846 | | move MULTRES, CARG1 | 846 | | move MULTRES, CARG1 |
847 | #endif | 847 | #endif |
848 | | load_got lj_meta_len | 848 | | load_got lj_meta_len |
@@ -851,7 +851,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
851 | | call_intern lj_meta_len // (lua_State *L, TValue *o) | 851 | | call_intern lj_meta_len // (lua_State *L, TValue *o) |
852 | |. move CARG1, L | 852 | |. move CARG1, L |
853 | | // Returns NULL (retry) or TValue * (metamethod base). | 853 | | // Returns NULL (retry) or TValue * (metamethod base). |
854 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 854 | #if LJ_52 |
855 | | bnez CRET1, ->vmeta_binop // Binop call for compatibility. | 855 | | bnez CRET1, ->vmeta_binop // Binop call for compatibility. |
856 | |. nop | 856 | |. nop |
857 | | b ->BC_LEN_Z | 857 | | b ->BC_LEN_Z |
@@ -1159,7 +1159,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1159 | | li AT, LJ_TTAB | 1159 | | li AT, LJ_TTAB |
1160 | | bne CARG3, AT, ->fff_fallback | 1160 | | bne CARG3, AT, ->fff_fallback |
1161 | |. lw PC, FRAME_PC(BASE) | 1161 | |. lw PC, FRAME_PC(BASE) |
1162 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1162 | #if LJ_52 |
1163 | | lw TAB:TMP2, TAB:CARG1->metatable | 1163 | | lw TAB:TMP2, TAB:CARG1->metatable |
1164 | | ldc1 f0, CFUNC:RB->upvalue[0] | 1164 | | ldc1 f0, CFUNC:RB->upvalue[0] |
1165 | | bnez TAB:TMP2, ->fff_fallback | 1165 | | bnez TAB:TMP2, ->fff_fallback |
@@ -1225,7 +1225,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1225 | | li AT, LJ_TTAB | 1225 | | li AT, LJ_TTAB |
1226 | | bne CARG3, AT, ->fff_fallback | 1226 | | bne CARG3, AT, ->fff_fallback |
1227 | |. lw PC, FRAME_PC(BASE) | 1227 | |. lw PC, FRAME_PC(BASE) |
1228 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1228 | #if LJ_52 |
1229 | | lw TAB:TMP2, TAB:CARG1->metatable | 1229 | | lw TAB:TMP2, TAB:CARG1->metatable |
1230 | | ldc1 f0, CFUNC:RB->upvalue[0] | 1230 | | ldc1 f0, CFUNC:RB->upvalue[0] |
1231 | | bnez TAB:TMP2, ->fff_fallback | 1231 | | bnez TAB:TMP2, ->fff_fallback |
@@ -2613,7 +2613,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
2613 | |2: | 2613 | |2: |
2614 | | bne TMP0, AT, ->vmeta_len | 2614 | | bne TMP0, AT, ->vmeta_len |
2615 | |. nop | 2615 | |. nop |
2616 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 2616 | #if LJ_52 |
2617 | | lw TAB:TMP2, TAB:CARG1->metatable | 2617 | | lw TAB:TMP2, TAB:CARG1->metatable |
2618 | | bnez TAB:TMP2, >9 | 2618 | | bnez TAB:TMP2, >9 |
2619 | |. nop | 2619 | |. nop |
@@ -2626,7 +2626,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
2626 | | // Returns uint32_t (but less than 2^31). | 2626 | | // Returns uint32_t (but less than 2^31). |
2627 | | b <1 | 2627 | | b <1 |
2628 | |. nop | 2628 | |. nop |
2629 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 2629 | #if LJ_52 |
2630 | |9: | 2630 | |9: |
2631 | | lbu TMP0, TAB:TMP2->nomm | 2631 | | lbu TMP0, TAB:TMP2->nomm |
2632 | | andi TMP0, TMP0, 1<<MM_len | 2632 | | andi TMP0, TMP0, 1<<MM_len |
diff --git a/src/vm_ppc.dasc b/src/vm_ppc.dasc index 461676cd..1a7c31ad 100644 --- a/src/vm_ppc.dasc +++ b/src/vm_ppc.dasc | |||
@@ -1057,7 +1057,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1057 | | b ->vm_call_dispatch | 1057 | | b ->vm_call_dispatch |
1058 | | | 1058 | | |
1059 | |->vmeta_len: | 1059 | |->vmeta_len: |
1060 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1060 | #if LJ_52 |
1061 | | mr SAVE0, CARG1 | 1061 | | mr SAVE0, CARG1 |
1062 | #endif | 1062 | #endif |
1063 | | mr CARG2, RD | 1063 | | mr CARG2, RD |
@@ -1066,7 +1066,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1066 | | stw PC, SAVE_PC | 1066 | | stw PC, SAVE_PC |
1067 | | bl extern lj_meta_len // (lua_State *L, TValue *o) | 1067 | | bl extern lj_meta_len // (lua_State *L, TValue *o) |
1068 | | // Returns NULL (retry) or TValue * (metamethod base). | 1068 | | // Returns NULL (retry) or TValue * (metamethod base). |
1069 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1069 | #if LJ_52 |
1070 | | cmplwi CRET1, 0 | 1070 | | cmplwi CRET1, 0 |
1071 | | bne ->vmeta_binop // Binop call for compatibility. | 1071 | | bne ->vmeta_binop // Binop call for compatibility. |
1072 | | mr CARG1, SAVE0 | 1072 | | mr CARG1, SAVE0 |
@@ -1364,7 +1364,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1364 | | checktab CARG3 | 1364 | | checktab CARG3 |
1365 | | lwz PC, FRAME_PC(BASE) | 1365 | | lwz PC, FRAME_PC(BASE) |
1366 | | bne ->fff_fallback | 1366 | | bne ->fff_fallback |
1367 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1367 | #if LJ_52 |
1368 | | lwz TAB:TMP2, TAB:CARG1->metatable | 1368 | | lwz TAB:TMP2, TAB:CARG1->metatable |
1369 | | lfd f0, CFUNC:RB->upvalue[0] | 1369 | | lfd f0, CFUNC:RB->upvalue[0] |
1370 | | cmplwi TAB:TMP2, 0 | 1370 | | cmplwi TAB:TMP2, 0 |
@@ -1450,7 +1450,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1450 | | checktab CARG3 | 1450 | | checktab CARG3 |
1451 | | lwz PC, FRAME_PC(BASE) | 1451 | | lwz PC, FRAME_PC(BASE) |
1452 | | bne ->fff_fallback | 1452 | | bne ->fff_fallback |
1453 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1453 | #if LJ_52 |
1454 | | lwz TAB:TMP2, TAB:CARG1->metatable | 1454 | | lwz TAB:TMP2, TAB:CARG1->metatable |
1455 | | lfd f0, CFUNC:RB->upvalue[0] | 1455 | | lfd f0, CFUNC:RB->upvalue[0] |
1456 | | cmplwi TAB:TMP2, 0 | 1456 | | cmplwi TAB:TMP2, 0 |
@@ -3297,7 +3297,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
3297 | | ins_next2 | 3297 | | ins_next2 |
3298 | |2: | 3298 | |2: |
3299 | | checktab TMP0; bne ->vmeta_len | 3299 | | checktab TMP0; bne ->vmeta_len |
3300 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 3300 | #if LJ_52 |
3301 | | lwz TAB:TMP2, TAB:CARG1->metatable | 3301 | | lwz TAB:TMP2, TAB:CARG1->metatable |
3302 | | cmplwi TAB:TMP2, 0 | 3302 | | cmplwi TAB:TMP2, 0 |
3303 | | bne >9 | 3303 | | bne >9 |
@@ -3307,7 +3307,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
3307 | | bl extern lj_tab_len // (GCtab *t) | 3307 | | bl extern lj_tab_len // (GCtab *t) |
3308 | | // Returns uint32_t (but less than 2^31). | 3308 | | // Returns uint32_t (but less than 2^31). |
3309 | | b <1 | 3309 | | b <1 |
3310 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 3310 | #if LJ_52 |
3311 | |9: | 3311 | |9: |
3312 | | lbz TMP0, TAB:TMP2->nomm | 3312 | | lbz TMP0, TAB:TMP2->nomm |
3313 | | andix. TMP0, TMP0, 1<<MM_len | 3313 | | andix. TMP0, TMP0, 1<<MM_len |
diff --git a/src/vm_ppcspe.dasc b/src/vm_ppcspe.dasc index 0ee687c2..31e4c6c4 100644 --- a/src/vm_ppcspe.dasc +++ b/src/vm_ppcspe.dasc | |||
@@ -811,7 +811,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
811 | | b ->vm_call_dispatch | 811 | | b ->vm_call_dispatch |
812 | | | 812 | | |
813 | |->vmeta_len: | 813 | |->vmeta_len: |
814 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 814 | #if LJ_52 |
815 | | mr SAVE0, CARG1 | 815 | | mr SAVE0, CARG1 |
816 | #endif | 816 | #endif |
817 | | add CARG2, BASE, RD | 817 | | add CARG2, BASE, RD |
@@ -820,7 +820,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
820 | | stw PC, SAVE_PC | 820 | | stw PC, SAVE_PC |
821 | | bl extern lj_meta_len // (lua_State *L, TValue *o) | 821 | | bl extern lj_meta_len // (lua_State *L, TValue *o) |
822 | | // Returns NULL (retry) or TValue * (metamethod base). | 822 | | // Returns NULL (retry) or TValue * (metamethod base). |
823 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 823 | #if LJ_52 |
824 | | cmplwi CRET1, 0 | 824 | | cmplwi CRET1, 0 |
825 | | bne ->vmeta_binop // Binop call for compatibility. | 825 | | bne ->vmeta_binop // Binop call for compatibility. |
826 | | mr CARG1, SAVE0 | 826 | | mr CARG1, SAVE0 |
@@ -1103,7 +1103,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1103 | | checktab TAB:CARG1 | 1103 | | checktab TAB:CARG1 |
1104 | | lwz PC, FRAME_PC(BASE) | 1104 | | lwz PC, FRAME_PC(BASE) |
1105 | | checkfail ->fff_fallback | 1105 | | checkfail ->fff_fallback |
1106 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1106 | #if LJ_52 |
1107 | | lwz TAB:TMP2, TAB:CARG1->metatable | 1107 | | lwz TAB:TMP2, TAB:CARG1->metatable |
1108 | | evldd CFUNC:TMP0, CFUNC:RB->upvalue[0] | 1108 | | evldd CFUNC:TMP0, CFUNC:RB->upvalue[0] |
1109 | | cmplwi TAB:TMP2, 0 | 1109 | | cmplwi TAB:TMP2, 0 |
@@ -1162,7 +1162,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1162 | | checktab TAB:CARG1 | 1162 | | checktab TAB:CARG1 |
1163 | | lwz PC, FRAME_PC(BASE) | 1163 | | lwz PC, FRAME_PC(BASE) |
1164 | | checkfail ->fff_fallback | 1164 | | checkfail ->fff_fallback |
1165 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1165 | #if LJ_52 |
1166 | | lwz TAB:TMP2, TAB:CARG1->metatable | 1166 | | lwz TAB:TMP2, TAB:CARG1->metatable |
1167 | | evldd CFUNC:TMP0, CFUNC:RB->upvalue[0] | 1167 | | evldd CFUNC:TMP0, CFUNC:RB->upvalue[0] |
1168 | | cmplwi TAB:TMP2, 0 | 1168 | | cmplwi TAB:TMP2, 0 |
@@ -2327,7 +2327,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
2327 | |2: | 2327 | |2: |
2328 | | checktab CARG1 | 2328 | | checktab CARG1 |
2329 | | checkfail ->vmeta_len | 2329 | | checkfail ->vmeta_len |
2330 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 2330 | #if LJ_52 |
2331 | | lwz TAB:TMP2, TAB:CARG1->metatable | 2331 | | lwz TAB:TMP2, TAB:CARG1->metatable |
2332 | | cmplwi TAB:TMP2, 0 | 2332 | | cmplwi TAB:TMP2, 0 |
2333 | | bne >9 | 2333 | | bne >9 |
@@ -2337,7 +2337,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
2337 | | bl extern lj_tab_len // (GCtab *t) | 2337 | | bl extern lj_tab_len // (GCtab *t) |
2338 | | // Returns uint32_t (but less than 2^31). | 2338 | | // Returns uint32_t (but less than 2^31). |
2339 | | b <1 | 2339 | | b <1 |
2340 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 2340 | #if LJ_52 |
2341 | |9: | 2341 | |9: |
2342 | | lbz TMP0, TAB:TMP2->nomm | 2342 | | lbz TMP0, TAB:TMP2->nomm |
2343 | | andi. TMP0, TMP0, 1<<MM_len | 2343 | | andi. TMP0, TMP0, 1<<MM_len |
diff --git a/src/vm_x86.dasc b/src/vm_x86.dasc index c455795e..8fe07a65 100644 --- a/src/vm_x86.dasc +++ b/src/vm_x86.dasc | |||
@@ -1184,7 +1184,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1184 | | call extern lj_meta_len@8 // (lua_State *L, TValue *o) | 1184 | | call extern lj_meta_len@8 // (lua_State *L, TValue *o) |
1185 | | // NULL (retry) or TValue * (metamethod) returned in eax (RC). | 1185 | | // NULL (retry) or TValue * (metamethod) returned in eax (RC). |
1186 | | mov BASE, L:RB->base | 1186 | | mov BASE, L:RB->base |
1187 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1187 | #if LJ_52 |
1188 | | test RC, RC | 1188 | | test RC, RC |
1189 | | jne ->vmeta_binop // Binop call for compatibility. | 1189 | | jne ->vmeta_binop // Binop call for compatibility. |
1190 | | movzx RD, PC_RD | 1190 | | movzx RD, PC_RD |
@@ -1600,7 +1600,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1600 | |.ffunc_1 pairs | 1600 | |.ffunc_1 pairs |
1601 | | mov TAB:RB, [BASE] | 1601 | | mov TAB:RB, [BASE] |
1602 | | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback | 1602 | | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback |
1603 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1603 | #if LJ_52 |
1604 | | cmp dword TAB:RB->metatable, 0; jne ->fff_fallback | 1604 | | cmp dword TAB:RB->metatable, 0; jne ->fff_fallback |
1605 | #endif | 1605 | #endif |
1606 | | mov CFUNC:RB, [BASE-8] | 1606 | | mov CFUNC:RB, [BASE-8] |
@@ -1674,7 +1674,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1674 | |.ffunc_1 ipairs | 1674 | |.ffunc_1 ipairs |
1675 | | mov TAB:RB, [BASE] | 1675 | | mov TAB:RB, [BASE] |
1676 | | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback | 1676 | | cmp dword [BASE+4], LJ_TTAB; jne ->fff_fallback |
1677 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 1677 | #if LJ_52 |
1678 | | cmp dword TAB:RB->metatable, 0; jne ->fff_fallback | 1678 | | cmp dword TAB:RB->metatable, 0; jne ->fff_fallback |
1679 | #endif | 1679 | #endif |
1680 | | mov CFUNC:RB, [BASE-8] | 1680 | | mov CFUNC:RB, [BASE-8] |
@@ -4315,7 +4315,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
4315 | |2: | 4315 | |2: |
4316 | | checktab RD, ->vmeta_len | 4316 | | checktab RD, ->vmeta_len |
4317 | | mov TAB:FCARG1, [BASE+RD*8] | 4317 | | mov TAB:FCARG1, [BASE+RD*8] |
4318 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 4318 | #if LJ_52 |
4319 | | mov TAB:RB, TAB:FCARG1->metatable | 4319 | | mov TAB:RB, TAB:FCARG1->metatable |
4320 | | cmp TAB:RB, 0 | 4320 | | cmp TAB:RB, 0 |
4321 | | jnz >9 | 4321 | | jnz >9 |
@@ -4336,7 +4336,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop) | |||
4336 | | mov BASE, RB // Restore BASE. | 4336 | | mov BASE, RB // Restore BASE. |
4337 | | movzx RA, PC_RA | 4337 | | movzx RA, PC_RA |
4338 | | jmp <1 | 4338 | | jmp <1 |
4339 | #ifdef LUAJIT_ENABLE_LUA52COMPAT | 4339 | #if LJ_52 |
4340 | |9: // Check for __len. | 4340 | |9: // Check for __len. |
4341 | | test byte TAB:RB->nomm, 1<<MM_len | 4341 | | test byte TAB:RB->nomm, 1<<MM_len |
4342 | | jnz <3 | 4342 | | jnz <3 |