/** * Handle the CluCalc print operator '?'. * * This only works for variables. * * @param variable The variable that should be printed. */ public StoreResultNode handlePrint(Expression variable) { if (variable instanceof Variable) { StoreResultNode storeResult = new StoreResultNode(graph, (Variable) variable); addNode(storeResult); return storeResult; } else { throw new IllegalArgumentException("Only variables can be marked for optimization."); } }
/** * Handle the CluCalc print operator '?'. * * This only works for variables. * * @param variable The variable that should be printed. */ public StoreResultNode handlePrint(Expression variable) { if (variable instanceof Variable) { StoreResultNode storeResult = new StoreResultNode(graph, (Variable) variable); addNode(storeResult); return storeResult; } else { throw new IllegalArgumentException("Only variables can be marked for optimization."); } }
@Override public StoreResultNode copyElements() { return new StoreResultNode(getGraph(), value.copy()); }
AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, arg); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable); curNode.insertBefore(storeNode); newArgs.add(newVariable);
AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, c); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable); curNode.insertBefore(storeNode); node.setR(newVariable); AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, c); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable); curNode.insertBefore(storeNode); node.setG(newVariable); AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, c); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable); curNode.insertBefore(storeNode); node.setB(newVariable); AssignmentNode assignmentNode = new AssignmentNode(graph, newVariable, c); curNode.insertBefore(assignmentNode); StoreResultNode storeNode = new StoreResultNode(graph, newVariable); curNode.insertBefore(storeNode); node.setAlpha(newVariable);
@Override public void transform(ControlFlowGraph graph) throws OptimizationException { //insert visualizing commands, if needed LinkedList<ExpressionStatement> statements = ExpressionStatementCollector.collectAllStatements(graph); String prefix = "_V_"; //2d HashMap<String, Expression> renderingExpressions = graph.getRenderingExpressions(); int i = 0; for (ExpressionStatement s : statements) { String productName = prefix + "PRODUCT" + i; AssignmentNode renderNode = new AssignmentNode(graph, new Variable(productName), s.getExpression()); graph.addLocalVariable(new Variable(productName)); s.insertAfter(renderNode); StoreResultNode outputRenderNode = new StoreResultNode(graph, new Variable(productName)); graph.addLocalVariable(new Variable(productName)); renderNode.insertAfter(outputRenderNode); renderingExpressions.put(productName, s.getExpression()); i++; } } }
s.insertAfter(renderNode); StoreResultNode outputRenderNode = new StoreResultNode(graph, new Variable(productName)); graph.addLocalVariable(new Variable(productName)); renderNode.insertAfter(outputRenderNode);