|
enum | log_level_t {
LOG_NONE = 0,
LOG_PROC = 1,
LOG_FILE = 2,
LOG_DEPS = LOG_FILE,
LOG_FUN = 3,
LOG_CFG = LOG_FUN,
LOG_BLOCK = 4,
LOG_BB = LOG_BLOCK,
LOG_INST = 5
} |
|
typedef enum otawa::Monitor::log_level_t | log_level_t |
|
elm::io::Output | log |
|
elm::io::Output | out |
|
void | addCleaner (const AbstractFeature &feature, Cleaner *cleaner) |
|
template<class T > |
void | addDeletor (const AbstractFeature &feature, const Ref< T *, Identifier< T * > > &ref) |
|
template<class T > |
void | addRemover (const AbstractFeature &feature, const Ref< T, Identifier< T > > &ref) |
|
virtual void | cleanup (WorkSpace *ws) |
| This method is called after the end of the processor analysis to let it do some clean up. More...
|
|
virtual void | collectStats (WorkSpace *ws) |
| This method is invoked if the user has required to collect statistics about the processor. More...
|
|
virtual void | commit (WorkSpace *ws) |
| This processor is called as soon as all the required and invalidated features has been removed to let the processor install its own properties. More...
|
|
virtual void | destroy (WorkSpace *ws) |
| This method is called when the properties produced by a processor are no more useful and can be release. More...
|
|
virtual void | dump (WorkSpace *ws, Output &out) |
| Function called for debugging purpose when dump properties (otawa::DUMP, otawa::DUMP_FOR) are provided. More...
|
|
void | invalidate (const AbstractFeature &feature) |
| Usually called from a processor constructor, this method records a feature invalidated by the work of the current processor. More...
|
|
bool | isAllocated (void) const |
|
bool | isCollectingStats (void) const |
|
bool | isDone () const |
|
bool | isDumping () const |
|
bool | isPrepared (void) const |
|
bool | isTimed (void) const |
|
virtual void | prepare (WorkSpace *ws) |
| This method called to let the processor customize its requirements according to some generic feature. More...
|
|
Progress & | progress (void) |
|
void | provide (const AbstractFeature &feature) |
| Usually called from a processor constructor, this method records a feature provided by the work of the current processor. More...
|
|
void | record (StatCollector *collector) |
| Add a statistics collector to the current workspace collection. More...
|
|
bool | recordsStats (void) const |
|
void | recordStat (const AbstractFeature &feature, StatCollector *collector) |
| Add a statistics collector to the current workspace collection. More...
|
|
void | require (const AbstractFeature &feature) |
| Usually called from a processor constructor, this method records a required feature for the work of the current processor. More...
|
|
virtual void | requireDyn (WorkSpace *ws, const PropList &props) |
| Method called after registration requirements to support dynamic requirements. More...
|
|
virtual void | setup (WorkSpace *ws) |
| This method is called before an anlysis to let the processor do some initialization. More...
|
|
void | track (Cleaner *cleaner) |
| Track the given cleaner, that is, record the cleaner in the analysis and trigger when the analysis is deleted. More...
|
|
template<class T > |
void | track (const AbstractFeature &feature, const Ref< T *, const Identifier< T * > > &ref) |
|
template<class T > |
void | track (const AbstractFeature &feature, const Ref< T *, Identifier< T * > > &ref) |
|
template<class T > |
void | track (const AbstractFeature &feature, const Ref< T, const Identifier< T > > &ref) |
|
template<class T > |
void | track (const AbstractFeature &feature, const Ref< T, Identifier< T > > &ref) |
|
template<class T > |
T * | track (const AbstractFeature &feature, T *object) |
|
template<class T > |
void | track (const Ref< T *, const Identifier< T * > > &ref) |
|
template<class T > |
void | track (const Ref< T, const Identifier< T > > &ref) |
|
template<class T > |
T * | track (T *object) |
|
void | use (const AbstractFeature &feature) |
| Usually called from a processor constructor, this method records a feature as used by the work of the current processor. More...
|
|
void | warn (const String &message) |
| Display a warning. More...
|
|
WorkSpace * | workspace (void) const |
|
void | setWorkspace (WorkSpace *workspace) |
| Update the workspace in the monitor. More...
|
|
PropList * | stats |
|
t::uint32 | flags |
|
static const t::uint32 | CLOSE_DUMP = 0x100 << CUSTOM_SHIFT |
|
static const t::uint32 | IS_ALLOCATED = 0x004 << CUSTOM_SHIFT |
|
static const t::uint32 | IS_COLLECTING = 0x010 << CUSTOM_SHIFT |
|
static const t::uint32 | IS_DONE = 0x040 << CUSTOM_SHIFT |
|
static const t::uint32 | IS_DUMPING = 0x080 << CUSTOM_SHIFT |
|
static const t::uint32 | IS_PREPARED = 0x008 << CUSTOM_SHIFT |
|
static const t::uint32 | IS_TIED = 0x020 << CUSTOM_SHIFT |
|
static const t::uint32 | IS_TIMED = 0x001 << CUSTOM_SHIFT |
|
static const t::uint32 | CUSTOM_SHIFT = 16 |
|
static const t::uint32 | IS_QUIET = 0x02 |
|
static const t::uint32 | IS_VERBOSE = 0x01 |
|
This processor builds the MUST and PERS cache states before each basic block. The MUST cache state lists the ID of cache blocks which must be in the cache and is useful to determine ALWAYS_HIT blocks. The PERS cache state lists the ID of cache blocks which may be in the cache, but cannot be replaced once they have been loaded. It is useful to determine the FIRST_MISS blocks.
The Persistence can be computed in 3 ways:
- Outer: A block is FIRST_MISS if it can not be replaced within the whole program
- Inner: A block is FIRST_MISS if it can not be replaced from the inner-most loop containing it.
- Multi: The FIRST_MISS is parametrized by a variable L, representing the outer-most loop whose execution does not replace the block.
The analysis can be used with Pseudo-Unrolling: In this case, unroll (using FirstUnrollingFixPoint with HalfAbsInt) the first iteration of each loop during abstract interpretation. But the ACS corresponding to multiple iterations of a basic block are merged back into one ACS at the end of the analysis.
- Configuration
- FIRSTMISS_LEVEL identifier determines the First Miss method (FML_OUTER, FML_INNER, FML_MULTI, FML_NONE). FML_MULTI is the default.
- PSEUDO_UNROLLING identifier determines if we do the Pseudo-Unrolling while doing the abstract interpretation.
- Required features
-
- Provided features
-
- Statistics
- none
This processor produces the Abstract Cache States (ACS), for the May and Persistence problems.
- Configuration
- none
- Required features
-
- Provided features
-
- Statistics
- none