wmoo: experiments continue after trace window
We don't know what data will be accessed later (trace is too short), so do real experiments to be sure. This could be done in a smarter way by using a long enough trace. git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1153 8c4709b5-6ec9-48aa-a5cd-a96041d1645a
This commit is contained in:
@ -161,14 +161,32 @@ bool WeathermonitorCampaign::run()
|
|||||||
// result comparable to the non-pruned campaign.
|
// result comparable to the non-pruned campaign.
|
||||||
// XXX still true for weathermonitor?
|
// XXX still true for weathermonitor?
|
||||||
current_ec.instr2 = instr - 1;
|
current_ec.instr2 = instr - 1;
|
||||||
current_ec.instr2_absolute = 0; // won't be used
|
current_ec.instr2_absolute = 0; // unknown
|
||||||
current_ec.data_address = data_address;
|
current_ec.data_address = data_address;
|
||||||
// zero-sized? skip.
|
// zero-sized? skip.
|
||||||
if (current_ec.instr1 > current_ec.instr2) {
|
if (current_ec.instr1 > current_ec.instr2) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// as the experiment ends, this byte is a "don't care":
|
// the run continues after the FI window, so do this experiment
|
||||||
ecs_no_effect.push_back(current_ec);
|
// XXX this creates at least one experiment for *every* bit!
|
||||||
|
// fix: full trace, limited FI window
|
||||||
|
//ecs_no_effect.push_back(current_ec);
|
||||||
|
ecs_need_experiment.push_back(current_ec);
|
||||||
|
|
||||||
|
// FIXME copy/paste, encapsulate this:
|
||||||
|
// instantly enqueue job: that way the job clients can already
|
||||||
|
// start working in parallel
|
||||||
|
WeathermonitorExperimentData *d = new WeathermonitorExperimentData;
|
||||||
|
// we pick the rightmost instruction in that interval
|
||||||
|
d->msg.set_instr_offset(current_ec.instr2);
|
||||||
|
//d->msg.set_instr_address(current_ec.instr2_absolute); // unknown!
|
||||||
|
d->msg.set_mem_addr(current_ec.data_address);
|
||||||
|
|
||||||
|
// store index into ecs_need_experiment
|
||||||
|
experiment_ecs[d] = ecs_need_experiment.size() - 1;
|
||||||
|
|
||||||
|
fi::campaignmanager.addParam(d);
|
||||||
|
++count;
|
||||||
}
|
}
|
||||||
|
|
||||||
fi::campaignmanager.noMoreParameters();
|
fi::campaignmanager.noMoreParameters();
|
||||||
|
|||||||
Reference in New Issue
Block a user