182 } 183 this.callerSaveRegisters = callerSaveSet.toArray(new Register[callerSaveSet.size()]); 184 attributesMap = RegisterAttributes.createMap(this, SPARC.allRegisters); 185 } 186 187 @Override 188 public Register[] getCallerSaveRegisters() { 189 return callerSaveRegisters; 190 } 191 192 public Register[] getCalleeSaveRegisters() { 193 return calleeSaveRegisters; 194 } 195 196 @Override 197 public boolean areAllAllocatableRegistersCallerSaved() { 198 return false; 199 } 200 201 @Override 202 public Register getRegisterForRole(int index) { 203 throw new UnsupportedOperationException(); 204 } 205 206 @Override 207 public CallingConvention getCallingConvention(Type type, JavaType returnType, JavaType[] parameterTypes, ValueKindFactory<?> valueKindFactory) { 208 HotSpotCallingConventionType hotspotType = (HotSpotCallingConventionType) type; 209 if (type == HotSpotCallingConventionType.JavaCall || type == HotSpotCallingConventionType.NativeCall) { 210 return callingConvention(cpuCallerParameterRegisters, returnType, parameterTypes, hotspotType, valueKindFactory); 211 } 212 if (type == HotSpotCallingConventionType.JavaCallee) { 213 return callingConvention(cpuCalleeParameterRegisters, returnType, parameterTypes, hotspotType, valueKindFactory); 214 } 215 throw JVMCIError.shouldNotReachHere(); 216 } 217 218 @Override 219 public Register[] getCallingConventionRegisters(Type type, JavaKind kind) { 220 HotSpotCallingConventionType hotspotType = (HotSpotCallingConventionType) type; 221 switch (kind) { 222 case Boolean: 223 case Byte: 224 case Short: 225 case Char: 226 case Int: | 182 } 183 this.callerSaveRegisters = callerSaveSet.toArray(new Register[callerSaveSet.size()]); 184 attributesMap = RegisterAttributes.createMap(this, SPARC.allRegisters); 185 } 186 187 @Override 188 public Register[] getCallerSaveRegisters() { 189 return callerSaveRegisters; 190 } 191 192 public Register[] getCalleeSaveRegisters() { 193 return calleeSaveRegisters; 194 } 195 196 @Override 197 public boolean areAllAllocatableRegistersCallerSaved() { 198 return false; 199 } 200 201 @Override 202 public CallingConvention getCallingConvention(Type type, JavaType returnType, JavaType[] parameterTypes, ValueKindFactory<?> valueKindFactory) { 203 HotSpotCallingConventionType hotspotType = (HotSpotCallingConventionType) type; 204 if (type == HotSpotCallingConventionType.JavaCall || type == HotSpotCallingConventionType.NativeCall) { 205 return callingConvention(cpuCallerParameterRegisters, returnType, parameterTypes, hotspotType, valueKindFactory); 206 } 207 if (type == HotSpotCallingConventionType.JavaCallee) { 208 return callingConvention(cpuCalleeParameterRegisters, returnType, parameterTypes, hotspotType, valueKindFactory); 209 } 210 throw JVMCIError.shouldNotReachHere(); 211 } 212 213 @Override 214 public Register[] getCallingConventionRegisters(Type type, JavaKind kind) { 215 HotSpotCallingConventionType hotspotType = (HotSpotCallingConventionType) type; 216 switch (kind) { 217 case Boolean: 218 case Byte: 219 case Short: 220 case Char: 221 case Int: |