Author: heimdall
Date: Tue Aug 16 16:04:33 2005
New Revision: 8974
Modified:
branches/gmc/src/gc_gmc.c
branches/gmc/src/headers.c
Log:
Small bug corrected, make test slightly better
Modified: branches/gmc/src/gc_gmc.c
==============================================================================
--- branches/gmc/src/gc_gmc.c (original)
+++ branches/gmc/src/gc_gmc.c Tue Aug 16 16:04:33 2005
@@ -39,8 +39,6 @@ gc_gmc_gen_init(Interp *interpreter)
gen->remaining = GMC_GEN_SIZE;
gen->alloc_obj = 0;
- /*fprintf (stderr, "Allocated gen from %p,%p to %p\n", gen, gen->first,
(char*)gen->first + gen->remaining);*/
-
/* We have an IGP basis : only one store. */
IGP_store = mem_sys_allocate(sizeof(Gc_gmc_hdr_store));
IGP_store->ptr = &(IGP_store->store[0]);
@@ -49,6 +47,10 @@ gc_gmc_gen_init(Interp *interpreter)
IGP->first = IGP_store;
IGP->last = IGP_store;
gen->IGP = IGP;
+
+#ifdef GMC_DEBUG
+ fprintf(stderr, "Allocating gen at %p, first at %p, limit at %p\n", gen,
gen->first, (char*)gen->first + gen->remaining);
+#endif
return gen;
}
@@ -309,6 +311,11 @@ gc_gmc_get_free_object_of_size(Interp *i
gen = (aggreg) ? gc->yng_lst : gc->old_lst;
+
+#ifdef GMC_DEBUG
+ fprintf(stderr, "Considering to use gen (%p,%p) --> %p\n", gen, gen->first,
(char*)gen->fst_free + gen->remaining);
+#endif
+
/* Should we use the next generation ? */
if (size >= gen->remaining)
{
@@ -319,8 +326,12 @@ gc_gmc_get_free_object_of_size(Interp *i
gen = gen->next;
}
+#ifdef GMC_DEBUG
+ fprintf(stderr, "Using gen (%p,%p) --> %p\n", gen, gen->first,
(char*)gen->fst_free + gen->remaining);
+#endif
+
pmc_body = gen->fst_free;
- gen->fst_free = (void*)((char*)pmc_body + size);
+ gen->fst_free = (void*)((char*)gen->fst_free + size);
gen->remaining -= size;
gen->alloc_obj++;
memset(pmc_body, 0, size);
@@ -408,8 +419,7 @@ gc_gmc_copy_gen (Gc_gmc_gen *from, Gc_gm
dest->remaining = from->remaining;
dest->IGP = from->IGP;
#ifdef GMC_DEBUG
- fprintf (stderr, "Copying gen %p to gen %p\n", from, dest);
- fprintf (stderr, "Copying %p to %p\n", from->first, dest->first);
+ fprintf (stderr, "Copying gen (%p,%p) to gen (%p,%p)\n", from,
from->first, dest, dest->first);
#endif
memcpy(dest->first, from->first, GMC_GEN_SIZE);
ptr = dest->first;
Modified: branches/gmc/src/headers.c
==============================================================================
--- branches/gmc/src/headers.c (original)
+++ branches/gmc/src/headers.c Tue Aug 16 16:04:33 2005
@@ -54,7 +54,7 @@ get_free_buffer(Interp *interpreter,
struct Small_Object_Pool *pool)
{
#if PARROT_GC_GMC
- PObj *buffer = pool->get_free_object(interpreter, pool);
+ PObj *buffer = pool->get_free_sized_object(interpreter, pool,
sizeof(pobj_body));
#else
PObj *buffer = pool->get_free_object(interpreter, pool);
#endif
@@ -263,10 +263,14 @@ new_pmc_alloc_header(Interp *interpreter
#if ARENA_DOD_FLAGS
assert(sizeof(Dead_PObj) <= sizeof(PMC));
#endif
+#if PARROT_GC_GMC
if (is_typed)
pmc = pool->get_free_typed_object(interpreter, pool, base_type);
else
- pmc = pool->get_free_object(interpreter, pool);
+ pmc = pool->get_free_sized_object(interpreter, pool,
sizeof(default_body));
+#else
+ pmc = pool->get_free_object(interpreter, pool);
+#endif
/* clear flags, set is_PMC_FLAG */
if (flags & PObj_is_PMC_EXT_FLAG) {
#if ARENA_DOD_FLAGS