26 27 import java.util.EnumSet; 28 29 import jdk.vm.ci.code.Architecture; 30 import jdk.vm.ci.code.RegisterConfig; 31 import jdk.vm.ci.code.TargetDescription; 32 import jdk.vm.ci.code.stack.StackIntrospection; 33 import jdk.vm.ci.common.InitTimer; 34 import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider; 35 import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider; 36 import jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory; 37 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntime; 38 import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider; 39 import jdk.vm.ci.hotspot.HotSpotStackIntrospection; 40 import jdk.vm.ci.runtime.JVMCIBackend; 41 import jdk.vm.ci.sparc.SPARC; 42 import jdk.vm.ci.sparc.SPARC.CPUFeature; 43 44 public class SPARCHotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory { 45 46 protected TargetDescription createTarget(SPARCHotSpotVMConfig config) { 47 final int stackFrameAlignment = 16; 48 final int implicitNullCheckLimit = 4096; 49 final boolean inlineObjects = false; 50 Architecture arch = new SPARC(computeFeatures(config)); 51 return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects); 52 } 53 54 protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntime runtime, TargetDescription target, RegisterConfig regConfig) { 55 return new HotSpotCodeCacheProvider(runtime, runtime.getConfig(), target, regConfig); 56 } 57 58 protected EnumSet<CPUFeature> computeFeatures(SPARCHotSpotVMConfig config) { 59 EnumSet<CPUFeature> features = EnumSet.noneOf(CPUFeature.class); 60 61 if ((config.vmVersionFeatures & 1L << config.sparc_ADI) != 0) { 62 features.add(CPUFeature.ADI); 63 } 64 if ((config.vmVersionFeatures & 1L << config.sparc_AES) != 0) { 65 features.add(CPUFeature.AES); 66 } 67 if ((config.vmVersionFeatures & 1L << config.sparc_BLK_INIT) != 0) { 68 features.add(CPUFeature.BLK_INIT); 69 } 70 if ((config.vmVersionFeatures & 1L << config.sparc_CAMELLIA) != 0) { 71 features.add(CPUFeature.CAMELLIA); 72 } 73 if ((config.vmVersionFeatures & 1L << config.sparc_CBCOND) != 0) { 74 features.add(CPUFeature.CBCOND); 75 } 76 if ((config.vmVersionFeatures & 1L << config.sparc_CRC32C) != 0) { 77 features.add(CPUFeature.CRC32C); 78 } | 26 27 import java.util.EnumSet; 28 29 import jdk.vm.ci.code.Architecture; 30 import jdk.vm.ci.code.RegisterConfig; 31 import jdk.vm.ci.code.TargetDescription; 32 import jdk.vm.ci.code.stack.StackIntrospection; 33 import jdk.vm.ci.common.InitTimer; 34 import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider; 35 import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider; 36 import jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory; 37 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntime; 38 import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider; 39 import jdk.vm.ci.hotspot.HotSpotStackIntrospection; 40 import jdk.vm.ci.runtime.JVMCIBackend; 41 import jdk.vm.ci.sparc.SPARC; 42 import jdk.vm.ci.sparc.SPARC.CPUFeature; 43 44 public class SPARCHotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory { 45 46 private static TargetDescription createTarget(SPARCHotSpotVMConfig config) { 47 final int stackFrameAlignment = 16; 48 final int implicitNullCheckLimit = 4096; 49 final boolean inlineObjects = false; 50 Architecture arch = new SPARC(computeFeatures(config)); 51 return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects); 52 } 53 54 protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntime runtime, TargetDescription target, RegisterConfig regConfig) { 55 return new HotSpotCodeCacheProvider(runtime, target, regConfig); 56 } 57 58 private static EnumSet<CPUFeature> computeFeatures(SPARCHotSpotVMConfig config) { 59 EnumSet<CPUFeature> features = EnumSet.noneOf(CPUFeature.class); 60 61 if ((config.vmVersionFeatures & 1L << config.sparc_ADI) != 0) { 62 features.add(CPUFeature.ADI); 63 } 64 if ((config.vmVersionFeatures & 1L << config.sparc_AES) != 0) { 65 features.add(CPUFeature.AES); 66 } 67 if ((config.vmVersionFeatures & 1L << config.sparc_BLK_INIT) != 0) { 68 features.add(CPUFeature.BLK_INIT); 69 } 70 if ((config.vmVersionFeatures & 1L << config.sparc_CAMELLIA) != 0) { 71 features.add(CPUFeature.CAMELLIA); 72 } 73 if ((config.vmVersionFeatures & 1L << config.sparc_CBCOND) != 0) { 74 features.add(CPUFeature.CBCOND); 75 } 76 if ((config.vmVersionFeatures & 1L << config.sparc_CRC32C) != 0) { 77 features.add(CPUFeature.CRC32C); 78 } |