Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(534)

Side by Side Diff: base/android/library_loader/library_loader_hooks.cc

Issue 1641513004: Update //base to chromium 9659b08ea5a34f889dc4166217f438095ddc10d2 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/android/library_loader/library_loader_hooks.h" 5 #include "base/android/library_loader/library_loader_hooks.h"
6 6
7 #include "base/android/command_line_android.h" 7 #include "base/android/command_line_android.h"
8 #include "base/android/jni_string.h" 8 #include "base/android/jni_string.h"
9 #include "base/android/library_loader/library_load_from_apk_status_codes.h" 9 #include "base/android/library_loader/library_load_from_apk_status_codes.h"
10 #include "base/android/library_loader/library_prefetcher.h" 10 #include "base/android/library_loader/library_prefetcher.h"
(...skipping 30 matching lines...) Expand all
41 41
42 // Low-memory browser loads at fixed address, success or fail. 42 // Low-memory browser loads at fixed address, success or fail.
43 LOW_MEMORY_LFA_SUCCESS = 1, 43 LOW_MEMORY_LFA_SUCCESS = 1,
44 LOW_MEMORY_LFA_BACKOFF_USED = 2, 44 LOW_MEMORY_LFA_BACKOFF_USED = 2,
45 45
46 MAX_BROWSER_HISTOGRAM_CODE = 3, 46 MAX_BROWSER_HISTOGRAM_CODE = 3,
47 }; 47 };
48 48
49 RendererHistogramCode g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE; 49 RendererHistogramCode g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE;
50 50
51 // The amount of time, in milliseconds, that it took to load the shared
52 // libraries in the renderer. Set in
53 // RegisterChromiumAndroidLinkerRendererHistogram.
54 long g_renderer_library_load_time_ms = 0;
55
51 } // namespace 56 } // namespace
52 57
53 static void RegisterChromiumAndroidLinkerRendererHistogram( 58 static void RegisterChromiumAndroidLinkerRendererHistogram(
54 JNIEnv* env, 59 JNIEnv* env,
55 jobject jcaller, 60 jobject jcaller,
56 jboolean requested_shared_relro, 61 jboolean requested_shared_relro,
57 jboolean load_at_fixed_address_failed) { 62 jboolean load_at_fixed_address_failed,
63 jlong library_load_time_ms) {
58 // Note a pending histogram value for later recording. 64 // Note a pending histogram value for later recording.
59 if (requested_shared_relro) { 65 if (requested_shared_relro) {
60 g_renderer_histogram_code = load_at_fixed_address_failed 66 g_renderer_histogram_code = load_at_fixed_address_failed
61 ? LFA_BACKOFF_USED : LFA_SUCCESS; 67 ? LFA_BACKOFF_USED : LFA_SUCCESS;
62 } else { 68 } else {
63 g_renderer_histogram_code = LFA_NOT_ATTEMPTED; 69 g_renderer_histogram_code = LFA_NOT_ATTEMPTED;
64 } 70 }
71
72 g_renderer_library_load_time_ms = library_load_time_ms;
65 } 73 }
66 74
67 void RecordChromiumAndroidLinkerRendererHistogram() { 75 void RecordChromiumAndroidLinkerRendererHistogram() {
68 if (g_renderer_histogram_code == NO_PENDING_HISTOGRAM_CODE) 76 if (g_renderer_histogram_code == NO_PENDING_HISTOGRAM_CODE)
69 return; 77 return;
70 // Record and release the pending histogram value. 78 // Record and release the pending histogram value.
71 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.RendererStates", 79 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.RendererStates",
72 g_renderer_histogram_code, 80 g_renderer_histogram_code,
73 MAX_RENDERER_HISTOGRAM_CODE); 81 MAX_RENDERER_HISTOGRAM_CODE);
74 g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE; 82 g_renderer_histogram_code = NO_PENDING_HISTOGRAM_CODE;
83
84 // Record how long it took to load the shared libraries.
85 UMA_HISTOGRAM_TIMES(
86 "ChromiumAndroidLinker.RendererLoadTime",
87 base::TimeDelta::FromMilliseconds(g_renderer_library_load_time_ms));
75 } 88 }
76 89
77 static void RecordChromiumAndroidLinkerBrowserHistogram( 90 static void RecordChromiumAndroidLinkerBrowserHistogram(
78 JNIEnv* env, 91 JNIEnv* env,
79 jobject jcaller, 92 jobject jcaller,
80 jboolean is_using_browser_shared_relros, 93 jboolean is_using_browser_shared_relros,
81 jboolean load_at_fixed_address_failed, 94 jboolean load_at_fixed_address_failed,
82 jint library_load_from_apk_status) { 95 jint library_load_from_apk_status,
96 jlong library_load_time_ms) {
83 // For low-memory devices, record whether or not we successfully loaded the 97 // For low-memory devices, record whether or not we successfully loaded the
84 // browser at a fixed address. Otherwise just record a normal invocation. 98 // browser at a fixed address. Otherwise just record a normal invocation.
85 BrowserHistogramCode histogram_code; 99 BrowserHistogramCode histogram_code;
86 if (is_using_browser_shared_relros) { 100 if (is_using_browser_shared_relros) {
87 histogram_code = load_at_fixed_address_failed 101 histogram_code = load_at_fixed_address_failed
88 ? LOW_MEMORY_LFA_BACKOFF_USED : LOW_MEMORY_LFA_SUCCESS; 102 ? LOW_MEMORY_LFA_BACKOFF_USED : LOW_MEMORY_LFA_SUCCESS;
89 } else { 103 } else {
90 histogram_code = NORMAL_LRA_SUCCESS; 104 histogram_code = NORMAL_LRA_SUCCESS;
91 } 105 }
92 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.BrowserStates", 106 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.BrowserStates",
93 histogram_code, 107 histogram_code,
94 MAX_BROWSER_HISTOGRAM_CODE); 108 MAX_BROWSER_HISTOGRAM_CODE);
95 109
96 // Record the device support for loading a library directly from the APK file. 110 // Record the device support for loading a library directly from the APK file.
97 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.LibraryLoadFromApkStatus", 111 UMA_HISTOGRAM_ENUMERATION("ChromiumAndroidLinker.LibraryLoadFromApkStatus",
98 library_load_from_apk_status, 112 library_load_from_apk_status,
99 LIBRARY_LOAD_FROM_APK_STATUS_CODES_MAX); 113 LIBRARY_LOAD_FROM_APK_STATUS_CODES_MAX);
114
115 // Record how long it took to load the shared libraries.
116 UMA_HISTOGRAM_TIMES("ChromiumAndroidLinker.BrowserLoadTime",
117 base::TimeDelta::FromMilliseconds(library_load_time_ms));
100 } 118 }
101 119
102 void SetLibraryLoadedHook(LibraryLoadedHook* func) { 120 void SetLibraryLoadedHook(LibraryLoadedHook* func) {
103 g_registration_callback = func; 121 g_registration_callback = func;
104 } 122 }
105 123
106 static void InitCommandLine(JNIEnv* env, 124 static void InitCommandLine(JNIEnv* env,
107 jobject jcaller, 125 jobject jcaller,
108 jobjectArray init_command_line) { 126 jobjectArray init_command_line) {
109 InitNativeCommandLineFromJavaArray(env, init_command_line); 127 InitNativeCommandLineFromJavaArray(env, init_command_line);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 return static_cast<LibraryProcessType>( 161 return static_cast<LibraryProcessType>(
144 Java_LibraryLoader_getLibraryProcessType(env)); 162 Java_LibraryLoader_getLibraryProcessType(env));
145 } 163 }
146 164
147 void InitAtExitManager() { 165 void InitAtExitManager() {
148 g_at_exit_manager = new base::AtExitManager(); 166 g_at_exit_manager = new base::AtExitManager();
149 } 167 }
150 168
151 } // namespace android 169 } // namespace android
152 } // namespace base 170 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698