• Andrew Grieve's avatar
    Supersize: Create aliases for inline symbols · c36863be
    Andrew Grieve authored
    If a symbol was found in multiple object files, we would previously have
    changed its object path to be the common ancestor of all paths it
    appeared in. This is a problem because it would cause queries based on
    path to not find these symbols.
    
    On the flip side, we were creating string literal aliases for every
    path a string literal appeared in. For small strings such as "", or
    "\n", this would lead to an unreasonable number of aliases.
    
    This changes supersize to first create symbols for all paths, and then
    collapse groups with a large number of aliases into a single symbol with
    ancestor paths.
    
    Before this change:
    .text: 48998 symbols have shared ownership (1553806 bytes)
    .rodata: 541 symbols have shared ownership (285728 bytes)
    
    After:
    .text: 1586 symbols have shared ownership (48252 bytes)
    .rodata: 141 symbols have shared ownership (2828 bytes)
    
    This increases the symbol count 702115->912322 and the file size
    9.67mb->10.39mb.
    
    This increases the runtime on my machine from ~40s -> ~42s.
    
    Bug: 776032
    Change-Id: I457361762b1f241f114b52464812e6035e881538
    Reviewed-on: https://chromium-review.googlesource.com/726460
    Commit-Queue: agrieve <agrieve@chromium.org>
    Reviewed-by: default avatarSamuel Huang <huangs@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#510205}
    c36863be
Console.golden 10.5 KB