diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_ccallback.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lj_ccallback.c b/src/lj_ccallback.c index 3ddb7ca5c..2fa8e7ce0 100644 --- a/src/lj_ccallback.c +++ b/src/lj_ccallback.c | |||
| @@ -519,6 +519,10 @@ static void callback_conv_result(CTState *cts, lua_State *L, TValue *o) | |||
| 519 | #if LJ_TARGET_X86 | 519 | #if LJ_TARGET_X86 |
| 520 | if (ctype_isfp(ctr->info)) | 520 | if (ctype_isfp(ctr->info)) |
| 521 | cts->cb.gpr[2] = ctr->size == sizeof(float) ? 1 : 2; | 521 | cts->cb.gpr[2] = ctr->size == sizeof(float) ? 1 : 2; |
| 522 | #elif LJ_TARGET_X64 | ||
| 523 | /* Always zero-extend results to 64 bits. */ | ||
| 524 | if (ctr->size <= 4 && ctype_isinteger_or_bool(ctr->info)) | ||
| 525 | *(uint64_t *)dp = (uint64_t)*(uint32_t *)dp; | ||
| 522 | #endif | 526 | #endif |
| 523 | } | 527 | } |
| 524 | } | 528 | } |
