summaryrefslogtreecommitdiff
path: root/rts/RtsAPI.c
diff options
context:
space:
mode:
authorBen.Lippmeier@anu.edu.au <unknown>2009-01-22 09:21:56 +0000
committerBen.Lippmeier@anu.edu.au <unknown>2009-01-22 09:21:56 +0000
commitc7ea7c15942c6369bcca2cc13012d228a80fe926 (patch)
tree10467f6f722ddec5eccd5b210c72d57ba3f9122d /rts/RtsAPI.c
parent581a6a7cf8102a933259d576bdc0e7828fae16af (diff)
downloadhaskell-c7ea7c15942c6369bcca2cc13012d228a80fe926.tar.gz
SPARC NCG: Also do misaligned reads (this time for sure!)
Diffstat (limited to 'rts/RtsAPI.c')
-rw-r--r--rts/RtsAPI.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/rts/RtsAPI.c b/rts/RtsAPI.c
index c5c5561d57..e0740b1c1a 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 */