You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Exclude symbols with empty module from the module map
For languages such as Java, where the `module` field of `symbolt` is
kept empty, maintaining the `internal_symbol_module_map` of the symbol
table can cause a performance bottleneck. This is because all symbols
end up mapped to the same key in this map. So when
`symbol_tablet::erase` attempts to remove a symbol from this map the
lookup results in a range containing the entire collection of symbols on
which it then performs a linear search to find the exact symbol to
remove.
Languages which don't set the `module` field never need to do any
lookups in the module map. The downstream EBMC repository always uses a
non-empty module to do its lookups. Therefore we can leave symbols with
an empty module out of the module map. This results in a performance
improvement for Java, whilst retaining EBMC compatibilty.
0 commit comments