Commit cecac854 authored by simonmar's avatar simonmar

[project @ 2002-07-26 09:35:46 by simonmar]

Always return 8-byte-aligned memory from arenaAlloc().  Fixes problems
with profiling on sparc-sun-solaris2, and might fix problems with
Windows too.

MERGE
parent 6b269a43
/* -----------------------------------------------------------------------------
$Id: Arena.c,v 1.2 2002/07/17 09:21:49 simonmar Exp $
$Id: Arena.c,v 1.3 2002/07/26 09:35:46 simonmar Exp $
(c) The University of Glasgow 2001
Arena allocation. Arenas provide fast memory allocation at the
......@@ -24,8 +24,6 @@
#include "BlockAlloc.h"
#include "Arena.h"
#include <stdlib.h>
// Each arena struct is allocated using malloc().
struct _Arena {
bdescr *current;
......@@ -62,8 +60,12 @@ arenaAlloc( Arena *arena, size_t size )
nat req_blocks;
bdescr *bd;
// round up to word size...
size_w = (size + sizeof(W_) - 1) / sizeof(W_);
// The minimum alignment of an allocated block.
#define MIN_ALIGN 8
// size of allocated block in words, rounded up to the nearest
// alignment chunk.
size_w = ((size + MIN_ALIGN - 1) / MIN_ALIGN) * (MIN_ALIGN/sizeof(W_));
if ( arena->free + size_w < arena->lim ) {
// enough room in the current block...
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment