diff --git a/doc/ext_ffi_semantics.html b/doc/ext_ffi_semantics.html
index d0613aed..ed32d23f 100644
--- a/doc/ext_ffi_semantics.html
+++ b/doc/ext_ffi_semantics.html
@@ -1130,7 +1130,7 @@ suboptimal performance, especially when used in inner loops:
Table initializers.
Initialization of nested struct/union types.
Allocations of variable-length arrays or structs.
-Allocations of C types with a size > 64 bytes or an
+Allocations of C types with a size > 128 bytes or an
alignment > 8 bytes.
Conversions from lightuserdata to void *.
Pointer differences for element sizes that are not a power of
diff --git a/src/lj_crecord.c b/src/lj_crecord.c
index 18e1ee13..6cb565c3 100644
--- a/src/lj_crecord.c
+++ b/src/lj_crecord.c
@@ -654,7 +654,7 @@ static void crec_alloc(jit_State *J, RecordFFData *rd, CTypeID id)
CTInfo info = lj_ctype_info(cts, id, &sz);
CType *d = ctype_raw(cts, id);
TRef trid;
- if (sz == 0 || sz > 64 || (info & CTF_VLA) || ctype_align(info) > CT_MEMALIGN)
+ if (!sz || sz > 128 || (info & CTF_VLA) || ctype_align(info) > CT_MEMALIGN)
lj_trace_err(J, LJ_TRERR_NYICONV); /* NYI: large/special allocations. */
trid = lj_ir_kint(J, id);
/* Use special instruction to box pointer or 32/64 bit integer. */
diff --git a/src/lj_def.h b/src/lj_def.h
index 27b6d6b7..a7531f10 100644
--- a/src/lj_def.h
+++ b/src/lj_def.h
@@ -80,7 +80,7 @@ typedef unsigned int uintptr_t;
/* JIT compiler limits. */
#define LJ_MAX_JSLOTS 250 /* Max. # of stack slots for a trace. */
-#define LJ_MAX_PHI 32 /* Max. # of PHIs for a loop. */
+#define LJ_MAX_PHI 64 /* Max. # of PHIs for a loop. */
#define LJ_MAX_EXITSTUBGR 16 /* Max. # of exit stub groups. */
/* Various macros. */