Adjustor thunks and variadic arguments.
Iain Buclaw via Digitalmars-d
digitalmars-d at puremagic.com
Thu Apr 9 05:42:16 PDT 2015
On 9 April 2015 at 14:38, Iain Buclaw <ibuclaw at gdcproject.org> wrote:
> On 9 April 2015 at 13:20, Daniel Murphy via Digitalmars-d
> <digitalmars-d at puremagic.com> wrote:
>> "Iain Buclaw via Digitalmars-d" wrote in message
>> news:mailman.1364.1428563414.3111.digitalmars-d at puremagic.com...
>>
>>> 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
More information about the Digitalmars-d
mailing list