X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Size.xs;h=c69c3489b83449fdf4cd0aefbb5fa294f0727779;hb=6ea94d90d77e87b84ee176b42cce067047362a4c;hp=7d63f801eab4c3e2b51d1bb41d25f081ff8e06b7;hpb=c8db37d353f80678a1db3e734b44d556990f80c9;p=p5sagit%2FDevel-Size.git diff --git a/Size.xs b/Size.xs index 7d63f80..c69c348 100644 --- a/Size.xs +++ b/Size.xs @@ -198,12 +198,17 @@ UV regex_size(REGEXP *baseregex, HV *tracking_hash) { UV total_size = 0; total_size += sizeof(REGEXP); - /* Note hte size of the paren offset thing */ +#if (PERL_VERSION < 11) + /* Note the size of the paren offset thing */ total_size += sizeof(I32) * baseregex->nparens * 2; total_size += strlen(baseregex->precomp); - +#else + total_size += sizeof(struct regexp); + total_size += sizeof(I32) * SvANY(baseregex)->nparens * 2; + /*total_size += strlen(SvANY(baseregex)->subbeg);*/ +#endif if (go_yell && !regex_whine) { - carp("Devel::Size: Calculated sizes for compiled regexes are incomple, and probably always will be"); + carp("Devel::Size: Calculated sizes for compiled regexes are incompatible, and probably always will be"); regex_whine = 1; } @@ -262,6 +267,7 @@ UV op_size(OP *baseop, HV *tracking_hash) { if (check_new(tracking_hash, cPMOPx(baseop)->op_last)) { total_size += op_size(cPMOPx(baseop)->op_last, tracking_hash); } +#if PERL_VERSION < 9 || (PERL_VERSION == 9 && PERL_SUBVERSION < 5) if (check_new(tracking_hash, cPMOPx(baseop)->op_pmreplroot)) { total_size += op_size(cPMOPx(baseop)->op_pmreplroot, tracking_hash); } @@ -271,6 +277,7 @@ UV op_size(OP *baseop, HV *tracking_hash) { if (check_new(tracking_hash, cPMOPx(baseop)->op_pmnext)) { total_size += op_size((OP *)cPMOPx(baseop)->op_pmnext, tracking_hash); } +#endif /* This is defined away in perl 5.8.x, but it is in there for 5.6.x */ #ifdef PM_GETRE @@ -381,12 +388,14 @@ UV thing_size(SV *orig_thing, HV *tracking_hash) { total_size += sizeof(NV); #endif break; +#if (PERL_VERSION < 11) /* Is it a reference? */ case SVt_RV: #ifndef NEW_HEAD_LAYOUT total_size += sizeof(XRV); #endif break; +#endif /* How about a plain string? In which case we need to add in how much has been allocated */ case SVt_PV: