< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/ObjectCloneNode.java

Print this page

        

*** 22,38 **** */ package org.graalvm.compiler.hotspot.replacements; - import java.lang.reflect.Method; - import org.graalvm.compiler.core.common.type.AbstractPointerStamp; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.core.common.type.StampPair; import org.graalvm.compiler.debug.DebugContext; import org.graalvm.compiler.graph.NodeClass; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.CallTargetNode.InvokeKind; import org.graalvm.compiler.nodes.NodeView; import org.graalvm.compiler.nodes.ParameterNode; import org.graalvm.compiler.nodes.ReturnNode; --- 22,37 ---- */ package org.graalvm.compiler.hotspot.replacements; import org.graalvm.compiler.core.common.type.AbstractPointerStamp; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.core.common.type.StampPair; import org.graalvm.compiler.debug.DebugContext; import org.graalvm.compiler.graph.NodeClass; + import org.graalvm.compiler.hotspot.meta.HotSpotLoweringProvider; import org.graalvm.compiler.nodeinfo.NodeInfo; import org.graalvm.compiler.nodes.CallTargetNode.InvokeKind; import org.graalvm.compiler.nodes.NodeView; import org.graalvm.compiler.nodes.ParameterNode; import org.graalvm.compiler.nodes.ReturnNode;
*** 43,52 **** --- 42,52 ---- import org.graalvm.compiler.nodes.java.NewInstanceNode; import org.graalvm.compiler.nodes.java.StoreFieldNode; import org.graalvm.compiler.nodes.spi.LoweringTool; import org.graalvm.compiler.nodes.spi.Replacements; import org.graalvm.compiler.nodes.type.StampTool; + import org.graalvm.compiler.replacements.SnippetTemplate.SnippetInfo; import org.graalvm.compiler.replacements.nodes.BasicObjectCloneNode; import jdk.vm.ci.meta.Assumptions; import jdk.vm.ci.meta.ResolvedJavaField; import jdk.vm.ci.meta.ResolvedJavaMethod;
*** 75,89 **** @Override @SuppressWarnings("try") protected StructuredGraph getLoweredSnippetGraph(LoweringTool tool) { ResolvedJavaType type = StampTool.typeOrNull(getObject()); if (type != null) { if (type.isArray()) { ! Method method = ObjectCloneSnippets.arrayCloneMethods.get(type.getComponentType().getJavaKind()); ! if (method != null) { ! final ResolvedJavaMethod snippetMethod = tool.getMetaAccess().lookupJavaMethod(method); final Replacements replacements = tool.getReplacements(); StructuredGraph snippetGraph = null; DebugContext debug = getDebug(); try (DebugContext.Scope s = debug.scope("ArrayCloneSnippet", snippetMethod)) { snippetGraph = replacements.getSnippet(snippetMethod, null, graph().trackNodeSourcePosition(), this.getNodeSourcePosition()); --- 75,92 ---- @Override @SuppressWarnings("try") protected StructuredGraph getLoweredSnippetGraph(LoweringTool tool) { ResolvedJavaType type = StampTool.typeOrNull(getObject()); + if (type != null) { if (type.isArray()) { ! HotSpotLoweringProvider lowerer = (HotSpotLoweringProvider) tool.getLowerer(); ! ObjectCloneSnippets.Templates objectCloneSnippets = lowerer.getObjectCloneSnippets(); ! SnippetInfo info = objectCloneSnippets.arrayCloneMethods.get(type.getComponentType().getJavaKind()); ! if (info != null) { ! final ResolvedJavaMethod snippetMethod = info.getMethod(); final Replacements replacements = tool.getReplacements(); StructuredGraph snippetGraph = null; DebugContext debug = getDebug(); try (DebugContext.Scope s = debug.scope("ArrayCloneSnippet", snippetMethod)) { snippetGraph = replacements.getSnippet(snippetMethod, null, graph().trackNodeSourcePosition(), this.getNodeSourcePosition());
< prev index next >