diff options
author | Mike Pall <mike> | 2013-09-08 13:11:02 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2013-09-08 13:11:02 +0200 |
commit | 782787f1fa4a7a5928385a4ebedc902aed08ecec (patch) | |
tree | 36f8353cda46880682ed28f5517e85b99f6bfdb3 | |
parent | 93c2b939bddbbe766f3215455d8144650df0780b (diff) | |
download | luajit-782787f1fa4a7a5928385a4ebedc902aed08ecec.tar.gz luajit-782787f1fa4a7a5928385a4ebedc902aed08ecec.tar.bz2 luajit-782787f1fa4a7a5928385a4ebedc902aed08ecec.zip |
FFI/x64: Fix passing of vector arguments to calls.
-rw-r--r-- | src/lj_ccall.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lj_ccall.c b/src/lj_ccall.c index eb73604f..97dcc546 100644 --- a/src/lj_ccall.c +++ b/src/lj_ccall.c | |||
@@ -173,9 +173,10 @@ | |||
173 | 173 | ||
174 | #define CCALL_HANDLE_REGARG \ | 174 | #define CCALL_HANDLE_REGARG \ |
175 | if (isfp) { /* Try to pass argument in FPRs. */ \ | 175 | if (isfp) { /* Try to pass argument in FPRs. */ \ |
176 | if (nfpr + n <= CCALL_NARG_FPR) { \ | 176 | int n2 = ctype_isvector(d->info) ? 1 : n; \ |
177 | if (nfpr + n2 <= CCALL_NARG_FPR) { \ | ||
177 | dp = &cc->fpr[nfpr]; \ | 178 | dp = &cc->fpr[nfpr]; \ |
178 | nfpr += n; \ | 179 | nfpr += n2; \ |
179 | goto done; \ | 180 | goto done; \ |
180 | } \ | 181 | } \ |
181 | } else { /* Try to pass argument in GPRs. */ \ | 182 | } else { /* Try to pass argument in GPRs. */ \ |