aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/vm_mips.dasc150
1 files changed, 75 insertions, 75 deletions
diff --git a/src/vm_mips.dasc b/src/vm_mips.dasc
index a7c3b4ae..23692e34 100644
--- a/src/vm_mips.dasc
+++ b/src/vm_mips.dasc
@@ -596,28 +596,28 @@ static void build_subroutines(BuildCtx *ctx)
596 | move RB, BASE 596 | move RB, BASE
597 | move BASE, TMP2 // Restore caller BASE. 597 | move BASE, TMP2 // Restore caller BASE.
598 | lw LFUNC:TMP1, FRAME_FUNC(TMP2) 598 | lw LFUNC:TMP1, FRAME_FUNC(TMP2)
599#if LJ_HASFFI 599 |.if FFI
600 | sltiu AT, TMP0, 2 600 | sltiu AT, TMP0, 2
601#endif 601 |.endif
602 | lw PC, -16+HI(RB) // Restore PC from [cont|PC]. 602 | lw PC, -16+HI(RB) // Restore PC from [cont|PC].
603 | addu TMP2, RA, RD 603 | addu TMP2, RA, RD
604 | lw TMP1, LFUNC:TMP1->pc 604 | lw TMP1, LFUNC:TMP1->pc
605#if LJ_HASFFI 605 |.if FFI
606 | bnez AT, >1 606 | bnez AT, >1
607#endif 607 |.endif
608 |. sw TISNIL, -8+HI(TMP2) // Ensure one valid arg. 608 |. sw TISNIL, -8+HI(TMP2) // Ensure one valid arg.
609 | // BASE = base, RA = resultptr, RB = meta base 609 | // BASE = base, RA = resultptr, RB = meta base
610 | jr TMP0 // Jump to continuation. 610 | jr TMP0 // Jump to continuation.
611 |. lw KBASE, PC2PROTO(k)(TMP1) 611 |. lw KBASE, PC2PROTO(k)(TMP1)
612 | 612 |
613#if LJ_HASFFI 613 |.if FFI
614 |1: 614 |1:
615 | bnez TMP0, ->cont_ffi_callback // cont = 1: return from FFI callback. 615 | bnez TMP0, ->cont_ffi_callback // cont = 1: return from FFI callback.
616 | // cont = 0: tailcall from C function. 616 | // cont = 0: tailcall from C function.
617 |. addiu TMP1, RB, -16 617 |. addiu TMP1, RB, -16
618 | b ->vm_call_tail 618 | b ->vm_call_tail
619 |. subu RC, TMP1, BASE 619 |. subu RC, TMP1, BASE
620#endif 620 |.endif
621 | 621 |
622 |->cont_cat: // RA = resultptr, RB = meta base 622 |->cont_cat: // RA = resultptr, RB = meta base
623 | lw INS, -4(PC) 623 | lw INS, -4(PC)
@@ -798,7 +798,7 @@ static void build_subroutines(BuildCtx *ctx)
798 |. nop 798 |. nop
799 | 799 |
800 |->vmeta_equal_cd: 800 |->vmeta_equal_cd:
801#if LJ_HASFFI 801 |.if FFI
802 | load_got lj_meta_equal_cd 802 | load_got lj_meta_equal_cd
803 | move CARG2, INS 803 | move CARG2, INS
804 | addiu PC, PC, -4 804 | addiu PC, PC, -4
@@ -809,7 +809,7 @@ static void build_subroutines(BuildCtx *ctx)
809 | // Returns 0/1 or TValue * (metamethod). 809 | // Returns 0/1 or TValue * (metamethod).
810 | b <3 810 | b <3
811 |. nop 811 |. nop
812#endif 812 |.endif
813 | 813 |
814 |//-- Arithmetic metamethods --------------------------------------------- 814 |//-- Arithmetic metamethods ---------------------------------------------
815 | 815 |
@@ -902,22 +902,22 @@ static void build_subroutines(BuildCtx *ctx)
902 | move MULTRES, INS 902 | move MULTRES, INS
903 | call_intern lj_meta_for // (lua_State *L, TValue *base) 903 | call_intern lj_meta_for // (lua_State *L, TValue *base)
904 |. move CARG1, L 904 |. move CARG1, L
905#if LJ_HASJIT 905 |.if JIT
906 | decode_OP1 TMP0, MULTRES 906 | decode_OP1 TMP0, MULTRES
907 | li AT, BC_JFORI 907 | li AT, BC_JFORI
908#endif 908 |.endif
909 | decode_RA8a RA, MULTRES 909 | decode_RA8a RA, MULTRES
910 | decode_RD8a RD, MULTRES 910 | decode_RD8a RD, MULTRES
911 | decode_RA8b RA 911 | decode_RA8b RA
912#if LJ_HASJIT 912 |.if JIT
913 | beq TMP0, AT, =>BC_JFORI 913 | beq TMP0, AT, =>BC_JFORI
914 |. decode_RD8b RD 914 |. decode_RD8b RD
915 | b =>BC_FORI 915 | b =>BC_FORI
916 |. nop 916 |. nop
917#else 917 |.else
918 | b =>BC_FORI 918 | b =>BC_FORI
919 |. decode_RD8b RD 919 |. decode_RD8b RD
920#endif 920 |.endif
921 | 921 |
922 |//----------------------------------------------------------------------- 922 |//-----------------------------------------------------------------------
923 |//-- Fast functions ----------------------------------------------------- 923 |//-- Fast functions -----------------------------------------------------
@@ -1936,7 +1936,7 @@ static void build_subroutines(BuildCtx *ctx)
1936 |//----------------------------------------------------------------------- 1936 |//-----------------------------------------------------------------------
1937 | 1937 |
1938 |->vm_record: // Dispatch target for recording phase. 1938 |->vm_record: // Dispatch target for recording phase.
1939#if LJ_HASJIT 1939 |.if JIT
1940 | lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH) 1940 | lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH)
1941 | andi AT, TMP3, HOOK_VMEVENT // No recording while in vmevent. 1941 | andi AT, TMP3, HOOK_VMEVENT // No recording while in vmevent.
1942 | bnez AT, >5 1942 | bnez AT, >5
@@ -1950,7 +1950,7 @@ static void build_subroutines(BuildCtx *ctx)
1950 |. nop 1950 |. nop
1951 | b >1 1951 | b >1
1952 |. sw TMP2, DISPATCH_GL(hookcount)(DISPATCH) 1952 |. sw TMP2, DISPATCH_GL(hookcount)(DISPATCH)
1953#endif 1953 |.endif
1954 | 1954 |
1955 |->vm_rethook: // Dispatch target for return hooks. 1955 |->vm_rethook: // Dispatch target for return hooks.
1956 | lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH) 1956 | lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH)
@@ -2001,7 +2001,7 @@ static void build_subroutines(BuildCtx *ctx)
2001 |. lw MULTRES, -24+LO(RB) // Restore MULTRES for *M ins. 2001 |. lw MULTRES, -24+LO(RB) // Restore MULTRES for *M ins.
2002 | 2002 |
2003 |->vm_hotloop: // Hot loop counter underflow. 2003 |->vm_hotloop: // Hot loop counter underflow.
2004#if LJ_HASJIT 2004 |.if JIT
2005 | lw LFUNC:TMP1, FRAME_FUNC(BASE) 2005 | lw LFUNC:TMP1, FRAME_FUNC(BASE)
2006 | addiu CARG1, DISPATCH, GG_DISP2J 2006 | addiu CARG1, DISPATCH, GG_DISP2J
2007 | sw PC, SAVE_PC 2007 | sw PC, SAVE_PC
@@ -2017,19 +2017,19 @@ static void build_subroutines(BuildCtx *ctx)
2017 |. sw TMP1, L->top 2017 |. sw TMP1, L->top
2018 | b <3 2018 | b <3
2019 |. nop 2019 |. nop
2020#endif 2020 |.endif
2021 | 2021 |
2022 |->vm_callhook: // Dispatch target for call hooks. 2022 |->vm_callhook: // Dispatch target for call hooks.
2023#if LJ_HASJIT 2023 |.if JIT
2024 | b >1 2024 | b >1
2025#endif 2025 |.endif
2026 |. move CARG2, PC 2026 |. move CARG2, PC
2027 | 2027 |
2028 |->vm_hotcall: // Hot call counter underflow. 2028 |->vm_hotcall: // Hot call counter underflow.
2029#if LJ_HASJIT 2029 |.if JIT
2030 | ori CARG2, PC, 1 2030 | ori CARG2, PC, 1
2031 |1: 2031 |1:
2032#endif 2032 |.endif
2033 | load_got lj_dispatch_call 2033 | load_got lj_dispatch_call
2034 | addu TMP0, BASE, RC 2034 | addu TMP0, BASE, RC
2035 | sw PC, SAVE_PC 2035 | sw PC, SAVE_PC
@@ -2059,7 +2059,7 @@ static void build_subroutines(BuildCtx *ctx)
2059 |.endmacro 2059 |.endmacro
2060 | 2060 |
2061 |->vm_exit_handler: 2061 |->vm_exit_handler:
2062#if LJ_HASJIT 2062 |.if JIT
2063 | addiu sp, sp, -(16+32*8+32*4) 2063 | addiu sp, sp, -(16+32*8+32*4)
2064 | savex_ 0, 1 2064 | savex_ 0, 1
2065 | savex_ 2, 3 2065 | savex_ 2, 3
@@ -2104,9 +2104,9 @@ static void build_subroutines(BuildCtx *ctx)
2104 | lw PC, SAVE_PC // Get SAVE_PC. 2104 | lw PC, SAVE_PC // Get SAVE_PC.
2105 | b >1 2105 | b >1
2106 |. sw L, SAVE_L // Set SAVE_L (on-trace resume/yield). 2106 |. sw L, SAVE_L // Set SAVE_L (on-trace resume/yield).
2107#endif 2107 |.endif
2108 |->vm_exit_interp: 2108 |->vm_exit_interp:
2109#if LJ_HASJIT 2109 |.if JIT
2110 | // CRET1 = MULTRES or negated error code, BASE, PC and JGL set. 2110 | // CRET1 = MULTRES or negated error code, BASE, PC and JGL set.
2111 | lw L, SAVE_L 2111 | lw L, SAVE_L
2112 | addiu DISPATCH, JGL, -GG_DISP2G-32768 2112 | addiu DISPATCH, JGL, -GG_DISP2G-32768
@@ -2148,7 +2148,7 @@ static void build_subroutines(BuildCtx *ctx)
2148 | negu CARG2, CRET1 2148 | negu CARG2, CRET1
2149 | call_intern lj_err_throw // (lua_State *L, int errcode) 2149 | call_intern lj_err_throw // (lua_State *L, int errcode)
2150 |. move CARG1, L 2150 |. move CARG1, L
2151#endif 2151 |.endif
2152 | 2152 |
2153 |//----------------------------------------------------------------------- 2153 |//-----------------------------------------------------------------------
2154 |//-- Math helper functions ---------------------------------------------- 2154 |//-- Math helper functions ----------------------------------------------
@@ -2202,9 +2202,9 @@ static void build_subroutines(BuildCtx *ctx)
2202 |->vm_ceil: 2202 |->vm_ceil:
2203 | vm_round ceil 2203 | vm_round ceil
2204 |->vm_trunc: 2204 |->vm_trunc:
2205#if LJ_HASJIT 2205 |.if JIT
2206 | vm_round trunc 2206 | vm_round trunc
2207#endif 2207 |.endif
2208 | 2208 |
2209 |//----------------------------------------------------------------------- 2209 |//-----------------------------------------------------------------------
2210 |//-- Miscellaneous functions -------------------------------------------- 2210 |//-- Miscellaneous functions --------------------------------------------
@@ -2216,7 +2216,7 @@ static void build_subroutines(BuildCtx *ctx)
2216 | 2216 |
2217 |// Handler for callback functions. Callback slot number in r1, g in r2. 2217 |// Handler for callback functions. Callback slot number in r1, g in r2.
2218 |->vm_ffi_callback: 2218 |->vm_ffi_callback:
2219#if LJ_HASFFI 2219 |.if FFI
2220 |.type CTSTATE, CTState, PC 2220 |.type CTSTATE, CTState, PC
2221 | saveregs 2221 | saveregs
2222 | lw CTSTATE, GL:r2->ctype_state 2222 | lw CTSTATE, GL:r2->ctype_state
@@ -2248,10 +2248,10 @@ static void build_subroutines(BuildCtx *ctx)
2248 | st_vmstate 2248 | st_vmstate
2249 | cvt.d.s TOBIT, TOBIT 2249 | cvt.d.s TOBIT, TOBIT
2250 | ins_callt 2250 | ins_callt
2251#endif 2251 |.endif
2252 | 2252 |
2253 |->cont_ffi_callback: // Return from FFI callback. 2253 |->cont_ffi_callback: // Return from FFI callback.
2254#if LJ_HASFFI 2254 |.if FFI
2255 | load_got lj_ccallback_leave 2255 | load_got lj_ccallback_leave
2256 | lw CTSTATE, DISPATCH_GL(ctype_state)(DISPATCH) 2256 | lw CTSTATE, DISPATCH_GL(ctype_state)(DISPATCH)
2257 | sw BASE, L->base 2257 | sw BASE, L->base
@@ -2265,11 +2265,11 @@ static void build_subroutines(BuildCtx *ctx)
2265 | lw CRET2, CTSTATE->cb.gpr[1] 2265 | lw CRET2, CTSTATE->cb.gpr[1]
2266 | b ->vm_leave_unw 2266 | b ->vm_leave_unw
2267 |. ldc1 FRET2, CTSTATE->cb.fpr[1] 2267 |. ldc1 FRET2, CTSTATE->cb.fpr[1]
2268#endif 2268 |.endif
2269 | 2269 |
2270 |->vm_ffi_call: // Call C function via FFI. 2270 |->vm_ffi_call: // Call C function via FFI.
2271 | // Caveat: needs special frame unwinding, see below. 2271 | // Caveat: needs special frame unwinding, see below.
2272#if LJ_HASFFI 2272 |.if FFI
2273 | .type CCSTATE, CCallState, CARG1 2273 | .type CCSTATE, CCallState, CARG1
2274 | lw TMP1, CCSTATE->spadj 2274 | lw TMP1, CCSTATE->spadj
2275 | lbu CARG2, CCSTATE->nsp 2275 | lbu CARG2, CCSTATE->nsp
@@ -2310,7 +2310,7 @@ static void build_subroutines(BuildCtx *ctx)
2310 | move sp, r16 2310 | move sp, r16
2311 | jr ra 2311 | jr ra
2312 |. move r16, TMP2 2312 |. move r16, TMP2
2313#endif 2313 |.endif
2314 |// Note: vm_ffi_call must be the last function in this object file! 2314 |// Note: vm_ffi_call must be the last function in this object file!
2315 | 2315 |
2316 |//----------------------------------------------------------------------- 2316 |//-----------------------------------------------------------------------
@@ -2390,14 +2390,14 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2390 |5: // Either or both types are not numbers. 2390 |5: // Either or both types are not numbers.
2391 | lw CARG2, LO(RA) 2391 | lw CARG2, LO(RA)
2392 | lw CARG3, LO(RD) 2392 | lw CARG3, LO(RD)
2393 if (LJ_HASFFI) { 2393 |.if FFI
2394 | li TMP3, LJ_TCDATA 2394 | li TMP3, LJ_TCDATA
2395 | beq TMP0, TMP3, ->vmeta_equal_cd 2395 | beq TMP0, TMP3, ->vmeta_equal_cd
2396 } 2396 |.endif
2397 |. sltiu AT, TMP0, LJ_TISPRI // Not a primitive? 2397 |. sltiu AT, TMP0, LJ_TISPRI // Not a primitive?
2398 if (LJ_HASFFI) { 2398 |.if FFI
2399 | beq TMP1, TMP3, ->vmeta_equal_cd 2399 | beq TMP1, TMP3, ->vmeta_equal_cd
2400 } 2400 |.endif
2401 |. xor TMP3, CARG2, CARG3 // Same tv? 2401 |. xor TMP3, CARG2, CARG3 // Same tv?
2402 | xor TMP1, TMP1, TMP0 // Same type? 2402 | xor TMP1, TMP1, TMP0 // Same type?
2403 | sltiu CARG1, TMP0, LJ_TISTABUD+1 // Table or userdata? 2403 | sltiu CARG1, TMP0, LJ_TISTABUD+1 // Table or userdata?
@@ -2434,10 +2434,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2434 | lw STR:TMP3, LO(RA) 2434 | lw STR:TMP3, LO(RA)
2435 | subu RD, KBASE, RD 2435 | subu RD, KBASE, RD
2436 | lhu TMP2, -4+OFS_RD(PC) 2436 | lhu TMP2, -4+OFS_RD(PC)
2437 if (LJ_HASFFI) { 2437 |.if FFI
2438 | li AT, LJ_TCDATA 2438 | li AT, LJ_TCDATA
2439 | beq TMP0, AT, ->vmeta_equal_cd 2439 | beq TMP0, AT, ->vmeta_equal_cd
2440 } 2440 |.endif
2441 |. lw STR:TMP1, -4(RD) // KBASE-4-str_const*4 2441 |. lw STR:TMP1, -4(RD) // KBASE-4-str_const*4
2442 | addiu TMP0, TMP0, -LJ_TSTR 2442 | addiu TMP0, TMP0, -LJ_TSTR
2443 | decode_RD4b TMP2 2443 | decode_RD4b TMP2
@@ -2467,11 +2467,11 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2467 | lui TMP3, (-(BCBIAS_J*4 >> 16) & 65535) 2467 | lui TMP3, (-(BCBIAS_J*4 >> 16) & 65535)
2468 | sltiu AT, TMP0, LJ_TISNUM 2468 | sltiu AT, TMP0, LJ_TISNUM
2469 | decode_RD4b TMP2 2469 | decode_RD4b TMP2
2470 if (LJ_HASFFI) { 2470 |.if FFI
2471 | beqz AT, >5 2471 | beqz AT, >5
2472 } else { 2472 |.else
2473 | beqz AT, >1 2473 | beqz AT, >1
2474 } 2474 |.endif
2475 |. addu TMP2, TMP2, TMP3 2475 |. addu TMP2, TMP2, TMP3
2476 | c.eq.d f0, f2 2476 | c.eq.d f0, f2
2477 if (vk) { 2477 if (vk) {
@@ -2484,14 +2484,14 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2484 | addu PC, PC, TMP2 2484 | addu PC, PC, TMP2
2485 } 2485 }
2486 | ins_next 2486 | ins_next
2487 if (LJ_HASFFI) { 2487 |.if FFI
2488 |5: 2488 |5:
2489 | li AT, LJ_TCDATA 2489 | li AT, LJ_TCDATA
2490 | beq TMP0, AT, ->vmeta_equal_cd 2490 | beq TMP0, AT, ->vmeta_equal_cd
2491 |. nop 2491 |. nop
2492 | b <1 2492 | b <1
2493 |. nop 2493 |. nop
2494 } 2494 |.endif
2495 break; 2495 break;
2496 2496
2497 case BC_ISEQP: case BC_ISNEP: 2497 case BC_ISEQP: case BC_ISNEP:
@@ -2503,10 +2503,10 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2503 | lhu TMP2, OFS_RD(PC) 2503 | lhu TMP2, OFS_RD(PC)
2504 | not TMP1, TMP1 2504 | not TMP1, TMP1
2505 | addiu PC, PC, 4 2505 | addiu PC, PC, 4
2506 if (LJ_HASFFI) { 2506 |.if FFI
2507 | li AT, LJ_TCDATA 2507 | li AT, LJ_TCDATA
2508 | beq TMP0, AT, ->vmeta_equal_cd 2508 | beq TMP0, AT, ->vmeta_equal_cd
2509 } 2509 |.endif
2510 |. xor TMP0, TMP0, TMP1 2510 |. xor TMP0, TMP0, TMP1
2511 | decode_RD4b TMP2 2511 | decode_RD4b TMP2
2512 | lui TMP3, (-(BCBIAS_J*4 >> 16) & 65535) 2512 | lui TMP3, (-(BCBIAS_J*4 >> 16) & 65535)
@@ -2781,7 +2781,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2781 | ins_next2 2781 | ins_next2
2782 break; 2782 break;
2783 case BC_KCDATA: 2783 case BC_KCDATA:
2784#if LJ_HASFFI 2784 |.if FFI
2785 | // RA = dst*8, RD = cdata_const*8 (~) 2785 | // RA = dst*8, RD = cdata_const*8 (~)
2786 | srl TMP1, RD, 1 2786 | srl TMP1, RD, 1
2787 | subu TMP1, KBASE, TMP1 2787 | subu TMP1, KBASE, TMP1
@@ -2792,7 +2792,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
2792 | sw TMP0, LO(RA) 2792 | sw TMP0, LO(RA)
2793 | sw TMP2, HI(RA) 2793 | sw TMP2, HI(RA)
2794 | ins_next2 2794 | ins_next2
2795#endif 2795 |.endif
2796 break; 2796 break;
2797 case BC_KSHORT: 2797 case BC_KSHORT:
2798 | // RA = dst*8, RD = int16_literal*8 2798 | // RA = dst*8, RD = int16_literal*8
@@ -3538,9 +3538,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3538 3538
3539 case BC_ITERN: 3539 case BC_ITERN:
3540 | // RA = base*8, (RB = (nresults+1)*8, RC = (nargs+1)*8 (2+1)*8) 3540 | // RA = base*8, (RB = (nresults+1)*8, RC = (nargs+1)*8 (2+1)*8)
3541#if LJ_HASJIT 3541 |.if JIT
3542 | // NYI: add hotloop, record BC_ITERN. 3542 | // NYI: add hotloop, record BC_ITERN.
3543#endif 3543 |.endif
3544 | addu RA, BASE, RA 3544 | addu RA, BASE, RA
3545 | lw TAB:RB, -16+LO(RA) 3545 | lw TAB:RB, -16+LO(RA)
3546 | lw RC, -8+LO(RA) // Get index from control var. 3546 | lw RC, -8+LO(RA) // Get index from control var.
@@ -3803,9 +3803,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3803 /* -- Loops and branches ------------------------------------------------ */ 3803 /* -- Loops and branches ------------------------------------------------ */
3804 3804
3805 case BC_FORL: 3805 case BC_FORL:
3806#if LJ_HASJIT 3806 |.if JIT
3807 | hotloop 3807 | hotloop
3808#endif 3808 |.endif
3809 | // Fall through. Assumes BC_IFORL follows. 3809 | // Fall through. Assumes BC_IFORL follows.
3810 break; 3810 break;
3811 3811
@@ -3885,9 +3885,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3885 break; 3885 break;
3886 3886
3887 case BC_ITERL: 3887 case BC_ITERL:
3888#if LJ_HASJIT 3888 |.if JIT
3889 | hotloop 3889 | hotloop
3890#endif 3890 |.endif
3891 | // Fall through. Assumes BC_IITERL follows. 3891 | // Fall through. Assumes BC_IITERL follows.
3892 break; 3892 break;
3893 3893
@@ -3918,9 +3918,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3918 | // RA = base*8, RD = target (loop extent) 3918 | // RA = base*8, RD = target (loop extent)
3919 | // Note: RA/RD is only used by trace recorder to determine scope/extent 3919 | // Note: RA/RD is only used by trace recorder to determine scope/extent
3920 | // This opcode does NOT jump, it's only purpose is to detect a hot loop. 3920 | // This opcode does NOT jump, it's only purpose is to detect a hot loop.
3921#if LJ_HASJIT 3921 |.if JIT
3922 | hotloop 3922 | hotloop
3923#endif 3923 |.endif
3924 | // Fall through. Assumes BC_ILOOP follows. 3924 | // Fall through. Assumes BC_ILOOP follows.
3925 break; 3925 break;
3926 3926
@@ -3930,7 +3930,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3930 break; 3930 break;
3931 3931
3932 case BC_JLOOP: 3932 case BC_JLOOP:
3933#if LJ_HASJIT 3933 |.if JIT
3934 | // RA = base*8 (ignored), RD = traceno*8 3934 | // RA = base*8 (ignored), RD = traceno*8
3935 | lw TMP1, DISPATCH_J(trace)(DISPATCH) 3935 | lw TMP1, DISPATCH_J(trace)(DISPATCH)
3936 | srl RD, RD, 1 3936 | srl RD, RD, 1
@@ -3944,7 +3944,7 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3944 | lw TMP2, TRACE:TMP2->mcode 3944 | lw TMP2, TRACE:TMP2->mcode
3945 | jr TMP2 3945 | jr TMP2
3946 |. addiu JGL, DISPATCH, GG_DISP2G+32768 3946 |. addiu JGL, DISPATCH, GG_DISP2G+32768
3947#endif 3947 |.endif
3948 break; 3948 break;
3949 3949
3950 case BC_JMP: 3950 case BC_JMP:
@@ -3956,9 +3956,9 @@ static void build_ins(BuildCtx *ctx, BCOp op, int defop)
3956 /* -- Function headers -------------------------------------------------- */ 3956 /* -- Function headers -------------------------------------------------- */
3957 3957
3958 case BC_FUNCF: 3958 case BC_FUNCF:
3959#if LJ_HASJIT 3959 |.if JIT
3960 | hotcall 3960 | hotcall
3961#endif 3961 |.endif
3962 case BC_FUNCV: /* NYI: compiled vararg functions. */ 3962 case BC_FUNCV: /* NYI: compiled vararg functions. */
3963 | // Fall through. Assumes BC_IFUNCF/BC_IFUNCV follow. 3963 | // Fall through. Assumes BC_IFUNCF/BC_IFUNCV follow.
3964 break; 3964 break;