The cost of guaranteed tail call optimization is that you have to adopt the Pascal (callee side) convention for stack frame cleanup, so functions can’t reuse outgoing argument space. Does it matter in practice? Dunno.
I haven’t thought through that in detail, but it’s definitely not the C ABI anymore if you do that.
-
-
Ah, I see -- or maybe I don't. Weren't you saying proper TCO demands the Pascal convention (or something like it)? Which is of course not C ABI either.
-
Right, that’s what I mean. You have to do *something* different from the C calling convention. Does it matter? I dunno! Someone should test :)
-
What does it mean to test this? If Chez or MLton has really fast function calls, does it prove something?
-
Run SPECint with an LLVM that compiles all functions with your custom calling convention?
-
Here's a different test: have any languages with tail calls ever tried to find opportunities to use the C convention? I think the answer is no, but I certainly don't know every system.
-
I doubt it, but that’s probably due to history more than anything else. The Lisp/Scheme tradition way predates the C ABI becoming ubiquitous.
End of conversation
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.