From c7ea7c15942c6369bcca2cc13012d228a80fe926 Mon Sep 17 00:00:00 2001 From: "Ben.Lippmeier@anu.edu.au" Date: Thu, 22 Jan 2009 09:21:56 +0000 Subject: [PATCH] SPARC NCG: Also do misaligned reads (this time for sure!) --- rts/RtsAPI.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 */ -- 1.7.10.4