[svn:parrot] r43966 - trunk/src/gc
bacek at svn.parrot.org
bacek at svn.parrot.org
Mon Feb 15 10:59:39 UTC 2010
Author: bacek
Date: Mon Feb 15 10:59:39 2010
New Revision: 43966
URL: https://trac.parrot.org/parrot/changeset/43966
Log:
Remove aligned_size. Always use aligned_string_size for buffers to avoid crashes in compact_pool
Modified:
trunk/src/gc/alloc_resources.c
trunk/src/gc/gc_ms.c
trunk/src/gc/gc_private.h
Modified: trunk/src/gc/alloc_resources.c
==============================================================================
--- trunk/src/gc/alloc_resources.c Mon Feb 15 10:38:43 2010 (r43965)
+++ trunk/src/gc/alloc_resources.c Mon Feb 15 10:59:39 2010 (r43966)
@@ -627,33 +627,6 @@
/*
-=item C<size_t aligned_size(const Buffer *buffer, size_t len)>
-
-Determines the size of Buffer C<buffer> which has nominal length C<len>.
-The actual size in RAM of the Buffer might be different because of
-alignment issues.
-
-=cut
-
-*/
-
-PARROT_PURE_FUNCTION
-PARROT_WARN_UNUSED_RESULT
-size_t
-aligned_size(ARGIN(const Buffer *buffer), size_t len)
-{
- ASSERT_ARGS(aligned_size)
- if (PObj_is_COWable_TEST(buffer))
- len += sizeof (void*);
- if (PObj_aligned_TEST(buffer))
- len = (len + BUFFER_ALIGN_1) & BUFFER_ALIGN_MASK;
- else
- len = (len + WORD_ALIGN_1) & WORD_ALIGN_MASK;
- return len;
-}
-
-/*
-
=item C<char * aligned_mem(const Buffer *buffer, char *mem)>
Returns a pointer to the aligned allocated storage for Buffer C<buffer>,
Modified: trunk/src/gc/gc_ms.c
==============================================================================
--- trunk/src/gc/gc_ms.c Mon Feb 15 10:38:43 2010 (r43965)
+++ trunk/src/gc/gc_ms.c Mon Feb 15 10:59:39 2010 (r43966)
@@ -803,13 +803,12 @@
Buffer_buflen(buffer) = 0;
Buffer_bufstart(buffer) = NULL;
- new_size = aligned_size(buffer, size);
+ new_size = aligned_string_size(size);
mem = (char *)mem_allocate(interp, interp->mem_pools, new_size,
interp->mem_pools->memory_pool);
mem = aligned_mem(buffer, mem);
Buffer_bufstart(buffer) = mem;
- if (PObj_is_COWable_TEST(buffer))
- new_size -= sizeof (void*);
+ new_size -= sizeof (void*);
Buffer_buflen(buffer) = new_size;
}
@@ -852,8 +851,8 @@
* normally, which play ping pong with buffers.
* The normal case is therefore always to allocate a new block
*/
- new_size = aligned_size(buffer, newsize);
- old_size = aligned_size(buffer, Buffer_buflen(buffer));
+ new_size = aligned_string_size(newsize);
+ old_size = aligned_string_size(Buffer_buflen(buffer));
needed = new_size - old_size;
if ((pool->top_block->free >= needed)
@@ -881,8 +880,7 @@
Buffer_bufstart(buffer) = mem;
- if (PObj_is_COWable_TEST(buffer))
- new_size -= sizeof (void *);
+ new_size -= sizeof (void *);
Buffer_buflen(buffer) = new_size;
}
Modified: trunk/src/gc/gc_private.h
==============================================================================
--- trunk/src/gc/gc_private.h Mon Feb 15 10:38:43 2010 (r43965)
+++ trunk/src/gc/gc_private.h Mon Feb 15 10:59:39 2010 (r43966)
@@ -487,11 +487,6 @@
__attribute__nonnull__(1)
__attribute__nonnull__(2);
-PARROT_PURE_FUNCTION
-PARROT_WARN_UNUSED_RESULT
-size_t aligned_size(ARGIN(const Buffer *buffer), size_t len)
- __attribute__nonnull__(1);
-
PARROT_CONST_FUNCTION
PARROT_WARN_UNUSED_RESULT
size_t aligned_string_size(size_t len);
@@ -558,8 +553,6 @@
#define ASSERT_ARGS_aligned_mem __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(buffer) \
, PARROT_ASSERT_ARG(mem))
-#define ASSERT_ARGS_aligned_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
- PARROT_ASSERT_ARG(buffer))
#define ASSERT_ARGS_aligned_string_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
#define ASSERT_ARGS_check_buffer_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
PARROT_ASSERT_ARG(pobj) \
More information about the parrot-commits
mailing list