/* This file is part of JOP, the Java Optimized Processor see <http://www.jopdesign.com/> Copyright (C) 2008, Benedikt Huber (benedikt.huber@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.jopdesign.wcet.report; import com.jopdesign.common.MethodInfo; import com.jopdesign.common.code.ControlFlowGraph; import com.jopdesign.common.code.ExecutionContext; import com.jopdesign.common.code.LoopBound; import com.jopdesign.wcet.WCETTool; import java.util.Collection; import java.util.Set; import java.util.TreeSet; public class MethodReport { private MethodInfo info; private Collection<LoopBound> loopBounds; private Set<String> referenced; String page; private int sizeInWords; private ControlFlowGraph fg; private int cacheBlocks; public MethodReport(WCETTool p, MethodInfo m, String page) { this.info = m; fg = p.getFlowGraph(info); this.loopBounds = fg.buildLoopBoundMap().values(); this.sizeInWords = fg.getNumberOfWords(); this.referenced = new TreeSet<String>(); for (ExecutionContext cgn : p.getCallGraph().getReferencedMethods(m)) { MethodInfo ref = cgn.getMethodInfo(); this.referenced.add(ref.toString()); } this.page = page; this.cacheBlocks = p.getWCETProcessorModel().getMethodCache().requiredNumberOfBlocks(fg.getNumberOfWords()); } public MethodInfo getInfo() { return info; } public Collection<LoopBound> getLoopBounds() { return loopBounds; } public Set<String> getReferenced() { return referenced; } public String getPage() { return page; } public int getSizeInWords() { return this.sizeInWords; } public int getCacheBlocks() { return cacheBlocks; } }