src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/alloc/RegisterAllocationConfig.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/alloc/RegisterAllocationConfig.java

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/alloc/RegisterAllocationConfig.java

Print this page

        

*** 20,41 **** * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.core.common.alloc; ! import static org.graalvm.compiler.core.common.GraalOptions.RegisterPressure; ! ! import java.util.HashMap; ! import java.util.Map; import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterArray; import jdk.vm.ci.code.RegisterConfig; import jdk.vm.ci.meta.PlatformKind; - import org.graalvm.compiler.core.common.GraalOptions; - /** * Configuration for register allocation. This is different to {@link RegisterConfig} as it only * returns registers specified by {@link GraalOptions#RegisterPressure}. */ public class RegisterAllocationConfig { --- 20,38 ---- * or visit www.oracle.com if you need additional information or have any * questions. */ package org.graalvm.compiler.core.common.alloc; ! import org.graalvm.compiler.core.common.GraalOptions; ! import org.graalvm.util.EconomicMap; ! import org.graalvm.util.Equivalence; import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterArray; import jdk.vm.ci.code.RegisterConfig; import jdk.vm.ci.meta.PlatformKind; /** * Configuration for register allocation. This is different to {@link RegisterConfig} as it only * returns registers specified by {@link GraalOptions#RegisterPressure}. */ public class RegisterAllocationConfig {
*** 80,108 **** } throw new IllegalArgumentException("register " + name + " is not allocatable"); } protected RegisterArray initAllocatable(RegisterArray registers) { ! if (RegisterPressure.getValue() != null && !RegisterPressure.getValue().equals(ALL_REGISTERS)) { ! String[] names = RegisterPressure.getValue().split(","); ! Register[] regs = new Register[names.length]; ! for (int i = 0; i < names.length; i++) { ! regs[i] = findRegister(names[i], registers); } return new RegisterArray(regs); } return registers; } protected final RegisterConfig registerConfig; ! private final Map<PlatformKind.Key, AllocatableRegisters> categorized = new HashMap<>(); private RegisterArray cachedRegisters; ! public RegisterAllocationConfig(RegisterConfig registerConfig) { assert registerConfig != null; this.registerConfig = registerConfig; } /** * Gets the set of registers that can be used by the register allocator for a value of a * particular kind. --- 77,110 ---- } throw new IllegalArgumentException("register " + name + " is not allocatable"); } protected RegisterArray initAllocatable(RegisterArray registers) { ! if (allocationRestrictedTo != null) { ! Register[] regs = new Register[allocationRestrictedTo.length]; ! for (int i = 0; i < allocationRestrictedTo.length; i++) { ! regs[i] = findRegister(allocationRestrictedTo[i], registers); } return new RegisterArray(regs); } return registers; } protected final RegisterConfig registerConfig; ! private final EconomicMap<PlatformKind.Key, AllocatableRegisters> categorized = EconomicMap.create(Equivalence.DEFAULT); ! private final String[] allocationRestrictedTo; private RegisterArray cachedRegisters; ! /** ! * @param allocationRestrictedTo if not {@code null}, register allocation will be restricted to ! * registers whose names appear in this array ! */ ! public RegisterAllocationConfig(RegisterConfig registerConfig, String[] allocationRestrictedTo) { assert registerConfig != null; this.registerConfig = registerConfig; + this.allocationRestrictedTo = allocationRestrictedTo; } /** * Gets the set of registers that can be used by the register allocator for a value of a * particular kind.
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/alloc/RegisterAllocationConfig.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File