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

Reply via email to