]> granicus.if.org Git - gc/commit
Improve GC_allochblk algorithm of block splitting when unmapping enabled
authorIvan Maidanski <ivmai@mail.ru>
Tue, 14 Feb 2012 04:37:02 +0000 (08:37 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 14 Feb 2012 07:56:27 +0000 (11:56 +0400)
commitec5130a5e9b12c76c041a53ab907b77a46725a04
tree4fa935d4d34bcb8ca7817e89bef37e9a6b609477
parentb1eea5371e6161df5d34a611cbb30fcc9233a0de
Improve GC_allochblk algorithm of block splitting when unmapping enabled
(allow splitting up to limit based on per-list free space amount but
skipping unmapped blocks)

* allchblk.c (GC_allochblk_nth): Change type of "may_split" argument
from GC_bool to int (to hold 3rd value).
* allchblk.c (AVOID_SPLIT_REMAPPED): New macro (used as a value for
"may_split").
* allchblk.c (GC_allochblk): Add "may_split" local variable (set to
TRUE by default and passed to GC_allochblk_nth); do not zero
split_limit in case of USE_MUNMAP (and remove FIXME); set may_split to
AVOID_SPLIT_REMAPPED in case of USE_MUNMAP and split_limit is
a non-zero value computed by GC_enough_large_bytes_left.
* allchblk.c (GC_allochblk_nth): Update usage comment; if may_split is
AVOID_SPLIT_REMAPPED and hhdr is unmapped then continue search instead
of remapping memory and splitting the block.
allchblk.c