Commit c84e392e authored by simonmar's avatar simonmar
Browse files

[project @ 2005-04-28 15:28:05 by simonmar]

Small code-size optimisation: I forgot to add a specialised case for
functions with no argument words (which might happen if the function
takes a void argument, for example).
parent 344d961b
......@@ -108,6 +108,8 @@ argBits (PtrArg : args) = False : argBits args
argBits (arg : args) = take (cgRepSizeW arg) (repeat True) ++ argBits args
stdPattern :: [CgRep] -> Maybe Int
stdPattern [] = Just ARG_NONE -- just void args, probably
stdPattern [PtrArg] = Just ARG_P
stdPattern [FloatArg] = Just ARG_F
stdPattern [DoubleArg] = Just ARG_D
......
......@@ -16,34 +16,37 @@
/* BCO - function is really a BCO */
#define ARG_BCO 2
/* specialised function types: bitmaps and calling sequences
* for these functions are pre-generated (see ghc/utils/genapply), and
* the generated code in ghc/rts/AutoApply.hc.
/*
* Specialised function types: bitmaps and calling sequences
* for these functions are pre-generated: see ghc/utils/genapply and
* generated code in ghc/rts/AutoApply.cmm.
*
* NOTE: this ordering/numbering is hard-coded into the tables
* generated by GenApply.hs which end up in AutoApply.cmm.
* NOTE: other places to change if you change this table:
* - utils/genapply/GenApply.hs: stackApplyTypes
* - compiler/codeGen/CgCallConv.lhs: stdPattern
*/
#define ARG_N 3
#define ARG_P 4
#define ARG_F 5
#define ARG_D 6
#define ARG_L 7
#define ARG_NN 8
#define ARG_NP 9
#define ARG_PN 10
#define ARG_PP 11
#define ARG_NNN 12
#define ARG_NNP 13
#define ARG_NPN 14
#define ARG_NPP 15
#define ARG_PNN 16
#define ARG_PNP 17
#define ARG_PPN 18
#define ARG_PPP 19
#define ARG_PPPP 20
#define ARG_PPPPP 21
#define ARG_PPPPPP 22
#define ARG_PPPPPPP 23
#define ARG_PPPPPPPP 24
#define ARG_NONE 3
#define ARG_N 4
#define ARG_P 5
#define ARG_F 6
#define ARG_D 7
#define ARG_L 8
#define ARG_NN 9
#define ARG_NP 10
#define ARG_PN 11
#define ARG_PP 12
#define ARG_NNN 13
#define ARG_NNP 14
#define ARG_NPN 15
#define ARG_NPP 16
#define ARG_PNN 17
#define ARG_PNP 18
#define ARG_PPN 19
#define ARG_PPP 20
#define ARG_PPPP 21
#define ARG_PPPPP 22
#define ARG_PPPPPP 23
#define ARG_PPPPPPP 24
#define ARG_PPPPPPPP 25
#endif /* STGFUN_H */
......@@ -557,6 +557,7 @@ applyTypes = [
-- between N and P (they both live in the same register), only the bitmap
-- changes, so we could share the apply/save code between lots of cases.
stackApplyTypes = [
[],
[N],
[P],
[F],
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment