Mercurial > hg > graal-jvmci-8
diff jvmci/jdk.internal.jvmci.hotspot.sparc/src/jdk/internal/jvmci/hotspot/sparc/SPARCHotSpotRegisterConfig.java @ 22604:479228019e48
[SPARC] Remove JavaKind dependency
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Wed, 23 Sep 2015 15:43:53 +0200 |
parents | 355c41327aea |
children | a215c16882e0 |
line wrap: on
line diff
--- a/jvmci/jdk.internal.jvmci.hotspot.sparc/src/jdk/internal/jvmci/hotspot/sparc/SPARCHotSpotRegisterConfig.java Tue Sep 22 23:14:18 2015 +0200 +++ b/jvmci/jdk.internal.jvmci.hotspot.sparc/src/jdk/internal/jvmci/hotspot/sparc/SPARCHotSpotRegisterConfig.java Wed Sep 23 15:43:53 2015 +0200 @@ -22,7 +22,6 @@ */ package jdk.internal.jvmci.hotspot.sparc; -import static jdk.internal.jvmci.sparc.SPARC.CPU; import static jdk.internal.jvmci.sparc.SPARC.FPUd; import static jdk.internal.jvmci.sparc.SPARC.FPUs; import static jdk.internal.jvmci.sparc.SPARC.d0; @@ -129,6 +128,7 @@ import jdk.internal.jvmci.meta.PlatformKind; import jdk.internal.jvmci.meta.Value; import jdk.internal.jvmci.sparc.SPARC; +import jdk.internal.jvmci.sparc.SPARCKind; public class SPARCHotSpotRegisterConfig implements RegisterConfig { @@ -149,11 +149,11 @@ if (architecture.canStoreValue(reg.getRegisterCategory(), kind)) { // Special treatment for double precision // TODO: This is wasteful it uses only half of the registers as float. - if (kind == JavaKind.Double) { + if (kind == SPARCKind.DOUBLE) { if (reg.getRegisterCategory().equals(FPUd)) { list.add(reg); } - } else if (kind == JavaKind.Float) { + } else if (kind == SPARCKind.SINGLE) { if (reg.getRegisterCategory().equals(FPUs)) { list.add(reg); } @@ -279,11 +279,21 @@ } public Register[] getCallingConventionRegisters(Type type, JavaKind kind) { - if (architecture.canStoreValue(FPUs, kind) || architecture.canStoreValue(FPUd, kind)) { - return fpuParameterRegisters; + switch (kind) { + case Boolean: + case Byte: + case Short: + case Char: + case Int: + case Long: + case Object: + return type == Type.JavaCallee ? cpuCalleeParameterRegisters : cpuCallerParameterRegisters; + case Double: + case Float: + return fpuParameterRegisters; + default: + throw JVMCIError.shouldNotReachHere("Unknown JavaKind " + kind); } - assert architecture.canStoreValue(CPU, kind) : kind; - return type == Type.JavaCallee ? cpuCalleeParameterRegisters : cpuCallerParameterRegisters; } private CallingConvention callingConvention(Register[] generalParameterRegisters, JavaType returnType, JavaType[] parameterTypes, Type type, TargetDescription target, boolean stackOnly) {