freenode/#clasp - IRC Chatlog
Search
22:49:42
robink
drmeister: Hrm, not sure if it's possible to run an "OSX install" from Linux to see what would go in Contents/Resources/lib/fasl.
22:50:20
robink
drmeister: I'm having slight difficulty sussing out what's meant to go there from the wscript, but I have a fairly shaky handle on build tools, and a logarithmically more shaky handle on waf.
3:39:03
beach
Can't you just traverse the list of arguments and put each element in the place where the calling convention dictates it should be?
3:47:12
beach
I still don't see any permutations, but hey. Could you simplify those cases with a compiler macro on APPLY?
3:55:49
beach
For example, you could count on the case of there being more additional arguments to APPLY than you have registers in the calling convention.
3:57:27
drmeister
Are you calling the arguments in the last argument list the 'additional arguments' or any argument after the last one that would be passed in registers?
3:59:45
beach
Then you could have the compiler macro take (apply f ... l) and generate (f) (f x1) (f x1 x2) ... (f x1 ... xn) or (apply f x1 ... xn l) according to the length of l.
4:01:06
beach
Then you would have only one case to handle for apply, namely pass the "additional" arguments in registers, and the arguments in L on the stack.
4:02:12
beach
If there are more than n "additional" arguments, you take the performance hit and cons some of them to the list so that (apply x1 ... xn xn+1 l) becomes (apply x1 ... xn (cons xn+1 l))
4:04:58
drmeister
(2) The list l may be a Common Lisp list of cons cells or it may be a va_list - in which case I can't do (cons xn+1 l)
4:07:29
beach
It's a bit more complex because L can be any form, so you need to avoid multiple evaluations.
4:15:19
drmeister
I'll think on it more. I think it's going to be a combination of compiler macro, C++ and inline assembly - there doesn't seem to be a way to do much with llvm to set up the actual call.
4:17:36
beach
As I recall, you already have target-specific code, and this would just be a few lines of assembler if you simplify things with the compiler macro as I suggested.
4:18:07
beach
Only disadvantage to my solution is that you will cons when you have more "additional" arguments than there are registers.
4:20:16
drmeister
va_lists will complicate things and I might as well copy arguments onto the stack rather than consing cells.
4:37:35
drmeister
Well - I just about have the build system back up in a way where the executable can be put wherever you want and the ancillary files also.
4:38:18
drmeister
I thought I had it done but I just discovered a file that I hadn't saved - so I need to build again.