ARM64: Set fixed interpreter registers before rethrow.

Thanks to Peter Cawley. #593
This commit is contained in:
Mike Pall 2023-09-17 10:09:58 +02:00
parent 7a77a3cd85
commit 42ca6e120f

View File

@ -2029,13 +2029,13 @@ static void build_subroutines(BuildCtx *ctx)
|.if JIT |.if JIT
| ldr L, SAVE_L | ldr L, SAVE_L
|1: |1:
| cmn CARG1w, #LUA_ERRERR
| bhs >9 // Check for error from exit.
| lsl RC, CARG1, #3
| ldr LFUNC:CARG2, [BASE, FRAME_FUNC]
| movz TISNUM, #(LJ_TISNUM>>1)&0xffff, lsl #48 | movz TISNUM, #(LJ_TISNUM>>1)&0xffff, lsl #48
| movz TISNUMhi, #(LJ_TISNUM>>1)&0xffff, lsl #16 | movz TISNUMhi, #(LJ_TISNUM>>1)&0xffff, lsl #16
| movn TISNIL, #0 | movn TISNIL, #0
| cmn CARG1w, #LUA_ERRERR
| bhs >9 // Check for error from exit.
| ldr LFUNC:CARG2, [BASE, FRAME_FUNC]
| lsl RC, CARG1, #3
| and LFUNC:CARG2, CARG2, #LJ_GCVMASK | and LFUNC:CARG2, CARG2, #LJ_GCVMASK
| str RCw, SAVE_MULTRES | str RCw, SAVE_MULTRES
| str BASE, L->base | str BASE, L->base