On Aug 11, 2011, at 16:29, Anna Zaks wrote:

> 
> On Aug 11, 2011, at 3:42 PM, Ted Kremenek wrote:
> 
>> On Aug 11, 2011, at 3:04 PM, Jordy Rose wrote:
>> 
>>> I'm curious what the motivation was for choosing to store the symbols as 
>>> Base -> [list of dependents] instead of Dependent -> Base. I doubt many 
>>> symbols are going to have multiple dependents, especially when they're 
>>> being ORed together instead of ANDed. I realize that it makes it easy to 
>>> clear the map when the base symbol dies, but since every dead symbol sweep 
>>> hits every symbol anyway that doesn't seem to be a problem. (SymbolDerived 
>>> works the other way around.)
>> 
>> I think you have a good point.  Going from base to dependents instead of 
>> dependents to base is probably more eager than we need to be.  We only need 
>> to care if a dependent's lifetime is extended if we think it might be dead.  
>> If a dependent looks dead, lazily querying to see if a the base symbol is 
>> live seems slightly more efficient to me.
>> 
>> Anna: what do you think?
> 
> I think it would be cleaner to leave the Base -> [list of dependents] mapping:
> 
> 1) The algorithm for determining when a symbol is alive or dead is complex, 
> so we might need to wait until all the symbols are processed and then go 
> though the dead ones checking if the dead symbols have the dependencies. I 
> think the current design is cleaner and shouldn't be much slower given the 
> suggested code review cleanups, in particular, "don't mark a 
> symbol/dependents live if it's already live".
> 
> 2) I think the checkers might want to specify that multiple symbols depend on 
> one primary one, so keeping the map better represents that.

All right, sounds good. Just wanted to hear what the reasoning was...thanks!
Jordy
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to