[project @ 1998-01-08 18:03:08 by simonm]
[ghc-hetmet.git] / ghc / compiler / codeGen / CgLetNoEscape.lhs
index 5480e93..c7dee22 100644 (file)
@@ -8,24 +8,29 @@
 %********************************************************
 
 \begin{code}
+module CgLetNoEscape ( cgLetNoEscapeClosure ) where
+
 #include "HsVersions.h"
 
-module CgLetNoEscape ( cgLetNoEscapeClosure ) where
+import {-# SOURCE #-} CgExpr ( cgExpr )
 
 import StgSyn
 import CgMonad
 import AbsCSyn
 
-import CgBindery       -- various things
-import CgExpr          ( cgExpr )
+import CgBindery       ( letNoEscapeIdInfo, bindArgsToRegs,
+                         bindNewToAStack, bindNewToBStack,
+                         CgIdInfo
+                       )
 import CgHeapery       ( heapCheck )
 import CgRetConv       ( assignRegs )
 import CgStackery      ( mkVirtStkOffsets )
 import CgUsages                ( setRealAndVirtualSps, getVirtSps )
-import CLabel  ( mkStdEntryLabel )
+import CLabel          ( mkStdEntryLabel )
 import ClosureInfo     ( mkLFLetNoEscape )
-import Id              ( getIdPrimRep )
-import Util
+import CostCentre       ( CostCentre )
+import HeapOffs                ( VirtualSpBOffset )
+import Id              ( idPrimRep, Id )
 \end{code}
 
 %************************************************************************
@@ -164,23 +169,22 @@ cgLetNoEscapeBody :: [Id]         -- Args
 
 cgLetNoEscapeBody all_args rhs
   = getVirtSps         `thenFC` \ (vA, vB) ->
-    getIntSwitchChkrC  `thenFC` \ isw_chkr ->
     let
-       arg_kinds       = map getIdPrimRep all_args
-       (arg_regs, _)   = assignRegs isw_chkr [{-nothing live-}] arg_kinds
-       stk_args        = drop (length arg_regs) all_args
+       arg_kinds            = map idPrimRep all_args
+       (arg_regs, _)        = assignRegs [{-nothing live-}] arg_kinds
+       (reg_args, stk_args) = splitAt (length arg_regs) all_args
 
        -- stk_args is the args which are passed on the stack at the fast-entry point
        -- Using them, we define the stack layout
        (spA_stk_args, spB_stk_args, stk_bxd_w_offsets, stk_ubxd_w_offsets)
          = mkVirtStkOffsets
                vA vB           -- Initial virtual SpA, SpB
-               getIdPrimRep
+               idPrimRep
                stk_args
     in
 
        -- Bind args to appropriate regs/stk locns
-    bindArgsToRegs all_args arg_regs               `thenC`
+    bindArgsToRegs reg_args arg_regs               `thenC`
     mapCs bindNewToAStack stk_bxd_w_offsets        `thenC`
     mapCs bindNewToBStack stk_ubxd_w_offsets       `thenC`
     setRealAndVirtualSps spA_stk_args spB_stk_args  `thenC`