summaryrefslogtreecommitdiff
path: root/ghc/compiler/codeGen/CgClosure.lhs
diff options
context:
space:
mode:
Diffstat (limited to 'ghc/compiler/codeGen/CgClosure.lhs')
-rw-r--r--ghc/compiler/codeGen/CgClosure.lhs13
1 files changed, 9 insertions, 4 deletions
diff --git a/ghc/compiler/codeGen/CgClosure.lhs b/ghc/compiler/codeGen/CgClosure.lhs
index 20166c854b..ee6dfd4409 100644
--- a/ghc/compiler/codeGen/CgClosure.lhs
+++ b/ghc/compiler/codeGen/CgClosure.lhs
@@ -1,7 +1,7 @@
%
% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
%
-% $Id: CgClosure.lhs,v 1.59 2002/12/11 15:36:25 simonmar Exp $
+% $Id: CgClosure.lhs,v 1.60 2003/05/14 09:13:53 simonmar Exp $
%
\section[CgClosure]{Code generation for closures}
@@ -70,8 +70,11 @@ cgTopRhsClosure :: Id
cgTopRhsClosure id ccs binder_info srt args body lf_info
=
+ let
+ name = idName id
+ in
-- LAY OUT THE OBJECT
- getSRTInfo srt `thenFC` \ srt_info ->
+ getSRTInfo name srt `thenFC` \ srt_info ->
moduleName `thenFC` \ mod_name ->
let
name = idName id
@@ -177,10 +180,12 @@ cgRhsClosure binder cc binder_info srt fvs args body lf_info
reduced_fvs = if binder_is_a_fv
then fvs `minusList` [binder]
else fvs
+
+ name = idName binder
in
mapFCs getCAddrModeAndInfo reduced_fvs `thenFC` \ fvs_w_amodes_and_info ->
- getSRTInfo srt `thenFC` \ srt_info ->
+ getSRTInfo name srt `thenFC` \ srt_info ->
moduleName `thenFC` \ mod_name ->
let
descr = closureDescription mod_name (idName binder)
@@ -303,7 +308,7 @@ closureCodeBody binder_info closure_info cc all_args body
--
(case closureFunInfo closure_info of
Just (_, ArgGen slow_lbl liveness) ->
- absC (CBitmap liveness) `thenC`
+ absC (maybeLargeBitmap liveness) `thenC`
absC (mkSlowEntryCode name slow_lbl arg_regs arg_reps) `thenC`
returnFC (mkRegSaveCode arg_regs arg_reps)