diff options
Diffstat (limited to 'rts')
-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 */ |