... | ... | @@ -55,10 +55,10 @@ When compiling a call that has an unknown function, we must generate code to |
|
|
- Too many arguments: save the excess arguments, and tail call the function as for a saturated cal.
|
|
|
|
|
|
|
|
|
All of this takes quite a lot of code, so we pre-generate a whole bunch of generic-apply code sequencues, one for each combination of arguments. This code is generated by the tool [utils/genapply](https://gitlab.haskell.org/ghc/ghc/blob/master/utils/genapply), and the generated code appears in `rts/AutoApply.cmm`.
|
|
|
All of this takes quite a lot of code, so we pre-generate a whole bunch of generic-apply code sequences, one for each combination of arguments. This code is generated by the tool [utils/genapply](https://gitlab.haskell.org/ghc/ghc/blob/master/utils/genapply), and the generated code appears in `rts/AutoApply.cmm`.
|
|
|
|
|
|
|
|
|
For example, if we find a call to an unknown function applied to two (boxed) `Int` arguments, load the function and its two arguments as for the standard entry convention and jump to `stg_ap_pp_fast`. This latter code is in `rts/AutoApply.cmm`, generated by the `genapply` tool. The "`pp`" part is the bit that says the code is specialised for two pointer arguments.
|
|
|
For example, if we find a call to an unknown function applied to two (boxed) `Int` arguments, load the function and its two arguments as for the standard entry convention and jump to `stg_ap_pp_fast`. This latter code is in `rts/AutoApply.cmm`, generated by the `genapply` tool. The "`pp`" part is the bit that says the code is specialized for two pointer arguments.
|
|
|
|
|
|
|
|
|
|
... | ... | |