Implemented a resizable heap abstraction over mmap(). Allows us to
commit64a19f21dc73bf625b67c8e8ebad165dd475d465
authorVincent Geddes <vincent.geddes@gmail.com>
Fri, 27 Jun 2008 22:27:01 +0000 (28 00:27 +0200)
committerVincent Geddes <vincent.geddes@gmail.com>
Fri, 27 Jun 2008 22:27:01 +0000 (28 00:27 +0200)
treeb18a6d7828c1723e09d78cf11f77e1ed7f22724c
parente417352f27e35f3ad35450324a66f780919f73c6
Implemented a resizable heap abstraction over mmap(). Allows us to
grow or shrink the heap according to demand, without having to move objects.

Initially we reserve a large contigious region of virtual memory. However, no
actual swap space or physical memory is reserved/allocated for this region. We can
do this using the MAP_NORESERVE flag for mmap(). The rationale for reserving
this memory is to prevent other code in the process (think of third-party plugins)
from using virtual memory in this region (and thus preventing us from growing the heap).

We can commit or decommit memory using st_heap_grow() or st_heap_shrink()
respectively. Committing memory will usually result in swap space or physical memory
being allocated. All this code is in `st-memory.h'.

Added portable wrapper functions in `st-system.h' which wrap over the
virtual memory primitives for win32 and posix.
38 files changed:
Makefile-libpanda.am
Makefile-tests.am
src/st-array.c
src/st-association.c
src/st-association.h
src/st-behavior.c
src/st-behavior.h
src/st-byte-array.c
src/st-byte-array.h
src/st-context.c
src/st-context.h
src/st-descriptor.h
src/st-float-array.c
src/st-float-array.h
src/st-float.c
src/st-float.h
src/st-generator.c
src/st-hashed-collection.c
src/st-large-integer.c
src/st-large-integer.h
src/st-memory.c [new file with mode: 0644]
src/st-memory.h [moved from src/st-object-memory.h with 61% similarity]
src/st-method.h
src/st-object-memory.c [deleted file]
src/st-object.c
src/st-object.h
src/st-parser.c
src/st-primitives.c
src/st-processor.c
src/st-processor.h
src/st-symbol.c
src/st-symbol.h
src/st-types.h
src/st-universe.c
src/st-universe.h
src/st-utils.c
src/st-utils.h
src/st-word-array.c