From: Ben.Lippmeier@anu.edu.au Date: Thu, 22 Jan 2009 09:21:56 +0000 (+0000) Subject: SPARC NCG: Also do misaligned reads (this time for sure!) X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=c7ea7c15942c6369bcca2cc13012d228a80fe926 SPARC NCG: Also do misaligned reads (this time for sure!) --- diff --git a/rts/RtsAPI.c b/rts/RtsAPI.c index c5c5561..e0740b1 100644 --- a/rts/RtsAPI.c +++ b/rts/RtsAPI.c @@ -301,12 +301,14 @@ rts_getInt32 (HaskellObj p) HsInt64 rts_getInt64 (HaskellObj p) { - HsInt64* tmp; + HsInt32* tmp; // See comment above: // ASSERT(p->header.info == I64zh_con_info || // p->header.info == I64zh_static_info); - tmp = (HsInt64*)&(UNTAG_CLOSURE(p)->payload[0]); - return *tmp; + tmp = (HsInt32*)&(UNTAG_CLOSURE(p)->payload[0]); + + HsInt64 i = (HsInt64)(tmp[0] << 32) | (HsInt64)tmp[1]; + return i; } #else @@ -314,14 +316,12 @@ rts_getInt64 (HaskellObj p) HsInt64 rts_getInt64 (HaskellObj p) { - HsInt32* tmp; + HsInt64* tmp; // See comment above: // ASSERT(p->header.info == I64zh_con_info || // p->header.info == I64zh_static_info); - tmp = (HsInt32*)&(UNTAG_CLOSURE(p)->payload[0]); - - HsInt64 i = (HsInt64)(tmp[0] << 32) | (HsInt64)tmp[1]; - return i + tmp = (HsInt64*)&(UNTAG_CLOSURE(p)->payload[0]); + return *tmp; } #endif /* sparc_HOST_ARCH */