fix: Dedup and share Modules in interface files

perf: Share Module in Iface Symbol Table  
This commit modifies the structure of the serialized `SymbolTable Name`
to then re-use and share the `Module` (both on disk and in memory) across
all `Name`s from the same module.  
The new structure looks like:  
  <total name count>
  $modules.size
  for (mod, names) in $modules:
    $mod
    $names.size
    for table_ix, occ in $names
      $table_ix
      $occ  
i.e. we put the module just once, followed by all names in that module.
When deserializing, we deserialize the module just once, and all the
following `Name`s are constructed with a pointer to that same decoded
`Module`.
Fixes #27401
Edited by Rodrigo Mesquita

Merge request reports

Loading