Move iteration over hash values from total_size() to sv_size()
authorNicholas Clark <nick@ccl4.org>
Sun, 24 Apr 2011 15:32:40 +0000 (16:32 +0100)
committerNicholas Clark <nick@ccl4.org>
Sun, 24 Apr 2011 21:05:03 +0000 (22:05 +0100)
commitf3cf7e20cc2a7a5a6cc4bdfa0b14812d47111a51
tree859e6deb7207433dc6b5c249f5c5501f9a127829
parent4a3d023dd5db197387dca602995d16f5a5ce5690
Move iteration over hash values from total_size() to sv_size()

For now this requires some bodgery over when hash values should be recursed
into. Hashes presented to total_size() should be properly recursed into, else
the size of symbol tables isn't correctly reported. However, the back-link
from a CV to its stash shouldn't be traversed, as shouldn't GVs referenced from
OPs, else we run the risk of passing through %::, and adding the size of all
the symbol tables (and subroutines) to the size of a subroutine reference we
were directly passed. Whilst this might be useful in some cases, it isn't useful
as a default, and it isn't even vaguely consistent with the sizes total_size()
historically reported.
Size.xs
t/recurse.t