[Issue 4172] Improve varargs

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Nov 26 01:02:24 PST 2010


http://d.puremagic.com/issues/show_bug.cgi?id=4172



--- Comment #4 from nfxjfg at gmail.com 2010-11-26 01:00:56 PST ---
(In reply to comment #2)
> (In reply to comment #1)
> > The clean way to fix this (and what LDC does) is to pack all arguments
> > (aligning them) in a stack allocated array, create the typeinfo array, and then
> > call the function passing to it a void* to the packed array and the typeinfo
> > array.
> 
> Doesn't dmd do the same?

Yeah, it looks like dmd on 64 bit will emulate the old shitty way that was
"natural" for dmd on 32 bit. But I don't understand why you would WANT to do
that. Why emulate something broken and hard to use? Passing an array of void*
to each parameter (see _argarray in issue description) would be so much easier.

> More handy way is to pack arguments into struct and pass single TypeInfo for
> that struct. It already has all necessary align and offset info there.

Not sure what you mean by that. There's no RTTI for struct members, so this
would be very not-useful. You'd still need to pass _arguments, and you'd still
need to follow the ABI for the struct layout (granted, better than trying to
follow the stack layout).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list