--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java 2017-03-20 17:37:49.000000000 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java 2017-03-20 17:37:49.000000000 -0700 @@ -22,8 +22,6 @@ */ package org.graalvm.compiler.core.target; -import java.util.Set; - import org.graalvm.compiler.asm.Assembler; import org.graalvm.compiler.code.CompilationResult; import org.graalvm.compiler.core.common.CompilationIdentifier; @@ -45,6 +43,7 @@ import org.graalvm.compiler.phases.tiers.SuitesProvider; import org.graalvm.compiler.phases.tiers.TargetProvider; import org.graalvm.compiler.phases.util.Providers; +import org.graalvm.util.EconomicSet; import jdk.vm.ci.code.BailoutException; import jdk.vm.ci.code.CodeCacheProvider; @@ -113,7 +112,13 @@ */ public abstract FrameMapBuilder newFrameMapBuilder(RegisterConfig registerConfig); - public abstract RegisterAllocationConfig newRegisterAllocationConfig(RegisterConfig registerConfig); + /** + * Creates a new configuration for register allocation. + * + * @param allocationRestrictedTo if not {@code null}, register allocation will be restricted to + * registers whose names appear in this array + */ + public abstract RegisterAllocationConfig newRegisterAllocationConfig(RegisterConfig registerConfig, String[] allocationRestrictedTo); public abstract FrameMap newFrameMap(RegisterConfig registerConfig); @@ -220,7 +225,7 @@ * is needed for architectures where input/output registers are renamed during a call (e.g. * register windows on SPARC). Registers which are not visible by the caller are removed. */ - public abstract Set translateToCallerRegisters(Set calleeRegisters); + public abstract EconomicSet translateToCallerRegisters(EconomicSet calleeRegisters); /** * Gets the compilation id for a given {@link ResolvedJavaMethod}. Returns