Just saw the branch name. This is in a branch. Please ignore me. On Tue, Nov 1, 2011 at 10:32 AM, Johan Tibell <johan.tib...@gmail.com>wrote:
> Is this going into 7.4? Does this mean all heap objects now use 4 words > (e.g. Int is now twice as big)? > > > On Tue, Nov 1, 2011 at 10:22 AM, Geoffrey Mainlain <gmain...@galois.com>wrote: > >> Repository : ssh://darcs.haskell.org//srv/darcs/ghc >> >> On branch : simd >> >> >> http://hackage.haskell.org/trac/ghc/changeset/08ba8f79c36d18598cd966b1f70c20575087fb32 >> >> >--------------------------------------------------------------- >> >> commit 08ba8f79c36d18598cd966b1f70c20575087fb32 >> Author: Geoffrey Mainland <gmain...@microsoft.com> >> Date: Mon Oct 31 13:57:09 2011 +0000 >> >> Make sure the allocator aligns memory on a 16-byte boundary. >> >> >--------------------------------------------------------------- >> >> includes/rts/storage/Closures.h | 2 ++ >> rts/sm/Storage.c | 13 +++++++++++++ >> 2 files changed, 15 insertions(+), 0 deletions(-) >> >> diff --git a/includes/rts/storage/Closures.h >> b/includes/rts/storage/Closures.h >> index 5f4f035..c65d7da 100644 >> --- a/includes/rts/storage/Closures.h >> +++ b/includes/rts/storage/Closures.h >> @@ -138,6 +138,8 @@ typedef struct StgBlockingQueue_ { >> typedef struct { >> StgHeader header; >> StgWord bytes; >> + StgWord dummy1; >> + StgWord dummy2; >> StgWord payload[FLEXIBLE_ARRAY]; >> } StgArrWords; >> >> diff --git a/rts/sm/Storage.c b/rts/sm/Storage.c >> index 82e89a5..7d4526d 100644 >> --- a/rts/sm/Storage.c >> +++ b/rts/sm/Storage.c >> @@ -601,12 +601,25 @@ move_STACK (StgStack *src, StgStack *dest) >> Hp/HpLim). >> >> -------------------------------------------------------------------------- >> */ >> >> +/* >> + * This is a terrible hack to guarantee that *all* allocated objects are >> aligned >> + * on a 4-word boundary so we can use aligned SSE instructions. We can't >> just >> + * align some objects, because when the GC runs and compresses the heap, >> they >> + * could end up non-aligned. >> + */ >> +#define ALIGN_WORDS 4 >> +#define ALIGN_MASK (ALIGN_WORDS-1) >> + >> +#define ALIGN_ROUND_UP(n) (((n)+ALIGN_WORDS-1) & ~ALIGN_MASK) >> + >> StgPtr >> allocate (Capability *cap, lnat n) >> { >> bdescr *bd; >> StgPtr p; >> >> + n = ALIGN_ROUND_UP(n); >> + >> if (n >= LARGE_OBJECT_THRESHOLD/sizeof(W_)) { >> lnat req_blocks = (lnat)BLOCK_ROUND_UP(n*sizeof(W_)) / BLOCK_SIZE; >> >> >> >> >> _______________________________________________ >> Cvs-ghc mailing list >> Cvs-ghc@haskell.org >> http://www.haskell.org/mailman/listinfo/cvs-ghc >> > >
_______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc