: FIXME - can be static.
poxM |PADOFFSET |op_refcnt_dec |NN OP *o
# if defined(PERL_IN_OP_C)
-s |void |Slab_to_rw |NN void *op
+s |void |Slab_to_rw |NN OPSLAB *const slab
# endif
#endif
}
STATIC void
-S_Slab_to_rw(pTHX_ void *op)
+S_Slab_to_rw(pTHX_ OPSLAB *const slab)
{
- OP * const o = (OP *)op;
- OPSLAB *slab;
OPSLAB *slab2;
PERL_ARGS_ASSERT_SLAB_TO_RW;
- if (!o->op_slabbed) return;
-
- slab = OpSLAB(o);
if (!slab->opslab_readonly) return;
slab2 = slab;
for (; slab2; slab2 = slab2->opslab_next) {
if(o) {
OPSLAB *const slab = o->op_slabbed ? OpSLAB(o) : NULL;
if (slab && slab->opslab_readonly) {
- Slab_to_rw(o);
+ Slab_to_rw(slab);
++o->op_targ;
Slab_to_ro(slab);
} else {
PERL_ARGS_ASSERT_OP_REFCNT_DEC;
if (slab && slab->opslab_readonly) {
- Slab_to_rw(o);
+ Slab_to_rw(slab);
result = --o->op_targ;
Slab_to_ro(slab);
} else {
if (type == OP_NULL)
type = (OPCODE)o->op_targ;
- Slab_to_rw(o);
+ if (o->op_slabbed)
+ Slab_to_rw(OpSLAB(o));
/* COP* is not cleared by op_clear() so that we may track line
* numbers etc even after null() */
PERL_CALLCONV OP * Perl_op_refcnt_inc(pTHX_ OP *o);
# if defined(PERL_IN_OP_C)
-STATIC void S_Slab_to_rw(pTHX_ void *op)
+STATIC void S_Slab_to_rw(pTHX_ OPSLAB *const slab)
__attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_SLAB_TO_RW \
- assert(op)
+ assert(slab)
# endif
#endif