mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
FFI: Fix unroll limit for ffi.fill().
This commit is contained in:
parent
890754ee27
commit
7ef2b55fc0
@ -125,11 +125,6 @@ static IRType crec_ct2irt(CTState *cts, CType *ct)
|
|||||||
#define CREC_COPY_MAXLEN 128
|
#define CREC_COPY_MAXLEN 128
|
||||||
|
|
||||||
#define CREC_FILL_MAXUNROLL 16
|
#define CREC_FILL_MAXUNROLL 16
|
||||||
#if LJ_TARGET_UNALIGNED
|
|
||||||
#define CREC_FILL_MAXLEN (CTSIZE_PTR * CREC_FILL_MAXUNROLL)
|
|
||||||
#else
|
|
||||||
#define CREC_FILL_MAXLEN CREC_FILL_MAXUNROLL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Number of windowed registers used for optimized memory copy. */
|
/* Number of windowed registers used for optimized memory copy. */
|
||||||
#if LJ_TARGET_X86
|
#if LJ_TARGET_X86
|
||||||
@ -320,9 +315,9 @@ static void crec_fill(jit_State *J, TRef trdst, TRef trlen, TRef trfill,
|
|||||||
MSize mlp;
|
MSize mlp;
|
||||||
CTSize len = (CTSize)IR(tref_ref(trlen))->i;
|
CTSize len = (CTSize)IR(tref_ref(trlen))->i;
|
||||||
if (len == 0) return; /* Shortcut. */
|
if (len == 0) return; /* Shortcut. */
|
||||||
if (len > CREC_FILL_MAXLEN) goto fallback;
|
|
||||||
if (LJ_TARGET_UNALIGNED || step >= CTSIZE_PTR)
|
if (LJ_TARGET_UNALIGNED || step >= CTSIZE_PTR)
|
||||||
step = CTSIZE_PTR;
|
step = CTSIZE_PTR;
|
||||||
|
if (step * CREC_FILL_MAXUNROLL < len) goto fallback;
|
||||||
mlp = crec_fill_unroll(ml, len, step);
|
mlp = crec_fill_unroll(ml, len, step);
|
||||||
if (!mlp) goto fallback;
|
if (!mlp) goto fallback;
|
||||||
if (tref_isk(trfill) || ml[0].tp != IRT_U8)
|
if (tref_isk(trfill) || ml[0].tp != IRT_U8)
|
||||||
|
Loading…
Reference in New Issue
Block a user