@Override public ValueNode findLength(FindLengthMode mode, ConstantReflectionProvider constantReflection) { return dimension(0); } }
protected NewMultiArrayNode createNewMultiArray(ResolvedJavaType type, ValueNode[] dimensions) { return new NewMultiArrayNode(type, dimensions); }
@Override public void lower(NewMultiArrayNode node, LoweringTool tool) { if (node.graph().getGuardsStage() != StructuredGraph.GuardsStage.AFTER_FSA) { return; } StructuredGraph graph = node.graph(); int rank = node.dimensionCount(); ValueNode[] dims = new ValueNode[rank]; for (int i = 0; i < node.dimensionCount(); i++) { dims[i] = node.dimension(i); } SharedType type = (SharedType) node.type(); Arguments args = new Arguments(newMultiArray, graph.getGuardsStage(), tool.getLoweringStage()); args.add("hub", type.getHub()); args.addConst("rank", rank); args.addVarargs("dimensions", int.class, StampFactory.forKind(JavaKind.Int), dims); addCounterArgs(args, node, type); template(node, args).instantiate(providers.getMetaAccess(), node, SnippetTemplate.DEFAULT_REPLACER, args); } }
AnalysisType type = ((AnalysisType) node.type()); for (int i = 0; i < node.dimensionCount(); i++) { type.registerAsAllocated(node); type = type.getComponentType();
NewMultiArrayNode newArrayNode = (NewMultiArrayNode) node; PEAppendGraphBuilderContext graphBuilderContext = new PEAppendGraphBuilderContext(methodScope, newArrayNode); ResolvedJavaType elementType = newArrayNode.type(); ValueNode[] dimensions = newArrayNode.dimensions().toArray(new ValueNode[0]); for (NodePlugin nodePlugin : nodePlugins) { if (nodePlugin.handleNewMultiArray(graphBuilderContext, elementType, dimensions)) {
AnalysisType type = ((AnalysisType) node.type()); assert type.isInstantiated();
public void lower(NewMultiArrayNode newmultiarrayNode, LoweringTool tool) { StructuredGraph graph = newmultiarrayNode.graph(); OptionValues localOptions = graph.getOptions(); int rank = newmultiarrayNode.dimensionCount(); ValueNode[] dims = new ValueNode[rank]; for (int i = 0; i < newmultiarrayNode.dimensionCount(); i++) { dims[i] = newmultiarrayNode.dimension(i); } HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) newmultiarrayNode.type(); ConstantNode hub = ConstantNode.forConstant(KlassPointerStamp.klassNonNull(), type.klass(), providers.getMetaAccess(), graph); SnippetInfo snippet = GeneratePIC.getValue(localOptions) ? newmultiarrayPIC : newmultiarray; Arguments args = new Arguments(snippet, graph.getGuardsStage(), tool.getLoweringStage()); args.add("hub", hub); args.addConst("rank", rank); args.addVarargs("dimensions", int.class, StampFactory.forKind(JavaKind.Int), dims); template(newmultiarrayNode, args).instantiate(providers.getMetaAccess(), newmultiarrayNode, DEFAULT_REPLACER, args); }