aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2013-09-08 13:11:02 +0200
committerMike Pall <mike>2013-09-08 13:11:02 +0200
commit782787f1fa4a7a5928385a4ebedc902aed08ecec (patch)
tree36f8353cda46880682ed28f5517e85b99f6bfdb3
parent93c2b939bddbbe766f3215455d8144650df0780b (diff)
downloadluajit-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.c5
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. */ \