projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f672e79
)
Fix for function info tables: the SRT field cannot be omitted if there are fields...
author
Simon Marlow
<simonmar@microsoft.com>
Tue, 3 Jul 2007 14:05:06 +0000
(14:05 +0000)
committer
Simon Marlow
<simonmar@microsoft.com>
Tue, 3 Jul 2007 14:05:06 +0000
(14:05 +0000)
compiler/cmm/CmmInfo.hs
patch
|
blob
|
history
diff --git
a/compiler/cmm/CmmInfo.hs
b/compiler/cmm/CmmInfo.hs
index
5937dd4
..
3f458b5
100644
(file)
--- a/
compiler/cmm/CmmInfo.hs
+++ b/
compiler/cmm/CmmInfo.hs
@@
-85,12
+85,12
@@
mkInfoTable uniq (CmmProc info entry_label arguments blocks) =
where
fun_extra_bits =
[packHalfWordsCLit fun_type fun_arity] ++
where
fun_extra_bits =
[packHalfWordsCLit fun_type fun_arity] ++
- srt_label ++
case pap_bitmap of
ArgGen liveness ->
case pap_bitmap of
ArgGen liveness ->
+ (if null srt_label then [mkIntCLit 0] else srt_label) ++
[makeRelativeRefTo info_label $ mkLivenessCLit liveness,
makeRelativeRefTo info_label slow_entry]
[makeRelativeRefTo info_label $ mkLivenessCLit liveness,
makeRelativeRefTo info_label slow_entry]
- _ -> []
+ _ -> srt_label
std_info = mkStdInfoTable ty_prof cl_prof type_tag srt_bitmap layout
info_label = entryLblToInfoLbl entry_label
(srt_label, srt_bitmap) = mkSRTLit info_label srt
std_info = mkStdInfoTable ty_prof cl_prof type_tag srt_bitmap layout
info_label = entryLblToInfoLbl entry_label
(srt_label, srt_bitmap) = mkSRTLit info_label srt
@@
-121,12
+121,11
@@
mkInfoTable uniq (CmmProc info entry_label arguments blocks) =
-- | A selector thunk.
CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag
(ThunkSelectorInfo offset srt) ->
-- | A selector thunk.
CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag
(ThunkSelectorInfo offset srt) ->
- mkInfoTableAndCode info_label std_info srt_label entry_label
+ mkInfoTableAndCode info_label std_info [{- no SRT -}] entry_label
arguments blocks
where
arguments blocks
where
- std_info = mkStdInfoTable ty_prof cl_prof type_tag srt_bitmap (mkWordCLit offset)
+ std_info = mkStdInfoTable ty_prof cl_prof type_tag 0 (mkWordCLit offset)
info_label = entryLblToInfoLbl entry_label
info_label = entryLblToInfoLbl entry_label
- (srt_label, srt_bitmap) = mkSRTLit info_label srt
-- A continuation/return-point.
CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag (ContInfo stack_layout srt) ->
-- A continuation/return-point.
CmmInfo (ProfilingInfo ty_prof cl_prof) _ type_tag (ContInfo stack_layout srt) ->