develooper Front page | perl.perl5.porters | Postings from February 2006

[patch] rework arenas - cleanups & arena-fit

From:
Jim Cromie
Date:
February 12, 2006 02:26
Subject:
[patch] rework arenas - cleanups & arena-fit
Message ID:
43EF0D0D.3010604@gmail.com

this patch, arena-fit does:

adds ARENA_FIT macro to adjust arena size down to fit N bodies exactly,
instead of wasting some memory for some types. (CVs,  BMs,  FMs, IOs)
The macro takes (count, sizeof) args: count ==0 fits max bodies into
PERL_ARENA_SIZE, giving a nice default that does the right thing
when -Accflags=-DPERL_ARENA_SIZE=16368 is used to build perl.
count >0 limits arena size, for less wastage with large/rare types.

get_arena() now actually uses bdp->arena_sz, rather than PERL_ARENA_SIZE
as in previous patches.

Also adds ARENASETS to perl.h, so that its unsettable via -Accflags.
The !ARENASETS code breaks currently during global destruction
ie ~ "panic: wrong pool",  ATM Ive lost motivation to fix it, though it
would be nice to be able to benchmark the option.


Separately, Ive concluded that I havent a clue how to initialize 
PL_arena_sizes[],
or how to clone it.  I grepped on a bunch of other interpreter fields, but
couldnt grok a pattern of use.  Id very much welcome hints; forex which 
field
has a usage I could imitate, or (gasp) a comment/pod patch describing 
the hows and whys.




nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About