summaryrefslogtreecommitdiff
path: root/src/buildvm_ppc.dasc
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildvm_ppc.dasc')
-rw-r--r--src/buildvm_ppc.dasc26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc
index c257de45..4e316883 100644
--- a/src/buildvm_ppc.dasc
+++ b/src/buildvm_ppc.dasc
@@ -818,13 +818,23 @@ static void build_subroutines(BuildCtx *ctx)
818 | b ->vm_call_dispatch 818 | b ->vm_call_dispatch
819 | 819 |
820 |->vmeta_len: 820 |->vmeta_len:
821#ifdef LUAJIT_ENABLE_LUA52COMPAT
822 | mr SAVE0, CARG1
823#endif
821 | add CARG2, BASE, RD 824 | add CARG2, BASE, RD
822 | stw BASE, L->base 825 | stw BASE, L->base
823 | mr CARG1, L 826 | mr CARG1, L
824 | stw PC, SAVE_PC 827 | stw PC, SAVE_PC
825 | bl extern lj_meta_len // (lua_State *L, TValue *o) 828 | bl extern lj_meta_len // (lua_State *L, TValue *o)
826 | // Returns TValue * (metamethod base). 829 | // Returns NULL (retry) or TValue * (metamethod base).
830#ifdef LUAJIT_ENABLE_LUA52COMPAT
831 | cmplwi CRET1, 0
832 | bne ->vmeta_binop // Binop call for compatibility.
833 | mr CARG1, SAVE0
834 | b ->BC_LEN_Z
835#else
827 | b ->vmeta_binop // Binop call for compatibility. 836 | b ->vmeta_binop // Binop call for compatibility.
837#endif
828 | 838 |
829 |//-- Call metamethod ---------------------------------------------------- 839 |//-- Call metamethod ----------------------------------------------------
830 | 840 |
@@ -2337,9 +2347,23 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2337 |2: 2347 |2:
2338 | checktab CARG1 2348 | checktab CARG1
2339 | checkfail ->vmeta_len 2349 | checkfail ->vmeta_len
2350#ifdef LUAJIT_ENABLE_LUA52COMPAT
2351 | lwz TAB:TMP2, TAB:CARG1->metatable
2352 | cmplwi TAB:TMP2, 0
2353 | bne >9
2354 |3:
2355#endif
2356 |->BC_LEN_Z:
2340 | bl extern lj_tab_len // (GCtab *t) 2357 | bl extern lj_tab_len // (GCtab *t)
2341 | // Returns uint32_t (but less than 2^31). 2358 | // Returns uint32_t (but less than 2^31).
2342 | b <1 2359 | b <1
2360#ifdef LUAJIT_ENABLE_LUA52COMPAT
2361 |9:
2362 | lbz TMP0, TAB:TMP2->nomm
2363 | andi. TMP0, TMP0, 1<<MM_len
2364 | bne <3 // 'no __len' flag set: done.
2365 | b ->vmeta_len
2366#endif
2343 break; 2367 break;
2344 2368
2345 /* -- Binary ops -------------------------------------------------------- */ 2369 /* -- Binary ops -------------------------------------------------------- */