FFI: Fix unroll limit for ffi.fill().

This commit is contained in:
Mike Pall 2013-05-23 22:17:45 +02:00
parent 890754ee27
commit 7ef2b55fc0

View File

@ -125,11 +125,6 @@ static IRType crec_ct2irt(CTState *cts, CType *ct)
#define CREC_COPY_MAXLEN 128
#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. */
#if LJ_TARGET_X86
@ -320,9 +315,9 @@ static void crec_fill(jit_State *J, TRef trdst, TRef trlen, TRef trfill,
MSize mlp;
CTSize len = (CTSize)IR(tref_ref(trlen))->i;
if (len == 0) return; /* Shortcut. */
if (len > CREC_FILL_MAXLEN) goto fallback;
if (LJ_TARGET_UNALIGNED || step >= CTSIZE_PTR)
step = CTSIZE_PTR;
if (step * CREC_FILL_MAXUNROLL < len) goto fallback;
mlp = crec_fill_unroll(ml, len, step);
if (!mlp) goto fallback;
if (tref_isk(trfill) || ml[0].tp != IRT_U8)