On Monday, 15 May 2017 at 20:14:49 UTC, ag0aep6g wrote:
Say, the function ABI uses EAX, EBX, and ECX for the first three arguments (in that order). For a function call `f(1, 2)` that means:

    EAX: 1
    EBX: 2
    ECX: not used

For a delegate call `dg(1, 2)` I'd also put 1 and 2 into EAX and EBX. Additionally, the context pointer would be passed in ECX.

Calls to normal functions are supposed to stay as they are. Only method/delegate calls should be affected.

If you just want to append an extra context arg by passing it as last actual arg, it'll end up in the stack sooner or later, and that, I guess, is where bad things may happen by just pushing an additional arg, not matching the function signature.

Reply via email to