[svn:parrot] r44232 - branches/sys_mem_reduce/src/gc
bacek at svn.parrot.org
bacek at svn.parrot.org
Sat Feb 20 12:52:44 UTC 2010
Author: bacek
Date: Sat Feb 20 12:52:43 2010
New Revision: 44232
URL: https://trac.parrot.org/parrot/changeset/44232
Log:
Call mem_sys_foo functions from GC MS to preserve trunk behavior.
Modified:
branches/sys_mem_reduce/src/gc/gc_ms.c
Modified: branches/sys_mem_reduce/src/gc/gc_ms.c
==============================================================================
--- branches/sys_mem_reduce/src/gc/gc_ms.c Sat Feb 20 12:18:12 2010 (r44231)
+++ branches/sys_mem_reduce/src/gc/gc_ms.c Sat Feb 20 12:52:43 2010 (r44232)
@@ -1120,32 +1120,22 @@
gc_ms_allocate_memory_chunk(PARROT_INTERP, size_t size)
{
ASSERT_ARGS(gc_ms_allocate_memory_chunk)
- return mem_internal_allocate(size);
+ return mem_sys_allocate(size);
}
static void *
-gc_ms_reallocate_memory_chunk(PARROT_INTERP, ARGIN(void *data), size_t newsize)
+gc_ms_reallocate_memory_chunk(PARROT_INTERP, ARGFREE(void *data), size_t newsize)
{
ASSERT_ARGS(gc_ms_allocate_memory_chunk)
- /* FIXME Apparently many parts of Parrot depends on initial initialization
- * of "re"allocated chunk with zeroes. E.g. PackFiles and FIA. */
- if (!data) {
- data = mem_internal_allocate(newsize);
- memset(data, 0, newsize);
- return data;
- }
- else {
- return mem_internal_realloc(data, newsize);
- }
+ return mem_sys_realloc(data, newsize);
}
static void *
gc_ms_allocate_memory_chunk_zeroed(PARROT_INTERP, size_t size)
{
ASSERT_ARGS(gc_ms_allocate_memory_chunk)
- void * ret = mem_internal_allocate(size);
- memset(ret, 0, size);
- return ret;
+ /* FIXME UB of realloc to clear allocated memory */
+ return mem_sys_realloc(NULL, size);
}
static void *
@@ -1153,14 +1143,17 @@
size_t newsize, size_t oldsize)
{
ASSERT_ARGS(gc_ms_allocate_memory_chunk)
- return mem_internal_realloc_zeroed(data, newsize, oldsize);
+ void * const ptr = realloc(data, newsize);
+ if (newsize > oldsize)
+ memset((char*)ptr + oldsize, 0, newsize - oldsize);
+ return ptr;
}
static void
gc_ms_free_memory_chunk(PARROT_INTERP, ARGIN(void *data))
{
ASSERT_ARGS(gc_ms_allocate_memory_chunk)
- mem_internal_free(data);
+ mem_sys_free(data);
}
More information about the parrot-commits
mailing list