package org.graalvm.compiler.lir.alloc.trace;
import java.util.*;
import org.graalvm.compiler.options.*;
import org.graalvm.compiler.options.OptionType;
public class TraceRegisterAllocationPhase_OptionDescriptors implements OptionDescriptors {
@Override
public OptionDescriptor get(String value) {
switch (value) {
case "TraceRACacheStackSlots": {
return OptionDescriptor.create(
"TraceRACacheStackSlots",
OptionType.Debug,
Boolean.class,
"Cache stack slots globally (i.e. a variable always gets the same slot in every trace).",
TraceRegisterAllocationPhase.Options.class,
"TraceRACacheStackSlots",
TraceRegisterAllocationPhase.Options.TraceRACacheStackSlots);
}
case "TraceRAreuseStackSlotsForMoveResolutionCycleBreaking": {
return OptionDescriptor.create(
"TraceRAreuseStackSlotsForMoveResolutionCycleBreaking",
OptionType.Debug,
Boolean.class,
"Reuse spill slots for global move resolution cycle breaking.",
TraceRegisterAllocationPhase.Options.class,
"TraceRAreuseStackSlotsForMoveResolutionCycleBreaking",
TraceRegisterAllocationPhase.Options.TraceRAreuseStackSlotsForMoveResolutionCycleBreaking);
}
case "TraceRAshareSpillInformation": {
return OptionDescriptor.create(
"TraceRAshareSpillInformation",
OptionType.Debug,
Boolean.class,
"Share information about spilled values to other traces.",
TraceRegisterAllocationPhase.Options.class,
"TraceRAshareSpillInformation",
TraceRegisterAllocationPhase.Options.TraceRAshareSpillInformation);
}
case "TraceRAuseInterTraceHints": {
return OptionDescriptor.create(
"TraceRAuseInterTraceHints",
OptionType.Debug,
Boolean.class,
"Use inter-trace register hints.",
TraceRegisterAllocationPhase.Options.class,
"TraceRAuseInterTraceHints",
TraceRegisterAllocationPhase.Options.TraceRAuseInterTraceHints);
}
}
return null;
}
@Override
public Iterator<OptionDescriptor> iterator() {
return new Iterator<OptionDescriptor>() {
int i = 0;
@Override
public boolean hasNext() {
return i < 4;
}
@Override
public OptionDescriptor next() {
switch (i++) {
case 0: return get("TraceRACacheStackSlots");
case 1: return get("TraceRAreuseStackSlotsForMoveResolutionCycleBreaking");
case 2: return get("TraceRAshareSpillInformation");
case 3: return get("TraceRAuseInterTraceHints");
}
throw new NoSuchElementException();
}
};
}
}