# HG changeset patch # User Josef Eisl # Date 1428936627 -7200 # Node ID 661ed7d3d10de271929b6d93fae9d13429ed25a3 # Parent 916aac9fe6f7e594973e31263a4c986e767449e2 RegisterConfig: rename getAllocatableRegisters(PK,R[) to filterAllocatableRegisters and remove caching from implementors. diff -r 916aac9fe6f7 -r 661ed7d3d10d graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterConfig.java --- a/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterConfig.java Mon Apr 13 15:10:55 2015 +0200 +++ b/graal/com.oracle.graal.api.code/src/com/oracle/graal/api/code/RegisterConfig.java Mon Apr 13 16:50:27 2015 +0200 @@ -79,7 +79,7 @@ * Gets the set of registers that can be used by the register allocator for a value of a * particular kind. */ - Register[] getAllocatableRegisters(PlatformKind kind, Register[] registers); + Register[] filterAllocatableRegisters(PlatformKind kind, Register[] registers); /** * Gets the registers whose values must be preserved by a method across any call it makes. diff -r 916aac9fe6f7 -r 661ed7d3d10d graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/RegisterAllocationConfig.java --- a/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/RegisterAllocationConfig.java Mon Apr 13 15:10:55 2015 +0200 +++ b/graal/com.oracle.graal.compiler.common/src/com/oracle/graal/compiler/common/alloc/RegisterAllocationConfig.java Mon Apr 13 16:50:27 2015 +0200 @@ -77,7 +77,7 @@ return val; } - Register[] ret = registerConfig.getAllocatableRegisters(kind, getAllocatableRegisters()); + Register[] ret = registerConfig.filterAllocatableRegisters(kind, getAllocatableRegisters()); categorized.put(key, ret); return ret; diff -r 916aac9fe6f7 -r 661ed7d3d10d graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java Mon Apr 13 15:10:55 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java Mon Apr 13 16:50:27 2015 +0200 @@ -26,7 +26,6 @@ import static com.oracle.graal.compiler.common.GraalOptions.*; import java.util.*; -import java.util.concurrent.*; import com.oracle.graal.amd64.*; import com.oracle.graal.api.code.*; @@ -52,8 +51,6 @@ private final boolean allAllocatableAreCallerSaved; - private final Map categorized = new ConcurrentHashMap<>(); - private final RegisterAttributes[] attributesMap; public int getMaximumFrameSize() { @@ -65,13 +62,7 @@ return allocatable.clone(); } - public Register[] getAllocatableRegisters(PlatformKind kind, Register[] registers) { - PlatformKind.Key key = kind.getKey(); - if (categorized.containsKey(key)) { - Register[] val = categorized.get(key); - return val; - } - + public Register[] filterAllocatableRegisters(PlatformKind kind, Register[] registers) { ArrayList list = new ArrayList<>(); for (Register reg : registers) { if (architecture.canStoreValue(reg.getRegisterCategory(), kind)) { @@ -80,7 +71,6 @@ } Register[] ret = list.toArray(new Register[list.size()]); - categorized.put(key, ret); return ret; } @@ -101,15 +91,6 @@ private final CalleeSaveLayout csl; - private static Register findRegister(String name, Register[] all) { - for (Register reg : all) { - if (reg.name.equals(name)) { - return reg; - } - } - throw new IllegalArgumentException("register " + name + " is not allocatable"); - } - private static Register[] initAllocatable(boolean reserveForHeapBase) { Register[] registers = null; // @formatter:off @@ -127,16 +108,6 @@ }; } // @formatter:on - - if (RegisterPressure.getValue() != null) { - 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 regs; - } - return registers; } diff -r 916aac9fe6f7 -r 661ed7d3d10d graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java Mon Apr 13 15:10:55 2015 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotRegisterConfig.java Mon Apr 13 16:50:27 2015 +0200 @@ -22,11 +22,9 @@ */ package com.oracle.graal.hotspot.sparc; -import static com.oracle.graal.compiler.common.GraalOptions.*; import static com.oracle.graal.sparc.SPARC.*; import java.util.*; -import java.util.concurrent.*; import com.oracle.graal.api.code.*; import com.oracle.graal.api.code.CallingConvention.Type; @@ -43,8 +41,6 @@ private final Register[] allocatable; - private final Map categorized = new ConcurrentHashMap<>(20); - private final RegisterAttributes[] attributesMap; @Override @@ -52,11 +48,7 @@ return allocatable.clone(); } - public Register[] getAllocatableRegisters(PlatformKind kind, Register[] registers) { - if (categorized.containsKey(kind)) { - return categorized.get(kind); - } - + public Register[] filterAllocatableRegisters(PlatformKind kind, Register[] registers) { ArrayList list = new ArrayList<>(); for (Register reg : registers) { if (architecture.canStoreValue(reg.getRegisterCategory(), kind)) { @@ -77,7 +69,6 @@ } Register[] ret = list.toArray(new Register[list.size()]); - categorized.put(kind, ret); return ret; } @@ -111,15 +102,6 @@ private final CalleeSaveLayout csl; - private static Register findRegister(String name, Register[] all) { - for (Register reg : all) { - if (reg.name.equals(name)) { - return reg; - } - } - throw new IllegalArgumentException("register " + name + " is not allocatable"); - } - private static Register[] initAllocatable(boolean reserveForHeapBase) { Register[] registers = null; if (reserveForHeapBase) { @@ -158,15 +140,6 @@ // @formatter:on } - if (RegisterPressure.getValue() != null) { - 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 regs; - } - return registers; }