I've put notes on my understanding of extra bytes reserved by alloca when using gcc on github comment below:
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/ae8cb1011408487ddca...
AFAICT, it seems that win64 x64 gcc alloca works the same (Don't remember though if the difference was alloca return value=sp+8 or sp+16).
So x64 win64 FFI only works because we force sp before calling externalFunction with:
if ((0 + (cStackAlignment())) > 0) { setsp((calloutState->argVector)); }
Nicolas
vm-dev@lists.squeakfoundation.org