[svn:parrot] r46353 - trunk/src/gc
bacek at svn.parrot.org
bacek at svn.parrot.org
Thu May 6 14:00:58 UTC 2010
Author: bacek
Date: Thu May 6 14:00:57 2010
New Revision: 46353
URL: https://trac.parrot.org/parrot/changeset/46353
Log:
Replace "ifs" with asserts in gc_ms_reallocate_string_storage to enforce "immutable stirngs contract".
Modified:
trunk/src/gc/gc_ms.c
Modified: trunk/src/gc/gc_ms.c
==============================================================================
--- trunk/src/gc/gc_ms.c Thu May 6 13:43:51 2010 (r46352)
+++ trunk/src/gc/gc_ms.c Thu May 6 14:00:57 2010 (r46353)
@@ -1252,19 +1252,15 @@
mem += sizeof (void *);
/* Update Memory_Block usage */
- if (PObj_is_movable_TESTALL(str)) {
- INTVAL *buffer_flags = Buffer_bufrefcountptr(str);
+ /* We must not reallocate non-movable buffers! */
+ PARROT_ASSERT(PObj_is_movable_TESTALL(str));
- /* Mask low 2 bits used for flags */
- Memory_Block * block = Buffer_pool(str);
+ /* We must not reallocate shared buffers! */
+ PARROT_ASSERT(!(*Buffer_bufrefcountptr(str) & Buffer_shared_FLAG));
- 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));
- }
- }
+ /* Decrease usage */
+ PARROT_ASSERT(Buffer_pool(str));
+ Buffer_pool(str)->freed += ALIGNED_STRING_SIZE(Buffer_buflen(str));
/* copy mem from strstart, *not* bufstart */
oldmem = str->strstart;
More information about the parrot-commits
mailing list