protected VirtualArrayNode createVirtualArrayNode(int constantLength) { return new VirtualArrayNode(elementType(), constantLength); }
protected ConstantNode defaultElementValue() { return ConstantNode.defaultForKind(elementType().getJavaKind(), graph()); }
protected void processNewArray(NewArrayNode node, TypeFlowsOfNodes state) { AnalysisType type = ((AnalysisType) node.elementType()).getArrayClass(); assert type.isInstantiated(); Object key = uniqueKey(node); BytecodeLocation allocationLabel = bb.analysisPolicy().createAllocationSite(bb, key, method); TypeFlowBuilder<?> newArrayBuilder = TypeFlowBuilder.create(bb, node, NewInstanceTypeFlow.class, () -> { NewInstanceTypeFlow newArray = createNewArrayTypeFlow(node, type, allocationLabel); methodFlow.addAllocation(newArray); return newArray; }); state.add(node, newArrayBuilder); }
@Override public void lower(NewArrayNode node, LoweringTool tool) { if (node.graph().getGuardsStage() != StructuredGraph.GuardsStage.AFTER_FSA) { return; } SharedType type = (SharedType) node.elementType().getArrayClass(); Arguments args = new Arguments(newArray, node.graph().getGuardsStage(), tool.getLoweringStage()); args.add("hub", type.getHub()); args.add("length", node.length()); args.addConst("layoutEncoding", type.getHub().getLayoutEncoding()); args.addConst("fillContents", node.fillContents()); addCounterArgs(args, node, type); template(node, args).instantiate(providers.getMetaAccess(), node, SnippetTemplate.DEFAULT_REPLACER, args); } }
AnalysisType type = ((AnalysisType) node.elementType()).getArrayClass(); type.registerAsAllocated(node);
ResolvedJavaType elementType = newArrayNode.elementType(); HotSpotResolvedObjectType arrayType = (HotSpotResolvedObjectType) elementType.getArrayClass(); JavaKind elementKind = elementType.getJavaKind();
NewArrayNode newArrayNode = (NewArrayNode) node; PEAppendGraphBuilderContext graphBuilderContext = new PEAppendGraphBuilderContext(methodScope, newArrayNode); ResolvedJavaType elementType = newArrayNode.elementType(); ValueNode length = newArrayNode.length(); for (NodePlugin nodePlugin : nodePlugins) {