parrotcode: Resource allocation using malloc | |
Contents | C |
src/gc/res_lea.c - Resource allocation using malloc
This file provides alternative implementations of memory allocation function found in src/resources.c.
It is used if Configure.pl is passed the --gc=malloc
or --gc=malloc-trace
options.
The "lea" in the file name refers to Doug Lea, who wrote malloc implementation found in src/malloc.c.
As of May 14, 2007, it doesn't work (and hasn't worked for some time.) The problem appears to be related to strings, but actually could be somewhere else. This allocator does not support any of Parrot's Copy-on-Write schemes. Nor does the string allocator handle "external" strings.
void Parrot_go_collect(PARROT_INTERP)
collect_runs
count.static PARROT_INLINE void *xmalloc(size_t size)
malloc()
and returns it.
Panics if there is no memory available.static PARROT_INLINE void *xcalloc(size_t n, size_t size)
calloc()
and returns it.
Panics if there is no memory available.static PARROT_INLINE void *xrealloc(void *p, size_t size)
realloc()
and returns it.
Panics if there is no memory available.void Parrot_reallocate(PARROT_INTERP, Buffer *buffer, size_t newsize)
bufstart
for refcounting in DOD.void Parrot_allocate(PARROT_INTERP, Buffer *buffer, size_t size)
size
has to be a multiple of the word size.
PObj_buflen
will be set to exactly the given size
.
See the comments and diagram in resources.c.void Parrot_allocate_aligned(PARROT_INTERP, Buffer *buffer, size_t size)
void Parrot_reallocate_string(PARROT_INTERP, STRING *str, size_t newsize)
*str
and returns it.
newsize
is the number of bytes memory required.void Parrot_allocate_string(PARROT_INTERP, STRING *str, size_t size)
*str
and returns it.
size
is the number bytes of memory required.void Parrot_initialize_memory_pools(PARROT_INTERP)
void Parrot_merge_memory_pools(Interp *dest, Interp *source)
void Parrot_destroy_memory_pools(PARROT_INTERP)
config/auto/gc.pl, src/malloc.c, include/parrot/resources.h.
|