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