comparison tango/tango/text/convert/Layout.d @ 264:a9dae3da4e87 trunk

[svn r285] Fixed D -> bool LLVM helper for floating point values. Changed the way D-style varargs are passed, now each param should be aligned to size_t.sizeof.
author lindquist
date Sat, 14 Jun 2008 17:28:13 +0200
parents 7816aafeea3c
children
comparison
equal deleted inserted replaced
263:2be09ee06bc7 264:a9dae3da4e87
193 assert (formatStr, "null format specifier"); 193 assert (formatStr, "null format specifier");
194 assert (arguments.length < 64, "too many args in Layout.convert"); 194 assert (arguments.length < 64, "too many args in Layout.convert");
195 195
196 version (LLVMDC) 196 version (LLVMDC)
197 { 197 {
198 // code for LLVMDC, all targets!
199 Arg[64] arglist = void;
200 foreach (i, arg; arguments)
201 {
202 arglist[i] = args;
203 args += (arg.tsize + size_t.sizeof - 1) & ~ (size_t.sizeof - 1);
204 }
205 /*
198 static va_list get_va_arg(TypeInfo ti, ref va_list vp) 206 static va_list get_va_arg(TypeInfo ti, ref va_list vp)
199 { 207 {
200 auto tisize = ti.tsize; 208 auto tisize = ti.tsize;
201 size_t size = tisize > size_t.sizeof ? size_t.sizeof : tisize; 209 size_t size = tisize > size_t.sizeof ? size_t.sizeof : tisize;
202 va_list vptmp = cast(va_list)((cast(size_t)vp + size - 1) & ~(size - 1)); 210 va_list vptmp = cast(va_list)((cast(size_t)vp + size - 1) & ~(size - 1));
207 Arg[64] arglist = void; 215 Arg[64] arglist = void;
208 foreach (i, arg; arguments) 216 foreach (i, arg; arguments)
209 { 217 {
210 arglist[i] = get_va_arg(arg, args); 218 arglist[i] = get_va_arg(arg, args);
211 } 219 }
220 */
212 } 221 }
213 else version (X86_64) 222 else version (X86_64)
214 { 223 {
215 // code for x86-64 GDC 224 // code for x86-64 GDC
216 Arg[64] arglist = void; 225 Arg[64] arglist = void;