For the lulz: ddmd vs libdparse lexer timings

Daniel Murphy via Digitalmars-d digitalmars-d at puremagic.com
Fri Jan 16 06:15:03 PST 2015


"Iain Buclaw via Digitalmars-d"  wrote in message 
news:mailman.4161.1420481405.9932.digitalmars-d at puremagic.com...

> >
> > I think I've got a handle on this, sort of.  I've moved the declaration 
> > of
> > __va_argsave into the glue layer, and added intrinsic detection for
> > va_start/va_end/va_arg (the two-arg form).
> >
> > I've implemented them in the backend for win32 and they have passed a 
> > simple
> > test!
> >

I now have it working (and tested) for win32/linux32/linux64.  va_start and 
va_copy will probably both need intrinsics, but druntime's va_arg is fine. 
On x86_64 all I do is completely ignore the second parameter to va_start and 
memcpy the fields in.

I haven't done va_copy yet, but it should be fairly simple.

> > Do you think we can change _all_ the druntime and phobos code to just 
> > use
> > va_arg directly?  It would be nice to have it all portable like that.
>
> Oh, yeah, do it!  You have references to __va_argsave in phobos, don't 
> you?

There are a _lot_ in lifetime.d.  These should have been replaced with 
non-variadic versions years ago, so I'm going to do that instead of trying 
to un-hack them.

https://github.com/D-Programming-Language/dmd/pull/4303
https://github.com/D-Programming-Language/druntime/pull/1102 



More information about the Digitalmars-d mailing list