Mercurial > projects > ldc
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; |