Otawa
0.10
|
Base class of the components of a program file segment. More...
#include <otawa/prog/ProgItem.h>
Public Member Functions | |
ProgItem * | next (void) const |
Get the next program item. More... | |
ProgItem * | previous (void) const |
Get the previous program item. More... | |
virtual address_t | address (void) const =0 |
Get the address of the item . More... | |
virtual t::uint32 | size (void) const =0 |
Get the size of the item in bytes. More... | |
address_t | topAddress (void) const |
Compute the address of the item immediately following the current item. More... | |
virtual Inst * | toInst (void) |
Return the instruction matching the current item. More... | |
Property * | getProp (const AbstractIdentifier *id) const |
Find a property by its identifier. More... | |
void | setProp (Property *prop) |
Set the property in the property list removing any double. More... | |
void | setProp (const AbstractIdentifier *id) |
void | removeProp (const AbstractIdentifier *id) |
Remove a property matching the given identifier. More... | |
void | removeProp (const AbstractIdentifier &id) |
Property * | extractProp (const AbstractIdentifier *id) |
Remove a property matching the given identifier and return it. More... | |
Property * | extractProp (const AbstractIdentifier &id) |
Remove a property matching the given identifier and return it. More... | |
void | addProp (Property *prop) |
Add property to the list without checking of duplication. More... | |
void | removeAllProp (const AbstractIdentifier *id) |
Remove all the properties matching the given identifier. More... | |
bool | hasProp (const AbstractIdentifier &id) const |
Test if the property list contains a property matching the given identifier. More... | |
void | clearProps (void) |
Remove all properties from the list. More... | |
void | addProps (const PropList &props) |
Add all properties from the given property list, in a reverse order. More... | |
void | print (elm::io::Output &out) const |
Display the current property list. More... | |
Static Public Attributes | |
static const PropList | EMPTY |
This is an empty proplist for convenience. More... | |
Protected Member Functions | |
virtual | ~ProgItem (void) |
Protected destructor for avoiding implementation unexpected deletion. More... | |
void | insertPseudo (ProgItem *pos) |
bool | atBegin (void) const |
bool | atEnd (void) const |
void | replace (DLNode *node) |
void | insertAfter (DLNode *node) |
void | insertBefore (DLNode *node) |
void | remove (void) |
void | removeNext (void) |
void | removePrevious (void) |
Friends | |
class | Segment |
Base class of the components of a program file segment.
|
protectedvirtual |
Protected destructor for avoiding implementation unexpected deletion.
|
inherited |
Add property to the list without checking of duplication.
prop | Property to add. |
References otawa::Property::_next.
Referenced by otawa::Identifier< T >::add(), otawa::ast::ASTInfo::ASTInfo(), otawa::Identifier< otawa::arm::Info * >::copy(), otawa::AbstractIdentifier::initProps(), otawa::ContextualProperty::make(), otawa::script::Script::makeConfig(), otawa::ccg::Builder::processLBlockSet(), otawa::ipet::ILPSystemGetter::processWorkSpace(), otawa::Identifier< T >::ref(), otawa::ContextualProperty::ref(), and otawa::ContextualProperty::refProps().
|
inherited |
Add all properties from the given property list, in a reverse order.
props | Property list to clone. |
References copy(), otawa::PropList::head, and otawa::Property::next().
Referenced by otawa::display::CFGDrawer::CFGDrawer(), otawa::display::GraphVizGraph::GraphVizGraph(), otawa::ParamFeature::instantiate(), otawa::Manager::loadXML(), otawa::display::GraphVizGraph::newEdge(), otawa::display::GraphVizGraph::newNode(), otawa::PropList::operator=(), otawa::Process::Process(), otawa::PropList::PropList(), otawa::display::GraphVizItem::setProps(), otawa::VirtualBasicBlock::VirtualBasicBlock(), and otawa::VirtualCFG::VirtualCFG().
|
pure virtual |
Get the address of the item .
Implemented in otawa::loader::new_gliss::Inst, and otawa::loader::old_gliss::Inst.
Referenced by otawa::ParExeGraph::addEdgesForFetch(), otawa::PFGBuilder::addFunction(), otawa::LBlockBuilder::addLBlock(), otawa::ccg::LBlockBuilder::addLBlock(), otawa::LBlock::address(), otawa::ccg::LBlock::address(), otawa::BasicBlock::Bundle::address(), otawa::BasicBlock::address(), otawa::ets::ACSComputation::applyProcess(), otawa::CFGBuilder::buildCFG(), otawa::ets::WCETComputation::computation(), otawa::ast::BlockAST::countInstructions(), otawa::LBlock::countInsts(), otawa::ccg::LBlock::countInsts(), otawa::ipet::FlowFactLoader::enteringCall(), otawa::Virtualizer::enteringCall(), otawa::CFGInfo::findCFG(), otawa::Segment::findItemAt(), otawa::WorkSpace::format(), otawa::se::getFilterForAddr(), otawa::se::getFilterForReg(), otawa::VarTextDecoder::getInst(), otawa::ets::ACSComputation::initialization(), otawa::Segment::insert(), otawa::ipet::FlowFactLoader::lookLineAt(), otawa::ast::ASTLoader::makeBlock(), otawa::se::FilterBuilder::makeFilters(), otawa::DelayedBuilder::makeNOp(), otawa::LBlockManager::next(), otawa::DelayedBuilder::next(), otawa::FlowFactLoader::onLoop(), otawa::AccessedAddress::print(), otawa::dcache::BlockAccess::print(), otawa::ets::FlowFactLoader::processAST(), otawa::CFGChecker::processBB(), otawa::branch::OnlyConsBuilder::processBB(), otawa::branch::CondNumber::processBB(), otawa::LBlockBuilder::processBB(), otawa::ccg::LBlockBuilder::processBB(), otawa::dcache::CLPBlockBuilder::processBB(), otawa::etime::StandardEventBuilder::processBB(), otawa::dcache::BlockBuilder::processBB(), otawa::BBStatCollector::processCFG(), otawa::VarTextDecoder::processEntry(), otawa::VarTextDecoder::processWorkSpace(), otawa::CFGBuilder::processWorkSpace(), otawa::dcache::CatConstraintBuilder::processWorkSpace(), otawa::FlowFactLoader::scanIgnoreControl(), otawa::FlowFactLoader::scanIgnoreSeq(), otawa::FlowFactLoader::scanMultiBranch(), otawa::FlowFactLoader::scanMultiCall(), otawa::FlowFactLoader::scanNoInline(), otawa::FlowFactLoader::scanSetInlining(), otawa::DelayedBuilder::size(), otawa::CFGProcessor::str(), topAddress(), and otawa::BranchProblem::update().
|
inherited |
Remove all properties from the list.
References otawa::Property::next().
Referenced by otawa::PSTBuilder::getVCFG(), otawa::PropList::operator=(), otawa::display::GraphVizItem::setProps(), otawa::PropList::~PropList(), and otawa::WorkSpace::~WorkSpace().
|
inherited |
Remove a property matching the given identifier and return it.
Caller is responsible of the management of the obtained property.
id | Identifier of the property to extract. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::script::Script::makeConfig().
|
inlineinherited |
Remove a property matching the given identifier and return it.
Caller is responsible of the management of the obtained property.
id | Identifier of the property to extract. |
References otawa::PropList::extractProp().
Referenced by otawa::PropList::extractProp().
|
inherited |
Find a property by its identifier.
id | Identifier of the property to find. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::Identifier< otawa::arm::Info * >::exists(), otawa::ContextualProperty::exists(), otawa::ContextualProperty::find(), otawa::Identifier< T >::get(), otawa::PropList::hasProp(), otawa::ContextualProperty::make(), otawa::ParamFeature::matches(), otawa::ImmutableRef< T, I >::print(), otawa::ContextualProperty::print(), otawa::Identifier< T >::ref(), otawa::ContextualProperty::ref(), otawa::ContextualProperty::refProps(), otawa::Identifier< T >::set(), otawa::Identifier< T >::use(), and otawa::Identifier< T >::value().
|
inlineinherited |
Test if the property list contains a property matching the given identifier.
id | Property identifier to look for. |
References otawa::PropList::getProp().
Referenced by otawa::ipet::BasicConstraintsBuilder::addEntryConstraint(), otawa::Monitor::configure(), otawa::ImmutableRef< T, I >::exists(), and otawa::Manager::setVerbosity().
|
inlineprotected |
References elm::inhstruct::DLNode::insertBefore().
ProgItem * otawa::ProgItem::next | ( | void | ) | const |
Get the next program item.
References elm::inhstruct::DLNode::atEnd().
Referenced by otawa::Segment::findItemAt(), otawa::Segment::insert(), and otawa::Inst::nextInst().
ProgItem * otawa::ProgItem::previous | ( | void | ) | const |
Get the previous program item.
References elm::inhstruct::DLNode::atBegin().
Referenced by otawa::Segment::insert(), and otawa::Inst::prevInst().
|
inherited |
Display the current property list.
out | Output to use. |
Referenced by otawa::operator<<(), and otawa::ContextualProperty::print().
|
inherited |
Remove all the properties matching the given identifier.
id | Identifier of properties to remove. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::LoopUnroller::unroll().
|
inherited |
Remove a property matching the given identifier.
id | Identifier of the property to remove. |
References otawa::Property::_next, and otawa::Property::next().
Referenced by otawa::PSTBuilder::buildTree(), otawa::BBRemover< T >::clean(), otawa::display::CFGOutput::processCFG(), otawa::SubCFGBuilder::processWorkSpace(), otawa::Ref< T, I >::remove(), and otawa::ContextualPath::Ref< T >::remove().
|
inlineinherited |
References otawa::PropList::removeProp().
Referenced by otawa::PropList::removeProp().
|
inherited |
Set the property in the property list removing any double.
prop | Property to set. |
References otawa::Property::_next, otawa::Property::id(), and otawa::Property::next().
|
inlineinherited |
References otawa::PropList::setProp().
Referenced by otawa::PropList::setProp().
|
pure virtual |
Get the size of the item in bytes.
Referenced by otawa::Segment::insert(), otawa::DelayedBuilder::makeNOp(), otawa::DelayedBuilder::size(), and topAddress().
|
virtual |
Return the instruction matching the current item.
Reimplemented in otawa::Inst.
Referenced by otawa::Segment::findInstAt(), otawa::Inst::nextInst(), otawa::Inst::prevInst(), and otawa::TextDecoder::processWorkSpace().
|
inline |
Compute the address of the item immediately following the current item.
References address(), and size().
Referenced by otawa::ParExeGraph::addEdgesForFetch(), otawa::VarTextDecoder::getInst(), otawa::Segment::insert(), otawa::BasicBlock::Bundle::insts(), otawa::BasicBlock::Bundle::move(), otawa::DelayedBuilder::next(), otawa::BasicBlock::InstIter::next(), otawa::BasicBlock::BundleIter::next(), otawa::FlowFactLoader::scanIgnoreControl(), otawa::FlowFactLoader::scanIgnoreSeq(), otawa::FlowFactLoader::scanMultiBranch(), otawa::FlowFactLoader::scanMultiCall(), otawa::FlowFactLoader::scanNoInline(), otawa::FlowFactLoader::scanSetInlining(), otawa::DelayedBuilder::size(), and otawa::BasicBlock::Bundle::topAddress().
|
friend |
|
staticinherited |
This is an empty proplist for convenience.