diff --git a/collects/scribblings/inside/memory.scrbl b/collects/scribblings/inside/memory.scrbl index 09a571d380..2e5b672c93 100644 --- a/collects/scribblings/inside/memory.scrbl +++ b/collects/scribblings/inside/memory.scrbl @@ -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 diff --git a/collects/tests/plot/contour-out.png b/collects/tests/plot/contour-out.png deleted file mode 100644 index c1d2dc736b..0000000000 Binary files a/collects/tests/plot/contour-out.png and /dev/null differ diff --git a/src/racket/gc2/newgc.c b/src/racket/gc2/newgc.c index 13e79149b8..9808bddb86 100644 --- a/src/racket/gc2/newgc.c +++ b/src/racket/gc2/newgc.c @@ -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); }