switch cached Trigger values to be opaque-and-generic, rather than assuming CallExpr's

This commit is contained in:
Vern Paxson 2022-05-12 13:54:46 -07:00
parent 9ada7ac4e7
commit 5eb37e4c78
9 changed files with 50 additions and 40 deletions

View file

@ -350,7 +350,7 @@ bool Trigger::Eval()
{
Trigger* trigger = frame->GetTrigger();
assert(trigger);
assert(frame->GetCall());
assert(frame->GetTriggerAssoc());
assert(trigger->attached == this);
#ifdef DEBUG
@ -359,7 +359,7 @@ bool Trigger::Eval()
delete[] pname;
#endif
auto queued = trigger->Cache(frame->GetCall(), v.get());
auto queued = trigger->Cache(frame->GetTriggerAssoc(), v.get());
trigger->Release();
frame->ClearTrigger();
@ -404,7 +404,7 @@ void Trigger::Timeout()
{
Trigger* trigger = frame->GetTrigger();
assert(trigger);
assert(frame->GetCall());
assert(frame->GetTriggerAssoc());
assert(trigger->attached == this);
#ifdef DEBUG
@ -413,7 +413,7 @@ void Trigger::Timeout()
pname);
delete[] pname;
#endif
auto queued = trigger->Cache(frame->GetCall(), v.get());
auto queued = trigger->Cache(frame->GetTriggerAssoc(), v.get());
trigger->Release();
frame->ClearTrigger();
@ -480,12 +480,12 @@ void Trigger::Attach(Trigger* trigger)
Hold();
}
bool Trigger::Cache(const CallExpr* expr, Val* v)
bool Trigger::Cache(const void* obj, Val* v)
{
if ( disabled || ! v )
return false;
ValCache::iterator i = cache.find(expr);
ValCache::iterator i = cache.find(obj);
if ( i != cache.end() )
{
@ -494,7 +494,7 @@ bool Trigger::Cache(const CallExpr* expr, Val* v)
}
else
cache.insert(ValCache::value_type(expr, v));
cache.insert(ValCache::value_type(obj, v));
Ref(v);
@ -502,11 +502,11 @@ bool Trigger::Cache(const CallExpr* expr, Val* v)
return true;
}
Val* Trigger::Lookup(const CallExpr* expr)
Val* Trigger::Lookup(const void* obj)
{
assert(! disabled);
ValCache::iterator i = cache.find(expr);
ValCache::iterator i = cache.find(obj);
return (i != cache.end()) ? i->second : 0;
}