On 9 April 2015 at 14:38, Iain Buclaw <[email protected]> wrote: > On 9 April 2015 at 13:20, Daniel Murphy via Digitalmars-d > <[email protected]> wrote: >> "Iain Buclaw via Digitalmars-d" wrote in message >> news:[email protected]... >> >>> If under the same object file, you can happily emit: >>> >>> sub offset, %thisreg >>> jmp method >>> >>> But if doing separate compilation, many targets to not support doing >>> such operations across section boundaries. So a more general/agnostic >>> way to go about it is by copying all arguments, adjusting the 'this' >>> pointer and calling target method at the codegen level. This works so >>> long as you are not dealing with a variadic method (ie: >>> std.stream.Stream.printf) >> >> >> They don't support jumping across section boundaries? But they do support >> calling? >> >> Anyway it sounds like >> >> sub offset, %thisreg >> call method >> ret >> >> would do it > > That's not copying arguments. :-) > > Iain.
What is currently happening in GDC (Generic thunks don't support varargs though). https://github.com/D-Programming-GDC/GDC/pull/97#issuecomment-90275901
