< prev index next >

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

Print this page


   1 /*
   2  * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package org.graalvm.compiler.hotspot.meta;
  24 
  25 import static jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayBaseOffset;
  26 import static org.graalvm.compiler.core.common.GraalOptions.AlwaysInlineVTableStubs;
  27 import static org.graalvm.compiler.core.common.GraalOptions.GeneratePIC;
  28 import static org.graalvm.compiler.core.common.GraalOptions.InlineVTableStubs;
  29 import static org.graalvm.compiler.core.common.GraalOptions.OmitHotExceptionStacktrace;
  30 import static org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.OSR_MIGRATION_END;
  31 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_KLASS_LOCATION;
  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;


  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;

  73 import org.graalvm.compiler.hotspot.nodes.aot.ResolveMethodAndLoadCountersNode;
  74 import org.graalvm.compiler.hotspot.nodes.profiling.ProfileNode;
  75 import org.graalvm.compiler.hotspot.nodes.type.HotSpotNarrowOopStamp;
  76 import org.graalvm.compiler.hotspot.nodes.type.KlassPointerStamp;
  77 import org.graalvm.compiler.hotspot.nodes.type.MethodPointerStamp;
  78 import org.graalvm.compiler.hotspot.replacements.AssertionSnippets;
  79 import org.graalvm.compiler.hotspot.replacements.ClassGetHubNode;
  80 import org.graalvm.compiler.hotspot.replacements.HashCodeSnippets;
  81 import org.graalvm.compiler.hotspot.replacements.HubGetClassNode;
  82 import org.graalvm.compiler.hotspot.replacements.IdentityHashCodeNode;
  83 import org.graalvm.compiler.hotspot.replacements.InstanceOfSnippets;
  84 import org.graalvm.compiler.hotspot.replacements.KlassLayoutHelperNode;
  85 import org.graalvm.compiler.hotspot.replacements.LoadExceptionObjectSnippets;
  86 import org.graalvm.compiler.hotspot.replacements.MonitorSnippets;
  87 import org.graalvm.compiler.hotspot.replacements.NewObjectSnippets;
  88 import org.graalvm.compiler.hotspot.replacements.StringToBytesSnippets;
  89 import org.graalvm.compiler.hotspot.replacements.UnsafeLoadSnippets;
  90 import org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets;
  91 import org.graalvm.compiler.hotspot.replacements.aot.ResolveConstantSnippets;
  92 import org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode;


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


 347             if (graph.getGuardsStage().areDeoptsFixed()) {
 348                 stringToBytesSnippets.lower((StringToBytesNode) n, tool);
 349             }
 350         } else if (n instanceof IntegerDivRemNode) {
 351             // Nothing to do for division nodes. The HotSpot signal handler catches divisions by
 352             // zero and the MIN_VALUE / -1 cases.
 353         } else if (n instanceof AbstractDeoptimizeNode || n instanceof UnwindNode || n instanceof RemNode || n instanceof SafepointNode) {
 354             /* No lowering, we generate LIR directly for these nodes. */
 355         } else if (n instanceof ClassGetHubNode) {
 356             lowerClassGetHubNode((ClassGetHubNode) n, tool);
 357         } else if (n instanceof HubGetClassNode) {
 358             lowerHubGetClassNode((HubGetClassNode) n, tool);
 359         } else if (n instanceof KlassLayoutHelperNode) {
 360             lowerKlassLayoutHelperNode((KlassLayoutHelperNode) n, tool);
 361         } else if (n instanceof ComputeObjectAddressNode) {
 362             if (graph.getGuardsStage().areFrameStatesAtDeopts()) {
 363                 lowerComputeObjectAddressNode((ComputeObjectAddressNode) n);
 364             }
 365         } else if (n instanceof IdentityHashCodeNode) {
 366             hashCodeSnippets.lower((IdentityHashCodeNode) n, tool);




 367         } else if (n instanceof ResolveConstantNode) {
 368             if (graph.getGuardsStage().areFrameStatesAtDeopts()) {
 369                 resolveConstantSnippets.lower((ResolveConstantNode) n, tool);
 370             }
 371         } else if (n instanceof ResolveMethodAndLoadCountersNode) {
 372             if (graph.getGuardsStage().areFrameStatesAtDeopts()) {
 373                 resolveConstantSnippets.lower((ResolveMethodAndLoadCountersNode) n, tool);
 374             }
 375         } else if (n instanceof InitializeKlassNode) {
 376             if (graph.getGuardsStage().areFrameStatesAtDeopts()) {
 377                 resolveConstantSnippets.lower((InitializeKlassNode) n, tool);
 378             }
 379         } else if (n instanceof ProfileNode) {
 380             profileSnippets.lower((ProfileNode) n, tool);
 381         } else {
 382             super.lower(n, tool);
 383         }
 384     }
 385 
 386     private static void lowerComputeObjectAddressNode(ComputeObjectAddressNode n) {


   1 /*
   2  * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 package org.graalvm.compiler.hotspot.meta;
  24 
  25 import static jdk.vm.ci.hotspot.HotSpotJVMCIRuntimeProvider.getArrayBaseOffset;
  26 import static org.graalvm.compiler.core.common.GraalOptions.AlwaysInlineVTableStubs;

  27 import static org.graalvm.compiler.core.common.GraalOptions.InlineVTableStubs;
  28 import static org.graalvm.compiler.core.common.GraalOptions.OmitHotExceptionStacktrace;
  29 import static org.graalvm.compiler.hotspot.meta.HotSpotForeignCallsProviderImpl.OSR_MIGRATION_END;
  30 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_KLASS_LOCATION;
  31 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_MIRROR_LOCATION;
  32 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.CLASS_MIRROR_HANDLE_LOCATION;
  33 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.COMPRESSED_HUB_LOCATION;
  34 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.DISPLACED_MARK_WORD_LOCATION;
  35 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.HUB_LOCATION;
  36 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.HUB_WRITE_LOCATION;
  37 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.KLASS_LAYOUT_HELPER_LOCATION;
  38 import static org.graalvm.compiler.hotspot.replacements.HotSpotReplacementsUtil.OBJ_ARRAY_KLASS_ELEMENT_KLASS_LOCATION;
  39 import static org.graalvm.word.LocationIdentity.any;
  40 
  41 import java.lang.ref.Reference;
  42 
  43 import org.graalvm.compiler.api.directives.GraalDirectives;
  44 import org.graalvm.compiler.core.common.GraalOptions;
  45 import org.graalvm.compiler.core.common.spi.ForeignCallDescriptor;
  46 import org.graalvm.compiler.core.common.spi.ForeignCallsProvider;


  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;
  72 import org.graalvm.compiler.hotspot.nodes.aot.ResolveDynamicConstantNode;
  73 import org.graalvm.compiler.hotspot.nodes.aot.ResolveMethodAndLoadCountersNode;
  74 import org.graalvm.compiler.hotspot.nodes.profiling.ProfileNode;
  75 import org.graalvm.compiler.hotspot.nodes.type.HotSpotNarrowOopStamp;
  76 import org.graalvm.compiler.hotspot.nodes.type.KlassPointerStamp;
  77 import org.graalvm.compiler.hotspot.nodes.type.MethodPointerStamp;
  78 import org.graalvm.compiler.hotspot.replacements.AssertionSnippets;
  79 import org.graalvm.compiler.hotspot.replacements.ClassGetHubNode;
  80 import org.graalvm.compiler.hotspot.replacements.HashCodeSnippets;
  81 import org.graalvm.compiler.hotspot.replacements.HubGetClassNode;
  82 import org.graalvm.compiler.hotspot.replacements.IdentityHashCodeNode;
  83 import org.graalvm.compiler.hotspot.replacements.InstanceOfSnippets;
  84 import org.graalvm.compiler.hotspot.replacements.KlassLayoutHelperNode;
  85 import org.graalvm.compiler.hotspot.replacements.LoadExceptionObjectSnippets;
  86 import org.graalvm.compiler.hotspot.replacements.MonitorSnippets;
  87 import org.graalvm.compiler.hotspot.replacements.NewObjectSnippets;
  88 import org.graalvm.compiler.hotspot.replacements.StringToBytesSnippets;
  89 import org.graalvm.compiler.hotspot.replacements.UnsafeLoadSnippets;
  90 import org.graalvm.compiler.hotspot.replacements.WriteBarrierSnippets;
  91 import org.graalvm.compiler.hotspot.replacements.aot.ResolveConstantSnippets;
  92 import org.graalvm.compiler.hotspot.replacements.arraycopy.ArrayCopyNode;


 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         resolveConstantSnippets = new ResolveConstantSnippets.Templates(options, factories, providers, target);
 218         profileSnippets = new ProfileSnippets.Templates(options, factories, providers, target);

 219         providers.getReplacements().registerSnippetTemplateCache(new UnsafeArrayCopySnippets.Templates(options, factories, providers, target));
 220     }
 221 
 222     public MonitorSnippets.Templates getMonitorSnippets() {
 223         return monitorSnippets;
 224     }
 225 
 226     @Override
 227     public void lower(Node n, LoweringTool tool) {
 228         StructuredGraph graph = (StructuredGraph) n.graph();
 229         if (n instanceof Invoke) {
 230             lowerInvoke((Invoke) n, tool, graph);
 231         } else if (n instanceof LoadMethodNode) {
 232             lowerLoadMethodNode((LoadMethodNode) n);
 233         } else if (n instanceof GetClassNode) {
 234             lowerGetClassNode((GetClassNode) n, tool, graph);
 235         } else if (n instanceof StoreHubNode) {
 236             lowerStoreHubNode((StoreHubNode) n, graph);
 237         } else if (n instanceof OSRStartNode) {
 238             lowerOSRStartNode((OSRStartNode) n);


 345             if (graph.getGuardsStage().areDeoptsFixed()) {
 346                 stringToBytesSnippets.lower((StringToBytesNode) n, tool);
 347             }
 348         } else if (n instanceof IntegerDivRemNode) {
 349             // Nothing to do for division nodes. The HotSpot signal handler catches divisions by
 350             // zero and the MIN_VALUE / -1 cases.
 351         } else if (n instanceof AbstractDeoptimizeNode || n instanceof UnwindNode || n instanceof RemNode || n instanceof SafepointNode) {
 352             /* No lowering, we generate LIR directly for these nodes. */
 353         } else if (n instanceof ClassGetHubNode) {
 354             lowerClassGetHubNode((ClassGetHubNode) n, tool);
 355         } else if (n instanceof HubGetClassNode) {
 356             lowerHubGetClassNode((HubGetClassNode) n, tool);
 357         } else if (n instanceof KlassLayoutHelperNode) {
 358             lowerKlassLayoutHelperNode((KlassLayoutHelperNode) n, tool);
 359         } else if (n instanceof ComputeObjectAddressNode) {
 360             if (graph.getGuardsStage().areFrameStatesAtDeopts()) {
 361                 lowerComputeObjectAddressNode((ComputeObjectAddressNode) n);
 362             }
 363         } else if (n instanceof IdentityHashCodeNode) {
 364             hashCodeSnippets.lower((IdentityHashCodeNode) n, tool);
 365         } else if (n instanceof ResolveDynamicConstantNode) {
 366             if (graph.getGuardsStage().areFrameStatesAtDeopts()) {
 367                 resolveConstantSnippets.lower((ResolveDynamicConstantNode) n, tool);
 368             }
 369         } else if (n instanceof ResolveConstantNode) {
 370             if (graph.getGuardsStage().areFrameStatesAtDeopts()) {
 371                 resolveConstantSnippets.lower((ResolveConstantNode) n, tool);
 372             }
 373         } else if (n instanceof ResolveMethodAndLoadCountersNode) {
 374             if (graph.getGuardsStage().areFrameStatesAtDeopts()) {
 375                 resolveConstantSnippets.lower((ResolveMethodAndLoadCountersNode) n, tool);
 376             }
 377         } else if (n instanceof InitializeKlassNode) {
 378             if (graph.getGuardsStage().areFrameStatesAtDeopts()) {
 379                 resolveConstantSnippets.lower((InitializeKlassNode) n, tool);
 380             }
 381         } else if (n instanceof ProfileNode) {
 382             profileSnippets.lower((ProfileNode) n, tool);
 383         } else {
 384             super.lower(n, tool);
 385         }
 386     }
 387 
 388     private static void lowerComputeObjectAddressNode(ComputeObjectAddressNode n) {


< prev index next >