improve docs in 'interior allocation mode and improve 'interior-atomic

This commit is contained in:
Matthew Flatt 2010-11-10 09:18:31 -07:00
parent 11f45cd2fd
commit 8d1827222c
3 changed files with 12 additions and 9 deletions

View File

@ -56,12 +56,15 @@ The basic collector allocation functions are:
object for future garbage collection (as described
in @secref["im:3m"]).}
@item{@cppi{scheme_malloc_allow_interior} --- Allocates a large
array of pointers such that references are allowed into the middle of
the block under 3m, and such pointers prevent the block from being
collected. This procedure is the same as @cppi{scheme_malloc} with
the conservative collector, but in the that case, having @italic{only}
a pointer into the interior will not prevent the array from being
@item{@cppi{scheme_malloc_allow_interior} --- Allocates an array of
pointers such that the array is never moved by the garbage collector
and references are allowed into the middle of the block under 3m (and
pointers to the middle prevent the block from being collected). Use
this procedure sparingly, because small, non-moving objects are
handled less efficiently than movable objects by the 3m collector.
This procedure is the same as @cppi{scheme_malloc} with the
conservative collector, but in the that case, having @italic{only} a
pointer into the interior will not prevent the array from being
collected.}
@item{@cppi{scheme_malloc_atomic_allow_interior} --- Like
@ -651,13 +654,13 @@ Like @cpp{scheme_malloc}, but in 3m, the type tag determines how the
@function[(void* scheme_malloc_allow_interior
[size_t n])]{
Like @cpp{scheme_malloc}, but in 3m, pointers are allowed to
Like @cpp{scheme_malloc}, but in 3m, the object never moves, and pointers are allowed to
reference the middle of the object; see @secref["im:memoryalloc"].}
@function[(void* scheme_malloc_atomic_allow_interior
[size_t n])]{
Like @cpp{scheme_malloc_atomic}, but in 3m, pointers are allowed to
Like @cpp{scheme_malloc_atomic}, but in 3m, the object never moves, and pointers are allowed to
reference the middle of the object; see @secref["im:memoryalloc"].}
@function[(char* scheme_strdup

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -1251,7 +1251,7 @@ void *GC_malloc_array_tagged(size_t s) { return allocate(s, PAGE_TARR
void *GC_malloc_atomic(size_t s) { return allocate(s, PAGE_ATOMIC); }
void *GC_malloc_atomic_uncollectable(size_t s) { return ofm_malloc_zero(s); }
void *GC_malloc_allow_interior(size_t s) { return allocate_medium(s, PAGE_ARRAY); }
void *GC_malloc_atomic_allow_interior(size_t s) { return allocate_big(s, PAGE_ATOMIC); }
void *GC_malloc_atomic_allow_interior(size_t s) { return allocate_medium(s, PAGE_ATOMIC); }
void *GC_malloc_tagged_allow_interior(size_t s) { return allocate_medium(s, PAGE_TAGGED); }
void *GC_malloc_one_small_dirty_tagged(size_t s) { return fast_malloc_one_small_tagged(s, 1); }
void *GC_malloc_one_small_tagged(size_t s) { return fast_malloc_one_small_tagged(s, 0); }