src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/DefaultHotSpotLoweringProvider.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/DefaultHotSpotLoweringProvider.java

Print this page




  32 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_MIRROR_LOCATION;
  33 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_MIRROR_HANDLE_LOCATION;
  34 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.COMPRESSED_HUB_LOCATION;
  35 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.DISPLACED_MARK_WORD_LOCATION;
  36 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.HUB_LOCATION;
  37 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.HUB_WRITE_LOCATION;
  38 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.KLASS_LAYOUT_HELPER_LOCATION;
  39 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJ_ARRAY_KLASS_ELEMENT_KLASS_LOCATION;
  40 import static org.graalvm.word.LocationIdentity.any;
  41 
  42 import java.lang.ref.Reference;
  43 
  44 import org.graalvm.compiler.api.directives.GraalDirectives;
  45 import org.graalvm.compiler.core.common.GraalOptions;
  46 import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor;
  47 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
  48 import org.graalvm.compiler.core.common.type.ObjectStamp;
  49 import org.graalvm.compiler.core.common.type.Stamp;
  50 import org.graalvm.compiler.core.common.type.StampFactory;
  51 import org.graalvm.compiler.core.common.type.StampPair;

  52 import org.graalvm.compiler.debug.GraalError;
  53 import org.graalvm.compiler.graph.Node;
  54 import org.graalvm.compiler.graph.NodeInputList;
  55 import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
  56 import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider;
  57 import org.graalvm.compiler.hotspot.nodes.BeginLockScopeNode;
  58 import org.graalvm.compiler.hotspot.nodes.ComputeObjectAddressNode;
  59 import org.graalvm.compiler.hotspot.nodes.G1ArrayRangePostWriteBarrier;
  60 import org.graalvm.compiler.hotspot.nodes.G1ArrayRangePreWriteBarrier;
  61 import org.graalvm.compiler.hotspot.nodes.G1PostWriteBarrier;
  62 import org.graalvm.compiler.hotspot.nodes.G1PreWriteBarrier;
  63 import org.graalvm.compiler.hotspot.nodes.G1ReferentFieldReadBarrier;
  64 import org.graalvm.compiler.hotspot.nodes.GetObjectAddressNode;
  65 import org.graalvm.compiler.hotspot.nodes.HotSpotCompressionNode;
  66 import org.graalvm.compiler.hotspot.nodes.HotSpotDirectCallTargetNode;
  67 import org.graalvm.compiler.hotspot.nodes.HotSpotIndirectCallTargetNode;
  68 import org.graalvm.compiler.hotspot.nodes.SerialArrayRangeWriteBarrier;
  69 import org.graalvm.compiler.hotspot.nodes.SerialWriteBarrier;
  70 import org.graalvm.compiler.hotspot.nodes.aot.InitializeKlassNode;
  71 import org.graalvm.compiler.hotspot.nodes.aot.ResolveConstantNode;


 182     protected MonitorSnippets.Templates monitorSnippets;
 183     protected WriteBarrierSnippets.Templates writeBarrierSnippets;
 184     protected LoadExceptionObjectSnippets.Templates exceptionObjectSnippets;
 185     protected UnsafeLoadSnippets.Templates unsafeLoadSnippets;
 186     protected AssertionSnippets.Templates assertionSnippets;
 187     protected ArrayCopySnippets.Templates arraycopySnippets;
 188     protected StringToBytesSnippets.Templates stringToBytesSnippets;
 189     protected HashCodeSnippets.Templates hashCodeSnippets;
 190     protected ResolveConstantSnippets.Templates resolveConstantSnippets;
 191     protected ProfileSnippets.Templates profileSnippets;
 192 
 193     public DefaultHotSpotLoweringProvider(HotSpotGraalRuntimeProvider runtime, MetaAccessProvider metaAccess, ForeignCallsProvider foreignCalls, HotSpotRegistersProvider registers,
 194                     HotSpotConstantReflectionProvider constantReflection, TargetDescription target) {
 195         super(metaAccess, foreignCalls, target);
 196         this.runtime = runtime;
 197         this.registers = registers;
 198         this.constantReflection = constantReflection;
 199     }
 200 
 201     @Override
 202     public void initialize(OptionValues options, HotSpotProviders providers, GraalHotSpotVMConfig config) {
 203         super.initialize(options, runtime, providers, providers.getSnippetReflection());
 204 
 205         assert target == providers.getCodeCache().getTarget();
 206         instanceofSnippets = new InstanceOfSnippets.Templates(options, runtime, providers, target);
 207         newObjectSnippets = new NewObjectSnippets.Templates(options, runtime, providers, target, config);
 208         monitorSnippets = new MonitorSnippets.Templates(options, runtime, providers, target, config.useFastLocking);
 209         writeBarrierSnippets = new WriteBarrierSnippets.Templates(options, runtime, providers, target, config.useCompressedOops ? config.getOopEncoding() : null);
 210         exceptionObjectSnippets = new LoadExceptionObjectSnippets.Templates(options, providers, target);
 211         unsafeLoadSnippets = new UnsafeLoadSnippets.Templates(options, providers, target);
 212         assertionSnippets = new AssertionSnippets.Templates(options, providers, target);
 213         arraycopySnippets = new ArrayCopySnippets.Templates(options, runtime, providers, target);
 214         stringToBytesSnippets = new StringToBytesSnippets.Templates(options, providers, target);
 215         hashCodeSnippets = new HashCodeSnippets.Templates(options, providers, target);
 216         if (GeneratePIC.getValue(options)) {
 217             resolveConstantSnippets = new ResolveConstantSnippets.Templates(options, providers, target);
 218             profileSnippets = new ProfileSnippets.Templates(options, providers, target);
 219         }
 220         providers.getReplacements().registerSnippetTemplateCache(new UnsafeArrayCopySnippets.Templates(options, providers, target));
 221     }
 222 
 223     public MonitorSnippets.Templates getMonitorSnippets() {
 224         return monitorSnippets;
 225     }
 226 
 227     @Override
 228     public void lower(Node n, LoweringTool tool) {
 229         StructuredGraph graph = (StructuredGraph) n.graph();
 230         if (n instanceof Invoke) {
 231             lowerInvoke((Invoke) n, tool, graph);
 232         } else if (n instanceof LoadMethodNode) {
 233             lowerLoadMethodNode((LoadMethodNode) n);
 234         } else if (n instanceof GetClassNode) {
 235             lowerGetClassNode((GetClassNode) n, tool, graph);
 236         } else if (n instanceof StoreHubNode) {
 237             lowerStoreHubNode((StoreHubNode) n, graph);
 238         } else if (n instanceof OSRStartNode) {
 239             lowerOSRStartNode((OSRStartNode) n);
 240         } else if (n instanceof BytecodeExceptionNode) {




  32 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_MIRROR_LOCATION;
  33 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_MIRROR_HANDLE_LOCATION;
  34 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.COMPRESSED_HUB_LOCATION;
  35 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.DISPLACED_MARK_WORD_LOCATION;
  36 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.HUB_LOCATION;
  37 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.HUB_WRITE_LOCATION;
  38 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.KLASS_LAYOUT_HELPER_LOCATION;
  39 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJ_ARRAY_KLASS_ELEMENT_KLASS_LOCATION;
  40 import static org.graalvm.word.LocationIdentity.any;
  41 
  42 import java.lang.ref.Reference;
  43 
  44 import org.graalvm.compiler.api.directives.GraalDirectives;
  45 import org.graalvm.compiler.core.common.GraalOptions;
  46 import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor;
  47 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;
  48 import org.graalvm.compiler.core.common.type.ObjectStamp;
  49 import org.graalvm.compiler.core.common.type.Stamp;
  50 import org.graalvm.compiler.core.common.type.StampFactory;
  51 import org.graalvm.compiler.core.common.type.StampPair;
  52 import org.graalvm.compiler.debug.DebugHandlersFactory;
  53 import org.graalvm.compiler.debug.GraalError;
  54 import org.graalvm.compiler.graph.Node;
  55 import org.graalvm.compiler.graph.NodeInputList;
  56 import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig;
  57 import org.graalvm.compiler.hotspot.HotSpotGraalRuntimeProvider;
  58 import org.graalvm.compiler.hotspot.nodes.BeginLockScopeNode;
  59 import org.graalvm.compiler.hotspot.nodes.ComputeObjectAddressNode;
  60 import org.graalvm.compiler.hotspot.nodes.G1ArrayRangePostWriteBarrier;
  61 import org.graalvm.compiler.hotspot.nodes.G1ArrayRangePreWriteBarrier;
  62 import org.graalvm.compiler.hotspot.nodes.G1PostWriteBarrier;
  63 import org.graalvm.compiler.hotspot.nodes.G1PreWriteBarrier;
  64 import org.graalvm.compiler.hotspot.nodes.G1ReferentFieldReadBarrier;
  65 import org.graalvm.compiler.hotspot.nodes.GetObjectAddressNode;
  66 import org.graalvm.compiler.hotspot.nodes.HotSpotCompressionNode;
  67 import org.graalvm.compiler.hotspot.nodes.HotSpotDirectCallTargetNode;
  68 import org.graalvm.compiler.hotspot.nodes.HotSpotIndirectCallTargetNode;
  69 import org.graalvm.compiler.hotspot.nodes.SerialArrayRangeWriteBarrier;
  70 import org.graalvm.compiler.hotspot.nodes.SerialWriteBarrier;
  71 import org.graalvm.compiler.hotspot.nodes.aot.InitializeKlassNode;
  72 import org.graalvm.compiler.hotspot.nodes.aot.ResolveConstantNode;


 183     protected MonitorSnippets.Templates monitorSnippets;
 184     protected WriteBarrierSnippets.Templates writeBarrierSnippets;
 185     protected LoadExceptionObjectSnippets.Templates exceptionObjectSnippets;
 186     protected UnsafeLoadSnippets.Templates unsafeLoadSnippets;
 187     protected AssertionSnippets.Templates assertionSnippets;
 188     protected ArrayCopySnippets.Templates arraycopySnippets;
 189     protected StringToBytesSnippets.Templates stringToBytesSnippets;
 190     protected HashCodeSnippets.Templates hashCodeSnippets;
 191     protected ResolveConstantSnippets.Templates resolveConstantSnippets;
 192     protected ProfileSnippets.Templates profileSnippets;
 193 
 194     public DefaultHotSpotLoweringProvider(HotSpotGraalRuntimeProvider runtime, MetaAccessProvider metaAccess, ForeignCallsProvider foreignCalls, HotSpotRegistersProvider registers,
 195                     HotSpotConstantReflectionProvider constantReflection, TargetDescription target) {
 196         super(metaAccess, foreignCalls, target);
 197         this.runtime = runtime;
 198         this.registers = registers;
 199         this.constantReflection = constantReflection;
 200     }
 201 
 202     @Override
 203     public void initialize(OptionValues options, Iterable<DebugHandlersFactory> factories, HotSpotProviders providers, GraalHotSpotVMConfig config) {
 204         super.initialize(options, factories, runtime, providers, providers.getSnippetReflection());
 205 
 206         assert target == providers.getCodeCache().getTarget();
 207         instanceofSnippets = new InstanceOfSnippets.Templates(options, factories, runtime, providers, target);
 208         newObjectSnippets = new NewObjectSnippets.Templates(options, factories, runtime, providers, target, config);
 209         monitorSnippets = new MonitorSnippets.Templates(options, factories, runtime, providers, target, config.useFastLocking);
 210         writeBarrierSnippets = new WriteBarrierSnippets.Templates(options, factories, runtime, providers, target, config.useCompressedOops ? config.getOopEncoding() : null);
 211         exceptionObjectSnippets = new LoadExceptionObjectSnippets.Templates(options, factories, providers, target);
 212         unsafeLoadSnippets = new UnsafeLoadSnippets.Templates(options, factories, providers, target);
 213         assertionSnippets = new AssertionSnippets.Templates(options, factories, providers, target);
 214         arraycopySnippets = new ArrayCopySnippets.Templates(options, factories, runtime, providers, target);
 215         stringToBytesSnippets = new StringToBytesSnippets.Templates(options, factories, providers, target);
 216         hashCodeSnippets = new HashCodeSnippets.Templates(options, factories, providers, target);
 217         if (GeneratePIC.getValue(options)) {
 218             resolveConstantSnippets = new ResolveConstantSnippets.Templates(options, factories, providers, target);
 219             profileSnippets = new ProfileSnippets.Templates(options, factories, providers, target);
 220         }
 221         providers.getReplacements().registerSnippetTemplateCache(new UnsafeArrayCopySnippets.Templates(options, factories, providers, target));
 222     }
 223 
 224     public MonitorSnippets.Templates getMonitorSnippets() {
 225         return monitorSnippets;
 226     }
 227 
 228     @Override
 229     public void lower(Node n, LoweringTool tool) {
 230         StructuredGraph graph = (StructuredGraph) n.graph();
 231         if (n instanceof Invoke) {
 232             lowerInvoke((Invoke) n, tool, graph);
 233         } else if (n instanceof LoadMethodNode) {
 234             lowerLoadMethodNode((LoadMethodNode) n);
 235         } else if (n instanceof GetClassNode) {
 236             lowerGetClassNode((GetClassNode) n, tool, graph);
 237         } else if (n instanceof StoreHubNode) {
 238             lowerStoreHubNode((StoreHubNode) n, graph);
 239         } else if (n instanceof OSRStartNode) {
 240             lowerOSRStartNode((OSRStartNode) n);
 241         } else if (n instanceof BytecodeExceptionNode) {


src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/DefaultHotSpotLoweringProvider.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File