Data::Dumper: Comment on previous optimization
authorSteffen Mueller <smueller@cpan.org>
Thu, 2 Aug 2012 18:24:40 +0000 (20:24 +0200)
committerSteffen Mueller <smueller@cpan.org>
Thu, 2 Aug 2012 18:24:40 +0000 (20:24 +0200)
The optimization in the previous commit to Data::Dumper (sparse seen
hash) is not complete: It is so far only applied to non-RV SVs. This
also means that it's safe not to check for weak-refs. Applying the
optimization to RVs should be possible, but is not as easy (I think).

dist/Data-Dumper/Dumper.xs

index b382000..71b34ca 100644 (file)
@@ -888,7 +888,9 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
              * (IOW, the user does not expect it to contain everything
              * after the dump, then only store in seen hash if the SV
              * ref count is larger than 1. If it's 1, then we know that
-             * there is no other reference, duh. This is an optimization. */
+             * there is no other reference, duh. This is an optimization.
+             * Note that we'd have to check for weak-refs, too, but this is
+             * already the branch for non-refs only. */
            else if (val != &PL_sv_undef && (!use_sparse_seen_hash || SvREFCNT(val) > 1)) {
                SV * const namesv = newSVpvn("\\", 1);
                sv_catpvn(namesv, name, namelen);