22 */ 23 package jdk.vm.ci.hotspot.sparc; 24 25 import static jdk.vm.ci.inittimer.InitTimer.timer; 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.hotspot.HotSpotCodeCacheProvider; 34 import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider; 35 import jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory; 36 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider; 37 import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider; 38 import jdk.vm.ci.hotspot.HotSpotStackIntrospection; 39 import jdk.vm.ci.hotspot.HotSpotVMConfig; 40 import jdk.vm.ci.inittimer.InitTimer; 41 import jdk.vm.ci.runtime.JVMCIBackend; 42 import jdk.vm.ci.service.ServiceProvider; 43 import jdk.vm.ci.sparc.SPARC; 44 import jdk.vm.ci.sparc.SPARC.CPUFeature; 45 46 @ServiceProvider(HotSpotJVMCIBackendFactory.class) 47 public class SPARCHotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory { 48 49 protected TargetDescription createTarget(HotSpotVMConfig config) { 50 final int stackFrameAlignment = 16; 51 final int implicitNullCheckLimit = 4096; 52 final boolean inlineObjects = false; 53 Architecture arch = new SPARC(computeFeatures(config)); 54 return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects); 55 } 56 57 protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntimeProvider runtime, TargetDescription target, RegisterConfig regConfig) { 58 return new HotSpotCodeCacheProvider(runtime, runtime.getConfig(), target, regConfig); 59 } 60 61 protected EnumSet<CPUFeature> computeFeatures(HotSpotVMConfig config) { 62 EnumSet<CPUFeature> features = EnumSet.noneOf(CPUFeature.class); 63 if ((config.vmVersionFeatures & config.sparcVis1Instructions) != 0) { 64 features.add(CPUFeature.VIS1); 65 } 66 if ((config.vmVersionFeatures & config.sparcVis2Instructions) != 0) { | 22 */ 23 package jdk.vm.ci.hotspot.sparc; 24 25 import static jdk.vm.ci.inittimer.InitTimer.timer; 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.hotspot.HotSpotCodeCacheProvider; 34 import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider; 35 import jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory; 36 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider; 37 import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider; 38 import jdk.vm.ci.hotspot.HotSpotStackIntrospection; 39 import jdk.vm.ci.hotspot.HotSpotVMConfig; 40 import jdk.vm.ci.inittimer.InitTimer; 41 import jdk.vm.ci.runtime.JVMCIBackend; 42 import jdk.vm.ci.sparc.SPARC; 43 import jdk.vm.ci.sparc.SPARC.CPUFeature; 44 45 public class SPARCHotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory { 46 47 protected TargetDescription createTarget(HotSpotVMConfig config) { 48 final int stackFrameAlignment = 16; 49 final int implicitNullCheckLimit = 4096; 50 final boolean inlineObjects = false; 51 Architecture arch = new SPARC(computeFeatures(config)); 52 return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects); 53 } 54 55 protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntimeProvider runtime, TargetDescription target, RegisterConfig regConfig) { 56 return new HotSpotCodeCacheProvider(runtime, runtime.getConfig(), target, regConfig); 57 } 58 59 protected EnumSet<CPUFeature> computeFeatures(HotSpotVMConfig config) { 60 EnumSet<CPUFeature> features = EnumSet.noneOf(CPUFeature.class); 61 if ((config.vmVersionFeatures & config.sparcVis1Instructions) != 0) { 62 features.add(CPUFeature.VIS1); 63 } 64 if ((config.vmVersionFeatures & config.sparcVis2Instructions) != 0) { |