Browse Source

Limit mcode alloc probing, depending on the available pool size.

Contributed by Alexey Kopytov.
Mike Pall 8 years ago
parent
commit
d62459fc39
1 changed files with 2 additions and 1 deletions
  1. 2 1
      src/lj_mcode.c

+ 2 - 1
src/lj_mcode.c

@@ -230,7 +230,8 @@ static void *mcode_alloc(jit_State *J, size_t sz)
   /* First try a contiguous area below the last one. */
   /* First try a contiguous area below the last one. */
   uintptr_t hint = J->mcarea ? (uintptr_t)J->mcarea - sz : 0;
   uintptr_t hint = J->mcarea ? (uintptr_t)J->mcarea - sz : 0;
   int i;
   int i;
-  for (i = 0; i < 32; i++) {  /* 32 attempts ought to be enough ... */
+  /* Limit probing iterations, depending on the available pool size. */
+  for (i = 0; i < LJ_TARGET_JUMPRANGE; i++) {
     if (mcode_validptr(hint)) {
     if (mcode_validptr(hint)) {
       void *p = mcode_alloc_at(J, hint, sz, MCPROT_GEN);
       void *p = mcode_alloc_at(J, hint, sz, MCPROT_GEN);