package polyglot.frontend;
import polyglot.main.Report;
/**
* A <code>BarrierPass</code> is a special pass that ensures that
* all jobs that a given job <code>J</code> depends on have completed at
* least up to the last <code>BarrierPass</code> that <code>J</code> has
* completed.
*/
public class BarrierPass extends AbstractPass
{
Job job;
public BarrierPass(Pass.ID id, Job job) {
super(id);
this.job = job;
}
/** Run all the other jobs with the same parent up to this pass. */
public boolean run() {
if (Report.should_report(Report.frontend, 1))
Report.report(1, job + " at barrier " + id);
if (Report.should_report(Report.frontend, 2))
Report.report(2, "dependencies of " + job.sourceJob() +
" = " + job.sourceJob().dependencies());
return true;
}
}