11 years agoFixed stringification ot root node. Fix handling of link nodes.
Tim Bunce [Sun, 23 Sep 2012 13:20:32 +0000]
Fixed stringification ot root node. Fix handling of link nodes.

11 years agoAdded node type to db. Added showid option.
Tim Bunce [Sun, 23 Sep 2012 13:19:42 +0000]
Added node type to db. Added showid option.

11 years agoMake levelsToShow more variable
Tim Bunce [Sun, 23 Sep 2012 12:57:13 +0000]
Make levelsToShow more variable

11 years agoFix NPathPushNode not (re)setting seqn, not perl_size "others" works.
Tim Bunce [Sun, 23 Sep 2012 12:45:25 +0000]
Fix NPathPushNode not (re)setting seqn, not perl_size "others" works.

11 years agoAdd more items to perl_size()
Tim Bunce [Sun, 23 Sep 2012 11:54:41 +0000]
Add more items to perl_size()

11 years agoPolish up dot output, incl adding sizes
Tim Bunce [Sat, 22 Sep 2012 17:35:59 +0000]
Polish up dot output, incl adding sizes

11 years agofix name escaping
Tim Bunce [Sat, 22 Sep 2012 15:02:20 +0000]
fix name escaping

11 years agoUse link nodes to label links.
Tim Bunce [Sat, 22 Sep 2012 14:41:56 +0000]
Use link nodes to label links.

11 years agoFix link-to-link for op_size.
Tim Bunce [Sat, 22 Sep 2012 14:41:10 +0000]
Fix link-to-link for op_size.

11 years agoadd basic dot format output
Tim Bunce [Sat, 22 Sep 2012 10:44:36 +0000]
add basic dot format output

11 years agoControl recursion threshold to enable more accurate perl_size.
Tim Bunce [Sat, 22 Sep 2012 10:15:17 +0000]
Control recursion threshold to enable more accurate perl_size.

11 years agorm some old files
Tim Bunce [Thu, 20 Sep 2012 21:02:18 +0000]
rm some old files

11 years agoLots of progress.
Tim Bunce [Thu, 20 Sep 2012 17:09:58 +0000]
Lots of progress.

Reworked attribute pipeline.
Added title concept.
Added logarea (incomplete)

11 years agosmarten up the tooltip
Tim Bunce [Thu, 20 Sep 2012 09:32:53 +0000]
smarten up the tooltip

11 years agobasic leaves pass-thru
Tim Bunce [Wed, 19 Sep 2012 16:36:01 +0000]
basic leaves pass-thru

11 years agobasic attribute pass-thru
Tim Bunce [Wed, 19 Sep 2012 14:24:26 +0000]
basic attribute pass-thru

11 years agoA little polish
Tim Bunce [Wed, 19 Sep 2012 10:30:57 +0000]
A little polish

11 years agosingle-child node merging working
Tim Bunce [Wed, 19 Sep 2012 09:44:28 +0000]
single-child node merging working

11 years agosplit transform nodes away from fetch
Tim Bunce [Wed, 19 Sep 2012 08:55:47 +0000]
split transform nodes away from fetch

11 years agodrill down with basic tooltip
Tim Bunce [Tue, 18 Sep 2012 21:29:20 +0000]
drill down with basic tooltip

11 years agoon-demand treemap working, though rough
Tim Bunce [Mon, 17 Sep 2012 09:38:38 +0000]
on-demand treemap working, though rough

11 years agoWorking(ish) on demand demo using statis data
Tim Bunce [Sun, 16 Sep 2012 15:46:17 +0000]
Working(ish) on demand demo using statis data

11 years agoWorking on removing links from the output path
Tim Bunce [Wed, 12 Sep 2012 20:48:16 +0000]
Working on removing links from the output path

11 years agoRename dNPathSetNode->NPathPushNode and rework magic_size nodes.
Tim Bunce [Tue, 11 Sep 2012 22:45:05 +0000]
Rename dNPathSetNode->NPathPushNode and rework magic_size nodes.

