AFAICT, Parrot uses function pointers for NCI.  This means NCI uses
whatever calling convention the compiler uses by default.
Unfortunately, there's More Than One Way To Do It.

On Windows, there's the C calling convention (__cdecl), which is usually
used by default by the Visual C++ compiler.  There's also the standard
(__stdcall) and fast (__fastcall) calling convention.  I haven't seen
any use of fastcall, but stdcall is used by the Win32 API.  Using the
wrong calling convention most certainly blows the stack.

I think we need a way to select the calling convention for a function,
similar to, or maybe even part of, the signature.  Also, it would be
good to have a way to select a calling convention when loading a
library, as a calling convention is usually used consistently, and
providing defaults for well known libraries.

Ron

Reply via email to