• Colomban Wendling's avatar
    Rewrite symbols tree updating code · ef0b0599
    Colomban Wendling yazdı
    Old implementation was not really fitting the updating needs and had a
    bug making symbols disappear if they haven't changed but their parent
    did (e.g. when a C++ constructor's signature changed).
    
    New implementation does:
    1) walk old tree, updating or removing rows;
    2) add remaining tags.
    
    It walks less than (new_tags + old_tags + new_tags) in the worst case,
    thanks to some hash table-based caching;  and also gets rid of the
    "valid" column in the symbols tree, saving a few bytes in memory.
    
    Finally, there is a ~7% performance gain (from 21 to 18ms) upon common
    tree updates, sometimes more.
    ef0b0599
sidebar.h 1.82 KB