aboutsummaryrefslogtreecommitdiff
path: root/src/lj_trace.c
diff options
context:
space:
mode:
authorMike Pall <mike>2025-11-27 17:45:17 +0100
committerMike Pall <mike>2025-11-27 17:45:17 +0100
commitf80b349d5490aa289b2925d297f3f3c618977570 (patch)
tree8d8fb0d2beb3e863592139d603ada63e5aa6ce77 /src/lj_trace.c
parent3215838aa744d148e79a8ea0bd7c014e984302cb (diff)
downloadluajit-f80b349d5490aa289b2925d297f3f3c618977570.tar.gz
luajit-f80b349d5490aa289b2925d297f3f3c618977570.tar.bz2
luajit-f80b349d5490aa289b2925d297f3f3c618977570.zip
Unify Lua number to FFI integer conversions.
Phew. #1411
Diffstat (limited to 'src/lj_trace.c')
-rw-r--r--src/lj_trace.c30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/lj_trace.c b/src/lj_trace.c
index 47d7faa5..ad329540 100644
--- a/src/lj_trace.c
+++ b/src/lj_trace.c
@@ -317,32 +317,34 @@ void lj_trace_initstate(global_State *g)
317 tv[1].u64 = U64x(80000000,00000000); 317 tv[1].u64 = U64x(80000000,00000000);
318 318
319 /* Initialize 32/64 bit constants. */ 319 /* Initialize 32/64 bit constants. */
320#if LJ_TARGET_X64 || LJ_TARGET_MIPS64
321 J->k64[LJ_K64_M2P64].u64 = U64x(c3f00000,00000000);
322#endif
320#if LJ_TARGET_X86ORX64 323#if LJ_TARGET_X86ORX64
321 J->k64[LJ_K64_TOBIT].u64 = U64x(43380000,00000000); 324 J->k64[LJ_K64_TOBIT].u64 = U64x(43380000,00000000);
322#if LJ_32
323 J->k64[LJ_K64_M2P64_31].u64 = U64x(c1e00000,00000000);
324#endif
325 J->k64[LJ_K64_2P64].u64 = U64x(43f00000,00000000); 325 J->k64[LJ_K64_2P64].u64 = U64x(43f00000,00000000);
326 J->k32[LJ_K32_M2P64_31] = LJ_64 ? 0xdf800000 : 0xcf000000;
327#endif 326#endif
327#if LJ_TARGET_MIPS64
328 J->k64[LJ_K64_2P63].u64 = U64x(43e00000,00000000);
329#endif
330#if LJ_TARGET_MIPS
331 J->k64[LJ_K64_2P31].u64 = U64x(41e00000,00000000);
332#endif
333
328#if LJ_TARGET_X86ORX64 || LJ_TARGET_MIPS64 334#if LJ_TARGET_X86ORX64 || LJ_TARGET_MIPS64
329 J->k64[LJ_K64_M2P64].u64 = U64x(c3f00000,00000000); 335 J->k32[LJ_K32_M2P64] = 0xdf800000;
336#endif
337#if LJ_TARGET_MIPS64
338 J->k32[LJ_K32_2P63] = 0x5f000000;
330#endif 339#endif
331#if LJ_TARGET_PPC 340#if LJ_TARGET_PPC
332 J->k32[LJ_K32_2P52_2P31] = 0x59800004; 341 J->k32[LJ_K32_2P52_2P31] = 0x59800004;
333 J->k32[LJ_K32_2P52] = 0x59800000; 342 J->k32[LJ_K32_2P52] = 0x59800000;
334#endif 343#endif
335#if LJ_TARGET_PPC || LJ_TARGET_MIPS 344#if LJ_TARGET_PPC
336 J->k32[LJ_K32_2P31] = 0x4f000000; 345 J->k32[LJ_K32_2P31] = 0x4f000000;
337#endif 346#endif
338#if LJ_TARGET_MIPS 347
339 J->k64[LJ_K64_2P31].u64 = U64x(41e00000,00000000);
340#if LJ_64
341 J->k64[LJ_K64_2P63].u64 = U64x(43e00000,00000000);
342 J->k32[LJ_K32_2P63] = 0x5f000000;
343 J->k32[LJ_K32_M2P64] = 0xdf800000;
344#endif
345#endif
346#if LJ_TARGET_PPC || LJ_TARGET_MIPS32 348#if LJ_TARGET_PPC || LJ_TARGET_MIPS32
347 J->k32[LJ_K32_VM_EXIT_HANDLER] = (uintptr_t)(void *)lj_vm_exit_handler; 349 J->k32[LJ_K32_VM_EXIT_HANDLER] = (uintptr_t)(void *)lj_vm_exit_handler;
348 J->k32[LJ_K32_VM_EXIT_INTERP] = (uintptr_t)(void *)lj_vm_exit_interp; 350 J->k32[LJ_K32_VM_EXIT_INTERP] = (uintptr_t)(void *)lj_vm_exit_interp;