diff options
author | Ben.Lippmeier@anu.edu.au <unknown> | 2009-01-22 09:21:56 +0000 |
---|---|---|
committer | Ben.Lippmeier@anu.edu.au <unknown> | 2009-01-22 09:21:56 +0000 |
commit | c7ea7c15942c6369bcca2cc13012d228a80fe926 (patch) | |
tree | 10467f6f722ddec5eccd5b210c72d57ba3f9122d /rts/RtsAPI.c | |
parent | 581a6a7cf8102a933259d576bdc0e7828fae16af (diff) | |
download | haskell-c7ea7c15942c6369bcca2cc13012d228a80fe926.tar.gz |
SPARC NCG: Also do misaligned reads (this time for sure!)
Diffstat (limited to 'rts/RtsAPI.c')
-rw-r--r-- | rts/RtsAPI.c | 16 |
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 */ |