For simplicity, op slots are never resized once they are allocated.
But they are reused after they are freed, if they are big enough.
When allocating the last op slot that will fit on a slab, we might as
well enlarge the slot to contain whatever space is left over, so this
slot, after being freed, can be reused for a larger op.
/* Create a new op slot */
slot = (OPSLOT *)((I32 **)slab2->opslab_first - sz);
assert(slot >= &slab2->opslab_slots);
+ if (DIFF(&slab2->opslab_slots, slot)
+ < SIZE_TO_PSIZE(sizeof(OP)) + OPSLOT_HEADER_P)
+ slot = &slab2->opslab_slots;
INIT_OPSLOT;
DEBUG_S(Perl_warn(aTHX_ "allocating op at %p, slab %p", o, slab));
return (void *)o;