Re: Dynamic code generation

2016-07-19 Thread ag0aep6g via Digitalmars-d-learn

On 07/20/2016 06:36 AM, Rufus Smith wrote:

Does D offer any solutions to generate code dynamically?


I don't think so.


I would like to
order based on optimal strategies. This requires effectively hard coding
the execution path.

A simple example,

if (x == true)
foo();
else
bar();

can be recoded to be foo() or bar() while x is fixed, in my case x is
fixed for long periods and therefor the check is unnecessary. I also
know when x changes in all cases. This is just a simple example, of
course. I would not want to resort to assembly programming to accomplish
this.


Just an idea:


void main()
{
setX(true);
f(); /* calls foo */
setX(false);
f(); /* calls bar */
}

void function() f;

void setX(bool x)
{
if (x) f = !true;
else f = !false;
}

void impl(bool x)()
{
static if (x) foo();
else bar();
}

void foo() { import std.stdio; writeln("foo"); }
void bar() { import std.stdio; writeln("bar"); }


Of course, if this is for optimization purposes, measure first if 
hard-coded is actually faster than the branch.


Dynamic code generation

2016-07-19 Thread Rufus Smith via Digitalmars-d-learn
Does D offer any solutions to generate code dynamically? I would 
like to order based on optimal strategies. This requires 
effectively hard coding the execution path.


A simple example,

if (x == true)
   foo();
else
   bar();

can be recoded to be foo() or bar() while x is fixed, in my case 
x is fixed for long periods and therefor the check is 
unnecessary. I also know when x changes in all cases. This is 
just a simple example, of course. I would not want to resort to 
assembly programming to accomplish this.