projects
/
ghc-base.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use explicit language extensions & remove extension fields from base.cabal
[ghc-base.git]
/
GHC
/
Weak.lhs
diff --git
a/GHC/Weak.lhs
b/GHC/Weak.lhs
index
d76c8b6
..
67046f8
100644
(file)
--- a/
GHC/Weak.lhs
+++ b/
GHC/Weak.lhs
@@
-1,6
+1,12
@@
\begin{code}
\begin{code}
-{-# OPTIONS_GHC -fno-implicit-prelude #-}
+{-# LANGUAGE CPP
+ , NoImplicitPrelude
+ , BangPatterns
+ , MagicHash
+ , UnboxedTuples
+ #-}
{-# OPTIONS_HADDOCK hide #-}
{-# OPTIONS_HADDOCK hide #-}
+
-----------------------------------------------------------------------------
-- |
-- Module : GHC.Weak
-----------------------------------------------------------------------------
-- |
-- Module : GHC.Weak
@@
-20,8
+26,7
@@
module GHC.Weak where
import GHC.Base
import Data.Maybe
import GHC.Base
import Data.Maybe
-import GHC.IOBase ( IO(..), unIO )
-import Data.Typeable ( Typeable1(..), mkTyCon, mkTyConApp )
+import Data.Typeable
{-|
A weak pointer object with a key and a value. The value has type @v@.
{-|
A weak pointer object with a key and a value. The value has type @v@.
@@
-123,10
+128,10
@@
runFinalizerBatch (I# n) arr =
let go m = IO $ \s ->
case m of
0# -> (# s, () #)
let go m = IO $ \s ->
case m of
0# -> (# s, () #)
- _ -> let m' = m -# 1# in
+ _ -> let !m' = m -# 1# in
case indexArray# arr m' of { (# io #) ->
case indexArray# arr m' of { (# io #) ->
- case unIO io s of { (# s, _ #) ->
- unIO (go m') s
+ case unIO io s of { (# s', _ #) ->
+ unIO (go m') s'
}}
in
go n
}}
in
go n