From: Zefram Date: Mon, 23 Mar 2015 09:42:14 +0000 (+0000) Subject: Attached patch adds handling of children of METHOP and UNOP_AUX ops, X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-Size.git;a=commitdiff_plain;h=ae8c8baa0aaa5377cb8093f5cefb61bd92902242 Attached patch adds handling of children of METHOP and UNOP_AUX ops, which I missed out from my earlier patches. --- diff --git a/CHANGES b/CHANGES index 0c6e31a..1360c79 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,8 @@ Revision history for Perl extension Devel::Size. (subroutines are smaller than it assumes) * Count the size of padlist names in CVs (for v5.18 and later - earlier TODO) * Handle PADNAMELIST/PADNAME introduced in v5.21.7 + two patches from Zefram: + * Add handling of children of METHOP and UNOP_AUX ops [CPAN #102911] 0.79_52 2015-03-20 nicholas two patches from Zefram: diff --git a/Size.xs b/Size.xs index 655f258..40404e5 100644 --- a/Size.xs +++ b/Size.xs @@ -551,7 +551,9 @@ op_size(pTHX_ const OP * const baseop, struct state *st) #ifdef OA_METHOP case OPc_METHOP: TAG; st->total_size += sizeof(struct methop); - if (baseop->op_type != OP_METHOD) + if (baseop->op_type == OP_METHOD) + op_size(aTHX_ ((UNOP *)baseop)->op_first, st); + else sv_size(aTHX_ st, cMETHOPx_meth(baseop), SOME_RECURSION); #if PERL_VERSION*1000+PERL_SUBVERSION >= 21007 if (baseop->op_type == OP_METHOD_REDIR || baseop->op_type == OP_METHOD_REDIR_SUPER) { @@ -565,6 +567,7 @@ op_size(pTHX_ const OP * const baseop, struct state *st) #ifdef OA_UNOP_AUX case OPc_UNAUXOP: TAG; st->total_size += sizeof(struct unop_aux) + sizeof(UNOP_AUX_item) * (cUNOP_AUXx(baseop)->op_aux[-1].uv+1); + op_size(aTHX_ ((UNOP *)baseop)->op_first, st); if (baseop->op_type == OP_MULTIDEREF) { UNOP_AUX_item *items = cUNOP_AUXx(baseop)->op_aux; UV actions = items->uv;