summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorDave Allison <dallison@google.com>2014-01-30 14:19:51 -0800
committerDave Allison <dallison@google.com>2014-03-07 12:32:44 -0800
commit0efbd9a463c848118c7685f4bfc8765a82caa761 (patch)
tree4c091a048fd013b99927089c5f2127868c2b6156 /core/java
parent5de03b18ea455c0250cbd01912282f28d8635910 (diff)
downloadframeworks_base-0efbd9a463c848118c7685f4bfc8765a82caa761.zip
frameworks_base-0efbd9a463c848118c7685f4bfc8765a82caa761.tar.gz
frameworks_base-0efbd9a463c848118c7685f4bfc8765a82caa761.tar.bz2
ART profiler usage.
This is a change to add args to some of the profiler related functions, including installd commands. Also read properties and set command line options for the runtime profiling parameters. Changed calls to isDexOptNeeded() to isDexOptNeededInternal(). This needs additional arguments passed for profiles. Bug: 12877748 Change-Id: I1a426c9309d760bac0cf92daa298defee62287c1 Conflicts: core/jni/AndroidRuntime.cpp
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/app/ActivityThread.java38
1 files changed, 36 insertions, 2 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 9243095..b103e71 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -744,8 +744,42 @@ public final class ActivityThread {
setCoreSettings(coreSettings);
- // Tell the VMRuntime about the application.
- VMRuntime.registerAppInfo(appInfo.dataDir, appInfo.processName);
+ /*
+ * Two possible indications that this package could be
+ * sharing its runtime with other packages:
+ *
+ * 1.) the sharedUserId attribute is set in the manifest,
+ * indicating a request to share a VM with other
+ * packages with the same sharedUserId.
+ *
+ * 2.) the application element of the manifest has an
+ * attribute specifying a non-default process name,
+ * indicating the desire to run in another packages VM.
+ *
+ * If sharing is enabled we do not have a unique application
+ * in a process and therefore cannot rely on the package
+ * name inside the runtime.
+ */
+ IPackageManager pm = getPackageManager();
+ android.content.pm.PackageInfo pi = null;
+ try {
+ pi = pm.getPackageInfo(appInfo.packageName, 0, UserHandle.myUserId());
+ } catch (RemoteException e) {
+ }
+ if (pi != null) {
+ boolean sharedUserIdSet = (pi.sharedUserId != null);
+ boolean processNameNotDefault =
+ (pi.applicationInfo != null &&
+ !appInfo.packageName.equals(pi.applicationInfo.processName));
+ boolean sharable = (sharedUserIdSet || processNameNotDefault);
+
+ // Tell the VMRuntime about the application, unless it is shared
+ // inside a process.
+ if (!sharable) {
+ VMRuntime.registerAppInfo(appInfo.packageName, appInfo.dataDir,
+ appInfo.processName);
+ }
+ }
AppBindData data = new AppBindData();
data.processName = processName;