Author: heimdall
Date: Sun Aug 14 06:14:26 2005
New Revision: 8959

Modified:
   branches/gmc/classes/default.pmc
   branches/gmc/include/parrot/pobj.h
   branches/gmc/include/parrot/smallobject.h
   branches/gmc/lib/Parrot/Pmc2c.pm
   branches/gmc/src/gc_gmc.c
   branches/gmc/src/headers.c
   branches/gmc/src/jit_debug.c
   branches/gmc/src/memory.c
   branches/gmc/src/pmc.c
   branches/gmc/src/pmc_freeze.c
Log:
Various bugfixes

Modified: branches/gmc/classes/default.pmc
==============================================================================
--- branches/gmc/classes/default.pmc    (original)
+++ branches/gmc/classes/default.pmc    Sun Aug 14 06:14:26 2005
@@ -188,11 +188,10 @@ C<initializer> if it is supplied, otherw
     void init_pmc_props (PMC* initializer, PMC* properties) {
     #if PARROT_GC_GMC
        if (!Gmc_has_PMC_EXT_TEST(SELF))
-           Gmc_PMC_flag_SET(has_ext,SELF);
     #else
         if (!SELF->pmc_ext)
-            add_pmc_ext(INTERP, SELF);
     #endif
+            add_pmc_ext(INTERP, SELF);
         DOD_WRITE_BARRIER(INTERP, SELF, NULL, properties);
         PMC_metadata(SELF) = properties;
         if (initializer)
@@ -283,11 +282,10 @@ Sets the property for C<*key> to C<*valu
             PMC *prop;
     #if PARROT_GC_GMC
            if (!Gmc_has_PMC_EXT_TEST(SELF))
-               Gmc_PMC_flag_SET(has_ext,SELF);
     #else
             if (!SELF->pmc_ext)
-                add_pmc_ext(INTERP, SELF);
     #endif
+                add_pmc_ext(INTERP, SELF);
             /* first make new hash */
             PMC_metadata(SELF) = prop =
                 pmc_new_noinit(INTERP, enum_class_PerlHash);
@@ -337,11 +335,10 @@ Returns the PMC's properties.
     PMC* getprops() {
     #if PARROT_GC_GMC
        if (!Gmc_has_PMC_EXT_TEST(SELF))
-           Gmc_PMC_flag_SET(has_ext,SELF);
     #else
         if (!SELF->pmc_ext)
-            add_pmc_ext(INTERP, SELF);
     #endif
+            add_pmc_ext(INTERP, SELF);
         if (!PMC_metadata(SELF)) {
             PMC *prop;
             PMC_metadata(SELF) = prop =
@@ -955,11 +952,10 @@ Initializes the PMC during unarchiving.
         if (info->extra_flags == EXTRA_IS_PROP_HASH) {
     #if PARROT_GC_GMC
            if (!Gmc_has_PMC_EXT_TEST(SELF))
-               Gmc_PMC_flag_SET(has_ext,SELF);
     #else
             if (!SELF->pmc_ext)
-                add_pmc_ext(INTERP, SELF);
     #endif
+                add_pmc_ext(INTERP, SELF);
             info->thaw_ptr = &PMC_metadata(SELF);
             info->container = SELF;
             (info->visit_pmc_now)(INTERP, PMC_metadata(SELF), info);

Modified: branches/gmc/include/parrot/pobj.h
==============================================================================
--- branches/gmc/include/parrot/pobj.h  (original)
+++ branches/gmc/include/parrot/pobj.h  Sun Aug 14 06:14:26 2005
@@ -93,6 +93,10 @@ typedef struct pobj_t {
 /* TODO: Change to a real pmc_body type. */
 typedef struct default_body {
     UnionVal u;
+    Parrot_UInt flags;
+#if ! DISABLE_GC_DEBUG
+    UINTVAL _pobj_version;
+#endif
     PMC *_metadata;
     struct _Sync *_synchronize;
     PMC *_next_for_GC;
@@ -101,19 +105,17 @@ typedef struct default_body {
 
 #define PMC_BODY default_body
 
-
-/* Hack for the get_FLAGS macro to be happy. */
-typedef struct flags_holder {
+typedef struct pobj_body {
+    UnionVal u;
     Parrot_UInt flags;
 #if ! DISABLE_GC_DEBUG
     UINTVAL _pobj_version;
 #endif
-} flags_holder;
+} pobj_body;
 
 
 typedef struct Buffer {
-    PMC_BODY *body;
-    flags_holder obj;
+    pobj_body *body;
 } Buffer;
 
 #else
@@ -158,6 +160,17 @@ typedef Buffer PObj;
  * END DEPRECATED BUFFER ACCESSORS
  */
 
+#if PARROT_GC_GMC
+
+#if ! DISABLE_GC_DEBUG
+/* BEGIN DEPRECATED POBJ ACCESSOR */
+#  define pobj_version body->_pobj_version
+/* END DEPRECATED POBJ ACCESSOR */
+#  define PObj_version(pobj)  (pobj)->body->_pobj_version
+#endif /* ! DISABLE_GC_DEBUG */
+
+#else 
+
 #if ! DISABLE_GC_DEBUG
 /* BEGIN DEPRECATED POBJ ACCESSOR */
 #  define pobj_version obj._pobj_version
@@ -165,6 +178,8 @@ typedef Buffer PObj;
 #  define PObj_version(pobj)  (pobj)->obj._pobj_version
 #endif /* ! DISABLE_GC_DEBUG */
 
+#endif /* PARROT_GC_GMC */
+
 typedef enum {
     enum_stringrep_unknown = 0,
     enum_stringrep_one     = 1,
@@ -175,7 +190,6 @@ typedef enum {
 struct parrot_string_t {
 #if PARROT_GC_GMC
     PMC_BODY *body;
-    flags_holder obj;
 #else
     pobj_t obj;
 #endif
@@ -201,7 +215,6 @@ struct parrot_string_t {
 struct PMC {
 #if PARROT_GC_GMC
     PMC_BODY *body;
-    flags_holder obj;
 #else
     pobj_t obj;
 #endif
@@ -477,7 +490,11 @@ typedef enum PObj_enum {
 
 #endif /* ARENA_DOD_FLAGS */
 
+#if PARROT_GC_GMC
+#define PObj_get_FLAGS(o) ((o)->body->flags)
+#else
 #define PObj_get_FLAGS(o) ((o)->obj.flags)
+#endif
 
 
 #define PObj_flag_TEST(flag, o) (PObj_get_FLAGS(o) & PObj_ ## flag ## _FLAG)

Modified: branches/gmc/include/parrot/smallobject.h
==============================================================================
--- branches/gmc/include/parrot/smallobject.h   (original)
+++ branches/gmc/include/parrot/smallobject.h   Sun Aug 14 06:14:26 2005
@@ -42,6 +42,8 @@ typedef void (*add_free_object_fn_type)(
 #if PARROT_GC_GMC
 typedef void * (*get_free_typed_object_fn_type)(Interp *,
                              struct Small_Object_Pool *, INTVAL);
+typedef void * (*get_free_sized_object_fn_type)(Interp *,
+                             struct Small_Object_Pool *, size_t);
 #endif
 typedef void * (*get_free_object_fn_type)(Interp *,
                              struct Small_Object_Pool *);
@@ -239,6 +241,7 @@ struct Small_Object_Pool {
     add_free_object_fn_type     add_free_object;
 #if PARROT_GC_GMC
     get_free_typed_object_fn_type get_free_typed_object;
+    get_free_sized_object_fn_type get_free_sized_object;
 #endif
     get_free_object_fn_type     get_free_object;
     alloc_objects_fn_type       alloc_objects;

Modified: branches/gmc/lib/Parrot/Pmc2c.pm
==============================================================================
--- branches/gmc/lib/Parrot/Pmc2c.pm    (original)
+++ branches/gmc/lib/Parrot/Pmc2c.pm    Sun Aug 14 06:14:26 2005
@@ -845,7 +845,7 @@ Parrot_${classname}_class_init(Parrot_In
         $enum_name,    /* base_type */
         NULL,  /* whoami */
         $vtbl_flag, /* flags */
-       24,     /* size of pmc_body */
+       32,     /* size of pmc_body */
         NULL,   /* does_str */
         NULL,   /* isa_str */
         NULL,   /* class */

Modified: branches/gmc/src/gc_gmc.c
==============================================================================
--- branches/gmc/src/gc_gmc.c   (original)
+++ branches/gmc/src/gc_gmc.c   Sun Aug 14 06:14:26 2005
@@ -5,6 +5,7 @@
 
 static void gc_gmc_add_free_object(Interp*, struct Small_Object_Pool*, void*);
 static void *gc_gmc_get_free_typed_object(Interp*, struct Small_Object_Pool*, 
INTVAL);
+static void *gc_gmc_get_free_sized_object(Interp*, struct Small_Object_Pool*, 
size_t);
 static void *gc_gmc_get_free_object(Interp*, struct Small_Object_Pool*);
 static void gc_gmc_alloc_objects(Interp*, struct Small_Object_Pool*);
 static void gc_gmc_more_objects(Interp*, struct Small_Object_Pool*);
@@ -102,6 +103,7 @@ gc_gmc_pool_init(Interp *interpreter, st
     pool->add_free_object = gc_gmc_add_free_object;
     pool->get_free_object = gc_gmc_get_free_object;
     pool->get_free_typed_object = gc_gmc_get_free_typed_object;
+    pool->get_free_sized_object = gc_gmc_get_free_sized_object;
     pool->alloc_objects   = gc_gmc_alloc_objects;
     pool->more_objects    = gc_gmc_more_objects;
 
@@ -127,8 +129,8 @@ gc_gmc_pool_init(Interp *interpreter, st
     /* Separate the generations in two halves : one is young (= aggregate
      * objects), the other is old (non-aggregate objects). */
     for (i = 0, gen = gc->yng_fst; i < (GMC_GEN_INIT_NUMBER/2); i++, gen = 
gen->next);
-    gc->old_fst = gen->next;
-    gc->old_lst = gen->next;
+    gc->old_fst = gen;
+    gc->old_lst = gen;
     /* Now cut the bridges between these two parts. */
     gen->prev->next = NULL;
     gen->prev = NULL;
@@ -247,15 +249,20 @@ gc_gmc_get_free_object_of_size(Interp *i
   void *pmc_body;
   void *pmc;
   Gc_gmc *gc = pool->gc;
-  Gc_gmc_gen *gen;
-
+  Gc_gmc_gen *gen, *gen_ref;
 
   /* Allocate the pmc_body */
   gen = (aggreg) ? gc->yng_lst : gc->old_lst;
 
   /* Should we use the next generation ? */
   if (size > gen->remaining)
+  {
+      if (aggreg)
+         gc->yng_lst = gen->next;
+      else
+         gc->old_lst = gen->next;
       gen = gen->next;
+  }
 
   /* Do we need more generations ? */
   if (!gen)
@@ -265,12 +272,18 @@ gc_gmc_get_free_object_of_size(Interp *i
 
   /* Should we use the next generation ? */
   if (size > gen->remaining)
+  {
+      if (aggreg)
+         gc->yng_lst = gen->next;
+      else
+         gc->old_lst = gen->next;
       gen = gen->next;
+  }
 
   gc->old_lst = gen;
 
   pmc_body = gen->fst_free;
-  gen->fst_free = (void*)((INTVAL)pmc_body + size);
+  gen->fst_free = (void*)((char*)pmc_body + size);
   gen->remaining -= size;
 
 #ifdef GMC_DEBUG
@@ -283,12 +296,17 @@ gc_gmc_get_free_object_of_size(Interp *i
   if (!pool->free_list)
       (*pool->more_objects) (interpreter, pool);
   
-  pmc = pool->free_list;
+  pmc = (PMC*)pool->free_list;
 #ifdef GMC_DEBUG
   fprintf (stderr, "===============\n");
   fprintf (stderr, "PMC found at %p\n", pmc);
-  fprintf (stderr, "Next PMC at %p\n", *(void**)pmc);
-  fprintf (stderr, "Next Next PMC at %p\n", **(void***)pmc);
+  if (pmc)
+  {
+      fprintf (stderr, "Next PMC at %p\n", *(void**)pmc);
+      if (*(void**)pmc)
+         fprintf (stderr, "Next Next PMC at %p\n", **(void***)pmc);
+  }
+  fprintf (stderr, "pool->free_list = %p\n", pool->free_list);
   fprintf (stderr, "---------------\n");
 #endif
   pool->free_list = *(void **)pmc;
@@ -296,20 +314,20 @@ gc_gmc_get_free_object_of_size(Interp *i
   PMC_body((PMC*)pmc) = Gmc_PMC_hdr_get_BODY(pmc_body);
 
   Gmc_PMC_hdr_get_PMC((Gc_gmc_hdr*)pmc_body) = pmc;
-
+  PObj_get_FLAGS((PObj*)pmc) = 0;
 
   return pmc;
 }
 
 
 
-/* Here we allocate a PObj, as it is non-typed. */
+/* Here we allocate a default PMC, as it is non-typed. */
 /* This function should not be called anywhere if possible. */
 void *
 gc_gmc_get_free_object(Interp *interpreter,
     struct Small_Object_Pool *pool)
 {
-    size_t size = sizeof(Gc_gmc_hdr) + sizeof(PObj);
+    size_t size = sizeof(Gc_gmc_hdr) + sizeof(default_body);
     return gc_gmc_get_free_object_of_size(interpreter, pool, size, 0);
 }
 
@@ -334,6 +352,14 @@ gc_gmc_get_free_typed_object(Interp *int
     return gc_gmc_get_free_object_of_size (interpreter, pool, size, aggreg);
 }
 
+static void *
+gc_gmc_get_free_sized_object(Interp *interpreter,
+       struct Small_Object_Pool *pool, size_t size)
+{
+    return gc_gmc_get_free_object_of_size (interpreter, pool, size, 0);
+}
+    
+
 static void
 gc_gmc_copy_gen (Gc_gmc_gen *from, Gc_gmc_gen *dest)
 {
@@ -347,7 +373,9 @@ gc_gmc_copy_gen (Gc_gmc_gen *from, Gc_gm
 static void
 gc_gmc_gen_free(Gc_gmc_gen *gen)
 {
+    fprintf(stderr, "Freeing gen->first %p\n", gen->first);
     mem_sys_free(gen->first);
+    fprintf(stderr, "Freeing gen %p\n", gen);
     mem_sys_free(gen);
 }
 
@@ -380,19 +408,21 @@ gc_gmc_more_pmc_bodies (Interp *interpre
        gc_gmc_insert_gen (interpreter, dummy_gc, gen);
     }
 
-    for (gen = dummy_gc->yng_fst, ogen = gc->yng_fst; ogen->next; gen = 
gen->next)
+    for (gen = dummy_gc->yng_fst, ogen = gc->yng_fst; ogen; gen = gen->next)
     {
+       fprintf (stderr, "Old_gen: %p, old_gen->next: %p\n", ogen, ogen->next);
        ogen_nxt = ogen->next;
        gc_gmc_copy_gen(ogen,gen);
        gc_gmc_gen_free(ogen);
        ogen = ogen_nxt;
     }
     dummy_gc->yng_lst = gen;
+    fprintf(stderr, "First half\n");
 
     for (gen = dummy_gc->yng_fst, i = 0; i < (nb_gen/2); i++, gen = gen->next);
-    dummy_gc->old_fst = gen->next;
-    gen->next->prev = NULL;
-    gen->next = NULL;
+    dummy_gc->old_fst = gen;
+    gen->prev->next = NULL;
+    gen->prev = NULL;
 
     for (gen = dummy_gc->old_fst, ogen = gc->old_fst; ogen; gen = gen->next)
     {
@@ -411,7 +441,7 @@ gc_gmc_more_pmc_bodies (Interp *interpre
 
     mem_sys_free(dummy_gc);
     
-#ifdef GMC_DEBUG
+#ifndef GMC_DEBUG
     fprintf(stderr, "Done with allocation\n");
 #endif
 }
@@ -429,7 +459,7 @@ gc_gmc_more_objects(Interp *interpreter,
        char *obj;
        for (i = 0, obj = (char*)fst; i < NUM_NEW_OBJ; i++, obj += 
pool->object_size)
            *(void**)obj = obj + pool->object_size;
-       *(void**)obj = NULL;
+       *(void**)(obj - pool->object_size) = NULL;
        pool->free_list = fst;
        pool->num_free_objects += NUM_NEW_OBJ;
 #ifndef GMC_DEBUG

Modified: branches/gmc/src/headers.c
==============================================================================
--- branches/gmc/src/headers.c  (original)
+++ branches/gmc/src/headers.c  Sun Aug 14 06:14:26 2005
@@ -53,7 +53,11 @@ static void *
 get_free_buffer(Interp *interpreter,
         struct Small_Object_Pool *pool)
 {
+#if PARROT_GC_GMC
+    PObj *buffer = pool->get_free_sized_object(interpreter, pool, 
sizeof(pobj_body));
+#else
     PObj *buffer = pool->get_free_object(interpreter, pool);
+#endif
 
     /* don't mess around with flags */
     PObj_bufstart(buffer) = NULL;
@@ -247,8 +251,8 @@ static PMC_EXT * new_pmc_ext(Parrot_Inte
 void gc_gmc_tmp_ext_init(Parrot_Interp *, PMC *);
 #endif
 
-PMC *
-new_pmc_header(Interp *interpreter, UINTVAL flags)
+static PMC *
+new_pmc_alloc_header(Interp *interpreter, UINTVAL flags, INTVAL is_typed, 
INTVAL base_type)
 {
     struct Small_Object_Pool *pool;
     PMC *pmc;
@@ -259,7 +263,10 @@ new_pmc_header(Interp *interpreter, UINT
 #if ARENA_DOD_FLAGS
     assert(sizeof(Dead_PObj) <= sizeof(PMC));
 #endif
-    pmc = pool->get_free_object(interpreter, pool);
+    if (is_typed)
+       pmc = pool->get_free_typed_object(interpreter, pool, base_type);
+    else
+       pmc = pool->get_free_object(interpreter, pool);
     /* clear flags, set is_PMC_FLAG */
     if (flags & PObj_is_PMC_EXT_FLAG) {
 #if ARENA_DOD_FLAGS
@@ -269,8 +276,7 @@ new_pmc_header(Interp *interpreter, UINT
         flags |= PObj_is_special_PMC_FLAG;
 #endif
 #if PARROT_GC_GMC
-       Gmc_PMC_flag_SET(has_ext,pmc);
-       PObj_is_PMC_EXT_SET(pmc);
+       add_pmc_ext(interpreter, pmc);
 #else
         pmc->pmc_ext = new_pmc_ext(interpreter);
 #endif /* PARROT_GC_GMC */
@@ -288,6 +294,7 @@ new_pmc_header(Interp *interpreter, UINT
 #endif
 
 #if PARROT_GC_GMC
+    PObj_get_FLAGS(pmc) = 0;
     PMC_next_for_GC(pmc) = NULL;
     PMC_metadata(pmc) = NULL;
     PMC_sync(pmc) = NULL;
@@ -301,6 +308,12 @@ new_pmc_header(Interp *interpreter, UINT
     return pmc;
 }
 
+PMC *
+new_pmc_header(Interp *interpreter, UINTVAL flags)
+{
+    return new_pmc_alloc_header(interpreter, flags, 0, 0);
+}
+
 
 
 #if PARROT_GC_GMC
@@ -319,57 +332,10 @@ Get a header for a pmc of type base_type
 PMC *
 new_pmc_typed_header(Interp *interpreter, UINTVAL flags, INTVAL base_type)
 {
-    struct Small_Object_Pool *pool;
-    PMC *pmc;
-
-    pool = flags & PObj_constant_FLAG ?
-        interpreter->arena_base->constant_pmc_pool :
-        interpreter->arena_base->pmc_pool;
-#if ARENA_DOD_FLAGS
-    assert(sizeof(Dead_PObj) <= sizeof(PMC));
-#endif
-    pmc = pool->get_free_typed_object(interpreter, pool, base_type);
-    /* clear flags, set is_PMC_FLAG */
-    if (flags & PObj_is_PMC_EXT_FLAG) {
-#if ARENA_DOD_FLAGS
-        *((Dead_PObj*)pmc)->arena_dod_flag_ptr |=
-            (PObj_is_special_PMC_FLAG << ((Dead_PObj*)pmc)->flag_shift);
-#else
-        flags |= PObj_is_special_PMC_FLAG;
-#endif
-#if PARROT_GC_GMC
-       Gmc_PMC_flag_SET(has_ext,pmc);
-       PObj_is_PMC_EXT_SET(pmc);
-#else
-        pmc->pmc_ext = new_pmc_ext(interpreter);
-#endif
-        if (flags & PObj_is_PMC_shared_FLAG) {
-            PMC_sync(pmc) = mem_internal_allocate(sizeof(*PMC_sync(pmc)));
-            PMC_sync(pmc)->owner = interpreter;
-            MUTEX_INIT(PMC_sync(pmc)->pmc_lock);
-        }
-    }
-    else
-#if PARROT_GC_GMC
-       Gmc_PMC_flag_CLEAR(has_ext,pmc);
-#else
-        pmc->pmc_ext = NULL;
-#endif
-
-#if PARROT_GC_GMC
-    PMC_next_for_GC(pmc) = NULL;
-    PMC_metadata(pmc) = NULL;
-    PMC_sync(pmc) = NULL;
-    PMC_data(pmc) = NULL;
-#endif 
-    PObj_get_FLAGS(pmc) |= PObj_is_PMC_FLAG|flags;
-    pmc->vtable = NULL;
-#if ! PMC_DATA_IN_EXT
-    PMC_data(pmc) = NULL;
-#endif
-    return pmc;
+    return new_pmc_alloc_header(interpreter, flags, 1, base_type);
 }
 
+
 #endif /* PARROT_GC_GMC */
 
 
@@ -402,8 +368,6 @@ new_pmc_ext(Interp *interpreter)
     return ptr;
 }
 
-# if ! PARROT_GC_GMC
-
 /*
 
 =item C<void
@@ -415,6 +379,17 @@ Adds a new C<PMC_EXT> to C<pmc>.
 
 */
 
+#if PARROT_GC_GMC
+
+void
+add_pmc_ext(Interp *interpreter, PMC *pmc)
+{
+    Gmc_PMC_flag_SET(has_ext,pmc);
+    PObj_is_PMC_EXT_SET(pmc);
+}
+
+#else 
+
 void
 add_pmc_ext(Interp *interpreter, PMC *pmc)
 {

Modified: branches/gmc/src/jit_debug.c
==============================================================================
--- branches/gmc/src/jit_debug.c        (original)
+++ branches/gmc/src/jit_debug.c        Sun Aug 14 06:14:26 2005
@@ -162,7 +162,11 @@ write_types(FILE *stabs)
                 BIT_OFFSET(STRING, obj.u._b._bufstart), BIT_SIZE(void*),
                 BIT_OFFSET(STRING, obj.u._b._buflen), BIT_SIZE(size_t),
 #endif
+#if PARROT_GC_GMC
+                BIT_OFFSET(STRING, body->flags), BIT_SIZE(UINTVAL),
+#else
                 BIT_OFFSET(STRING, obj.flags), BIT_SIZE(UINTVAL),
+#endif
                 BIT_OFFSET(STRING, bufused), BIT_SIZE(UINTVAL),
                 BIT_OFFSET(STRING, strstart), BIT_SIZE(void*)
                 );
@@ -180,7 +184,11 @@ write_types(FILE *stabs)
     /* PMC type */
     fprintf(stabs, ".stabs \"PMC:T(0,%d)=s%d", i, BYTE_SIZE(PMC));
     fprintf(stabs, "obj:(0,%d),%d,%d;",
+#if PARROT_GC_GMC
+            i + 1, BIT_OFFSET(PMC, body), BIT_SIZE(pobj_t));
+#else
             i + 1, BIT_OFFSET(PMC, obj), BIT_SIZE(pobj_t));
+#endif
     fprintf(stabs, "vtable:*(0,%d),%d,%d;",
             i + 3, BIT_OFFSET(PMC, vtable), BIT_SIZE(void*));
 #if ! PMC_DATA_IN_EXT

Modified: branches/gmc/src/memory.c
==============================================================================
--- branches/gmc/src/memory.c   (original)
+++ branches/gmc/src/memory.c   Sun Aug 14 06:14:26 2005
@@ -154,6 +154,11 @@ mem_sys_free(void *from)
 #ifdef DETAIL_MEMORY_DEBUG
     printf("Freed %p\n", from);
 #endif
+    if (from == 0x082a91d0)
+    {
+       from = NULL;
+       *(int*)NULL = 54;
+    }
     free(from);
 }
 

Modified: branches/gmc/src/pmc.c
==============================================================================
--- branches/gmc/src/pmc.c      (original)
+++ branches/gmc/src/pmc.c      Sun Aug 14 06:14:26 2005
@@ -117,11 +117,7 @@ pmc_reuse(Interp *interpreter, PMC *pmc,
 
         if (!has_ext) {
             /* If we need an ext area, go allocate one */
-#if PARROT_GC_GMC
-           Gmc_PMC_flag_SET(has_ext,pmc);
-#else
             add_pmc_ext(interpreter, pmc);
-#endif
         }
         new_flags = PObj_is_PMC_EXT_FLAG;
     }

Modified: branches/gmc/src/pmc_freeze.c
==============================================================================
--- branches/gmc/src/pmc_freeze.c       (original)
+++ branches/gmc/src/pmc_freeze.c       Sun Aug 14 06:14:26 2005
@@ -570,11 +570,7 @@ static void
 pmc_add_ext(Parrot_Interp interpreter, PMC *pmc)
 {
     if (pmc->vtable->flags & VTABLE_PMC_NEEDS_EXT)
-#if PARROT_GC_GMC
-       Gmc_PMC_flag_SET(has_ext,pmc);
-#else
         add_pmc_ext(interpreter, pmc);
-#endif
 }
 
 /*

Reply via email to