diff options
author | Mike Pall <mike> | 2021-09-20 14:36:52 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2021-09-20 14:36:52 +0200 |
commit | 68ffbd318b331b988c32ecfdeee965e9683889f4 (patch) | |
tree | f8a2d4c001e975c34208b4faf5e522a99ed6f53d /src/vm_arm.dasc | |
parent | a622e2eb559c823d90c7af85935ca63706e4593d (diff) | |
download | luajit-68ffbd318b331b988c32ecfdeee965e9683889f4.tar.gz luajit-68ffbd318b331b988c32ecfdeee965e9683889f4.tar.bz2 luajit-68ffbd318b331b988c32ecfdeee965e9683889f4.zip |
FFI: Don't load PC from non-function object in FFI continuation.
Reported by Yichun Zhang. #743
Diffstat (limited to 'src/vm_arm.dasc')
-rw-r--r-- | src/vm_arm.dasc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc index 21d706d8..344147e8 100644 --- a/src/vm_arm.dasc +++ b/src/vm_arm.dasc | |||
@@ -524,13 +524,13 @@ static void build_subroutines(BuildCtx *ctx) | |||
524 | | cmp CARG1, #1 | 524 | | cmp CARG1, #1 |
525 | |.endif | 525 | |.endif |
526 | | ldr PC, [CARG4, #-12] // Restore PC from [cont|PC]. | 526 | | ldr PC, [CARG4, #-12] // Restore PC from [cont|PC]. |
527 | | ldr CARG3, LFUNC:CARG3->field_pc | ||
528 | | mvn INS, #~LJ_TNIL | 527 | | mvn INS, #~LJ_TNIL |
529 | | add CARG2, RA, RC | 528 | | add CARG2, RA, RC |
530 | | str INS, [CARG2, #-4] // Ensure one valid arg. | 529 | | str INS, [CARG2, #-4] // Ensure one valid arg. |
531 | |.if FFI | 530 | |.if FFI |
532 | | bls >1 | 531 | | bls >1 |
533 | |.endif | 532 | |.endif |
533 | | ldr CARG3, LFUNC:CARG3->field_pc | ||
534 | | ldr KBASE, [CARG3, #PC2PROTO(k)] | 534 | | ldr KBASE, [CARG3, #PC2PROTO(k)] |
535 | | // BASE = base, RA = resultptr, CARG4 = meta base | 535 | | // BASE = base, RA = resultptr, CARG4 = meta base |
536 | | bx CARG1 | 536 | | bx CARG1 |