GC: no-pointer areas

Thomas Kuehne thomas-dloop at kuehne.cn
Mon Oct 23 13:50:13 PDT 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

With all that Phobos talk going on ... here is a small task:

Implement GC areas that are guaranteed to contain no pointers
and are subsequently not searched for pointers during GC-collections.

Basic Idea:

void *malloc(size_t size);
void *calloc(size_t nmemb, size_t size);

If less than sizeof(size_t) bytes are allocated per element, the
allocated memory is guaranteed to contain no pointers.

There are three implementation levels:

1) Basic (dmd/src/phobos/internal/gc/gcx.d)

Implement the basic idea(malloc, calloc, realloc, ...) and provide
the functions malloc_no_ptr, calloc_no_ptr, realloc_no_ptr.

2) Complete (dmd/src/phobos/internal/gc/gc.d)

Update the code to take advantage of gcx.d's *_no_ptr.

3) Extended (compiler and dmd/src/phobos/internal/gc/gc.d)

By adding compiler support, elements with sizes larger than or
equal to sizeof(size_t) that contain no pointers (e.g. the data
portion of float arrays and some structs)can use the no-ptr pools.

As a result, the GC for applications using lots of data arrays should
be noticeably faster while other applications shouldn't experience any
measurable speed decreases.

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFFPTf+LK5blCcjpWoRAkZKAJ4r05W8qpr9ZwXMewKZdHLOoE23vQCbB8ll
Zu2I/IkMgSbW+CO81Ljk/jI=
=RvEo
-----END PGP SIGNATURE-----



More information about the Digitalmars-d mailing list