comparison graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/generator/NodeCodeGenerator.java @ 21453:37f65dc8c713

Optimize singleton factory lists.
author Kevin Menard <kevin.j.menard@oracle.com>
date Thu, 21 May 2015 11:15:56 -0400
parents 833e088ee7d3
children
comparison
equal deleted inserted replaced
21452:a0ae5a2ac5cf 21453:37f65dc8c713
166 166
167 CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC, STATIC), listType, "getFactories"); 167 CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC, STATIC), listType, "getFactories");
168 168
169 CodeTreeBuilder builder = method.createBuilder(); 169 CodeTreeBuilder builder = method.createBuilder();
170 builder.startReturn(); 170 builder.startReturn();
171 builder.startStaticCall(context.getType(Arrays.class), "asList"); 171
172 if (factoryList.size() > 1) {
173 builder.startStaticCall(context.getType(Arrays.class), "asList");
174 } else {
175 builder.startStaticCall(context.getType(Collections.class), "singletonList");
176 }
172 177
173 for (NodeData child : factoryList) { 178 for (NodeData child : factoryList) {
174 builder.startGroup(); 179 builder.startGroup();
175 NodeData childNode = child; 180 NodeData childNode = child;
176 List<NodeData> factories = new ArrayList<>(); 181 List<NodeData> factories = new ArrayList<>();