[WebLayer] Fix relro sharing in GPU and load native lib in the background
WebLayer relro sharing in the browser process has likely always been broken in WebView compatibility mode because the ClassLoader created does not have a class loader namespace, see here: https://cs.android.com/android/platform/superproject/+/master:frameworks/base/native/webview/loader/loader.cpp;l=129-132;drc=master Unfortunately, this is difficult to fix since sharing relro in WebLayer when it is loaded in the same process as WebView causes crashes. This will be investigated more in a follow up. Relro sharing was never implemented for the WebLayer GPU process, and this change adds support to do that. In addition, library loading is kicked off on a separate thread much earlier in startup, which allows it to finish before it is needed on the UI thread. Pinpoint runs: startup.mobile: https://pinpoint-dot-chromeperf.appspot.com/job/169ab7ef520000 -18.4% messageloop_start_time -3.4% navigation_commit_time -1.8% first_contentful_paint_time weblayer_startup: https://pinpoint-dot-chromeperf.appspot.com/job/17959d48d20000 -6.4% weblayer_startup_wall_time system_health.memory_mobile: https://pinpoint-dot-chromeperf.appspot.com/job/16d61b37520000 -10.0% (3.9MiB) all_processes private_dirty_size -29.8% (3.7Mib) gpu_process private_dirty_size Bug: 1146438 Change-Id: I52292f0472f18397b0a900307649e6f1b54bd5c1 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2581007 Commit-Queue: Clark DuVall <cduvall@chromium.org> Reviewed-by:Richard Coles <torne@chromium.org> Cr-Commit-Position: refs/heads/master@{#835580}
Showing
Please register or sign in to comment