February 09, 2013
Just to make sure I understood the calling convention used by DMD on x86:

core.thread.callWithStackShell currently uses pushad to ensure that all registers are on the stack to be scannable by the GC. But in theory it would be enough to push EBX, ESI and EDI, as the other registers would be saved by the callWithStackShell caller anyway if they contained something of interest. Correct?

Thanks,
David
_______________________________________________
dmd-internals mailing list
dmd-internals@puremagic.com
http://lists.puremagic.com/mailman/listinfo/dmd-internals

February 09, 2013
On 2/9/2013 12:14 AM, David Nadlinger wrote:
> Just to make sure I understood the calling convention used by DMD on x86:
>
> core.thread.callWithStackShell currently uses pushad to ensure that
> all registers are on the stack to be scannable by the GC. But in
> theory it would be enough to push EBX, ESI and EDI, as the other
> registers would be saved by the callWithStackShell caller anyway if
> they contained something of interest. Correct?
>

Yes.
_______________________________________________
dmd-internals mailing list
dmd-internals@puremagic.com
http://lists.puremagic.com/mailman/listinfo/dmd-internals