Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/9b0c4ed70cb4394bb293e4e6f863f877debcd655

>---------------------------------------------------------------

commit 9b0c4ed70cb4394bb293e4e6f863f877debcd655
Author: Ian Lynagh <[email protected]>
Date:   Fri Sep 14 12:48:53 2012 +0100

    Start moving other constants from (Haskell)Constants to platformConstants

>---------------------------------------------------------------

 compiler/codeGen/CgExpr.lhs    |    5 ++---
 compiler/codeGen/StgCmmBind.hs |    4 ++--
 includes/HaskellConstants.hs   |    7 -------
 includes/mkDerivedConstants.c  |   24 ++++++++++++++++++++++++
 4 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/compiler/codeGen/CgExpr.lhs b/compiler/codeGen/CgExpr.lhs
index d57dec1..1519476 100644
--- a/compiler/codeGen/CgExpr.lhs
+++ b/compiler/codeGen/CgExpr.lhs
@@ -15,7 +15,6 @@ module CgExpr ( cgExpr ) where
 
 #include "HsVersions.h"
 
-import Constants
 import StgSyn
 import CgMonad
 
@@ -352,7 +351,7 @@ mkRhsClosure        dflags bndr cc bi
                            (StgApp selectee [{-no args-}]))])
   |  the_fv == scrutinee               -- Scrutinee is the only free variable
   && maybeToBool maybe_offset          -- Selectee is a component of the tuple
-  && offset_into_int <= mAX_SPEC_SELECTEE_SIZE -- Offset is small enough
+  && offset_into_int <= mAX_SPEC_SELECTEE_SIZE dflags -- Offset is small enough
   = -- NOT TRUE: ASSERT(is_single_constructor)
     -- The simplifier may have statically determined that the single 
alternative
     -- is the only possible case and eliminated the others, even if there are
@@ -396,7 +395,7 @@ mkRhsClosure dflags bndr cc bi
   | args `lengthIs` (arity-1)
        && all isFollowableArg (map idCgRep fvs) 
        && isUpdatable upd_flag
-       && arity <= mAX_SPEC_AP_SIZE 
+       && arity <= mAX_SPEC_AP_SIZE dflags
         && not (dopt Opt_SccProfilingOn dflags)
                                   -- not when profiling: we don't want to
                                   -- lose information about this particular
diff --git a/compiler/codeGen/StgCmmBind.hs b/compiler/codeGen/StgCmmBind.hs
index 105aa0f..aac1abf 100644
--- a/compiler/codeGen/StgCmmBind.hs
+++ b/compiler/codeGen/StgCmmBind.hs
@@ -243,7 +243,7 @@ mkRhsClosure    dflags bndr _cc _bi
                             (StgApp selectee [{-no args-}]))])
   |  the_fv == scrutinee                -- Scrutinee is the only free variable
   && maybeToBool maybe_offset           -- Selectee is a component of the tuple
-  && offset_into_int <= mAX_SPEC_SELECTEE_SIZE  -- Offset is small enough
+  && offset_into_int <= mAX_SPEC_SELECTEE_SIZE dflags -- Offset is small enough
   = -- NOT TRUE: ASSERT(is_single_constructor)
     -- The simplifier may have statically determined that the single 
alternative
     -- is the only possible case and eliminated the others, even if there are
@@ -272,7 +272,7 @@ mkRhsClosure    dflags bndr _cc _bi
   | args `lengthIs` (arity-1)
         && all (isGcPtrRep . idPrimRep . stripNV) fvs
         && isUpdatable upd_flag
-        && arity <= mAX_SPEC_AP_SIZE
+        && arity <= mAX_SPEC_AP_SIZE dflags
         && not (dopt Opt_SccProfilingOn dflags)
                                   -- not when profiling: we don't want to
                                   -- lose information about this particular
diff --git a/includes/HaskellConstants.hs b/includes/HaskellConstants.hs
index 9abe717..f2a5b22 100644
--- a/includes/HaskellConstants.hs
+++ b/includes/HaskellConstants.hs
@@ -34,13 +34,6 @@ mAX_CONTEXT_REDUCTION_DEPTH :: Int
 mAX_CONTEXT_REDUCTION_DEPTH = 200
   -- Increase to 200; see Trac #5395
 
--- pre-compiled thunk types
-mAX_SPEC_SELECTEE_SIZE :: Int
-mAX_SPEC_SELECTEE_SIZE = MAX_SPEC_SELECTEE_SIZE
-
-mAX_SPEC_AP_SIZE :: Int
-mAX_SPEC_AP_SIZE = MAX_SPEC_AP_SIZE
-
 -- closure sizes: these do NOT include the header (see below for header sizes)
 mIN_PAYLOAD_SIZE ::Int
 mIN_PAYLOAD_SIZE = MIN_PAYLOAD_SIZE
diff --git a/includes/mkDerivedConstants.c b/includes/mkDerivedConstants.c
index 69c87f0..92024d3 100644
--- a/includes/mkDerivedConstants.c
+++ b/includes/mkDerivedConstants.c
@@ -293,6 +293,26 @@ enum Mode { Gen_Haskell_Type, Gen_Haskell_Value, 
Gen_Haskell_Wrappers, Gen_Haske
 
 #define FUN_OFFSET(sym) (OFFSET(Capability,f.sym) - OFFSET(Capability,r))
 
+void constantInt(char *name, intptr_t val) {
+    switch (mode) {
+    case Gen_Haskell_Type:
+        printf("    , pc_%s :: Int\n", name);
+        break;
+    case Gen_Haskell_Value:
+        printf("    , pc_%s = %" PRIdPTR "\n", name, val);
+        break;
+    case Gen_Haskell_Wrappers:
+        printf("%s :: DynFlags -> Int\n", name);
+        printf("%s dflags = pc_%s (sPlatformConstants (settings dflags))\n",
+               name, name);
+        break;
+    case Gen_Haskell_Exports:
+        printf("    %s,\n", name);
+        break;
+    case Gen_Header:
+        break;
+    }
+}
 
 int
 main(int argc, char *argv[])
@@ -602,6 +622,10 @@ main(int argc, char *argv[])
     }
 #endif
 
+    // pre-compiled thunk types
+    constantInt("mAX_SPEC_SELECTEE_SIZE", MAX_SPEC_SELECTEE_SIZE);
+    constantInt("mAX_SPEC_AP_SIZE", MAX_SPEC_AP_SIZE);
+
     switch (mode) {
     case Gen_Haskell_Type:
         printf("  } deriving (Read, Show)\n");



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to