11 years agoGenerate json and initial experiments with a treemap.
Tim Bunce [Tue, 11 Sep 2012 22:25:59 +0000]
Generate json and initial experiments with a treemap.

11 years agoAdd memnodes.pl script to process output stream.
Tim Bunce [Tue, 11 Sep 2012 20:42:47 +0000]
Add memnodes.pl script to process output stream.

11 years agoAdd node stream file format (plain text for now)
Tim Bunce [Mon, 10 Sep 2012 21:05:51 +0000]
Add node stream file format (plain text for now)

Add workaround for a PL_strtab HeVAL == 0xC.

11 years agoAdded perl_size()
Tim Bunce [Mon, 10 Sep 2012 19:00:49 +0000]
Added perl_size()

11 years agoSquashed commit of all initial work on the 'name path' mechanism.
Tim Bunce [Mon, 10 Sep 2012 18:59:39 +0000]
Squashed commit of all initial work on the 'name path' mechanism.

11 years agoSpelling fix to docs from gregor herrmann [CPAN #78766]
Tim Bunce [Wed, 15 Aug 2012 20:23:33 +0000]
Spelling fix to docs from gregor herrmann [CPAN #78766]

11 years agoBump $VERSION to 0.78_50
Nicholas Clark [Mon, 30 Jul 2012 15:26:56 +0000]
Bump $VERSION to 0.78_50

11 years agoThis is 0.78 - update META.yml and META.json
Nicholas Clark [Thu, 26 Jul 2012 14:39:13 +0000]
This is 0.78 - update META.yml and META.json

11 years agoBump $VERSION to 0.78
Nicholas Clark [Thu, 26 Jul 2012 12:26:04 +0000]
Bump $VERSION to 0.78

11 years agoThis is 0.77_51 - update META.yml and META.json
Nicholas Clark [Tue, 17 Jul 2012 14:47:37 +0000]
This is 0.77_51 - update META.yml and META.json

11 years agoCorrect the code for structured exception handling on MSVC.
bulk 88 [Sat, 2 Jun 2012 00:41:58 +0000]
Correct the code for structured exception handling on MSVC.

11 years agoBump $VERSION to 0.77_51
Nicholas Clark [Tue, 17 Jul 2012 14:31:29 +0000]
Bump $VERSION to 0.77_51

11 years agoThis is 0.77_50 - update META.yml, and add META.json
Nicholas Clark [Sat, 11 Feb 2012 16:10:29 +0000]
This is 0.77_50 - update META.yml, and add META.json

12 years agoSkip tests in t/magic.t that use formline on 5.8.1 and 5.8.2
Nicholas Clark [Fri, 10 Feb 2012 20:01:57 +0000]
Skip tests in t/magic.t that use formline on 5.8.1 and 5.8.2

Those versions have a buggy formline that can trigger an assertion failure.

12 years agoRefactor t/globs.t to avoid the side effects of a change to strict.pm
Nicholas Clark [Fri, 10 Feb 2012 19:48:25 +0000]
Refactor t/globs.t to avoid the side effects of a change to strict.pm

As of blead commit b50b20584a1bbc1a, Implement new 'use 5.xxx' plan,
use strict; will write to %^H. Move the eval that creates the subroutine
into a different scope, a new subroutine generate_glob(), so that its
outside pointer chain doesn't include gv_grew(). This avoids problems with
eval ops changing the side of the %^H copies at runtime.

13 years agoBump $VERSION to 0.77_50
Nicholas Clark [Mon, 16 May 2011 12:40:06 +0000]
Bump $VERSION to 0.77_50

13 years agoThis is 0.77 - update META.yml
Nicholas Clark [Mon, 16 May 2011 12:39:00 +0000]
This is 0.77 - update META.yml

13 years agoBump $VERSION to 0.77
Nicholas Clark [Thu, 12 May 2011 16:34:34 +0000]
Bump $VERSION to 0.77

13 years agoThis is 0.76_50 - update META.yml
Nicholas Clark [Thu, 12 May 2011 16:33:04 +0000]
This is 0.76_50 - update META.yml

13 years agoCount the size of the "effective names" of a hash.
Nicholas Clark [Thu, 12 May 2011 16:26:28 +0000]
Count the size of the "effective names" of a hash.

This code is somewhat cheeky, making direct structure accesses.

13 years agoCount HvNAME(), the HV "aux" struct, and the mro_meta struct.
Nicholas Clark [Thu, 12 May 2011 14:04:17 +0000]
Count HvNAME(), the HV "aux" struct, and the mro_meta struct.

13 years agoGvNAME() is shared from 5.10 onwards.
Nicholas Clark [Thu, 12 May 2011 11:28:38 +0000]
GvNAME() is shared from 5.10 onwards.

13 years agoUse GvFILE_HEK(), if present, in preference to GvFILE()
Nicholas Clark [Thu, 12 May 2011 10:57:13 +0000]
Use GvFILE_HEK(), if present, in preference to GvFILE()

13 years agoHandle shared hash key scalars correctly.
Nicholas Clark [Thu, 12 May 2011 10:39:10 +0000]
Handle shared hash key scalars correctly.

13 years agoSplit out HEK size calculation into hek_size().
Nicholas Clark [Thu, 12 May 2011 09:25:19 +0000]
Split out HEK size calculation into hek_size().

Add the shared HE overhead to the total size.

13 years agoAdd a comment to force emacs to use C mode.
Nicholas Clark [Thu, 12 May 2011 08:54:21 +0000]
Add a comment to force emacs to use C mode.

13 years agoAdd a single (void **) cast to make the C code also valid as C++
Nicholas Clark [Thu, 12 May 2011 08:43:02 +0000]
Add a single (void **) cast to make the C code also valid as C++

13 years agoBump $VERSION to 0.76_50
Nicholas Clark [Wed, 11 May 2011 09:02:19 +0000]
Bump $VERSION to 0.76_50

13 years agoThis is 0.76 - update META.yml
Nicholas Clark [Wed, 11 May 2011 08:38:53 +0000]
This is 0.76 - update META.yml

13 years agoBump $VERSION to 0.76
Nicholas Clark [Wed, 11 May 2011 08:38:00 +0000]
Bump $VERSION to 0.76

13 years agoThis is 0.75_52 - update META.yml
Nicholas Clark [Mon, 9 May 2011 20:00:36 +0000]
This is 0.75_52 - update META.yml

13 years agoDon't count PL_sv_placeholder in the size returned.
Nicholas Clark [Mon, 9 May 2011 07:18:18 +0000]
Don't count PL_sv_placeholder in the size returned.

PL_sv_placeholder is a singleton, process wide, so shouldn't count as part of
the size.

13 years agosv_size() can return void once more.
Nicholas Clark [Sun, 8 May 2011 20:16:43 +0000]
sv_size() can return void once more.

All the code that relied on it returning the result of its call to check_new()
has been removed.

13 years agoReinstate 5.005_xx "support".
Nicholas Clark [Sun, 8 May 2011 17:48:33 +0000]
Reinstate 5.005_xx "support".

i.e. it compiles and passes tests.

13 years agoReplace c*OPx macros with their expansions.
Nicholas Clark [Sun, 8 May 2011 17:41:13 +0000]
Replace c*OPx macros with their expansions.

The expansions are 2 characters longer than the macros. The macros are not
present in 5.005.

13 years agoReinstate 5.6.x "support".
Nicholas Clark [Sun, 8 May 2011 08:16:57 +0000]
Reinstate 5.6.x "support".

i.e. it compiles and passes tests.

13 years agoDon't recurse into op_size() on op->pmnext.
Nicholas Clark [Sun, 8 May 2011 07:38:02 +0000]
Don't recurse into op_size() on op->pmnext.

It doesn't point to an OP owned by the current OP - it is used to form a linked
list that reset uses to find regexps to reset. Moreover, prior to 5.8.0 it can
end up pointing to freed memory, which results in much jollity.
[Bug 20010301.005, a.k.a. RT #5935, fixed in cb55de95c99e4650]

13 years agoReinstate weaken(), inadvertently removed by 8c394e1251fdfe38.
Nicholas Clark [Sat, 7 May 2011 18:59:24 +0000]
Reinstate weaken(), inadvertently removed by 8c394e1251fdfe38.

The test isn't testing as much as intended without it.

13 years agoMagic vtables aren't freed when magic is freed, so don't count them.
Nicholas Clark [Sat, 7 May 2011 10:23:01 +0000]
Magic vtables aren't freed when magic is freed, so don't count them.

They are static structures. Anything that assumes otherwise is buggy.

13 years agoCorrectly handle SvOOK scalars. 5.12 and later don't use SvIVX().
Nicholas Clark [Fri, 6 May 2011 19:29:18 +0000]
Correctly handle SvOOK scalars. 5.12 and later don't use SvIVX().

13 years agoppport.h defined NV if necessary, so no need to duplicate that.
Nicholas Clark [Fri, 6 May 2011 19:16:19 +0000]
ppport.h defined NV if necessary, so no need to duplicate that.

13 years agoAdd -DPURIFY sizes to body_sizes[]
Nicholas Clark [Fri, 6 May 2011 19:07:10 +0000]
Add -DPURIFY sizes to body_sizes[]

Use two macros to simplify the logic - MAYBE_OFFSET() where the normal version
subtracts a STRUCT_OFFSET(), and the purify version subtracts nothing, and
MAYBE_PURIFY() where there is not a simple relationship between the two sizes.

13 years agoUse a table for SV body sizes. These incorporate the space saving post 5.8.x
Nicholas Clark [Thu, 5 May 2011 16:04:36 +0000]
Use a table for SV body sizes. These incorporate the space saving post 5.8.x

For now, the sizes under -DPURIFY aren't correct.

13 years agoIn sv_size(), refactor the PV-derivatives to share as much code as possible.
Nicholas Clark [Thu, 5 May 2011 11:45:10 +0000]
In sv_size(), refactor the PV-derivatives to share as much code as possible.

As a side effect, PV"BM"s are now handled correctly on 5.10.0 and later.

13 years agoIn sv_size(), coalesce all calls to magic_size().
Nicholas Clark [Thu, 5 May 2011 09:50:44 +0000]
In sv_size(), coalesce all calls to magic_size().

13 years agoBump $VERSION to 0.75_52
Nicholas Clark [Thu, 5 May 2011 09:15:51 +0000]
Bump $VERSION to 0.75_52

13 years agoThis is 0.75_51 - update META.yml
Nicholas Clark [Thu, 5 May 2011 09:14:23 +0000]
This is 0.75_51 - update META.yml

13 years agoFor other-than-gcc, generate calls to check_new(...)
Nicholas Clark [Thu, 5 May 2011 09:00:07 +0000]
For other-than-gcc, generate calls to check_new(...)

Only use a static array of vtables on gcc. Some other compilers may be happy
with it, but VC certainly isn't. It's only trivial to determine gcc or not.

13 years agoBump $VERSION to 0.75_51
Nicholas Clark [Thu, 5 May 2011 08:24:30 +0000]
Bump $VERSION to 0.75_51

13 years agoThis is 0.75_50 - update META.yml
Nicholas Clark [Thu, 5 May 2011 08:21:20 +0000]
This is 0.75_50 - update META.yml

13 years agoeval $ExtUtils::MakeMaker::VERSION to avoid warnings about _ not being numeric.
Nicholas Clark [Wed, 4 May 2011 20:41:45 +0000]
eval $ExtUtils::MakeMaker::VERSION to avoid warnings about _ not being numeric.

Frustratingly ExtUtils::MakeMaker->VERSION() returns the literal value of
$ExtUtils::MakeMaker::VERSION so it's just as "not numeric" as reading the
scalar directly.

13 years agoRe-indent Makefile.PL consistently.
Nicholas Clark [Wed, 4 May 2011 20:41:00 +0000]
Re-indent Makefile.PL consistently.

13 years agoSimplify magic_size() by knowing that check_new() returns false for NULL.
Nicholas Clark [Wed, 4 May 2011 20:37:24 +0000]
Simplify magic_size() by knowing that check_new() returns false for NULL.

13 years agoAdd the size of mg_len if mg_ptr is non-NULL.
Nicholas Clark [Wed, 4 May 2011 20:24:58 +0000]
Add the size of mg_len if mg_ptr is non-NULL.

With special cases for UTF-8 caching magic, which abuses mg_len, and for
mg_len == HEf_SVKEY

13 years agoFollow mg_obj, which points to an SV.
Nicholas Clark [Wed, 4 May 2011 19:18:39 +0000]
Follow mg_obj, which points to an SV.

13 years agoAdd tests for sizing magic.
Nicholas Clark [Wed, 4 May 2011 19:14:43 +0000]
Add tests for sizing magic.

13 years agoThe core's magic vtables are global constants, so aren't part of the size.
Nicholas Clark [Wed, 4 May 2011 18:41:54 +0000]
The core's magic vtables are global constants, so aren't part of the size.

Parse perl.h to find the names of the vtables' names, and generate code to add
them all in new_state() as "seen".

13 years agoBump $VERSION to 0.75_50
Nicholas Clark [Wed, 4 May 2011 16:10:22 +0000]
Bump $VERSION to 0.75_50

13 years agoThis is 0.75 - update META.yml
Nicholas Clark [Wed, 4 May 2011 15:23:39 +0000]
This is 0.75 - update META.yml

13 years agoBump $VERSION to 0.75
Nicholas Clark [Wed, 4 May 2011 15:06:21 +0000]
Bump $VERSION to 0.75

13 years agoThis is 0.74_53 - update META.yml
Nicholas Clark [Wed, 4 May 2011 15:00:30 +0000]
This is 0.74_53 - update META.yml

13 years agoSkip the aelemfast size comparison test for perls which predate the code change.
Nicholas Clark [Sun, 1 May 2011 21:24:07 +0000]
Skip the aelemfast size comparison test for perls which predate the code change.

It was merged to maint-5.8 between 5.8.3 and 5.8.4, so 5.8.4 and later have it.
For 5.8.3 and earlier, the assumptions the test makes about sizes (based on op
structure) are bogus.

13 years agoSkip GvFILE on ithreaded 5.8.8 and earlier, as it can point to freed memory.
Nicholas Clark [Sun, 1 May 2011 21:02:59 +0000]
Skip GvFILE on ithreaded 5.8.8 and earlier, as it can point to freed memory.

Probably better to slightly under report sizes, than report something random or
SEGV.

13 years agoSet the pointer alignment (in bits) via a C macro generated by the Makefile.PL
Nicholas Clark [Sun, 1 May 2011 20:06:51 +0000]
Set the pointer alignment (in bits) via a C macro generated by the Makefile.PL

The previous approach of using sizeof(void *) is flat out wrong on a 64 bit
system. The right answer is 3. It gives 4. Which isn't a problem once the
pointer rotation code in check_new() isn't buggy, but isn't as efficient as
desired.

13 years agoFix typo error in bit-vector tracking mechanism, causing bogus "seen before"s.
Nicholas Clark [Sun, 1 May 2011 19:56:48 +0000]
Fix typo error in bit-vector tracking mechanism, causing bogus "seen before"s.

On 64 bit platforms which allocate on 8 byte alignment (rather than 16), a low
pointer bit could get lost, resulting in new pointers being considered already
"seen". Joy, hilarity, failing tests and different results running under gdb.
"Found" by BinGOs' smoker, fixed on spectre.mongueurs.net. The help was
appreciated.

13 years agoBump $VERSION to 0.74_53
Nicholas Clark [Sun, 1 May 2011 19:51:58 +0000]
Bump $VERSION to 0.74_53

13 years agoThis is 0.74_52 - update META.yml
Nicholas Clark [Mon, 25 Apr 2011 08:50:28 +0000]
This is 0.74_52 - update META.yml

13 years agoSvOK() && SvROK() is a tautology - SvROK() true has always implied SvOK() true.
Nicholas Clark [Sun, 24 Apr 2011 21:07:24 +0000]
SvOK() && SvROK() is a tautology - SvROK() true has always implied SvOK() true.

So no need to check SvOK() first on 5.10 or earlier.

13 years agototal_size() and size() can be XS ALIASes, now all the logic is in sv_size()
Nicholas Clark [Sun, 24 Apr 2011 20:59:00 +0000]
total_size() and size() can be XS ALIASes, now all the logic is in sv_size()

13 years agoMove iteration over array values from total_size() to sv_size()
Nicholas Clark [Sun, 24 Apr 2011 20:51:52 +0000]
Move iteration over array values from total_size() to sv_size()

For now this requires some bodgery over when array values should be recursed
into. Arrays presented to total_size() should be properly recursed into.
However, historically the inner arrays of padlists were never traversed, which
means there is no code to deal with the special case rules for them. So to avoid
the perfect being the enemy of the good, defer writing that code, by skipping
the inner arrays of padlists for now.

13 years agoHandle sizes for PVGVs in sv_size() only.
Nicholas Clark [Sun, 24 Apr 2011 20:39:18 +0000]
Handle sizes for PVGVs in sv_size() only.

Previously the logic was duplicated in total_size().

13 years agoMove iteration over hash values from total_size() to sv_size()
Nicholas Clark [Sun, 24 Apr 2011 15:32:40 +0000]
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.

13 years agoFix potential SEGVs for PVBMs on 5.10.0 and later.
Nicholas Clark [Sun, 24 Apr 2011 19:45:25 +0000]
Fix potential SEGVs for PVBMs on 5.10.0 and later.

5.10.0 stores PVBMs as PVGVs. Hence not all PVGVs are typeglobs, and XS code
should check isGV_with_GP() is true before performing typeglob lookups.

The PVGV code currently ignores SvCUR()/SvLEN(), so for now the size of PVBMs
is under-reported on 5.10.0 and later.

13 years agoThe optree holds pointers to GVs under multiplicity. It's ithreads that differs.
Nicholas Clark [Sun, 24 Apr 2011 17:43:32 +0000]
The optree holds pointers to GVs under multiplicity. It's ithreads that differs.

Hence the tests that are conditional on the different behaviours should be
{unthreaded,multiplicity} vs {ithreads}, not
{unthreaded} vs {multiplicity,ithreads}

13 years agoIn op_size, add break statement missing for OPc_PVOP.
Nicholas Clark [Sat, 23 Apr 2011 20:55:48 +0000]
In op_size, add break statement missing for OPc_PVOP.

This has been missing since op_size was added in 0.60. Without it, PVOPs would
run on into the OPc_LOOP case, which would likely SEGV as it would consider
the char *op_pv as OP *op_first, and non-existent op_last, op_redoop, op_nextop
and op_lastop.

13 years agoFix potential SEGVs for OP_AELEMFAST on a lexical.
Nicholas Clark [Sat, 23 Apr 2011 20:07:10 +0000]
Fix potential SEGVs for OP_AELEMFAST on a lexical.

OP_AELEMFAST is wonderfully special, in that it can be used to replace both
OP_GV and OP_PADAV. The latter is only a baseop, whereas OP_AELEMFAST is a
flagged as a padop/svop. baseops are smaller, and (therefore) don't have memory
allocated where op_sv "should" be.