[svn:parrot] r43360 - branches/boehm_gc/src/call

bacek at svn.parrot.org bacek at svn.parrot.org
Fri Jan 1 21:03:32 UTC 2010


Author: bacek
Date: Fri Jan  1 21:03:31 2010
New Revision: 43360
URL: https://trac.parrot.org/parrot/changeset/43360

Log:
Don't use FixedSizeAllocator for CallContext's registers if GC_USE_FIXED_SIZE_ALLOCATOR isn't set.

Modified:
   branches/boehm_gc/src/call/context.c

Modified: branches/boehm_gc/src/call/context.c
==============================================================================
--- branches/boehm_gc/src/call/context.c	Fri Jan  1 20:31:11 2010	(r43359)
+++ branches/boehm_gc/src/call/context.c	Fri Jan  1 21:03:31 2010	(r43360)
@@ -475,9 +475,14 @@
     const size_t reg_alloc     = ROUND_ALLOC_SIZE(all_regs_size);
 
     /* don't allocate any storage if there are no registers */
-    ctx->registers = reg_alloc
-        ? (Parrot_Context *)Parrot_gc_allocate_fixed_size_storage(interp, reg_alloc)
-        : NULL;
+    if (reg_alloc)
+#if GC_USE_FIXED_SIZE_ALLOCATOR
+        ctx->registers = (Parrot_Context *)Parrot_gc_allocate_fixed_size_storage(interp, reg_alloc);
+#else
+        ctx->registers = (Parrot_Context *)mem_sys_allocate_zeroed(reg_alloc);
+#endif
+    else
+        ctx->registers = NULL;
 
     ctx->n_regs_used[REGNO_INT] = number_regs_used[REGNO_INT];
     ctx->n_regs_used[REGNO_NUM] = number_regs_used[REGNO_NUM];
@@ -539,8 +544,11 @@
         return;
 
     /* Free registers */
+#if GC_USE_FIXED_SIZE_ALLOCATOR
     Parrot_gc_free_fixed_size_storage(interp, reg_size, ctx->registers);
-
+#else
+    mem_sys_free(ctx->registers);
+#endif
 }
 
 


More information about the parrot-commits mailing list