< prev index next >

src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot.aarch64/src/jdk/vm/ci/hotspot/aarch64/AArch64HotSpotJVMCIBackendFactory.java

Print this page




  29 import jdk.vm.ci.aarch64.AArch64;
  30 import jdk.vm.ci.code.Architecture;
  31 import jdk.vm.ci.code.RegisterConfig;
  32 import jdk.vm.ci.code.TargetDescription;
  33 import jdk.vm.ci.code.stack.StackIntrospection;
  34 import jdk.vm.ci.common.InitTimer;
  35 import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider;
  36 import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider;
  37 import jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory;
  38 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider;
  39 import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider;
  40 import jdk.vm.ci.hotspot.HotSpotStackIntrospection;
  41 import jdk.vm.ci.meta.ConstantReflectionProvider;
  42 import jdk.vm.ci.runtime.JVMCIBackend;
  43 
  44 public class AArch64HotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory {
  45 
  46     protected EnumSet<AArch64.CPUFeature> computeFeatures(@SuppressWarnings("unused") AArch64HotSpotVMConfig config) {
  47         // Configure the feature set using the HotSpot flag settings.
  48         EnumSet<AArch64.CPUFeature> features = EnumSet.noneOf(AArch64.CPUFeature.class);






































  49         return features;
  50     }
  51 
  52     protected EnumSet<AArch64.Flag> computeFlags(@SuppressWarnings("unused") AArch64HotSpotVMConfig config) {
  53         EnumSet<AArch64.Flag> flags = EnumSet.noneOf(AArch64.Flag.class);























  54         return flags;
  55     }
  56 
  57     protected TargetDescription createTarget(AArch64HotSpotVMConfig config) {
  58         final int stackFrameAlignment = 16;
  59         final int implicitNullCheckLimit = 4096;
  60         final boolean inlineObjects = true;
  61         Architecture arch = new AArch64(computeFeatures(config), computeFlags(config));
  62         return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects);
  63     }
  64 
  65     protected HotSpotConstantReflectionProvider createConstantReflection(HotSpotJVMCIRuntimeProvider runtime) {
  66         return new HotSpotConstantReflectionProvider(runtime);
  67     }
  68 
  69     protected RegisterConfig createRegisterConfig(AArch64HotSpotVMConfig config, TargetDescription target) {
  70         return new AArch64HotSpotRegisterConfig(target, config.useCompressedOops);
  71     }
  72 
  73     protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntimeProvider runtime, TargetDescription target, RegisterConfig regConfig) {




  29 import jdk.vm.ci.aarch64.AArch64;
  30 import jdk.vm.ci.code.Architecture;
  31 import jdk.vm.ci.code.RegisterConfig;
  32 import jdk.vm.ci.code.TargetDescription;
  33 import jdk.vm.ci.code.stack.StackIntrospection;
  34 import jdk.vm.ci.common.InitTimer;
  35 import jdk.vm.ci.hotspot.HotSpotCodeCacheProvider;
  36 import jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider;
  37 import jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory;
  38 import jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider;
  39 import jdk.vm.ci.hotspot.HotSpotMetaAccessProvider;
  40 import jdk.vm.ci.hotspot.HotSpotStackIntrospection;
  41 import jdk.vm.ci.meta.ConstantReflectionProvider;
  42 import jdk.vm.ci.runtime.JVMCIBackend;
  43 
  44 public class AArch64HotSpotJVMCIBackendFactory implements HotSpotJVMCIBackendFactory {
  45 
  46     protected EnumSet<AArch64.CPUFeature> computeFeatures(@SuppressWarnings("unused") AArch64HotSpotVMConfig config) {
  47         // Configure the feature set using the HotSpot flag settings.
  48         EnumSet<AArch64.CPUFeature> features = EnumSet.noneOf(AArch64.CPUFeature.class);
  49         
  50         if ((config.vmVersionFeatures & config.aarch64FP) != 0) {
  51             features.add(AArch64.CPUFeature.FP);
  52         }
  53         if ((config.vmVersionFeatures & config.aarch64ASIMD) != 0) {
  54             features.add(AArch64.CPUFeature.ASIMD);
  55         }
  56         if ((config.vmVersionFeatures & config.aarch64EVTSTRM) != 0) {
  57             features.add(AArch64.CPUFeature.EVTSTRM);
  58         }
  59         if ((config.vmVersionFeatures & config.aarch64AES) != 0) {
  60             features.add(AArch64.CPUFeature.AES);
  61         }
  62         if ((config.vmVersionFeatures & config.aarch64PMULL) != 0) {
  63             features.add(AArch64.CPUFeature.PMULL);
  64         }
  65         if ((config.vmVersionFeatures & config.aarch64SHA1) != 0) {
  66             features.add(AArch64.CPUFeature.SHA1);
  67         }
  68         if ((config.vmVersionFeatures & config.aarch64SHA2) != 0) {
  69             features.add(AArch64.CPUFeature.SHA2);
  70         }
  71         if ((config.vmVersionFeatures & config.aarch64CRC32) != 0) {
  72             features.add(AArch64.CPUFeature.CRC32);
  73         }
  74         if ((config.vmVersionFeatures & config.aarch64LSE) != 0) {
  75             features.add(AArch64.CPUFeature.LSE);
  76         }
  77         if ((config.vmVersionFeatures & config.aarch64STXR_PREFETCH) != 0) {
  78             features.add(AArch64.CPUFeature.STXR_PREFETCH);
  79         }
  80         if ((config.vmVersionFeatures & config.aarch64A53MAC) != 0) {
  81             features.add(AArch64.CPUFeature.A53MAC);
  82         }
  83         if ((config.vmVersionFeatures & config.aarch64DMB_ATOMICS) != 0) {
  84             features.add(AArch64.CPUFeature.DMB_ATOMICS);
  85         }
  86 
  87         return features;
  88     }
  89 
  90     protected EnumSet<AArch64.Flag> computeFlags(@SuppressWarnings("unused") AArch64HotSpotVMConfig config) {
  91         EnumSet<AArch64.Flag> flags = EnumSet.noneOf(AArch64.Flag.class);
  92         
  93         if (config.useBarriersForVolatile) {
  94             flags.add(AArch64.Flag.UseBarriersForVolatile);
  95         }
  96         if (config.useCRC32) {
  97             flags.add(AArch64.Flag.UseCRC32);
  98         }
  99         if (config.useNeon) {
 100             flags.add(AArch64.Flag.UseNeon);
 101         }
 102         if (config.useSIMDForMemoryOps) {
 103             flags.add(AArch64.Flag.UseSIMDForMemoryOps);
 104         }
 105         if (config.avoidUnalignedAccesses) {
 106             flags.add(AArch64.Flag.AvoidUnalignedAccesses);
 107         }
 108         if (config.useLSE) {
 109             flags.add(AArch64.Flag.UseLSE);
 110         }
 111         if (config.useBlockZeroing) {
 112             flags.add(AArch64.Flag.UseBlockZeroing);
 113         }
 114         
 115         return flags;
 116     }
 117 
 118     protected TargetDescription createTarget(AArch64HotSpotVMConfig config) {
 119         final int stackFrameAlignment = 16;
 120         final int implicitNullCheckLimit = 4096;
 121         final boolean inlineObjects = true;
 122         Architecture arch = new AArch64(computeFeatures(config), computeFlags(config));
 123         return new TargetDescription(arch, true, stackFrameAlignment, implicitNullCheckLimit, inlineObjects);
 124     }
 125 
 126     protected HotSpotConstantReflectionProvider createConstantReflection(HotSpotJVMCIRuntimeProvider runtime) {
 127         return new HotSpotConstantReflectionProvider(runtime);
 128     }
 129 
 130     protected RegisterConfig createRegisterConfig(AArch64HotSpotVMConfig config, TargetDescription target) {
 131         return new AArch64HotSpotRegisterConfig(target, config.useCompressedOops);
 132     }
 133 
 134     protected HotSpotCodeCacheProvider createCodeCache(HotSpotJVMCIRuntimeProvider runtime, TargetDescription target, RegisterConfig regConfig) {


< prev index next >