diff options
author | Father Chrysostomos <sprout@cpan.org> | 2012-07-14 19:00:17 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2012-07-14 19:00:17 -0700 |
commit | 571a568a1025d5e998209899bcdba774861257f0 (patch) | |
tree | 53f768b111059eb6f64b1af5bffb48801e1ea3d9 /op.c | |
parent | c55d2e076a02daf604c28e6725a61c1495171552 (diff) | |
download | perl-571a568a1025d5e998209899bcdba774861257f0.tar.gz |
Remove op_latefree(d)
This was an early attempt to fix leaking of ops after syntax errors,
disabled because it was deemed to fragile. The new slab allocator
(8be227a) has solved this problem another way, so latefree(d) no
longer serves any purpose.
Diffstat (limited to 'op.c')
-rw-r--r-- | op.c | 18 |
1 files changed, 0 insertions, 18 deletions
@@ -631,10 +631,6 @@ Perl_alloccopstash(pTHX_ HV *hv) static void S_op_destroy(pTHX_ OP *o) { - if (o->op_latefree) { - o->op_latefreed = 1; - return; - } FreeOp(o); } @@ -659,11 +655,6 @@ Perl_op_free(pTHX_ OP *o) may be freed before their parents. */ if (!o || o->op_type == OP_FREED) return; - if (o->op_latefreed) { - if (o->op_latefree) - return; - goto do_free; - } type = o->op_type; if (o->op_private & OPpREFCOUNTED) { @@ -720,11 +711,6 @@ Perl_op_free(pTHX_ OP *o) type = (OPCODE)o->op_targ; op_clear(o); - if (o->op_latefree) { - o->op_latefreed = 1; - return; - } - do_free: FreeOp(o); #ifdef DEBUG_LEAKING_SCALARS if (PL_op == o) @@ -3816,9 +3802,6 @@ Perl_newOP(pTHX_ I32 type, I32 flags) o->op_type = (OPCODE)type; o->op_ppaddr = PL_ppaddr[type]; o->op_flags = (U8)flags; - o->op_latefree = 0; - o->op_latefreed = 0; - o->op_attached = 0; o->op_next = o; o->op_private = (U8)(0 | (flags >> 8)); @@ -7144,7 +7127,6 @@ Perl_newATTRSUB_flags(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, #endif block = newblock; } - else block->op_attached = 1; CvROOT(cv) = CvLVALUE(cv) ? newUNOP(OP_LEAVESUBLV, 0, op_lvalue(scalarseq(block), OP_LEAVESUBLV)) |