public AStateDeclIR getStateDecl(AModuleDeclIR module) { for (SDeclIR decl : module.getDecls()) { if (decl instanceof AStateDeclIR) { return (AStateDeclIR) decl; } } return null; }
private void groupDeps() { StrongConnectivityInspector<AFuncDeclIR, DefaultEdge> visitor = new StrongConnectivityInspector<>(deps); for (Set<AFuncDeclIR> scs : visitor.stronglyConnectedSets()) { if (scs.size() > 1) { AMrFuncGroupDeclIR aux = new AMrFuncGroupDeclIR(); aux.setFuncs(new LinkedList<>(scs)); // this line also removes the function from the functions block result.getDecls().add(aux); } } }
@SuppressWarnings("unused") private AFieldDeclIR getValue(String fieldName, String moduleName) { for (AModuleDeclIR module : allModules) { if (module.getName().equals(moduleName)) { for (SDeclIR decl : module.getDecls()) { if (decl instanceof AFieldDeclIR) { AFieldDeclIR fieldDecl = (AFieldDeclIR) decl; if (fieldDecl.getName().equals(fieldName)) { return fieldDecl; } } } } } log.error("Could not find field " + fieldName + " in module " + moduleName); return null; }
/** * Called by the {@link AModuleDeclIR} node from {@link AModuleDeclIR#apply(IAnalysis)}. * @param node the calling {@link AModuleDeclIR} node */ public void caseAModuleDeclIR(AModuleDeclIR node) throws AnalysisException { _visitedNodes.add(node); inAModuleDeclIR(node); if(node.getImport() != null && !_visitedNodes.contains(node.getImport())) { node.getImport().apply(this); } if(node.getExports() != null && !_visitedNodes.contains(node.getExports())) { node.getExports().apply(this); } { List<SDeclIR> copy = new ArrayList<SDeclIR>(node.getDecls()); for( SDeclIR e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } outAModuleDeclIR(node); }
/** * Called by the {@link AModuleDeclIR} node from {@link AModuleDeclIR#apply(IIsaAnalysis)}. * @param node the calling {@link AModuleDeclIR} node */ public void caseAModuleDeclIR(AModuleDeclIR node) throws AnalysisException { _visitedNodes.add(node); inAModuleDeclIR(node); if(node.getImport() != null && !_visitedNodes.contains(node.getImport())) { node.getImport().apply(this); } if(node.getExports() != null && !_visitedNodes.contains(node.getExports())) { node.getExports().apply(this); } { List<SDeclIR> copy = new ArrayList<SDeclIR>(node.getDecls()); for( SDeclIR e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this); } } } outAModuleDeclIR(node); }
/** * Called by the {@link AModuleDeclIR} node from {@link AModuleDeclIR#apply(IAnalysis)}. * @param node the calling {@link AModuleDeclIR} node */ public void caseAModuleDeclIR(AModuleDeclIR node, Q question) throws AnalysisException { _visitedNodes.add(node); inAModuleDeclIR(node, question); if(node.getImport() != null && !_visitedNodes.contains(node.getImport())) { node.getImport().apply(this, question); } if(node.getExports() != null && !_visitedNodes.contains(node.getExports())) { node.getExports().apply(this, question); } { List<SDeclIR> copy = new ArrayList<SDeclIR>(node.getDecls()); for( SDeclIR e : copy) { if(!_visitedNodes.contains(e)) { e.apply(this, question); } } } outAModuleDeclIR(node, question); }
@Override public void caseAStateDeclIR(AStateDeclIR node) throws AnalysisException { if (node.getInitDecl() != null) { AMethodDeclIR initOp; if (node.getExecutable()) { initOp = makeExecutableInit(node); } else { initOp = info.getDeclAssistant().funcToMethod(node.getInitDecl()); } AModuleDeclIR module = node.getAncestor(AModuleDeclIR.class); module.getDecls().add(initOp); node.setInitDecl(null); } }
for (SDeclIR d : m.getIrNode().getDecls())
/** * Called by the {@link AModuleDeclIR} node from {@link AModuleDeclIR#apply(IAnalysis)}. * @param node the calling {@link AModuleDeclIR} node */ public A caseAModuleDeclIR(AModuleDeclIR node, Q question) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node, question); mergeReturns(retVal,inAModuleDeclIR(node, question)); if(node.getImport() != null && !_visitedNodes.contains(node.getImport())) { mergeReturns(retVal,node.getImport().apply(this, question)); } if(node.getExports() != null && !_visitedNodes.contains(node.getExports())) { mergeReturns(retVal,node.getExports().apply(this, question)); } { List<SDeclIR> copy = new ArrayList<SDeclIR>(node.getDecls()); for( SDeclIR e : copy) { if(!_visitedNodes.contains(e)) { mergeReturns(retVal,e.apply(this, question)); } } } mergeReturns(retVal,outAModuleDeclIR(node, question)); return retVal; }
/** * Called by the {@link AModuleDeclIR} node from {@link AModuleDeclIR#apply(IAnalysis)}. * @param node the calling {@link AModuleDeclIR} node */ public A caseAModuleDeclIR(AModuleDeclIR node) throws AnalysisException { _visitedNodes.add(node); A retVal = createNewReturnValue(node); mergeReturns(retVal,inAModuleDeclIR(node)); if(node.getImport() != null && !_visitedNodes.contains(node.getImport())) { mergeReturns(retVal,node.getImport().apply(this)); } if(node.getExports() != null && !_visitedNodes.contains(node.getExports())) { mergeReturns(retVal,node.getExports().apply(this)); } { List<SDeclIR> copy = new ArrayList<SDeclIR>(node.getDecls()); for( SDeclIR e : copy) { if(!_visitedNodes.contains(e)) { mergeReturns(retVal,e.apply(this)); } } } mergeReturns(retVal,outAModuleDeclIR(node)); return retVal; }
|| declCg instanceof AFieldDeclIR) moduleCg.getDecls().add(declCg); } else
@Override public void caseAModuleDeclIR(AModuleDeclIR node) throws AnalysisException { result = new AModuleDeclIR(); result.setExports(node.getExports()); result.setImport(node.getImport()); result.setIsDLModule(node.getIsDLModule()); result.setIsFlat(node.getIsFlat()); result.setMetaData(node.getMetaData()); result.setName(node.getName()); result.setSourceNode(node.getSourceNode()); result.setTag(node.getTag()); result.setDecls(node.getDecls()); filterFunctions(node.getDecls()); calcDependencies(); }
for (SDeclIR decl : new LinkedList<>(node.getDecls()))
AModuleDeclIR cClass = (AModuleDeclIR) status.getIrNode(); SortDependencies sortTrans = new SortDependencies(cClass.getDecls()); generator.applyPartialTransformation(status, sortTrans);