createAdjustor for Alpha (and Sparc)
Lennart Augustsson
lennart@augustsson.net
Wed, 25 Jul 2001 09:51:09 +0200
Ken Shan wrote:
> such that calling
>
> (*adjustor)({argument values})
>
> is equivalent to calling
>
> (*wptr)(hptr, {undefined/ignored pointer}, {argument values}).
>
> This goal seems difficult to achieve on the Alpha, since its
> complicated calling convention puts arguments in registers, and we
> don't know how many arguments there are, let alone how to adjust the
> stack if needed.
And it's very complicated on the MIPS too where the argument passing
convention depends on the type of the arguments. Perhaps the GHC
way is too simplistic? I did these kinds of things for a number of platforms
many years (8?) ago and came to the conclusion that the most realiable
way was to create a fast array of functions for different argument combinations.
Once you get beyond a certain number of arguments all platforms start
using the stack and then you are safe again.
But it's a mess.
-- Lennart