[project @ 2001-10-25 02:13:10 by sof]
[ghc-hetmet.git] / ghc / compiler / codeGen / CgLetNoEscape.lhs
index f122b96..8562b67 100644 (file)
@@ -1,7 +1,7 @@
 %
 % (c) The GRASP/AQUA Project, Glasgow University, 1993-1998
 %
-% $Id: CgLetNoEscape.lhs,v 1.13 1999/05/13 17:30:57 simonm Exp $
+% $Id: CgLetNoEscape.lhs,v 1.16 2001/10/25 02:13:11 sof Exp $
 %
 %********************************************************
 %*                                                     *
@@ -19,7 +19,6 @@ import {-# SOURCE #-} CgExpr ( cgExpr )
 import StgSyn
 import CgMonad
 import AbsCSyn
-import CLabel          ( CLabel )
 
 import CgBindery       ( letNoEscapeIdInfo, bindArgsToRegs,
                          bindNewToStack, buildContLivenessMask, CgIdInfo,
@@ -36,8 +35,9 @@ import CostCentre       ( CostCentreStack )
 import Id              ( idPrimRep, Id )
 import Var             ( idUnique )
 import PrimRep         ( PrimRep(..), retPrimRepSize )
-import Unique          ( Unique )
 import BasicTypes      ( RecFlag(..) )
+import Unique          ( Unique )
+import Util            ( splitAtList )
 \end{code}
 
 %************************************************************************
@@ -171,12 +171,12 @@ cgLetNoEscapeClosure
        (allocStackTop retPrimRepSize   `thenFC` \_ ->
         nukeDeadBindings full_live_in_rhss)
 
-       (deAllocStackTop retPrimRepSize   `thenFC` \_ ->
-        buildContLivenessMask uniq       `thenFC` \ liveness ->
+       (deAllocStackTop retPrimRepSize         `thenFC` \_ ->
+        buildContLivenessMask uniq             `thenFC` \ liveness ->
         forkAbsC (cgLetNoEscapeBody binder cc args body uniq) 
                                                `thenFC` \ code ->
-        getSRTLabel                            `thenFC` \ srt_label -> 
-        absC (CRetDirect uniq code (srt_label,srt) liveness)
+        getSRTInfo srt                         `thenFC` \ srt_info -> 
+        absC (CRetDirect uniq code srt_info liveness)
                `thenC` returnFC ())
                                        `thenFC` \ (vSp, _) ->
 
@@ -199,7 +199,7 @@ cgLetNoEscapeBody binder cc all_args body uniq
      let
        arg_kinds            = map idPrimRep all_args
        (arg_regs, _)        = assignRegs [{-nothing live-}] arg_kinds
-       (reg_args, stk_args) = splitAt (length arg_regs) all_args
+       (reg_args, stk_args) = splitAtList arg_regs all_args
 
        (sp_stk_args, stk_offsets, stk_tags)
          = mkTaggedVirtStkOffsets sp idPrimRep stk_args