use of org.graalvm.compiler.phases.Phase in project graal by oracle.
the class GraalCompilerTest method createSuites.
protected Suites createSuites(OptionValues opts) {
Suites ret = backend.getSuites().getDefaultSuites(opts).copy();
ListIterator<BasePhase<? super HighTierContext>> iter = ret.getHighTier().findPhase(ConvertDeoptimizeToGuardPhase.class, true);
if (iter == null) {
/*
* in the economy configuration, we don't have the ConvertDeoptimizeToGuard phase, so we
* just select the first CanonicalizerPhase in HighTier
*/
iter = ret.getHighTier().findPhase(CanonicalizerPhase.class);
}
iter.add(new Phase() {
@Override
protected void run(StructuredGraph graph) {
ComputeLoopFrequenciesClosure.compute(graph);
}
@Override
public float codeSizeIncrease() {
return NodeSize.IGNORE_SIZE_CONTRACT_FACTOR;
}
@Override
protected CharSequence getName() {
return "ComputeLoopFrequenciesPhase";
}
});
ret.getHighTier().appendPhase(new Phase() {
@Override
protected void run(StructuredGraph graph) {
assert checkHighTierGraph(graph) : "failed HighTier graph check";
}
@Override
public float codeSizeIncrease() {
return NodeSize.IGNORE_SIZE_CONTRACT_FACTOR;
}
@Override
protected CharSequence getName() {
return "CheckGraphPhase";
}
});
ret.getMidTier().appendPhase(new Phase() {
@Override
protected void run(StructuredGraph graph) {
assert checkMidTierGraph(graph) : "failed MidTier graph check";
}
@Override
public float codeSizeIncrease() {
return NodeSize.IGNORE_SIZE_CONTRACT_FACTOR;
}
@Override
protected CharSequence getName() {
return "CheckGraphPhase";
}
});
ret.getLowTier().appendPhase(new Phase() {
@Override
protected void run(StructuredGraph graph) {
assert checkLowTierGraph(graph) : "failed LowTier graph check";
}
@Override
public float codeSizeIncrease() {
return NodeSize.IGNORE_SIZE_CONTRACT_FACTOR;
}
@Override
protected CharSequence getName() {
return "CheckGraphPhase";
}
});
return ret;
}
use of org.graalvm.compiler.phases.Phase in project graal by oracle.
the class EnumSwitchTest method createSuites.
@Override
protected Suites createSuites(OptionValues options) {
Suites ret = super.createSuites(options);
ret.getHighTier().prependPhase(new Phase() {
@Override
protected void run(StructuredGraph graph) {
/* Array load from the enum switch map. */
assertTrue(graph.getNodes().filter(LoadIndexedNode.class).count() == 1);
/* The actual switch. */
assertTrue(graph.getNodes().filter(IntegerSwitchNode.class).count() == 1);
}
@Override
protected CharSequence getName() {
return "CheckGraphPhase";
}
});
ret.getHighTier().findPhase(RemoveValueProxyPhase.class).add(new Phase() {
@Override
protected void run(StructuredGraph graph) {
/* Re-writing of the switch cases eliminates the array load. */
assertTrue(graph.getNodes().filter(LoadIndexedNode.class).count() == 0);
/* The switch is still there. */
assertTrue(graph.getNodes().filter(IntegerSwitchNode.class).count() == 1);
}
@Override
protected CharSequence getName() {
return "CheckGraphPhase";
}
});
return ret;
}
Aggregations