summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
17cbca8)
Removed use of COMPILING_GHC
\end{display}
The code is SPECIALIZEd to various highly-desirable types (e.g., Id)
\end{display}
The code is SPECIALIZEd to various highly-desirable types (e.g., Id)
-near the end (only \tr{#ifdef COMPILING_GHC}).
#include "HsVersions.h"
#define IF_NOT_GHC(a) {--}
#include "HsVersions.h"
#define IF_NOT_GHC(a) {--}
-#else
-#define ASSERT(e) {--}
-#define IF_NOT_GHC(a) a
-#define COMMA ,
-#define _tagCmp compare
-#define _LT LT
-#define _GT GT
-#define _EQ EQ
-#endif
-#if defined(COMPILING_GHC) && defined(DEBUG_FINITEMAPS)/* NB NB NB */
+#if defined(DEBUG_FINITEMAPS)/* NB NB NB */
#define OUTPUTABLE_key , Outputable key
#else
#define OUTPUTABLE_key {--}
#define OUTPUTABLE_key , Outputable key
#else
#define OUTPUTABLE_key {--}
, bagToFM
, SYN_IE(FiniteSet), emptySet, mkSet, isEmptySet
, elementOf, setToList, union, minusSet
, bagToFM
, SYN_IE(FiniteSet), emptySet, mkSet, isEmptySet
, elementOf, setToList, union, minusSet
) where
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ <= 201
) where
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ <= 201
import Outputable ( PprStyle, Outputable(..) )
import Pretty ( Doc )
import Outputable ( PprStyle, Outputable(..) )
import Pretty ( Doc )
-#ifdef COMPILING_GHC
-
-# if ! OMIT_NATIVE_CODEGEN
+#if ! OMIT_NATIVE_CODEGEN
-- SIGH: but we use unboxed "sizes"...
#if __GLASGOW_HASKELL__
#define IF_GHC(a,b) a
-- SIGH: but we use unboxed "sizes"...
#if __GLASGOW_HASKELL__
#define IF_GHC(a,b) a
unitFM :: key -> elt -> FiniteMap key elt
listToFM :: (Ord key OUTPUTABLE_key) => [(key,elt)] -> FiniteMap key elt
-- In the case of duplicates, the last is taken
unitFM :: key -> elt -> FiniteMap key elt
listToFM :: (Ord key OUTPUTABLE_key) => [(key,elt)] -> FiniteMap key elt
-- In the case of duplicates, the last is taken
bagToFM :: (Ord key OUTPUTABLE_key) => Bag (key,elt) -> FiniteMap key elt
-- In the case of duplicates, who knows which is taken
bagToFM :: (Ord key OUTPUTABLE_key) => Bag (key,elt) -> FiniteMap key elt
-- In the case of duplicates, who knows which is taken
-- ADDING AND DELETING
-- Throws away any previous binding
-- ADDING AND DELETING
-- Throws away any previous binding
listToFM = addListToFM emptyFM
listToFM = addListToFM emptyFM
bagToFM = foldrBag (\(k,v) fm -> addToFM fm k v) emptyFM
bagToFM = foldrBag (\(k,v) fm -> addToFM fm k v) emptyFM
\end{code}
%************************************************************************
\end{code}
%************************************************************************
mkBranch which key elt fm_l fm_r
= --ASSERT( left_ok && right_ok && balance_ok )
mkBranch which key elt fm_l fm_r
= --ASSERT( left_ok && right_ok && balance_ok )
-#if defined(COMPILING_GHC) && defined(DEBUG_FINITEMAPS)
+#if defined(DEBUG_FINITEMAPS)
if not ( left_ok && right_ok && balance_ok ) then
pprPanic ("mkBranch:"++show which) (vcat [ppr PprDebug [left_ok, right_ok, balance_ok],
ppr PprDebug key,
if not ( left_ok && right_ok && balance_ok ) then
pprPanic ("mkBranch:"++show which) (vcat [ppr PprDebug [left_ok, right_ok, balance_ok],
ppr PprDebug key,
%************************************************************************
\begin{code}
%************************************************************************
\begin{code}
-#if defined(COMPILING_GHC) && defined(DEBUG_FINITEMAPS)
+#if defined(DEBUG_FINITEMAPS)
instance (Outputable key) => Outputable (FiniteMap key elt) where
ppr sty fm = pprX sty fm
instance (Outputable key) => Outputable (FiniteMap key elt) where
ppr sty fm = pprX sty fm
instance (Eq key, Eq elt) => Eq (FiniteMap key elt) where
fm_1 == fm_2 = (sizeFM fm_1 == sizeFM fm_2) && -- quick test
(fmToList fm_1 == fmToList fm_2)
instance (Eq key, Eq elt) => Eq (FiniteMap key elt) where
fm_1 == fm_2 = (sizeFM fm_1 == sizeFM fm_2) && -- quick test
(fmToList fm_1 == fmToList fm_2)
%************************************************************************
\begin{code}
%************************************************************************
\begin{code}
type FiniteSet key = FiniteMap key ()
emptySet :: FiniteSet key
mkSet :: (Ord key OUTPUTABLE_key) => [key] -> FiniteSet key
type FiniteSet key = FiniteMap key ()
emptySet :: FiniteSet key
mkSet :: (Ord key OUTPUTABLE_key) => [key] -> FiniteSet key
setToList = keysFM
union = plusFM
setToList = keysFM
union = plusFM
\end{code}
%************************************************************************
\end{code}
%************************************************************************
\tr{Uniques}, for dastardly efficiency reasons.
\begin{code}
\tr{Uniques}, for dastardly efficiency reasons.
\begin{code}
-#if defined(COMPILING_GHC) && __GLASGOW_HASKELL__ && !defined(REALLY_HASKELL_1_3)
+#if __GLASGOW_HASKELL__ && !defined(REALLY_HASKELL_1_3)
{-# SPECIALIZE addListToFM
:: FiniteMap (FAST_STRING, FAST_STRING) elt -> [((FAST_STRING, FAST_STRING),elt)] -> FiniteMap (FAST_STRING, FAST_STRING) elt
{-# SPECIALIZE addListToFM
:: FiniteMap (FAST_STRING, FAST_STRING) elt -> [((FAST_STRING, FAST_STRING),elt)] -> FiniteMap (FAST_STRING, FAST_STRING) elt
IF_NCG(COMMA (elt -> elt -> elt) -> FiniteMap Reg elt -> FiniteMap Reg elt -> FiniteMap Reg elt)
#-}
IF_NCG(COMMA (elt -> elt -> elt) -> FiniteMap Reg elt -> FiniteMap Reg elt -> FiniteMap Reg elt)
#-}
-#endif {- compiling for GHC -}
+#endif {- compiling with ghc and have specialiser -}