src/jdk.vm.ci/share/classes/jdk.vm.ci.hotspot.sparc/src/jdk/vm/ci/hotspot/sparc/SPARCHotSpotJVMCIBackendFactory.java

Print this page




  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) {