Compile time code paths
Jeremie Pelletier
jeremiep at gmail.com
Tue Aug 11 09:16:11 PDT 2009
Don Wrote:
> Jeremie Pelletier wrote:
> > David Gileadi Wrote:
> >
> >> Daniel Keep wrote:
> >>> Jeremie Pelletier wrote:
> >>>> If a function has both an asm and D implementations inside its body, and the D version can be executed at compile time, but the asm one is much faster at runtime. Is it possible to have the compiler use the D code path at compile time (ie to fill in enums and whatnot), and have the asm version available at runtime.
> >>> Not that I know of. There's no way to switch based on run time/compile
> >>> time. This was going to be solved, at least in part, using static
> >>> arguments, but that got dropped.
> >>>
> >>> As it stands, you just have to use a suffix or prefix or something to
> >>> distinguish CTFE methods from runtime methods.
> >> Is this a case for version(CompileTime){}?
> >
> > No because it would also compile this block into the binary.
>
> I think something like this might work:
>
> static if (__traits(CompileTime)) {
> ... // ctfe code
> } else {
> asm {
> ...
> }
> }
>
> Not sure what the exact syntax should be.
Good idea, I agree with the use of __traits here. The syntax looks great to me as it is.
More information about the Digitalmars-d
mailing list