mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 15:14:08 +00:00
Merge branch 'master' into v2.1
This commit is contained in:
commit
7c9671a043
@ -1195,8 +1195,11 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
|//-- Base library: catch errors ----------------------------------------
|
|//-- Base library: catch errors ----------------------------------------
|
||||||
|
|
|
|
||||||
|.ffunc pcall
|
|.ffunc pcall
|
||||||
|
| ldr RB, L->maxstack
|
||||||
|
| add INS, BASE, NARGS8:RC
|
||||||
| ldrb RA, [DISPATCH, #DISPATCH_GL(hookmask)]
|
| ldrb RA, [DISPATCH, #DISPATCH_GL(hookmask)]
|
||||||
| cmp NARGS8:RC, #8
|
| cmp NARGS8:RC, #8
|
||||||
|
| cmphs RB, INS
|
||||||
| blo ->fff_fallback
|
| blo ->fff_fallback
|
||||||
| tst RA, #HOOK_ACTIVE // Remember active hook before pcall.
|
| tst RA, #HOOK_ACTIVE // Remember active hook before pcall.
|
||||||
| mov RB, BASE
|
| mov RB, BASE
|
||||||
@ -1207,7 +1210,11 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
| b ->vm_call_dispatch
|
| b ->vm_call_dispatch
|
||||||
|
|
|
|
||||||
|.ffunc_2 xpcall
|
|.ffunc_2 xpcall
|
||||||
|
| ldr RB, L->maxstack
|
||||||
|
| add INS, BASE, NARGS8:RC
|
||||||
| ldrb RA, [DISPATCH, #DISPATCH_GL(hookmask)]
|
| ldrb RA, [DISPATCH, #DISPATCH_GL(hookmask)]
|
||||||
|
| cmp RB, INS
|
||||||
|
| blo ->fff_fallback
|
||||||
| checkfunc CARG4, ->fff_fallback // Traceback must be a function.
|
| checkfunc CARG4, ->fff_fallback // Traceback must be a function.
|
||||||
| mov RB, BASE
|
| mov RB, BASE
|
||||||
| strd CARG12, [BASE, #8] // Swap function and traceback.
|
| strd CARG12, [BASE, #8] // Swap function and traceback.
|
||||||
|
@ -1211,6 +1211,10 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
|//-- Base library: catch errors ----------------------------------------
|
|//-- Base library: catch errors ----------------------------------------
|
||||||
|
|
|
|
||||||
|.ffunc pcall
|
|.ffunc pcall
|
||||||
|
| ldr TMP1, L->maxstack
|
||||||
|
| add TMP2, BASE, NARGS8:RC
|
||||||
|
| cmp TMP1, TMP2
|
||||||
|
| blo ->fff_fallback
|
||||||
| cmp NARGS8:RC, #8
|
| cmp NARGS8:RC, #8
|
||||||
| ldrb TMP0w, GL->hookmask
|
| ldrb TMP0w, GL->hookmask
|
||||||
| blo ->fff_fallback
|
| blo ->fff_fallback
|
||||||
@ -1230,6 +1234,10 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
| b ->vm_call_dispatch
|
| b ->vm_call_dispatch
|
||||||
|
|
|
|
||||||
|.ffunc xpcall
|
|.ffunc xpcall
|
||||||
|
| ldr TMP1, L->maxstack
|
||||||
|
| add TMP2, BASE, NARGS8:RC
|
||||||
|
| cmp TMP1, TMP2
|
||||||
|
| blo ->fff_fallback
|
||||||
| ldp CARG1, CARG2, [BASE]
|
| ldp CARG1, CARG2, [BASE]
|
||||||
| ldrb TMP0w, GL->hookmask
|
| ldrb TMP0w, GL->hookmask
|
||||||
| subs NARGS8:TMP1, NARGS8:RC, #16
|
| subs NARGS8:TMP1, NARGS8:RC, #16
|
||||||
|
@ -1374,9 +1374,13 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
|//-- Base library: catch errors ----------------------------------------
|
|//-- Base library: catch errors ----------------------------------------
|
||||||
|
|
|
|
||||||
|.ffunc pcall
|
|.ffunc pcall
|
||||||
|
| lw TMP1, L->maxstack
|
||||||
|
| addu TMP2, BASE, NARGS8:RC
|
||||||
| lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH)
|
| lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH)
|
||||||
| beqz NARGS8:RC, ->fff_fallback
|
| beqz NARGS8:RC, ->fff_fallback
|
||||||
| move TMP2, BASE
|
|. sltu AT, TMP1, TMP2
|
||||||
|
| bnez AT, ->fff_fallback
|
||||||
|
|. move TMP2, BASE
|
||||||
| addiu BASE, BASE, 8
|
| addiu BASE, BASE, 8
|
||||||
| // Remember active hook before pcall.
|
| // Remember active hook before pcall.
|
||||||
| srl TMP3, TMP3, HOOK_ACTIVE_SHIFT
|
| srl TMP3, TMP3, HOOK_ACTIVE_SHIFT
|
||||||
@ -1386,8 +1390,12 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
|. addiu NARGS8:RC, NARGS8:RC, -8
|
|. addiu NARGS8:RC, NARGS8:RC, -8
|
||||||
|
|
|
|
||||||
|.ffunc xpcall
|
|.ffunc xpcall
|
||||||
|
| lw TMP1, L->maxstack
|
||||||
|
| addu TMP2, BASE, NARGS8:RC
|
||||||
| sltiu AT, NARGS8:RC, 16
|
| sltiu AT, NARGS8:RC, 16
|
||||||
| lw CARG4, 8+HI(BASE)
|
| lw CARG4, 8+HI(BASE)
|
||||||
|
| sltu TMP1, TMP1, TMP2
|
||||||
|
| or AT, AT, TMP1
|
||||||
| bnez AT, ->fff_fallback
|
| bnez AT, ->fff_fallback
|
||||||
|. lw CARG3, 8+LO(BASE)
|
|. lw CARG3, 8+LO(BASE)
|
||||||
| lw CARG1, LO(BASE)
|
| lw CARG1, LO(BASE)
|
||||||
|
@ -1415,8 +1415,12 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
|//-- Base library: catch errors ----------------------------------------
|
|//-- Base library: catch errors ----------------------------------------
|
||||||
|
|
|
|
||||||
|.ffunc pcall
|
|.ffunc pcall
|
||||||
|
| ld TMP1, L->maxstack
|
||||||
|
| daddu TMP2, BASE, NARGS8:RC
|
||||||
|
| sltu AT, TMP1, TMP2
|
||||||
|
| bnez AT, ->fff_fallback
|
||||||
|
|. lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH)
|
||||||
| daddiu NARGS8:RC, NARGS8:RC, -8
|
| daddiu NARGS8:RC, NARGS8:RC, -8
|
||||||
| lbu TMP3, DISPATCH_GL(hookmask)(DISPATCH)
|
|
||||||
| bltz NARGS8:RC, ->fff_fallback
|
| bltz NARGS8:RC, ->fff_fallback
|
||||||
|. move TMP2, BASE
|
|. move TMP2, BASE
|
||||||
| daddiu BASE, BASE, 16
|
| daddiu BASE, BASE, 16
|
||||||
@ -1437,8 +1441,12 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
|. nop
|
|. nop
|
||||||
|
|
|
|
||||||
|.ffunc xpcall
|
|.ffunc xpcall
|
||||||
|
| ld TMP1, L->maxstack
|
||||||
|
| daddu TMP2, BASE, NARGS8:RC
|
||||||
|
| sltu AT, TMP1, TMP2
|
||||||
|
| bnez AT, ->fff_fallback
|
||||||
|
|. ld CARG1, 0(BASE)
|
||||||
| daddiu NARGS8:TMP0, NARGS8:RC, -16
|
| daddiu NARGS8:TMP0, NARGS8:RC, -16
|
||||||
| ld CARG1, 0(BASE)
|
|
||||||
| ld CARG2, 8(BASE)
|
| ld CARG2, 8(BASE)
|
||||||
| bltz NARGS8:TMP0, ->fff_fallback
|
| bltz NARGS8:TMP0, ->fff_fallback
|
||||||
|. lbu TMP1, DISPATCH_GL(hookmask)(DISPATCH)
|
|. lbu TMP1, DISPATCH_GL(hookmask)(DISPATCH)
|
||||||
|
@ -1735,8 +1735,12 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
|//-- Base library: catch errors ----------------------------------------
|
|//-- Base library: catch errors ----------------------------------------
|
||||||
|
|
|
|
||||||
|.ffunc pcall
|
|.ffunc pcall
|
||||||
|
| lwz TMP1, L->maxstack
|
||||||
|
| add TMP2, BASE, NARGS8:RC
|
||||||
| cmplwi NARGS8:RC, 8
|
| cmplwi NARGS8:RC, 8
|
||||||
| lbz TMP3, DISPATCH_GL(hookmask)(DISPATCH)
|
| lbz TMP3, DISPATCH_GL(hookmask)(DISPATCH)
|
||||||
|
| cmplw cr1, TMP1, TMP2
|
||||||
|
| cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
|
||||||
| blt ->fff_fallback
|
| blt ->fff_fallback
|
||||||
| mr TMP2, BASE
|
| mr TMP2, BASE
|
||||||
| la BASE, 8(BASE)
|
| la BASE, 8(BASE)
|
||||||
@ -1747,14 +1751,19 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
| b ->vm_call_dispatch
|
| b ->vm_call_dispatch
|
||||||
|
|
|
|
||||||
|.ffunc xpcall
|
|.ffunc xpcall
|
||||||
|
| lwz TMP1, L->maxstack
|
||||||
|
| add TMP2, BASE, NARGS8:RC
|
||||||
| cmplwi NARGS8:RC, 16
|
| cmplwi NARGS8:RC, 16
|
||||||
| lwz CARG3, 8(BASE)
|
| lwz CARG3, 8(BASE)
|
||||||
|
| cmplw cr1, TMP1, TMP2
|
||||||
|.if FPU
|
|.if FPU
|
||||||
| lfd FARG2, 8(BASE)
|
| lfd FARG2, 8(BASE)
|
||||||
|
| cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
|
||||||
| lfd FARG1, 0(BASE)
|
| lfd FARG1, 0(BASE)
|
||||||
|.else
|
|.else
|
||||||
| lwz CARG1, 0(BASE)
|
| lwz CARG1, 0(BASE)
|
||||||
| lwz CARG2, 4(BASE)
|
| lwz CARG2, 4(BASE)
|
||||||
|
| cror 4*cr0+lt, 4*cr0+lt, 4*cr1+lt
|
||||||
| lwz CARG4, 12(BASE)
|
| lwz CARG4, 12(BASE)
|
||||||
|.endif
|
|.endif
|
||||||
| blt ->fff_fallback
|
| blt ->fff_fallback
|
||||||
|
@ -1463,6 +1463,9 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
|//-- Base library: catch errors ----------------------------------------
|
|//-- Base library: catch errors ----------------------------------------
|
||||||
|
|
|
|
||||||
|.ffunc_1 pcall
|
|.ffunc_1 pcall
|
||||||
|
| mov L:RB, SAVE_L
|
||||||
|
| lea RA, [BASE+NARGS:RD*8]
|
||||||
|
| cmp RA, L:RB->maxstack; ja ->fff_fallback
|
||||||
| lea RA, [BASE+16]
|
| lea RA, [BASE+16]
|
||||||
| sub NARGS:RDd, 1
|
| sub NARGS:RDd, 1
|
||||||
| mov PCd, 16+FRAME_PCALL
|
| mov PCd, 16+FRAME_PCALL
|
||||||
@ -1481,6 +1484,9 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
| jmp ->vm_call_dispatch
|
| jmp ->vm_call_dispatch
|
||||||
|
|
|
|
||||||
|.ffunc_2 xpcall
|
|.ffunc_2 xpcall
|
||||||
|
| mov L:RB, SAVE_L
|
||||||
|
| lea RA, [BASE+NARGS:RD*8]
|
||||||
|
| cmp RA, L:RB->maxstack; ja ->fff_fallback
|
||||||
| mov LFUNC:RA, [BASE+8]
|
| mov LFUNC:RA, [BASE+8]
|
||||||
| checktp_nc LFUNC:RA, LJ_TFUNC, ->fff_fallback
|
| checktp_nc LFUNC:RA, LJ_TFUNC, ->fff_fallback
|
||||||
| mov LFUNC:RB, [BASE] // Swap function and traceback.
|
| mov LFUNC:RB, [BASE] // Swap function and traceback.
|
||||||
|
@ -1793,6 +1793,9 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
|//-- Base library: catch errors ----------------------------------------
|
|//-- Base library: catch errors ----------------------------------------
|
||||||
|
|
|
|
||||||
|.ffunc_1 pcall
|
|.ffunc_1 pcall
|
||||||
|
| mov L:RB, SAVE_L
|
||||||
|
| lea RA, [BASE+NARGS:RD*8]
|
||||||
|
| cmp RA, L:RB->maxstack; ja ->fff_fallback
|
||||||
| lea RA, [BASE+8]
|
| lea RA, [BASE+8]
|
||||||
| sub NARGS:RD, 1
|
| sub NARGS:RD, 1
|
||||||
| mov PC, 8+FRAME_PCALL
|
| mov PC, 8+FRAME_PCALL
|
||||||
@ -1804,6 +1807,9 @@ static void build_subroutines(BuildCtx *ctx)
|
|||||||
| jmp ->vm_call_dispatch
|
| jmp ->vm_call_dispatch
|
||||||
|
|
|
|
||||||
|.ffunc_2 xpcall
|
|.ffunc_2 xpcall
|
||||||
|
| mov L:RB, SAVE_L
|
||||||
|
| lea RA, [BASE+NARGS:RD*8]
|
||||||
|
| cmp RA, L:RB->maxstack; ja ->fff_fallback
|
||||||
| cmp dword [BASE+12], LJ_TFUNC; jne ->fff_fallback
|
| cmp dword [BASE+12], LJ_TFUNC; jne ->fff_fallback
|
||||||
| mov RB, [BASE+4] // Swap function and traceback.
|
| mov RB, [BASE+4] // Swap function and traceback.
|
||||||
| mov [BASE+12], RB
|
| mov [BASE+12], RB
|
||||||
|
Loading…
Reference in New Issue
Block a user