[svn:parrot] r46351 - trunk/src/gc
bacek at svn.parrot.org
bacek at svn.parrot.org
Thu May 6 13:36:47 UTC 2010
Author: bacek
Date: Thu May 6 13:36:47 2010
New Revision: 46351
URL: https://trac.parrot.org/parrot/changeset/46351
Log:
Update Memory_Block usage in gc_ms_reallocate_string_storage
Modified:
trunk/src/gc/gc_ms.c
Modified: trunk/src/gc/gc_ms.c
==============================================================================
--- trunk/src/gc/gc_ms.c Thu May 6 13:36:31 2010 (r46350)
+++ trunk/src/gc/gc_ms.c Thu May 6 13:36:47 2010 (r46351)
@@ -1251,6 +1251,21 @@
mem = (char *)mem_allocate(interp, interp->mem_pools, new_size, pool);
mem += sizeof (void *);
+ /* Update Memory_Block usage */
+ if (PObj_is_movable_TESTALL(str)) {
+ INTVAL *buffer_flags = Buffer_bufrefcountptr(str);
+
+ /* Mask low 2 bits used for flags */
+ Memory_Block * block = Buffer_pool(str);
+
+ PARROT_ASSERT(block);
+
+ /* We can have shared buffers. Don't count them (yet) */
+ if (!(*buffer_flags & Buffer_shared_FLAG)) {
+ block->freed += ALIGNED_STRING_SIZE(Buffer_buflen(str));
+ }
+ }
+
/* copy mem from strstart, *not* bufstart */
oldmem = str->strstart;
Buffer_bufstart(str) = (void *)mem;
More information about the parrot-commits
mailing list