Extra PMC allocations with new ['Integer']
Peter Lobsinger
plobsing at gmail.com
Sun Feb 6 17:55:58 UTC 2011
On Sun, Feb 6, 2011 at 9:44 AM, Patrick R. Michaud <pmichaud at pobox.com> wrote:
> Bacek++ fixed TT #1994 so that .INTERPINFO_ACTIVE_PMCS works again
> (thanks!); while playing with it I noticed that creating the first
> instance of a PMC type such as Integer or Float results in the
> creation of 38 extra PMCs somewhere. (Creating the second and
> subsequent instances doesn't seem to result in this extra allocation.)
>
> pmichaud at orange:~/parrot$ cat activepmc-2.pir
> .sub 'main'
> .include 'interpinfo.pasm'
>
> sweep 1
> collect
>
> $I0 = interpinfo .INTERPINFO_ACTIVE_PMCS
> say $I0
>
> .local pmc a, b
> a = new ['Integer']
> $I0 = interpinfo .INTERPINFO_ACTIVE_PMCS
> say $I0
>
> b = new ['Integer']
> $I0 = interpinfo .INTERPINFO_ACTIVE_PMCS
> say $I0
> .end
>
> pmichaud at orange:~/parrot$ ./parrot activepmc-2.pir
> 1173
> 1212
> 1213
> pmichaud at orange:~/parrot$
>
> I'm sure that some of the PMCs are being created to support the PMCProxy
> instances.... but *38*? That number seems surprisingly high, so I
> thought I'd bring it up to the list and see if anyone has any ideas
> about why and where so many extra PMCs are being created.
Confirmed, PMCProxy objects are being created.
It is interesting to note that of those 38, only 12 persist after a GC
run (add the sweep/collect code before the interpinfo query). Of those
12, 8 can be directly accounted for in Class.init() (parent of
PMCProxy). That leaves only 4 persisting PMCs unaccounted for.
So which of these are we concerned about the most? The 26 contributing
to GC churn? The 8 caused by Class being fat? Or the 4 I haven't
bothered to track down?
> The 38 extra PMCs seems to be per-type; for example, if after
> creating the two Integers above I then create a new Float object,
> another 38 PMCs get created somewhere.
>
> Thanks,
>
> Pm
> _______________________________________________
> http://lists.parrot.org/mailman/listinfo/parrot-dev
>
More information about the parrot-dev
mailing list