diff options
author | Mike Pall <mike> | 2020-03-20 14:10:18 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2020-03-20 14:10:18 +0100 |
commit | 9143e86498436892cb4316550be4d45b68a61224 (patch) | |
tree | 30399d76ee9bd29b77db6b9c89d9549664e9b887 | |
parent | fc1c4da3cc2b3bb51109a3028b696dbd05add5dc (diff) | |
download | luajit-9143e86498436892cb4316550be4d45b68a61224.tar.gz luajit-9143e86498436892cb4316550be4d45b68a61224.tar.bz2 luajit-9143e86498436892cb4316550be4d45b68a61224.zip |
FFI/ARM64: Fix pass-by-value struct calling conventions.
-rw-r--r-- | src/lj_ccall.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_ccall.c b/src/lj_ccall.c index a9b81aa5..499a01d8 100644 --- a/src/lj_ccall.c +++ b/src/lj_ccall.c | |||
@@ -337,7 +337,8 @@ | |||
337 | if (LJ_TARGET_IOS && isva) { \ | 337 | if (LJ_TARGET_IOS && isva) { \ |
338 | /* IOS: All variadic arguments are on the stack. */ \ | 338 | /* IOS: All variadic arguments are on the stack. */ \ |
339 | } else if (isfp) { /* Try to pass argument in FPRs. */ \ | 339 | } else if (isfp) { /* Try to pass argument in FPRs. */ \ |
340 | int n2 = ctype_isvector(d->info) ? 1 : n*isfp; \ | 340 | int n2 = ctype_isvector(d->info) ? 1 : \ |
341 | isfp == 1 ? n : (d->size >> (4-isfp)); \ | ||
341 | if (nfpr + n2 <= CCALL_NARG_FPR) { \ | 342 | if (nfpr + n2 <= CCALL_NARG_FPR) { \ |
342 | dp = &cc->fpr[nfpr]; \ | 343 | dp = &cc->fpr[nfpr]; \ |
343 | nfpr += n2; \ | 344 | nfpr += n2; \ |