Keep a map of NetNets for fast access.
It turns out that netnets in scopes are accessed a lot, and mapping them may help with performance.
This commit is contained in:
parent
81a0007f22
commit
0af896a7ff
|
|
@ -370,11 +370,13 @@ void NetScope::add_signal(NetNet*net)
|
||||||
net->sig_prev_->sig_next_ = net;
|
net->sig_prev_->sig_next_ = net;
|
||||||
}
|
}
|
||||||
signals_ = net;
|
signals_ = net;
|
||||||
|
signals_map_[net->name()]=net;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetScope::rem_signal(NetNet*net)
|
void NetScope::rem_signal(NetNet*net)
|
||||||
{
|
{
|
||||||
assert(net->scope() == this);
|
assert(net->scope() == this);
|
||||||
|
signals_map_.erase(net->name());
|
||||||
if (signals_ == net)
|
if (signals_ == net)
|
||||||
signals_ = net->sig_prev_;
|
signals_ = net->sig_prev_;
|
||||||
|
|
||||||
|
|
@ -396,6 +398,11 @@ NetNet* NetScope::find_signal(perm_string key)
|
||||||
if (signals_ == 0)
|
if (signals_ == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (signals_map_.find(key)!=signals_map_.end())
|
||||||
|
return signals_map_[key];
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
|
||||||
NetNet*cur = signals_;
|
NetNet*cur = signals_;
|
||||||
do {
|
do {
|
||||||
if (cur->name() == key)
|
if (cur->name() == key)
|
||||||
|
|
|
||||||
|
|
@ -861,6 +861,7 @@ class NetScope : public Attrib {
|
||||||
NetNet::Type default_nettype_;
|
NetNet::Type default_nettype_;
|
||||||
|
|
||||||
NetEvent *events_;
|
NetEvent *events_;
|
||||||
|
std::map <perm_string,NetNet*> signals_map_;
|
||||||
NetNet *signals_;
|
NetNet *signals_;
|
||||||
perm_string module_name_;
|
perm_string module_name_;
|
||||||
union {
|
union {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue