• Benoit Lize's avatar
    android: Don't parse /proc/self/maps to prefetch the library. · ef6f0fb3
    Benoit Lize authored
    This commit changes the behavior of the native library prefetcher to
    rely on sentinel symbols rather than parsing /proc/self/maps.
    
    Behavior changes:
    1. This will make the code no longer prefetch .data (because we don't
       look for it in the mappings), neither the sections that are part of
       the same mapping as .text (for instance, .rodata when using
       ld.gold). This is intended.
    2. As a consequence, the UMA metric
       LibraryLoader.PercentageOfResidentCodeBeforePrefetch will move, as
       both sides of the ratio will change, and the population will change
       slightly as well (since code is currently not correctly ordered on
       ARM64 and x86_64)
    
    - Removes the reliance on a somewhat brittle parsing of a file
    - Parsing /proc/self/maps costs ~50ms of CPU on a Nexus 5X (on a little
      core, as this is triggered from an AsyncTask)
    - Allows to only fetch part of the native library (in a forthcoming CL)
    
    Rationale: 
    Change-Id: I0bb7b28af3c3bd4af5745e2ebcc1fbf283bcc0c1
    Reviewed-on: https://chromium-review.googlesource.com/874470
    Commit-Queue: Benoit L <lizeb@chromium.org>
    Reviewed-by: default avatarEgor Pasko <pasko@chromium.org>
    Reviewed-by: default avataragrieve <agrieve@chromium.org>
    Reviewed-by: default avatarMatthew Cary <mattcary@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#531515}
    ef6f0fb3
anchor_functions.h 833 Bytes