Merge branch 'master' of https://github.com/mateor/auto-patcher
[auto-patcher.git] / patches / openpdroid / 4.2 / provisionals / system / framework / services.jar.out / smali / com / android / server / am / ActivityManagerService.smali
blob88f2e12c0908a04b4f263e8af445b9370b2acb72
1 .class public final Lcom/android/server/am/ActivityManagerService;
2 .super Landroid/app/ActivityManagerNative;
3 .source "ActivityManagerService.java"
5 # interfaces
6 .implements Lcom/android/server/Watchdog$Monitor;
7 .implements Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;
10 # annotations
11 .annotation system Ldalvik/annotation/MemberClasses;
12     value = {
13         Lcom/android/server/am/ActivityManagerService$MemItem;,
14         Lcom/android/server/am/ActivityManagerService$ItemMatcher;,
15         Lcom/android/server/am/ActivityManagerService$NeededUriGrants;,
16         Lcom/android/server/am/ActivityManagerService$PermissionController;,
17         Lcom/android/server/am/ActivityManagerService$CpuBinder;,
18         Lcom/android/server/am/ActivityManagerService$DbBinder;,
19         Lcom/android/server/am/ActivityManagerService$GraphicsBinder;,
20         Lcom/android/server/am/ActivityManagerService$MemBinder;,
21         Lcom/android/server/am/ActivityManagerService$AThread;,
22         Lcom/android/server/am/ActivityManagerService$AppDeathRecipient;,
23         Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;,
24         Lcom/android/server/am/ActivityManagerService$Identity;,
25         Lcom/android/server/am/ActivityManagerService$ForegroundToken;,
26         Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;
27     }
28 .end annotation
31 # static fields
32 .field static final APP_SWITCH_DELAY_TIME:J = 0x1388L
34 .field static final BATTERY_STATS_TIME:J = 0x1b7740L
36 .field static final BROADCAST_BG_TIMEOUT:I = 0xea60
38 .field static final BROADCAST_FG_TIMEOUT:I = 0x2710
40 .field static final CANCEL_HEAVY_NOTIFICATION_MSG:I = 0x19
42 .field static final CHECK_EXCESSIVE_WAKE_LOCKS_MSG:I = 0x1b
44 .field static final CLEAR_DNS_CACHE:I = 0x1c
46 .field static final CONTINUE_USER_SWITCH_MSG:I = 0x23
48 .field static final CPU_MIN_CHECK_DURATION:I = 0x493e0
50 .field static final DEBUG:Z = false
52 .field static final DEBUG_BACKGROUND_BROADCAST:Z = false
54 .field static final DEBUG_BACKUP:Z = false
56 .field static final DEBUG_BROADCAST:Z = false
58 .field static final DEBUG_BROADCAST_LIGHT:Z = false
60 .field static final DEBUG_CLEANUP:Z = false
62 .field static final DEBUG_CONFIGURATION:Z = false
64 .field static final DEBUG_MU:Z = false
66 .field static final DEBUG_OOM_ADJ:Z = false
68 .field static final DEBUG_PAUSE:Z = false
70 .field static final DEBUG_POWER:Z = false
72 .field static final DEBUG_POWER_QUICK:Z = false
74 .field static final DEBUG_PROCESSES:Z = false
76 .field static final DEBUG_PROCESS_OBSERVERS:Z = false
78 .field static final DEBUG_PROVIDER:Z = false
80 .field static final DEBUG_RESULTS:Z = false
82 .field static final DEBUG_SERVICE:Z = false
84 .field static final DEBUG_SERVICE_EXECUTING:Z = false
86 .field static final DEBUG_SWITCH:Z = false
88 .field static final DEBUG_TASKS:Z = false
90 .field static final DEBUG_THUMBNAILS:Z = false
92 .field static final DEBUG_TRANSITION:Z = false
94 .field static final DEBUG_URI_PERMISSION:Z = false
96 .field static final DEBUG_USER_LEAVING:Z = false
98 .field static final DEBUG_VISBILITY:Z = false
100 .field static final DISPATCH_PROCESSES_CHANGED:I = 0x1f
102 .field static final DISPATCH_PROCESS_DIED:I = 0x20
104 .field static final DO_PENDING_ACTIVITY_LAUNCHES_MSG:I = 0x15
106 .field static final DUMP_MEM_BUCKETS:[J = null
108 .field static final DUMP_MEM_OOM_ADJ:[I = null
110 .field static final DUMP_MEM_OOM_LABEL:[Ljava/lang/String; = null
112 .field static final EMPTY_STRING_ARRAY:[Ljava/lang/String; = null
114 .field static final FINALIZE_PENDING_INTENT_MSG:I = 0x17
116 .field static final FIRST_ACTIVITY_STACK_MSG:I = 0x64
118 .field static final FIRST_BROADCAST_QUEUE_MSG:I = 0xc8
120 .field static final FIRST_COMPAT_MODE_MSG:I = 0x12c
122 .field static final GC_BACKGROUND_PROCESSES_MSG:I = 0x5
124 .field static final GC_MIN_INTERVAL:I = 0xea60
126 .field static final GC_TIMEOUT:I = 0x1388
128 .field static final IM_FEELING_LUCKY_MSG:I = 0xf
130 .field static final INSTRUMENTATION_KEY_DISPATCHING_TIMEOUT:I = 0xea60
132 #the value of this static final field might be set in the static constructor
133 .field static final IS_USER_BUILD:Z = false
135 .field static final KEY_DISPATCHING_TIMEOUT:I = 0x1388
137 .field static final KILL_APPLICATION_MSG:I = 0x16
139 .field static final LAST_DONE_VERSION:I = 0x2710
141 .field private static final MAX_DUP_SUPPRESSED_STACKS:I = 0x1388
143 .field static final MAX_RECENT_TASKS:I = 0x14
145 .field static final MAX_RUNNING_USERS:I = 0x3
147 .field static final MONITOR_CPU_MAX_TIME:J = 0xfffffffL
149 .field static final MONITOR_CPU_MIN_TIME:J = 0x1388L
151 .field static final MONITOR_CPU_USAGE:Z = true
153 .field static final MONITOR_THREAD_CPU_USAGE:Z = false
155 #the value of this static final field might be set in the static constructor
156 .field static final MY_PID:I = 0x0
158 .field static final POST_HEAVY_NOTIFICATION_MSG:I = 0x18
160 .field static final POWER_CHECK_DELAY:I = 0xdbba0
162 .field static final PROC_START_TIMEOUT:I = 0x2710
164 .field static final PROC_START_TIMEOUT_MSG:I = 0x14
166 .field static final PROC_START_TIMEOUT_WITH_WRAPPER:I = 0x493e0
168 .field static final REPORT_MEM_USAGE:I = 0x21
170 .field static final REPORT_USER_SWITCH_MSG:I = 0x22
172 .field static final SERVICE_TIMEOUT_MSG:I = 0xc
174 .field static final SHOW_ACTIVITY_START_TIME:Z = true
176 .field static final SHOW_COMPAT_MODE_DIALOG_MSG:I = 0x1e
178 .field static final SHOW_ERROR_MSG:I = 0x1
180 .field static final SHOW_FACTORY_ERROR_MSG:I = 0x3
182 .field static final SHOW_NOT_RESPONDING_MSG:I = 0x2
184 .field static final SHOW_STRICT_MODE_VIOLATION_MSG:I = 0x1a
186 .field static final SHOW_UID_ERROR_MSG:I = 0xe
188 .field static final STOCK_PM_FLAGS:I = 0x400
190 .field private static final SYSTEM_DEBUGGABLE:Ljava/lang/String; = "ro.debuggable"
192 .field static final TAG:Ljava/lang/String; = "ActivityManager"
194 .field static final TAG_MU:Ljava/lang/String; = "ActivityManagerServiceMU"
196 .field static final UPDATE_CONFIGURATION_MSG:I = 0x4
198 .field static final UPDATE_HTTP_PROXY:I = 0x1d
200 .field static final UPDATE_TIME_ZONE:I = 0xd
202 .field private static final USER_DATA_DIR:Ljava/lang/String; = "/data/user/"
204 .field static final USER_SWITCH_TIMEOUT:I = 0x7d0
206 .field static final USER_SWITCH_TIMEOUT_MSG:I = 0x24
208 .field static final VALIDATE_TOKENS:Z = false
210 .field static final WAIT_FOR_DEBUGGER_MSG:I = 0x6
212 .field static final WAKE_LOCK_MIN_CHECK_DURATION:I = 0x493e0
214 .field static final localLOGV:Z
216 .field static mSelf:Lcom/android/server/am/ActivityManagerService;
218 .field static mSystemThread:Landroid/app/ActivityThread;
220 .field private static sCallerIdentity:Ljava/lang/ThreadLocal;
221     .annotation system Ldalvik/annotation/Signature;
222         value = {
223             "Ljava/lang/ThreadLocal",
224             "<",
225             "Lcom/android/server/am/ActivityManagerService$Identity;",
226             ">;"
227         }
228     .end annotation
229 .end field
232 # instance fields
233 .field final GL_ES_VERSION:I
235 .field mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
237 .field mAdjSeq:I
239 .field private final mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
240     .annotation system Ldalvik/annotation/Signature;
241         value = {
242             "Ljava/util/HashSet",
243             "<",
244             "Ljava/lang/Integer;",
245             ">;"
246         }
247     .end annotation
248 .end field
250 .field mAlwaysFinishActivities:Z
252 .field mAppBindArgs:Ljava/util/HashMap;
253     .annotation system Ldalvik/annotation/Signature;
254         value = {
255             "Ljava/util/HashMap",
256             "<",
257             "Ljava/lang/String;",
258             "Landroid/os/IBinder;",
259             ">;"
260         }
261     .end annotation
262 .end field
264 .field mAppSwitchesAllowedTime:J
266 .field mAutoStopProfiler:Z
268 .field final mAvailProcessChanges:Ljava/util/ArrayList;
269     .annotation system Ldalvik/annotation/Signature;
270         value = {
271             "Ljava/util/ArrayList",
272             "<",
273             "Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;",
274             ">;"
275         }
276     .end annotation
277 .end field
279 .field mBackupAppName:Ljava/lang/String;
281 .field mBackupTarget:Lcom/android/server/am/BackupRecord;
283 .field final mBadProcesses:Lcom/android/server/ProcessMap;
284     .annotation system Ldalvik/annotation/Signature;
285         value = {
286             "Lcom/android/server/ProcessMap",
287             "<",
288             "Ljava/lang/Long;",
289             ">;"
290         }
291     .end annotation
292 .end field
294 .field final mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
296 .field mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
298 .field mBooted:Z
300 .field mBooting:Z
302 .field final mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
304 .field final mCancelledThumbnails:Ljava/util/ArrayList;
306 .field mCheckedForSetup:Z
308 .field mCompatModeDialog:Lcom/android/server/am/CompatModeDialog;
310 .field final mCompatModePackages:Lcom/android/server/am/CompatModePackages;
312 .field mConfiguration:Landroid/content/res/Configuration;
314 .field mConfigurationSeq:I
316 .field mContext:Landroid/content/Context;
318 .field mController:Landroid/app/IActivityController;
320 .field mCoreSettingsObserver:Lcom/android/server/am/CoreSettingsObserver;
322 .field mCurTask:I
324 .field mCurUserSwitchCallback:Ljava/lang/Object;
326 .field private mCurrentUserArray:[I
328 .field private mCurrentUserId:I
330 .field mDebugApp:Ljava/lang/String;
332 .field mDebugTransient:Z
334 .field mDidAppSwitch:Z
336 .field mDidDexOpt:Z
338 .field mDidUpdate:Z
340 .field mFactoryTest:I
342 .field mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
344 .field mFocusedActivity:Lcom/android/server/am/ActivityRecord;
346 .field final mForegroundProcesses:Landroid/util/SparseArray;
347     .annotation system Ldalvik/annotation/Signature;
348         value = {
349             "Landroid/util/SparseArray",
350             "<",
351             "Lcom/android/server/am/ActivityManagerService$ForegroundToken;",
352             ">;"
353         }
354     .end annotation
355 .end field
357 .field private final mGrantedUriPermissions:Landroid/util/SparseArray;
358     .annotation system Ldalvik/annotation/Signature;
359         value = {
360             "Landroid/util/SparseArray",
361             "<",
362             "Ljava/util/HashMap",
363             "<",
364             "Landroid/net/Uri;",
365             "Lcom/android/server/am/UriPermission;",
366             ">;>;"
367         }
368     .end annotation
369 .end field
371 .field final mHandler:Landroid/os/Handler;
373 .field private final mHeadless:Z
375 .field mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
377 .field mHomeProcess:Lcom/android/server/am/ProcessRecord;
379 .field final mIntentSenderRecords:Ljava/util/HashMap;
380     .annotation system Ldalvik/annotation/Signature;
381         value = {
382             "Ljava/util/HashMap",
383             "<",
384             "Lcom/android/server/am/PendingIntentRecord$Key;",
385             "Ljava/lang/ref/WeakReference",
386             "<",
387             "Lcom/android/server/am/PendingIntentRecord;",
388             ">;>;"
389         }
390     .end annotation
391 .end field
393 .field final mIsolatedProcesses:Landroid/util/SparseArray;
394     .annotation system Ldalvik/annotation/Signature;
395         value = {
396             "Landroid/util/SparseArray",
397             "<",
398             "Lcom/android/server/am/ProcessRecord;",
399             ">;"
400         }
401     .end annotation
402 .end field
404 .field final mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
406 .field mLastMemUsageReportTime:J
408 .field mLastPowerCheckRealtime:J
410 .field mLastPowerCheckUptime:J
412 .field mLastWriteTime:J
414 .field mLaunchWarningShown:Z
416 .field final mLaunchingProviders:Ljava/util/ArrayList;
417     .annotation system Ldalvik/annotation/Signature;
418         value = {
419             "Ljava/util/ArrayList",
420             "<",
421             "Lcom/android/server/am/ContentProviderRecord;",
422             ">;"
423         }
424     .end annotation
425 .end field
427 .field mLockScreenShown:Z
429 .field final mLruProcesses:Ljava/util/ArrayList;
430     .annotation system Ldalvik/annotation/Signature;
431         value = {
432             "Ljava/util/ArrayList",
433             "<",
434             "Lcom/android/server/am/ProcessRecord;",
435             ">;"
436         }
437     .end annotation
438 .end field
440 .field mLruSeq:I
442 .field public mMainStack:Lcom/android/server/am/ActivityStack;
444 .field mNewNumServiceProcs:I
446 .field mNextIsolatedProcessUid:I
448 .field mNumHiddenProcs:I
450 .field mNumNonHiddenProcs:I
452 .field mNumServiceProcs:I
454 .field mOnBattery:Z
456 .field mOpenGlTraceApp:Ljava/lang/String;
458 .field mOrigDebugApp:Ljava/lang/String;
460 .field mOrigWaitForDebugger:Z
462 .field final mPendingActivityLaunches:Ljava/util/ArrayList;
463     .annotation system Ldalvik/annotation/Signature;
464         value = {
465             "Ljava/util/ArrayList",
466             "<",
467             "Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;",
468             ">;"
469         }
470     .end annotation
471 .end field
473 .field final mPendingProcessChanges:Ljava/util/ArrayList;
474     .annotation system Ldalvik/annotation/Signature;
475         value = {
476             "Ljava/util/ArrayList",
477             "<",
478             "Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;",
479             ">;"
480         }
481     .end annotation
482 .end field
484 .field final mPendingResultRecords:Ljava/util/HashSet;
486 .field final mPendingThumbnails:Ljava/util/ArrayList;
488 .field final mPersistentStartingProcesses:Ljava/util/ArrayList;
489     .annotation system Ldalvik/annotation/Signature;
490         value = {
491             "Ljava/util/ArrayList",
492             "<",
493             "Lcom/android/server/am/ProcessRecord;",
494             ">;"
495         }
496     .end annotation
497 .end field
499 .field final mPidsSelfLocked:Landroid/util/SparseArray;
500     .annotation system Ldalvik/annotation/Signature;
501         value = {
502             "Landroid/util/SparseArray",
503             "<",
504             "Lcom/android/server/am/ProcessRecord;",
505             ">;"
506         }
507     .end annotation
508 .end field
510 .field mPreviousProcess:Lcom/android/server/am/ProcessRecord;
512 .field mPreviousProcessVisibleTime:J
514 .field mProcDeaths:[I
516 .field final mProcessCrashTimes:Lcom/android/server/ProcessMap;
517     .annotation system Ldalvik/annotation/Signature;
518         value = {
519             "Lcom/android/server/ProcessMap",
520             "<",
521             "Ljava/lang/Long;",
522             ">;"
523         }
524     .end annotation
525 .end field
527 .field mProcessLimit:I
529 .field mProcessLimitOverride:I
531 .field final mProcessList:Lcom/android/server/am/ProcessList;
533 .field final mProcessNames:Lcom/android/server/ProcessMap;
534     .annotation system Ldalvik/annotation/Signature;
535         value = {
536             "Lcom/android/server/ProcessMap",
537             "<",
538             "Lcom/android/server/am/ProcessRecord;",
539             ">;"
540         }
541     .end annotation
542 .end field
544 .field final mProcessObservers:Landroid/os/RemoteCallbackList;
545     .annotation system Ldalvik/annotation/Signature;
546         value = {
547             "Landroid/os/RemoteCallbackList",
548             "<",
549             "Landroid/app/IProcessObserver;",
550             ">;"
551         }
552     .end annotation
553 .end field
555 .field final mProcessStats:Lcom/android/internal/os/ProcessStats;
557 .field final mProcessStatsMutexFree:Ljava/util/concurrent/atomic/AtomicBoolean;
559 .field final mProcessStatsThread:Ljava/lang/Thread;
561 .field final mProcessesOnHold:Ljava/util/ArrayList;
562     .annotation system Ldalvik/annotation/Signature;
563         value = {
564             "Ljava/util/ArrayList",
565             "<",
566             "Lcom/android/server/am/ProcessRecord;",
567             ">;"
568         }
569     .end annotation
570 .end field
572 .field mProcessesReady:Z
574 .field final mProcessesToGc:Ljava/util/ArrayList;
575     .annotation system Ldalvik/annotation/Signature;
576         value = {
577             "Ljava/util/ArrayList",
578             "<",
579             "Lcom/android/server/am/ProcessRecord;",
580             ">;"
581         }
582     .end annotation
583 .end field
585 .field mProfileApp:Ljava/lang/String;
587 .field mProfileFd:Landroid/os/ParcelFileDescriptor;
589 .field mProfileFile:Ljava/lang/String;
591 .field mProfileProc:Lcom/android/server/am/ProcessRecord;
593 .field mProfileType:I
595 .field final mProviderMap:Lcom/android/server/am/ProviderMap;
597 .field final mReceiverResolver:Lcom/android/server/IntentResolver;
598     .annotation system Ldalvik/annotation/Signature;
599         value = {
600             "Lcom/android/server/IntentResolver",
601             "<",
602             "Lcom/android/server/am/BroadcastFilter;",
603             "Lcom/android/server/am/BroadcastFilter;",
604             ">;"
605         }
606     .end annotation
607 .end field
609 .field final mRecentTasks:Ljava/util/ArrayList;
610     .annotation system Ldalvik/annotation/Signature;
611         value = {
612             "Ljava/util/ArrayList",
613             "<",
614             "Lcom/android/server/am/TaskRecord;",
615             ">;"
616         }
617     .end annotation
618 .end field
620 .field final mRegisteredReceivers:Ljava/util/HashMap;
622 .field final mRemovedProcesses:Ljava/util/ArrayList;
623     .annotation system Ldalvik/annotation/Signature;
624         value = {
625             "Ljava/util/ArrayList",
626             "<",
627             "Lcom/android/server/am/ProcessRecord;",
628             ">;"
629         }
630     .end annotation
631 .end field
633 .field mRequestPssCallback:Ljava/lang/Runnable;
635 .field final mRequestPssList:Ljava/util/ArrayList;
636     .annotation system Ldalvik/annotation/Signature;
637         value = {
638             "Ljava/util/ArrayList",
639             "<",
640             "Lcom/android/server/am/ProcessRecord;",
641             ">;"
642         }
643     .end annotation
644 .end field
646 .field final mServices:Lcom/android/server/am/ActiveServices;
648 .field private mShowDialogs:Z
650 .field mShuttingDown:Z
652 .field mSleeping:Z
654 .field mStartRunning:Z
656 .field mStartedUserArray:[I
658 .field final mStartedUsers:Landroid/util/SparseArray;
659     .annotation system Ldalvik/annotation/Signature;
660         value = {
661             "Landroid/util/SparseArray",
662             "<",
663             "Lcom/android/server/am/UserStartedState;",
664             ">;"
665         }
666     .end annotation
667 .end field
669 .field final mStickyBroadcasts:Landroid/util/SparseArray;
670     .annotation system Ldalvik/annotation/Signature;
671         value = {
672             "Landroid/util/SparseArray",
673             "<",
674             "Ljava/util/HashMap",
675             "<",
676             "Ljava/lang/String;",
677             "Ljava/util/ArrayList",
678             "<",
679             "Landroid/content/Intent;",
680             ">;>;>;"
681         }
682     .end annotation
683 .end field
685 .field private final mStrictModeBuffer:Ljava/lang/StringBuilder;
687 .field final mStringBuilder:Ljava/lang/StringBuilder;
689 .field mSystemReady:Z
691 .field mTopAction:Ljava/lang/String;
693 .field mTopComponent:Landroid/content/ComponentName;
695 .field mTopData:Ljava/lang/String;
697 .field mUiContext:Landroid/content/Context;
699 .field mUidAlert:Landroid/app/AlertDialog;
701 .field final mUsageStatsService:Lcom/android/server/am/UsageStatsService;
703 .field final mUserLru:Ljava/util/ArrayList;
704     .annotation system Ldalvik/annotation/Signature;
705         value = {
706             "Ljava/util/ArrayList",
707             "<",
708             "Ljava/lang/Integer;",
709             ">;"
710         }
711     .end annotation
712 .end field
714 .field private mUserManager:Lcom/android/server/pm/UserManagerService;
716 .field final mUserSwitchObservers:Landroid/os/RemoteCallbackList;
717     .annotation system Ldalvik/annotation/Signature;
718         value = {
719             "Landroid/os/RemoteCallbackList",
720             "<",
721             "Landroid/app/IUserSwitchObserver;",
722             ">;"
723         }
724     .end annotation
725 .end field
727 .field mWaitForDebugger:Z
729 .field mWaitingUpdate:Z
731 .field mWentToSleep:Z
733 .field mWindowManager:Lcom/android/server/wm/WindowManagerService;
736 # direct methods
737 .method static constructor <clinit>()V
738     .registers 4
740     const/16 v3, 0xc
742     const/4 v2, 0x0
744     const-string v0, "user"
746     sget-object v1, Landroid/os/Build;->TYPE:Ljava/lang/String;
748     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
750     move-result v0
752     sput-boolean v0, Lcom/android/server/am/ActivityManagerService;->IS_USER_BUILD:Z
754     invoke-static {}, Landroid/os/Process;->myPid()I
756     move-result v0
758     sput v0, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
760     new-array v0, v2, [Ljava/lang/String;
762     sput-object v0, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
764     new-instance v0, Ljava/lang/ThreadLocal;
766     invoke-direct {v0}, Ljava/lang/ThreadLocal;-><init>()V
768     sput-object v0, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
770     const/16 v0, 0x17
772     new-array v0, v0, [J
774     fill-array-data v0, :array_72
776     sput-object v0, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_BUCKETS:[J
778     new-array v0, v3, [I
780     fill-array-data v0, :array_d2
782     sput-object v0, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
784     new-array v0, v3, [Ljava/lang/String;
786     const-string v1, "System"
788     aput-object v1, v0, v2
790     const/4 v1, 0x1
792     const-string v2, "Persistent"
794     aput-object v2, v0, v1
796     const/4 v1, 0x2
798     const-string v2, "Foreground"
800     aput-object v2, v0, v1
802     const/4 v1, 0x3
804     const-string v2, "Visible"
806     aput-object v2, v0, v1
808     const/4 v1, 0x4
810     const-string v2, "Perceptible"
812     aput-object v2, v0, v1
814     const/4 v1, 0x5
816     const-string v2, "Heavy Weight"
818     aput-object v2, v0, v1
820     const/4 v1, 0x6
822     const-string v2, "Backup"
824     aput-object v2, v0, v1
826     const/4 v1, 0x7
828     const-string v2, "A Services"
830     aput-object v2, v0, v1
832     const/16 v1, 0x8
834     const-string v2, "Home"
836     aput-object v2, v0, v1
838     const/16 v1, 0x9
840     const-string v2, "Previous"
842     aput-object v2, v0, v1
844     const/16 v1, 0xa
846     const-string v2, "B Services"
848     aput-object v2, v0, v1
850     const/16 v1, 0xb
852     const-string v2, "Background"
854     aput-object v2, v0, v1
856     sput-object v0, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
858     return-void
860     :array_72
861     .array-data 0x8
862         0x0t 0x14t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
863         0x0t 0x1ct 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
864         0x0t 0x28t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
865         0x0t 0x3ct 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
866         0x0t 0x50t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
867         0x0t 0x78t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
868         0x0t 0xa0t 0x0t 0x0t 0x0t 0x0t 0x0t 0x0t
869         0x0t 0x40t 0x1t 0x0t 0x0t 0x0t 0x0t 0x0t
870         0x0t 0xe0t 0x1t 0x0t 0x0t 0x0t 0x0t 0x0t
871         0x0t 0x80t 0x2t 0x0t 0x0t 0x0t 0x0t 0x0t
872         0x0t 0x20t 0x3t 0x0t 0x0t 0x0t 0x0t 0x0t
873         0x0t 0xe8t 0x3t 0x0t 0x0t 0x0t 0x0t 0x0t
874         0x0t 0xb0t 0x4t 0x0t 0x0t 0x0t 0x0t 0x0t
875         0x0t 0x78t 0x5t 0x0t 0x0t 0x0t 0x0t 0x0t
876         0x0t 0x40t 0x6t 0x0t 0x0t 0x0t 0x0t 0x0t
877         0x0t 0xd0t 0x7t 0x0t 0x0t 0x0t 0x0t 0x0t
878         0x0t 0x60t 0x9t 0x0t 0x0t 0x0t 0x0t 0x0t
879         0x0t 0x80t 0xct 0x0t 0x0t 0x0t 0x0t 0x0t
880         0x0t 0x0t 0x10t 0x0t 0x0t 0x0t 0x0t 0x0t
881         0x0t 0x0t 0x20t 0x0t 0x0t 0x0t 0x0t 0x0t
882         0x0t 0x0t 0x50t 0x0t 0x0t 0x0t 0x0t 0x0t
883         0x0t 0x0t 0xa0t 0x0t 0x0t 0x0t 0x0t 0x0t
884         0x0t 0x0t 0x40t 0x1t 0x0t 0x0t 0x0t 0x0t
885     .end array-data
887     :array_d2
888     .array-data 0x4
889         0xf0t 0xfft 0xfft 0xfft
890         0xf4t 0xfft 0xfft 0xfft
891         0x0t 0x0t 0x0t 0x0t
892         0x1t 0x0t 0x0t 0x0t
893         0x2t 0x0t 0x0t 0x0t
894         0x3t 0x0t 0x0t 0x0t
895         0x4t 0x0t 0x0t 0x0t
896         0x5t 0x0t 0x0t 0x0t
897         0x6t 0x0t 0x0t 0x0t
898         0x7t 0x0t 0x0t 0x0t
899         0x8t 0x0t 0x0t 0x0t
900         0xft 0x0t 0x0t 0x0t
901     .end array-data
902 .end method
904 .method private constructor <init>()V
905     .registers 11
907     const-wide/16 v8, 0x0
909     const/4 v7, 0x1
911     const/4 v4, 0x0
913     const/4 v6, 0x0
915     invoke-direct {p0}, Landroid/app/ActivityManagerNative;-><init>()V
917     iput-boolean v7, p0, Lcom/android/server/am/ActivityManagerService;->mShowDialogs:Z
919     new-instance v2, Ljava/util/ArrayList;
921     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
923     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPendingActivityLaunches:Ljava/util/ArrayList;
925     const/4 v2, 0x2
927     new-array v2, v2, [Lcom/android/server/am/BroadcastQueue;
929     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
931     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mFocusedActivity:Lcom/android/server/am/ActivityRecord;
933     new-instance v2, Ljava/util/ArrayList;
935     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
937     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
939     new-instance v2, Lcom/android/server/am/ProcessList;
941     invoke-direct {v2}, Lcom/android/server/am/ProcessList;-><init>()V
943     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
945     new-instance v2, Lcom/android/server/ProcessMap;
947     invoke-direct {v2}, Lcom/android/server/ProcessMap;-><init>()V
949     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
951     new-instance v2, Landroid/util/SparseArray;
953     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
955     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
957     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
959     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
961     new-instance v2, Lcom/android/server/ProcessMap;
963     invoke-direct {v2}, Lcom/android/server/ProcessMap;-><init>()V
965     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
967     new-instance v2, Lcom/android/server/ProcessMap;
969     invoke-direct {v2}, Lcom/android/server/ProcessMap;-><init>()V
971     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
973     new-instance v2, Landroid/util/SparseArray;
975     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
977     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
979     new-instance v2, Landroid/util/SparseArray;
981     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
983     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
985     new-instance v2, Ljava/util/ArrayList;
987     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
989     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
991     new-instance v2, Ljava/util/ArrayList;
993     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
995     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
997     new-instance v2, Ljava/util/ArrayList;
999     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1001     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
1003     new-instance v2, Ljava/util/ArrayList;
1005     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1007     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
1009     new-instance v2, Ljava/util/ArrayList;
1011     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1013     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
1015     new-instance v2, Landroid/util/SparseArray;
1017     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
1019     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
1021     new-instance v2, Ljava/util/ArrayList;
1023     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1025     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
1027     new-array v2, v7, [I
1029     aput v6, v2, v6
1031     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUserArray:[I
1033     new-instance v2, Landroid/os/RemoteCallbackList;
1035     invoke-direct {v2}, Landroid/os/RemoteCallbackList;-><init>()V
1037     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mUserSwitchObservers:Landroid/os/RemoteCallbackList;
1039     new-instance v2, Ljava/util/HashSet;
1041     invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
1043     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPendingResultRecords:Ljava/util/HashSet;
1045     new-instance v2, Ljava/util/HashMap;
1047     invoke-direct {v2}, Ljava/util/HashMap;-><init>()V
1049     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
1051     new-instance v2, Ljava/util/HashSet;
1053     invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
1055     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
1057     new-instance v2, Ljava/lang/StringBuilder;
1059     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
1061     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStrictModeBuffer:Ljava/lang/StringBuilder;
1063     new-instance v2, Ljava/util/HashMap;
1065     invoke-direct {v2}, Ljava/util/HashMap;-><init>()V
1067     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
1069     new-instance v2, Lcom/android/server/am/ActivityManagerService$1;
1071     invoke-direct {v2, p0}, Lcom/android/server/am/ActivityManagerService$1;-><init>(Lcom/android/server/am/ActivityManagerService;)V
1073     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
1075     new-instance v2, Landroid/util/SparseArray;
1077     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
1079     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
1081     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
1083     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
1085     new-instance v2, Ljava/util/ArrayList;
1087     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1089     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
1091     new-instance v2, Ljava/util/ArrayList;
1093     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1095     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mCancelledThumbnails:Ljava/util/ArrayList;
1097     new-instance v2, Ljava/util/ArrayList;
1099     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1101     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
1103     new-instance v2, Landroid/util/SparseArray;
1105     invoke-direct {v2}, Landroid/util/SparseArray;-><init>()V
1107     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
1109     new-instance v2, Landroid/content/res/Configuration;
1111     invoke-direct {v2}, Landroid/content/res/Configuration;-><init>()V
1113     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
1115     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
1117     new-instance v2, Ljava/lang/StringBuilder;
1119     const/16 v3, 0x100
1121     invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(I)V
1123     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStringBuilder:Ljava/lang/StringBuilder;
1125     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
1127     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
1129     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
1131     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
1133     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
1135     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mDidUpdate:Z
1137     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mOnBattery:Z
1139     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchWarningShown:Z
1141     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
1143     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
1145     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
1147     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
1149     iput v7, p0, Lcom/android/server/am/ActivityManagerService;->mCurTask:I
1151     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
1153     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
1155     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mNumNonHiddenProcs:I
1157     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mNumHiddenProcs:I
1159     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mNumServiceProcs:I
1161     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
1163     const/16 v2, 0x14
1165     new-array v2, v2, [I
1167     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
1169     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
1171     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
1173     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
1175     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
1177     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
1179     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
1181     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
1183     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
1185     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
1187     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
1189     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
1191     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
1193     new-instance v2, Landroid/os/RemoteCallbackList;
1195     invoke-direct {v2}, Landroid/os/RemoteCallbackList;-><init>()V
1197     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
1199     const/4 v2, 0x5
1201     new-array v2, v2, [Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
1203     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
1205     new-instance v2, Ljava/util/ArrayList;
1207     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1209     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
1211     new-instance v2, Ljava/util/ArrayList;
1213     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1215     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
1217     new-instance v2, Ljava/util/ArrayList;
1219     invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
1221     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRequestPssList:Ljava/util/ArrayList;
1223     new-instance v2, Lcom/android/internal/os/ProcessStats;
1225     invoke-direct {v2, v6}, Lcom/android/internal/os/ProcessStats;-><init>(Z)V
1227     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
1229     new-instance v2, Ljava/util/concurrent/atomic/AtomicLong;
1231     invoke-direct {v2, v8, v9}, Ljava/util/concurrent/atomic/AtomicLong;-><init>(J)V
1233     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
1235     new-instance v2, Ljava/util/concurrent/atomic/AtomicBoolean;
1237     invoke-direct {v2, v7}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
1239     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsMutexFree:Ljava/util/concurrent/atomic/AtomicBoolean;
1241     iput-wide v8, p0, Lcom/android/server/am/ActivityManagerService;->mLastWriteTime:J
1243     iput-boolean v6, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
1245     const/16 v2, 0x18
1247     iput v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimit:I
1249     const/4 v2, -0x1
1251     iput v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimitOverride:I
1253     iput v6, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
1255     new-array v2, v7, [I
1257     aput v6, v2, v6
1259     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserArray:[I
1261     iput-wide v8, p0, Lcom/android/server/am/ActivityManagerService;->mLastMemUsageReportTime:J
1263     new-instance v2, Lcom/android/server/am/ActivityManagerService$2;
1265     invoke-direct {v2, p0}, Lcom/android/server/am/ActivityManagerService$2;-><init>(Lcom/android/server/am/ActivityManagerService;)V
1267     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
1269     const-string v2, "ActivityManager"
1271     new-instance v3, Ljava/lang/StringBuilder;
1273     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
1275     const-string v4, "Memory class: "
1277     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1279     move-result-object v3
1281     invoke-static {}, Landroid/app/ActivityManager;->staticGetMemoryClass()I
1283     move-result v4
1285     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
1287     move-result-object v3
1289     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1291     move-result-object v3
1293     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
1295     new-instance v2, Lcom/android/server/am/BroadcastQueue;
1297     const-string v3, "foreground"
1299     const-wide/16 v4, 0x2710
1301     invoke-direct {v2, p0, v3, v4, v5}, Lcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;J)V
1303     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
1305     new-instance v2, Lcom/android/server/am/BroadcastQueue;
1307     const-string v3, "background"
1309     const-wide/32 v4, 0xea60
1311     invoke-direct {v2, p0, v3, v4, v5}, Lcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;J)V
1313     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
1315     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
1317     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
1319     aput-object v3, v2, v6
1321     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
1323     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
1325     aput-object v3, v2, v7
1327     new-instance v2, Lcom/android/server/am/ActiveServices;
1329     invoke-direct {v2, p0}, Lcom/android/server/am/ActiveServices;-><init>(Lcom/android/server/am/ActivityManagerService;)V
1331     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
1333     new-instance v2, Lcom/android/server/am/ProviderMap;
1335     invoke-direct {v2, p0}, Lcom/android/server/am/ProviderMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V
1337     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
1339     invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File;
1341     move-result-object v0
1343     new-instance v1, Ljava/io/File;
1345     const-string v2, "system"
1347     invoke-direct {v1, v0, v2}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
1349     invoke-virtual {v1}, Ljava/io/File;->mkdirs()Z
1351     new-instance v2, Lcom/android/server/am/BatteryStatsService;
1353     new-instance v3, Ljava/io/File;
1355     const-string v4, "batterystats.bin"
1357     invoke-direct {v3, v1, v4}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
1359     invoke-virtual {v3}, Ljava/io/File;->toString()Ljava/lang/String;
1361     move-result-object v3
1363     invoke-direct {v2, v3}, Lcom/android/server/am/BatteryStatsService;-><init>(Ljava/lang/String;)V
1365     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1367     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1369     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
1371     move-result-object v2
1373     invoke-virtual {v2}, Lcom/android/internal/os/BatteryStatsImpl;->readLocked()V
1375     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1377     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
1379     move-result-object v2
1381     invoke-virtual {v2}, Lcom/android/internal/os/BatteryStatsImpl;->writeAsyncLocked()V
1383     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1385     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
1387     move-result-object v2
1389     invoke-virtual {v2}, Lcom/android/internal/os/BatteryStatsImpl;->getIsOnBattery()Z
1391     move-result v2
1393     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mOnBattery:Z
1395     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
1397     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
1399     move-result-object v2
1401     invoke-virtual {v2, p0}, Lcom/android/internal/os/BatteryStatsImpl;->setCallback(Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;)V
1403     new-instance v2, Lcom/android/server/am/UsageStatsService;
1405     new-instance v3, Ljava/io/File;
1407     const-string v4, "usagestats"
1409     invoke-direct {v3, v1, v4}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
1411     invoke-virtual {v3}, Ljava/io/File;->toString()Ljava/lang/String;
1413     move-result-object v3
1415     invoke-direct {v2, v3}, Lcom/android/server/am/UsageStatsService;-><init>(Ljava/lang/String;)V
1417     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
1419     const-string v2, "1"
1421     const-string v3, "ro.config.headless"
1423     const-string v4, "0"
1425     invoke-static {v3, v4}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
1427     move-result-object v3
1429     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
1431     move-result v2
1433     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
1435     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
1437     new-instance v3, Lcom/android/server/am/UserStartedState;
1439     new-instance v4, Landroid/os/UserHandle;
1441     invoke-direct {v4, v6}, Landroid/os/UserHandle;-><init>(I)V
1443     invoke-direct {v3, v4, v7}, Lcom/android/server/am/UserStartedState;-><init>(Landroid/os/UserHandle;Z)V
1445     invoke-virtual {v2, v6, v3}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
1447     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
1449     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
1451     move-result-object v3
1453     invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
1455     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateStartedUserArrayLocked()V
1457     const-string v2, "ro.opengles.version"
1459     invoke-static {v2, v6}, Landroid/os/SystemProperties;->getInt(Ljava/lang/String;I)I
1461     move-result v2
1463     iput v2, p0, Lcom/android/server/am/ActivityManagerService;->GL_ES_VERSION:I
1465     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
1467     invoke-virtual {v2}, Landroid/content/res/Configuration;->setToDefaults()V
1469     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
1471     invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;
1473     move-result-object v3
1475     invoke-virtual {v2, v3}, Landroid/content/res/Configuration;->setLocale(Ljava/util/Locale;)V
1477     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
1479     iput v7, v2, Landroid/content/res/Configuration;->seq:I
1481     iput v7, p0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
1483     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
1485     invoke-virtual {v2}, Lcom/android/internal/os/ProcessStats;->init()V
1487     new-instance v2, Lcom/android/server/am/CompatModePackages;
1489     invoke-direct {v2, p0, v1}, Lcom/android/server/am/CompatModePackages;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;)V
1491     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
1493     invoke-static {}, Lcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog;
1495     move-result-object v2
1497     invoke-virtual {v2, p0}, Lcom/android/server/Watchdog;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V
1499     new-instance v2, Lcom/android/server/am/ActivityManagerService$3;
1501     const-string v3, "ProcessStats"
1503     invoke-direct {v2, p0, v3}, Lcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;)V
1505     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
1507     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
1509     invoke-virtual {v2}, Ljava/lang/Thread;->start()V
1511     return-void
1512 .end method
1514 .method synthetic constructor <init>(Lcom/android/server/am/ActivityManagerService$1;)V
1515     .registers 2
1517     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;-><init>()V
1519     return-void
1520 .end method
1522 .method static synthetic access$000(Lcom/android/server/am/ActivityManagerService;)I
1523     .registers 2
1525     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
1527     return v0
1528 .end method
1530 .method static synthetic access$100(Lcom/android/server/am/ActivityManagerService;)Z
1531     .registers 2
1533     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mShowDialogs:Z
1535     return v0
1536 .end method
1538 .method static synthetic access$1000(Lcom/android/server/am/ActivityManagerService;)Ljava/lang/StringBuilder;
1539     .registers 2
1541     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mStrictModeBuffer:Ljava/lang/StringBuilder;
1543     return-object v0
1544 .end method
1546 .method static synthetic access$200(Lcom/android/server/am/ActivityManagerService;)Landroid/content/Context;
1547     .registers 2
1549     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->getUiContext()Landroid/content/Context;
1551     move-result-object v0
1553     return-object v0
1554 .end method
1556 .method static synthetic access$300(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
1557     .registers 16
1559     invoke-direct/range {p0 .. p14}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
1561     move-result v0
1563     return v0
1564 .end method
1566 .method static synthetic access$400(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
1567     .registers 2
1569     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->processStartTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V
1571     return-void
1572 .end method
1574 .method static synthetic access$500(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;IZZZZI)Z
1575     .registers 9
1577     invoke-direct/range {p0 .. p7}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
1579     move-result v0
1581     return v0
1582 .end method
1584 .method static synthetic access$600(Lcom/android/server/am/ActivityManagerService;)V
1585     .registers 1
1587     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->dispatchProcessesChanged()V
1589     return-void
1590 .end method
1592 .method static synthetic access$700(Lcom/android/server/am/ActivityManagerService;II)V
1593     .registers 3
1595     invoke-direct {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->dispatchProcessDied(II)V
1597     return-void
1598 .end method
1600 .method static synthetic access$900(Ljava/util/ArrayList;)V
1601     .registers 1
1603     invoke-static {p0}, Lcom/android/server/am/ActivityManagerService;->writeLastDonePreBootReceivers(Ljava/util/ArrayList;)V
1605     return-void
1606 .end method
1608 .method private appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V
1609     .registers 13
1611     if-nez p1, :cond_12
1613     const-string v6, "Process: "
1615     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1617     move-result-object v6
1619     invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1621     move-result-object v6
1623     const-string v7, "\n"
1625     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1627     :goto_11
1628     return-void
1630     :cond_12
1631     monitor-enter p0
1633     :try_start_13
1634     const-string v6, "Process: "
1636     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1638     move-result-object v6
1640     invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1642     move-result-object v6
1644     const-string v7, "\n"
1646     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1648     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
1650     iget v1, v6, Landroid/content/pm/ApplicationInfo;->flags:I
1652     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
1654     move-result-object v5
1656     const-string v6, "Flags: 0x"
1658     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1660     move-result-object v6
1662     const/16 v7, 0x10
1664     invoke-static {v1, v7}, Ljava/lang/Integer;->toString(II)Ljava/lang/String;
1666     move-result-object v7
1668     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1670     move-result-object v6
1672     const-string v7, "\n"
1674     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1676     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->pkgList:Ljava/util/HashSet;
1678     invoke-virtual {v6}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
1680     move-result-object v2
1682     :goto_45
1683     invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
1685     move-result v6
1687     if-eqz v6, :cond_a8
1689     invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
1691     move-result-object v4
1693     check-cast v4, Ljava/lang/String;
1695     const-string v6, "Package: "
1697     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1699     move-result-object v6
1701     invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1702     :try_end_5a
1703     .catchall {:try_start_13 .. :try_end_5a} :catchall_8b
1705     const/4 v6, 0x0
1707     :try_start_5b
1708     invoke-static {}, Landroid/os/UserHandle;->getCallingUserId()I
1710     move-result v7
1712     invoke-interface {v5, v4, v6, v7}, Landroid/content/pm/IPackageManager;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo;
1714     move-result-object v3
1716     if-eqz v3, :cond_85
1718     const-string v6, " v"
1720     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1722     move-result-object v6
1724     iget v7, v3, Landroid/content/pm/PackageInfo;->versionCode:I
1726     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
1728     iget-object v6, v3, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String;
1730     if-eqz v6, :cond_85
1732     const-string v6, " ("
1734     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1736     move-result-object v6
1738     iget-object v7, v3, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String;
1740     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1742     move-result-object v6
1744     const-string v7, ")"
1746     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1747     :try_end_85
1748     .catchall {:try_start_5b .. :try_end_85} :catchall_8b
1749     .catch Landroid/os/RemoteException; {:try_start_5b .. :try_end_85} :catch_8e
1751     :cond_85
1752     :goto_85
1753     :try_start_85
1754     const-string v6, "\n"
1756     invoke-virtual {p3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1758     goto :goto_45
1760     :catchall_8b
1761     move-exception v6
1763     monitor-exit p0
1764     :try_end_8d
1765     .catchall {:try_start_85 .. :try_end_8d} :catchall_8b
1767     throw v6
1769     :catch_8e
1770     move-exception v0
1772     :try_start_8f
1773     const-string v6, "ActivityManager"
1775     new-instance v7, Ljava/lang/StringBuilder;
1777     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
1779     const-string v8, "Error getting package info: "
1781     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1783     move-result-object v7
1785     invoke-virtual {v7, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1787     move-result-object v7
1789     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1791     move-result-object v7
1793     invoke-static {v6, v7, v0}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
1795     goto :goto_85
1797     :cond_a8
1798     monitor-exit p0
1799     :try_end_a9
1800     .catchall {:try_start_8f .. :try_end_a9} :catchall_8b
1802     goto/16 :goto_11
1803 .end method
1805 .method static final appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
1806     .registers 14
1808     const-wide/16 v7, 0x400
1810     const/16 v5, 0x2e
1812     invoke-virtual {p3, v5}, Ljava/lang/String;->lastIndexOf(I)I
1814     move-result v4
1816     if-ltz v4, :cond_32
1818     add-int/lit8 v4, v4, 0x1
1820     :goto_c
1821     invoke-virtual {p3}, Ljava/lang/String;->length()I
1823     move-result v2
1825     const/4 v3, 0x0
1827     :goto_11
1828     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_BUCKETS:[J
1830     array-length v5, v5
1832     if-ge v3, v5, :cond_3a
1834     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_BUCKETS:[J
1836     aget-wide v5, v5, v3
1838     cmp-long v5, v5, p1
1840     if-ltz v5, :cond_37
1842     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_BUCKETS:[J
1844     aget-wide v5, v5, v3
1846     div-long v0, v5, v7
1848     invoke-virtual {p0, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
1850     if-eqz p4, :cond_34
1852     const-string v5, "MB."
1854     :goto_2b
1855     invoke-virtual {p0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1857     invoke-virtual {p0, p3, v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
1859     :goto_31
1860     return-void
1862     :cond_32
1863     const/4 v4, 0x0
1865     goto :goto_c
1867     :cond_34
1868     const-string v5, "MB "
1870     goto :goto_2b
1872     :cond_37
1873     add-int/lit8 v3, v3, 0x1
1875     goto :goto_11
1877     :cond_3a
1878     div-long v5, p1, v7
1880     invoke-virtual {p0, v5, v6}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
1882     if-eqz p4, :cond_4a
1884     const-string v5, "MB."
1886     :goto_43
1887     invoke-virtual {p0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1889     invoke-virtual {p0, p3, v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
1891     goto :goto_31
1893     :cond_4a
1894     const-string v5, "MB "
1896     goto :goto_43
1897 .end method
1899 .method private applyUserId(II)I
1900     .registers 4
1902     invoke-static {p2, p1}, Landroid/os/UserHandle;->getUid(II)I
1904     move-result v0
1906     return v0
1907 .end method
1909 .method private final attachApplicationLocked(Landroid/app/IApplicationThread;I)Z
1910     .registers 34
1912     sget v5, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
1914     move/from16 v0, p2
1916     if-eq v0, v5, :cond_5f
1918     if-ltz p2, :cond_5f
1920     move-object/from16 v0, p0
1922     iget-object v9, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
1924     monitor-enter v9
1926     :try_start_d
1927     move-object/from16 v0, p0
1929     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
1931     move/from16 v0, p2
1933     invoke-virtual {v5, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
1935     move-result-object v24
1937     check-cast v24, Lcom/android/server/am/ProcessRecord;
1939     monitor-exit v9
1940     :try_end_1a
1941     .catchall {:try_start_d .. :try_end_1a} :catchall_5c
1943     :goto_1a
1944     if-nez v24, :cond_68
1946     const-string v5, "ActivityManager"
1948     new-instance v9, Ljava/lang/StringBuilder;
1950     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
1952     const-string v13, "No pending application record for pid "
1954     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1956     move-result-object v9
1958     move/from16 v0, p2
1960     invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
1962     move-result-object v9
1964     const-string v13, " (IApplicationThread "
1966     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1968     move-result-object v9
1970     move-object/from16 v0, p1
1972     invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
1974     move-result-object v9
1976     const-string v13, "); dropping process"
1978     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1980     move-result-object v9
1982     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1984     move-result-object v9
1986     invoke-static {v5, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
1988     const/16 v5, 0x7551
1990     move/from16 v0, p2
1992     invoke-static {v5, v0}, Landroid/util/EventLog;->writeEvent(II)I
1994     if-lez p2, :cond_62
1996     sget v5, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
1998     move/from16 v0, p2
2000     if-eq v0, v5, :cond_62
2002     invoke-static/range {p2 .. p2}, Landroid/os/Process;->killProcessQuiet(I)V
2004     :goto_5a
2005     const/4 v5, 0x0
2007     :goto_5b
2008     return v5
2010     :catchall_5c
2011     move-exception v5
2013     :try_start_5d
2014     monitor-exit v9
2015     :try_end_5e
2016     .catchall {:try_start_5d .. :try_end_5e} :catchall_5c
2018     throw v5
2020     :cond_5f
2021     const/16 v24, 0x0
2023     goto :goto_1a
2025     :cond_62
2026     :try_start_62
2027     invoke-interface/range {p1 .. p1}, Landroid/app/IApplicationThread;->scheduleExit()V
2028     :try_end_65
2029     .catch Ljava/lang/Exception; {:try_start_62 .. :try_end_65} :catch_66
2031     goto :goto_5a
2033     :catch_66
2034     move-exception v5
2036     goto :goto_5a
2038     :cond_68
2039     move-object/from16 v0, v24
2041     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
2043     if-eqz v5, :cond_77
2045     const/4 v5, 0x1
2047     const/4 v9, 0x1
2049     move-object/from16 v0, p0
2051     move-object/from16 v1, v24
2053     invoke-direct {v0, v1, v5, v9}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
2055     :cond_77
2056     move-object/from16 v0, v24
2058     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
2060     :try_start_7b
2061     new-instance v23, Lcom/android/server/am/ActivityManagerService$AppDeathRecipient;
2063     move-object/from16 v0, v23
2065     move-object/from16 v1, p0
2067     move-object/from16 v2, v24
2069     move/from16 v3, p2
2071     move-object/from16 v4, p1
2073     invoke-direct {v0, v1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
2075     invoke-interface/range {p1 .. p1}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
2077     move-result-object v5
2079     const/4 v9, 0x0
2081     move-object/from16 v0, v23
2083     invoke-interface {v5, v0, v9}, Landroid/os/IBinder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
2085     move-object/from16 v0, v23
2087     move-object/from16 v1, v24
2089     iput-object v0, v1, Lcom/android/server/am/ProcessRecord;->deathRecipient:Landroid/os/IBinder$DeathRecipient;
2090     :try_end_9a
2091     .catch Landroid/os/RemoteException; {:try_start_7b .. :try_end_9a} :catch_332
2093     const/16 v5, 0x753a
2095     const/4 v9, 0x3
2097     new-array v9, v9, [Ljava/lang/Object;
2099     const/4 v13, 0x0
2101     move-object/from16 v0, v24
2103     iget v14, v0, Lcom/android/server/am/ProcessRecord;->userId:I
2105     invoke-static {v14}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
2107     move-result-object v14
2109     aput-object v14, v9, v13
2111     const/4 v13, 0x1
2113     move-object/from16 v0, v24
2115     iget v14, v0, Lcom/android/server/am/ProcessRecord;->pid:I
2117     invoke-static {v14}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
2119     move-result-object v14
2121     aput-object v14, v9, v13
2123     const/4 v13, 0x2
2125     move-object/from16 v0, v24
2127     iget-object v14, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
2129     aput-object v14, v9, v13
2131     invoke-static {v5, v9}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
2133     move-object/from16 v0, p1
2135     move-object/from16 v1, v24
2137     iput-object v0, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
2139     const/16 v5, -0x64
2141     move-object/from16 v0, v24
2143     iput v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
2145     move-object/from16 v0, v24
2147     iput v5, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
2149     const/4 v5, -0x1
2151     move-object/from16 v0, v24
2153     iput v5, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
2155     const/4 v5, 0x0
2157     move-object/from16 v0, v24
2159     iput v5, v0, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
2161     const/4 v5, 0x0
2163     move-object/from16 v0, v24
2165     iput-object v5, v0, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
2167     const/4 v5, 0x0
2169     move-object/from16 v0, v24
2171     iput-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
2173     const/4 v5, 0x0
2175     move-object/from16 v0, v24
2177     iput-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
2179     const/4 v5, 0x0
2181     move-object/from16 v0, v24
2183     iput-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->debugging:Z
2185     move-object/from16 v0, p0
2187     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
2189     const/16 v9, 0x14
2191     move-object/from16 v0, v24
2193     invoke-virtual {v5, v9, v0}, Landroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
2195     move-object/from16 v0, p0
2197     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
2199     if-nez v5, :cond_10a
2201     move-object/from16 v0, v24
2203     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
2205     move-object/from16 v0, p0
2207     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
2209     move-result v5
2211     if-eqz v5, :cond_342
2213     :cond_10a
2214     const/16 v30, 0x1
2216     :goto_10c
2217     if-eqz v30, :cond_346
2219     move-object/from16 v0, p0
2221     move-object/from16 v1, v24
2223     invoke-direct {v0, v1}, Lcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
2225     move-result-object v8
2227     :goto_116
2228     if-nez v30, :cond_132
2230     const-string v5, "ActivityManager"
2232     new-instance v9, Ljava/lang/StringBuilder;
2234     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
2236     const-string v13, "Launching preboot mode app: "
2238     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2240     move-result-object v9
2242     move-object/from16 v0, v24
2244     invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
2246     move-result-object v9
2248     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2250     move-result-object v9
2252     invoke-static {v5, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
2254     :cond_132
2255     const/4 v15, 0x0
2257     :try_start_133
2258     move-object/from16 v0, p0
2260     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
2262     if-eqz v5, :cond_165
2264     move-object/from16 v0, p0
2266     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
2268     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2270     move-result v5
2272     if-eqz v5, :cond_165
2274     move-object/from16 v0, p0
2276     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
2278     if-eqz v5, :cond_349
2280     const/4 v15, 0x2
2282     :goto_14a
2283     const/4 v5, 0x1
2285     move-object/from16 v0, v24
2287     iput-boolean v5, v0, Lcom/android/server/am/ProcessRecord;->debugging:Z
2289     move-object/from16 v0, p0
2291     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
2293     if-eqz v5, :cond_165
2295     move-object/from16 v0, p0
2297     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
2299     move-object/from16 v0, p0
2301     iput-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
2303     move-object/from16 v0, p0
2305     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
2307     move-object/from16 v0, p0
2309     iput-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
2311     :cond_165
2312     move-object/from16 v0, v24
2314     iget-object v10, v0, Lcom/android/server/am/ProcessRecord;->instrumentationProfileFile:Ljava/lang/String;
2316     const/4 v11, 0x0
2318     const/4 v12, 0x0
2320     move-object/from16 v0, p0
2322     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
2324     if-eqz v5, :cond_18d
2326     move-object/from16 v0, p0
2328     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
2330     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2332     move-result v5
2334     if-eqz v5, :cond_18d
2336     move-object/from16 v0, v24
2338     move-object/from16 v1, p0
2340     iput-object v0, v1, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
2342     move-object/from16 v0, p0
2344     iget-object v10, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
2346     move-object/from16 v0, p0
2348     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
2350     move-object/from16 v0, p0
2352     iget-boolean v12, v0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
2354     :cond_18d
2355     const/16 v16, 0x0
2357     move-object/from16 v0, p0
2359     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
2361     if-eqz v5, :cond_1a6
2363     move-object/from16 v0, p0
2365     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
2367     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2369     move-result v5
2371     if-eqz v5, :cond_1a6
2373     const/16 v16, 0x1
2375     const/4 v5, 0x0
2377     move-object/from16 v0, p0
2379     iput-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
2381     :cond_1a6
2382     const/16 v29, 0x0
2384     move-object/from16 v0, p0
2386     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2388     if-eqz v5, :cond_1d5
2390     move-object/from16 v0, p0
2392     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
2394     invoke-virtual {v5, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2396     move-result v5
2398     if-eqz v5, :cond_1d5
2400     move-object/from16 v0, p0
2402     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2404     iget v5, v5, Lcom/android/server/am/BackupRecord;->backupMode:I
2406     const/4 v9, 0x2
2408     if-eq v5, v9, :cond_1d3
2410     move-object/from16 v0, p0
2412     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2414     iget v5, v5, Lcom/android/server/am/BackupRecord;->backupMode:I
2416     const/4 v9, 0x3
2418     if-eq v5, v9, :cond_1d3
2420     move-object/from16 v0, p0
2422     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2424     iget v5, v5, Lcom/android/server/am/BackupRecord;->backupMode:I
2426     const/4 v9, 0x1
2428     if-ne v5, v9, :cond_34c
2430     :cond_1d3
2431     const/16 v29, 0x1
2433     :cond_1d5
2434     :goto_1d5
2435     move-object/from16 v0, v24
2437     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
2439     if-eqz v5, :cond_350
2441     move-object/from16 v0, v24
2443     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
2445     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
2447     :goto_1e1
2448     move-object/from16 v0, p0
2450     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->ensurePackageDexOpt(Ljava/lang/String;)V
2452     move-object/from16 v0, v24
2454     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
2456     if-eqz v5, :cond_1f9
2458     move-object/from16 v0, v24
2460     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
2462     invoke-virtual {v5}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
2464     move-result-object v5
2466     move-object/from16 v0, p0
2468     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->ensurePackageDexOpt(Ljava/lang/String;)V
2470     :cond_1f9
2471     move-object/from16 v0, v24
2473     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
2475     if-eqz v5, :cond_358
2477     move-object/from16 v0, v24
2479     iget-object v7, v0, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
2481     :goto_203
2482     move-object/from16 v0, p0
2484     invoke-virtual {v0, v7}, Lcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
2486     move-result-object v5
2488     move-object/from16 v0, v24
2490     iput-object v5, v0, Lcom/android/server/am/ProcessRecord;->compat:Landroid/content/res/CompatibilityInfo;
2492     if-eqz v11, :cond_213
2494     invoke-virtual {v11}, Landroid/os/ParcelFileDescriptor;->dup()Landroid/os/ParcelFileDescriptor;
2496     move-result-object v11
2498     :cond_213
2499     move-object/from16 v0, v24
2501     iget-object v9, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
2503     move-object/from16 v0, v24
2505     iget-object v13, v0, Lcom/android/server/am/ProcessRecord;->instrumentationArguments:Landroid/os/Bundle;
2507     move-object/from16 v0, v24
2509     iget-object v14, v0, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
2511     if-nez v29, :cond_223
2513     if-nez v30, :cond_35e
2515     :cond_223
2516     const/16 v17, 0x1
2518     :goto_225
2519     move-object/from16 v0, v24
2521     iget-boolean v0, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
2523     move/from16 v18, v0
2525     new-instance v19, Landroid/content/res/Configuration;
2527     move-object/from16 v0, p0
2529     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
2531     move-object/from16 v0, v19
2533     invoke-direct {v0, v5}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
2535     move-object/from16 v0, v24
2537     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->compat:Landroid/content/res/CompatibilityInfo;
2539     move-object/from16 v20, v0
2541     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->getCommonServicesLocked()Ljava/util/HashMap;
2543     move-result-object v21
2545     move-object/from16 v0, p0
2547     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mCoreSettingsObserver:Lcom/android/server/am/CoreSettingsObserver;
2549     invoke-virtual {v5}, Lcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle;
2551     move-result-object v22
2553     move-object/from16 v5, p1
2555     invoke-interface/range {v5 .. v22}, Landroid/app/IApplicationThread;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/ParcelFileDescriptor;ZLandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;IZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;)V
2557     const/4 v5, 0x0
2559     move-object/from16 v0, p0
2561     move-object/from16 v1, v24
2563     invoke-virtual {v0, v1, v5}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;Z)V
2565     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
2567     move-result-wide v13
2569     move-object/from16 v0, v24
2571     iput-wide v13, v0, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
2573     move-object/from16 v0, v24
2575     iput-wide v13, v0, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
2576     :try_end_261
2577     .catch Ljava/lang/Exception; {:try_start_133 .. :try_end_261} :catch_362
2579     move-object/from16 v0, p0
2581     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
2583     move-object/from16 v0, v24
2585     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
2587     move-object/from16 v0, p0
2589     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
2591     move-object/from16 v0, v24
2593     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
2595     const/16 v25, 0x0
2597     const/16 v26, 0x0
2599     move-object/from16 v0, p0
2601     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
2603     const/4 v9, 0x0
2605     invoke-virtual {v5, v9}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
2607     move-result-object v28
2609     if-eqz v28, :cond_2c2
2611     if-eqz v30, :cond_2c2
2613     move-object/from16 v0, v28
2615     iget-object v5, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
2617     if-nez v5, :cond_3bd
2619     move-object/from16 v0, v24
2621     iget v5, v0, Lcom/android/server/am/ProcessRecord;->uid:I
2623     move-object/from16 v0, v28
2625     iget-object v9, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
2627     iget-object v9, v9, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
2629     iget v9, v9, Landroid/content/pm/ApplicationInfo;->uid:I
2631     if-ne v5, v9, :cond_3bd
2633     move-object/from16 v0, v28
2635     iget-object v5, v0, Lcom/android/server/am/ActivityRecord;->processName:Ljava/lang/String;
2637     invoke-virtual {v6, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
2639     move-result v5
2641     if-eqz v5, :cond_3bd
2643     :try_start_2a2
2644     move-object/from16 v0, p0
2646     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
2648     if-eqz v5, :cond_37e
2650     const-string v5, "ActivityManager"
2652     new-instance v9, Ljava/lang/StringBuilder;
2654     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
2656     const-string v13, "Starting activities not supported on headless device: "
2658     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2660     move-result-object v9
2662     move-object/from16 v0, v28
2664     invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
2666     move-result-object v9
2668     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2670     move-result-object v9
2672     invoke-static {v5, v9}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
2673     :try_end_2c2
2674     .catch Ljava/lang/Exception; {:try_start_2a2 .. :try_end_2c2} :catch_392
2676     :cond_2c2
2677     :goto_2c2
2678     if-nez v25, :cond_2d0
2680     :try_start_2c4
2681     move-object/from16 v0, p0
2683     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
2685     move-object/from16 v0, v24
2687     invoke-virtual {v5, v0, v6}, Lcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z
2688     :try_end_2cd
2689     .catch Ljava/lang/Exception; {:try_start_2c4 .. :try_end_2cd} :catch_3ca
2691     move-result v5
2693     or-int v26, v26, v5
2695     :cond_2d0
2696     :goto_2d0
2697     if-nez v25, :cond_2e4
2699     move-object/from16 v0, p0
2701     move/from16 v1, p2
2703     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z
2705     move-result v5
2707     if-eqz v5, :cond_2e4
2709     :try_start_2dc
2710     move-object/from16 v0, p0
2712     move-object/from16 v1, v24
2714     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
2715     :try_end_2e3
2716     .catch Ljava/lang/Exception; {:try_start_2dc .. :try_end_2e3} :catch_3cf
2718     move-result v26
2720     :cond_2e4
2721     :goto_2e4
2722     if-nez v25, :cond_324
2724     move-object/from16 v0, p0
2726     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2728     if-eqz v5, :cond_324
2730     move-object/from16 v0, p0
2732     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2734     iget-object v5, v5, Lcom/android/server/am/BackupRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
2736     iget v5, v5, Landroid/content/pm/ApplicationInfo;->uid:I
2738     move-object/from16 v0, v24
2740     iget v9, v0, Lcom/android/server/am/ProcessRecord;->uid:I
2742     if-ne v5, v9, :cond_324
2744     move-object/from16 v0, p0
2746     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2748     iget-object v5, v5, Lcom/android/server/am/BackupRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
2750     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
2752     move-object/from16 v0, p0
2754     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->ensurePackageDexOpt(Ljava/lang/String;)V
2756     :try_start_307
2757     move-object/from16 v0, p0
2759     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2761     iget-object v5, v5, Lcom/android/server/am/BackupRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
2763     move-object/from16 v0, p0
2765     iget-object v9, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2767     iget-object v9, v9, Lcom/android/server/am/BackupRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
2769     move-object/from16 v0, p0
2771     invoke-virtual {v0, v9}, Lcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
2773     move-result-object v9
2775     move-object/from16 v0, p0
2777     iget-object v13, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
2779     iget v13, v13, Lcom/android/server/am/BackupRecord;->backupMode:I
2781     move-object/from16 v0, p1
2783     invoke-interface {v0, v5, v9, v13}, Landroid/app/IApplicationThread;->scheduleCreateBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)V
2784     :try_end_324
2785     .catch Ljava/lang/Exception; {:try_start_307 .. :try_end_324} :catch_3d4
2787     :cond_324
2788     :goto_324
2789     if-eqz v25, :cond_3e1
2791     const/4 v5, 0x0
2793     const/4 v9, 0x1
2795     move-object/from16 v0, p0
2797     move-object/from16 v1, v24
2799     invoke-direct {v0, v1, v5, v9}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
2801     const/4 v5, 0x0
2803     goto/16 :goto_5b
2805     :catch_332
2806     move-exception v27
2808     invoke-virtual/range {v24 .. v24}, Lcom/android/server/am/ProcessRecord;->resetPackageList()V
2810     const-string v5, "link fail"
2812     move-object/from16 v0, p0
2814     move-object/from16 v1, v24
2816     invoke-direct {v0, v1, v5, v6}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
2818     const/4 v5, 0x0
2820     goto/16 :goto_5b
2822     :cond_342
2823     const/16 v30, 0x0
2825     goto/16 :goto_10c
2827     :cond_346
2828     const/4 v8, 0x0
2830     goto/16 :goto_116
2832     :cond_349
2833     const/4 v15, 0x1
2835     goto/16 :goto_14a
2837     :cond_34c
2838     const/16 v29, 0x0
2840     goto/16 :goto_1d5
2842     :cond_350
2843     :try_start_350
2844     move-object/from16 v0, v24
2846     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
2848     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
2850     goto/16 :goto_1e1
2852     :cond_358
2853     move-object/from16 v0, v24
2855     iget-object v7, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
2856     :try_end_35c
2857     .catch Ljava/lang/Exception; {:try_start_350 .. :try_end_35c} :catch_362
2859     goto/16 :goto_203
2861     :cond_35e
2862     const/16 v17, 0x0
2864     goto/16 :goto_225
2866     :catch_362
2867     move-exception v27
2869     const-string v5, "ActivityManager"
2871     const-string v9, "Exception thrown during bind!"
2873     move-object/from16 v0, v27
2875     invoke-static {v5, v9, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
2877     invoke-virtual/range {v24 .. v24}, Lcom/android/server/am/ProcessRecord;->resetPackageList()V
2879     invoke-virtual/range {v24 .. v24}, Lcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
2881     const-string v5, "bind fail"
2883     move-object/from16 v0, p0
2885     move-object/from16 v1, v24
2887     invoke-direct {v0, v1, v5, v6}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
2889     const/4 v5, 0x0
2891     goto/16 :goto_5b
2893     :cond_37e
2894     :try_start_37e
2895     move-object/from16 v0, p0
2897     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
2899     const/4 v9, 0x1
2901     const/4 v13, 0x1
2903     move-object/from16 v0, v28
2905     move-object/from16 v1, v24
2907     invoke-virtual {v5, v0, v1, v9, v13}, Lcom/android/server/am/ActivityStack;->realStartActivityLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ProcessRecord;ZZ)Z
2908     :try_end_38b
2909     .catch Ljava/lang/Exception; {:try_start_37e .. :try_end_38b} :catch_392
2911     move-result v5
2913     if-eqz v5, :cond_2c2
2915     const/16 v26, 0x1
2917     goto/16 :goto_2c2
2919     :catch_392
2920     move-exception v27
2922     const-string v5, "ActivityManager"
2924     new-instance v9, Ljava/lang/StringBuilder;
2926     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
2928     const-string v13, "Exception in new application when starting activity "
2930     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2932     move-result-object v9
2934     move-object/from16 v0, v28
2936     iget-object v13, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
2938     invoke-virtual {v13}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
2940     move-result-object v13
2942     invoke-virtual {v13}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
2944     move-result-object v13
2946     invoke-virtual {v9, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2948     move-result-object v9
2950     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2952     move-result-object v9
2954     move-object/from16 v0, v27
2956     invoke-static {v5, v9, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
2958     const/16 v25, 0x1
2960     goto/16 :goto_2c2
2962     :cond_3bd
2963     move-object/from16 v0, p0
2965     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
2967     const/4 v9, 0x0
2969     const/4 v13, 0x0
2971     move-object/from16 v0, v28
2973     invoke-virtual {v5, v0, v9, v6, v13}, Lcom/android/server/am/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I)V
2975     goto/16 :goto_2c2
2977     :catch_3ca
2978     move-exception v27
2980     const/16 v25, 0x1
2982     goto/16 :goto_2d0
2984     :catch_3cf
2985     move-exception v27
2987     const/16 v25, 0x1
2989     goto/16 :goto_2e4
2991     :catch_3d4
2992     move-exception v27
2994     const-string v5, "ActivityManager"
2996     const-string v9, "Exception scheduling backup agent creation: "
2998     invoke-static {v5, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3000     invoke-virtual/range {v27 .. v27}, Ljava/lang/Exception;->printStackTrace()V
3002     goto/16 :goto_324
3004     :cond_3e1
3005     if-nez v26, :cond_3e6
3007     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
3009     :cond_3e6
3010     const/4 v5, 0x1
3012     goto/16 :goto_5b
3013 .end method
3015 .method private final broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
3016     .registers 79
3018     new-instance v46, Landroid/content/Intent;
3020     move-object/from16 v0, v46
3022     move-object/from16 v1, p3
3024     invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
3026     const/16 v4, 0x10
3028     move-object/from16 v0, v46
3030     invoke-virtual {v0, v4}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
3032     if-eqz p5, :cond_34
3034     if-nez p10, :cond_34
3036     const-string v4, "ActivityManager"
3038     new-instance v6, Ljava/lang/StringBuilder;
3040     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
3042     const-string v10, "Broadcast "
3044     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3046     move-result-object v6
3048     move-object/from16 v0, v46
3050     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
3052     move-result-object v6
3054     const-string v10, " not ordered but result callback requested!"
3056     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3058     move-result-object v6
3060     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3062     move-result-object v6
3064     invoke-static {v4, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3066     :cond_34
3067     const/4 v8, 0x1
3069     const/4 v9, 0x0
3071     const-string v10, "broadcast"
3073     move-object/from16 v4, p0
3075     move/from16 v5, p12
3077     move/from16 v6, p13
3079     move/from16 v7, p14
3081     move-object/from16 v11, p2
3083     invoke-virtual/range {v4 .. v11}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
3085     move-result p14
3087     const/4 v4, -0x1
3089     move/from16 v0, p14
3091     if-eq v0, v4, :cond_94
3093     move-object/from16 v0, p0
3095     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
3097     move/from16 v0, p14
3099     invoke-virtual {v4, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
3101     move-result-object v4
3103     if-nez v4, :cond_94
3105     const/16 v4, 0x3e8
3107     move/from16 v0, p13
3109     if-ne v0, v4, :cond_66
3111     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getFlags()I
3113     move-result v4
3115     const/high16 v6, 0x400
3117     and-int/2addr v4, v6
3119     if-nez v4, :cond_94
3121     :cond_66
3122     const-string v4, "ActivityManager"
3124     new-instance v6, Ljava/lang/StringBuilder;
3126     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
3128     const-string v10, "Skipping broadcast of "
3130     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3132     move-result-object v6
3134     move-object/from16 v0, v46
3136     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
3138     move-result-object v6
3140     const-string v10, ": user "
3142     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3144     move-result-object v6
3146     move/from16 v0, p14
3148     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
3150     move-result-object v6
3152     const-string v10, " is stopped"
3154     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3156     move-result-object v6
3158     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3160     move-result-object v6
3162     invoke-static {v4, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3164     const/4 v4, 0x0
3166     :goto_93
3167     return v4
3169     :cond_94
3170     invoke-static/range {p13 .. p13}, Landroid/os/UserHandle;->getAppId(I)I
3172     move-result v39
3174     const/16 v4, 0x3e8
3176     move/from16 v0, v39
3178     if-eq v0, v4, :cond_b2
3180     const/16 v4, 0x3e9
3182     move/from16 v0, v39
3184     if-eq v0, v4, :cond_b2
3186     const/16 v4, 0x7d0
3188     move/from16 v0, v39
3190     if-eq v0, v4, :cond_b2
3192     const/16 v4, 0x3ea
3194     move/from16 v0, v39
3196     if-eq v0, v4, :cond_b2
3198     if-nez p13, :cond_1b4
3200     :cond_b2
3201     const-string v4, "android.intent.action.UID_REMOVED"
3203     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3205     move-result-object v6
3207     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3209     move-result v62
3211     const-string v4, "android.intent.action.PACKAGE_REMOVED"
3213     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3215     move-result-object v6
3217     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3219     move-result v4
3221     if-nez v4, :cond_e2
3223     const-string v4, "android.intent.action.PACKAGE_CHANGED"
3225     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3227     move-result-object v6
3229     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3231     move-result v4
3233     if-nez v4, :cond_e2
3235     const-string v4, "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE"
3237     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3239     move-result-object v6
3241     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3243     move-result v4
3245     if-nez v4, :cond_e2
3247     if-eqz v62, :cond_306
3249     :cond_e2
3250     const-string v5, "android.permission.BROADCAST_PACKAGE_REMOVED"
3252     const/4 v8, -0x1
3254     const/4 v9, 0x1
3256     move-object/from16 v4, p0
3258     move/from16 v6, p12
3260     move/from16 v7, p13
3262     invoke-virtual/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
3264     move-result v4
3266     if-nez v4, :cond_2aa
3268     if-eqz v62, :cond_21c
3270     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getExtras()Landroid/os/Bundle;
3272     move-result-object v47
3274     if-eqz v47, :cond_215
3276     const-string v4, "android.intent.extra.UID"
3278     move-object/from16 v0, v47
3280     invoke-virtual {v0, v4}, Landroid/os/Bundle;->getInt(Ljava/lang/String;)I
3282     move-result v61
3284     :goto_102
3285     if-ltz v61, :cond_115
3287     move-object/from16 v0, p0
3289     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
3291     invoke-virtual {v4}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
3293     move-result-object v38
3295     monitor-enter v38
3297     :try_start_10d
3298     move-object/from16 v0, v38
3300     move/from16 v1, v61
3302     invoke-virtual {v0, v1}, Lcom/android/internal/os/BatteryStatsImpl;->removeUidStatsLocked(I)V
3304     monitor-exit v38
3305     :try_end_115
3306     .catchall {:try_start_10d .. :try_end_115} :catchall_219
3308     :cond_115
3309     :goto_115
3310     const-string v4, "android.intent.action.TIMEZONE_CHANGED"
3312     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3314     move-result-object v6
3316     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3318     move-result v4
3320     if-eqz v4, :cond_12a
3322     move-object/from16 v0, p0
3324     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
3326     const/16 v6, 0xd
3328     invoke-virtual {v4, v6}, Landroid/os/Handler;->sendEmptyMessage(I)Z
3330     :cond_12a
3331     const-string v4, "android.intent.action.CLEAR_DNS_CACHE"
3333     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3335     move-result-object v6
3337     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3339     move-result v4
3341     if-eqz v4, :cond_13f
3343     move-object/from16 v0, p0
3345     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
3347     const/16 v6, 0x1c
3349     invoke-virtual {v4, v6}, Landroid/os/Handler;->sendEmptyMessage(I)Z
3351     :cond_13f
3352     const-string v4, "android.intent.action.PROXY_CHANGE"
3354     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3356     move-result-object v6
3358     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3360     move-result v4
3362     if-eqz v4, :cond_168
3364     const-string v4, "proxy"
3366     move-object/from16 v0, v46
3368     invoke-virtual {v0, v4}, Landroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;
3370     move-result-object v55
3372     check-cast v55, Landroid/net/ProxyProperties;
3374     move-object/from16 v0, p0
3376     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
3378     move-object/from16 v0, p0
3380     iget-object v6, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
3382     const/16 v10, 0x1d
3384     move-object/from16 v0, v55
3386     invoke-virtual {v6, v10, v0}, Landroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
3388     move-result-object v6
3390     invoke-virtual {v4, v6}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
3392     :cond_168
3393     if-eqz p11, :cond_451
3395     const-string v4, "android.permission.BROADCAST_STICKY"
3397     move-object/from16 v0, p0
3399     move/from16 v1, p12
3401     move/from16 v2, p13
3403     invoke-virtual {v0, v4, v1, v2}, Lcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I
3405     move-result v4
3407     if-eqz v4, :cond_330
3409     new-instance v4, Ljava/lang/StringBuilder;
3411     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
3413     const-string v6, "Permission Denial: broadcastIntent() requesting a sticky broadcast from pid="
3415     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3417     move-result-object v4
3419     move/from16 v0, p12
3421     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
3423     move-result-object v4
3425     const-string v6, ", uid="
3427     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3429     move-result-object v4
3431     move/from16 v0, p13
3433     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
3435     move-result-object v4
3437     const-string v6, " requires "
3439     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3441     move-result-object v4
3443     const-string v6, "android.permission.BROADCAST_STICKY"
3445     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3447     move-result-object v4
3449     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3451     move-result-object v53
3453     const-string v4, "ActivityManager"
3455     move-object/from16 v0, v53
3457     invoke-static {v4, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3459     new-instance v4, Ljava/lang/SecurityException;
3461     move-object/from16 v0, v53
3463     invoke-direct {v4, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
3465     throw v4
3467     :cond_1b4
3468     if-eqz p1, :cond_1bc
3470     move-object/from16 v0, p1
3472     iget-boolean v4, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
3474     if-nez v4, :cond_b2
3476     :cond_1bc
3477     :try_start_1bc
3478     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
3480     move-result-object v4
3482     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3484     move-result-object v6
3486     invoke-interface {v4, v6}, Landroid/content/pm/IPackageManager;->isProtectedBroadcast(Ljava/lang/String;)Z
3488     move-result v4
3490     if-eqz v4, :cond_b2
3492     new-instance v4, Ljava/lang/StringBuilder;
3494     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
3496     const-string v6, "Permission Denial: not allowed to send broadcast "
3498     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3500     move-result-object v4
3502     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3504     move-result-object v6
3506     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3508     move-result-object v4
3510     const-string v6, " from pid="
3512     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3514     move-result-object v4
3516     move/from16 v0, p12
3518     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
3520     move-result-object v4
3522     const-string v6, ", uid="
3524     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3526     move-result-object v4
3528     move/from16 v0, p13
3530     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
3532     move-result-object v4
3534     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3536     move-result-object v53
3538     const-string v4, "ActivityManager"
3540     move-object/from16 v0, v53
3542     invoke-static {v4, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3544     new-instance v4, Ljava/lang/SecurityException;
3546     move-object/from16 v0, v53
3548     invoke-direct {v4, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
3550     throw v4
3551     :try_end_208
3552     .catch Landroid/os/RemoteException; {:try_start_1bc .. :try_end_208} :catch_208
3554     :catch_208
3555     move-exception v43
3557     const-string v4, "ActivityManager"
3559     const-string v6, "Remote exception"
3561     move-object/from16 v0, v43
3563     invoke-static {v4, v6, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
3565     const/4 v4, 0x0
3567     goto/16 :goto_93
3569     :cond_215
3570     const/16 v61, -0x1
3572     goto/16 :goto_102
3574     :catchall_219
3575     move-exception v4
3577     :try_start_21a
3578     monitor-exit v38
3579     :try_end_21b
3580     .catchall {:try_start_21a .. :try_end_21b} :catchall_219
3582     throw v4
3584     :cond_21c
3585     const-string v4, "android.intent.action.EXTERNAL_APPLICATIONS_UNAVAILABLE"
3587     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3589     move-result-object v6
3591     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3593     move-result v4
3595     if-eqz v4, :cond_263
3597     const-string v4, "android.intent.extra.changed_package_list"
3599     move-object/from16 v0, v46
3601     invoke-virtual {v0, v4}, Landroid/content/Intent;->getStringArrayExtra(Ljava/lang/String;)[Ljava/lang/String;
3603     move-result-object v51
3605     if-eqz v51, :cond_115
3607     move-object/from16 v0, v51
3609     array-length v4, v0
3611     if-lez v4, :cond_115
3613     move-object/from16 v37, v51
3615     move-object/from16 v0, v37
3617     array-length v0, v0
3619     move/from16 v50, v0
3621     const/16 v45, 0x0
3623     :goto_240
3624     move/from16 v0, v45
3626     move/from16 v1, v50
3628     if-ge v0, v1, :cond_257
3630     aget-object v5, v37, v45
3632     const/4 v6, -0x1
3634     const/4 v7, 0x0
3636     const/4 v8, 0x1
3638     const/4 v9, 0x1
3640     const/4 v10, 0x0
3642     move-object/from16 v4, p0
3644     move/from16 v11, p14
3646     invoke-direct/range {v4 .. v11}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
3648     add-int/lit8 v45, v45, 0x1
3650     goto :goto_240
3652     :cond_257
3653     const/4 v4, 0x1
3655     move-object/from16 v0, p0
3657     move-object/from16 v1, v51
3659     move/from16 v2, p14
3661     invoke-direct {v0, v4, v1, v2}, Lcom/android/server/am/ActivityManagerService;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V
3663     goto/16 :goto_115
3665     :cond_263
3666     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getData()Landroid/net/Uri;
3668     move-result-object v42
3670     if-eqz v42, :cond_115
3672     invoke-virtual/range {v42 .. v42}, Landroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String;
3674     move-result-object v7
3676     if-eqz v7, :cond_115
3678     const-string v4, "android.intent.extra.DONT_KILL_APP"
3680     const/4 v6, 0x0
3682     move-object/from16 v0, v46
3684     invoke-virtual {v0, v4, v6}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
3686     move-result v4
3688     if-nez v4, :cond_28e
3690     const-string v4, "android.intent.extra.UID"
3692     const/4 v6, -0x1
3694     move-object/from16 v0, v46
3696     invoke-virtual {v0, v4, v6}, Landroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
3698     move-result v8
3700     const/4 v9, 0x0
3702     const/4 v10, 0x1
3704     const/4 v11, 0x1
3706     const/4 v12, 0x0
3708     move-object/from16 v6, p0
3710     move/from16 v13, p14
3712     invoke-direct/range {v6 .. v13}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
3714     :cond_28e
3715     const-string v4, "android.intent.action.PACKAGE_REMOVED"
3717     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3719     move-result-object v6
3721     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3723     move-result v4
3725     if-eqz v4, :cond_115
3727     const/4 v4, 0x0
3729     const/4 v6, 0x1
3731     new-array v6, v6, [Ljava/lang/String;
3733     const/4 v10, 0x0
3735     aput-object v7, v6, v10
3737     move-object/from16 v0, p0
3739     move/from16 v1, p14
3741     invoke-direct {v0, v4, v6, v1}, Lcom/android/server/am/ActivityManagerService;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V
3743     goto/16 :goto_115
3745     :cond_2aa
3746     new-instance v4, Ljava/lang/StringBuilder;
3748     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
3750     const-string v6, "Permission Denial: "
3752     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3754     move-result-object v4
3756     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3758     move-result-object v6
3760     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3762     move-result-object v4
3764     const-string v6, " broadcast from "
3766     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3768     move-result-object v4
3770     move-object/from16 v0, p2
3772     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3774     move-result-object v4
3776     const-string v6, " (pid="
3778     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3780     move-result-object v4
3782     move/from16 v0, p12
3784     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
3786     move-result-object v4
3788     const-string v6, ", uid="
3790     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3792     move-result-object v4
3794     move/from16 v0, p13
3796     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
3798     move-result-object v4
3800     const-string v6, ")"
3802     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3804     move-result-object v4
3806     const-string v6, " requires "
3808     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3810     move-result-object v4
3812     const-string v6, "android.permission.BROADCAST_PACKAGE_REMOVED"
3814     invoke-virtual {v4, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3816     move-result-object v4
3818     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3820     move-result-object v53
3822     const-string v4, "ActivityManager"
3824     move-object/from16 v0, v53
3826     invoke-static {v4, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3828     new-instance v4, Ljava/lang/SecurityException;
3830     move-object/from16 v0, v53
3832     invoke-direct {v4, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
3834     throw v4
3836     :cond_306
3837     const-string v4, "android.intent.action.PACKAGE_ADDED"
3839     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3841     move-result-object v6
3843     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
3845     move-result v4
3847     if-eqz v4, :cond_115
3849     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getData()Landroid/net/Uri;
3851     move-result-object v42
3853     if-eqz v42, :cond_115
3855     invoke-virtual/range {v42 .. v42}, Landroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String;
3857     move-result-object v7
3859     if-eqz v7, :cond_115
3861     move-object/from16 v0, p0
3863     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
3865     const-string v6, "android.intent.extra.REPLACING"
3867     const/4 v10, 0x0
3869     move-object/from16 v0, v46
3871     invoke-virtual {v0, v6, v10}, Landroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
3873     move-result v6
3875     invoke-virtual {v4, v7, v6}, Lcom/android/server/am/CompatModePackages;->handlePackageAddedLocked(Ljava/lang/String;Z)V
3877     goto/16 :goto_115
3879     :cond_330
3880     if-eqz p9, :cond_35b
3882     const-string v4, "ActivityManager"
3884     new-instance v6, Ljava/lang/StringBuilder;
3886     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
3888     const-string v10, "Can\'t broadcast sticky intent "
3890     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3892     move-result-object v6
3894     move-object/from16 v0, v46
3896     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
3898     move-result-object v6
3900     const-string v10, " and enforce permission "
3902     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3904     move-result-object v6
3906     move-object/from16 v0, p9
3908     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
3910     move-result-object v6
3912     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
3914     move-result-object v6
3916     invoke-static {v4, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
3918     const/4 v4, -0x1
3920     goto/16 :goto_93
3922     :cond_35b
3923     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
3925     move-result-object v4
3927     if-eqz v4, :cond_369
3929     new-instance v4, Ljava/lang/SecurityException;
3931     const-string v6, "Sticky broadcasts can\'t target a specific component"
3933     invoke-direct {v4, v6}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
3935     throw v4
3937     :cond_369
3938     const/4 v4, -0x1
3940     move/from16 v0, p14
3942     if-eq v0, v4, :cond_3d7
3944     move-object/from16 v0, p0
3946     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
3948     const/4 v6, -0x1
3950     invoke-virtual {v4, v6}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
3952     move-result-object v60
3954     check-cast v60, Ljava/util/HashMap;
3956     if-eqz v60, :cond_3d7
3958     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
3960     move-result-object v4
3962     move-object/from16 v0, v60
3964     invoke-virtual {v0, v4}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
3966     move-result-object v52
3968     check-cast v52, Ljava/util/ArrayList;
3970     if-eqz v52, :cond_3d7
3972     invoke-virtual/range {v52 .. v52}, Ljava/util/ArrayList;->size()I
3974     move-result v34
3976     const/16 v44, 0x0
3978     :goto_38f
3979     move/from16 v0, v44
3981     move/from16 v1, v34
3983     if-ge v0, v1, :cond_3d7
3985     move-object/from16 v0, v52
3987     move/from16 v1, v44
3989     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
3991     move-result-object v4
3993     check-cast v4, Landroid/content/Intent;
3995     move-object/from16 v0, v46
3997     invoke-virtual {v0, v4}, Landroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
3999     move-result v4
4001     if-eqz v4, :cond_3d4
4003     new-instance v4, Ljava/lang/IllegalArgumentException;
4005     new-instance v6, Ljava/lang/StringBuilder;
4007     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
4009     const-string v10, "Sticky broadcast "
4011     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4013     move-result-object v6
4015     move-object/from16 v0, v46
4017     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
4019     move-result-object v6
4021     const-string v10, " for user "
4023     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4025     move-result-object v6
4027     move/from16 v0, p14
4029     invoke-virtual {v6, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
4031     move-result-object v6
4033     const-string v10, " conflicts with existing global broadcast"
4035     invoke-virtual {v6, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4037     move-result-object v6
4039     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4041     move-result-object v6
4043     invoke-direct {v4, v6}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
4045     throw v4
4047     :cond_3d4
4048     add-int/lit8 v44, v44, 0x1
4050     goto :goto_38f
4052     :cond_3d7
4053     move-object/from16 v0, p0
4055     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
4057     move/from16 v0, p14
4059     invoke-virtual {v4, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
4061     move-result-object v60
4063     check-cast v60, Ljava/util/HashMap;
4065     if-nez v60, :cond_3f5
4067     new-instance v60, Ljava/util/HashMap;
4069     invoke-direct/range {v60 .. v60}, Ljava/util/HashMap;-><init>()V
4071     move-object/from16 v0, p0
4073     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
4075     move/from16 v0, p14
4077     move-object/from16 v1, v60
4079     invoke-virtual {v4, v0, v1}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
4081     :cond_3f5
4082     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4084     move-result-object v4
4086     move-object/from16 v0, v60
4088     invoke-virtual {v0, v4}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
4090     move-result-object v52
4092     check-cast v52, Ljava/util/ArrayList;
4094     if-nez v52, :cond_413
4096     new-instance v52, Ljava/util/ArrayList;
4098     invoke-direct/range {v52 .. v52}, Ljava/util/ArrayList;-><init>()V
4100     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4102     move-result-object v4
4104     move-object/from16 v0, v60
4106     move-object/from16 v1, v52
4108     invoke-virtual {v0, v4, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
4110     :cond_413
4111     invoke-virtual/range {v52 .. v52}, Ljava/util/ArrayList;->size()I
4113     move-result v34
4115     const/16 v44, 0x0
4117     :goto_419
4118     move/from16 v0, v44
4120     move/from16 v1, v34
4122     if-ge v0, v1, :cond_43f
4124     move-object/from16 v0, v52
4126     move/from16 v1, v44
4128     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
4130     move-result-object v4
4132     check-cast v4, Landroid/content/Intent;
4134     move-object/from16 v0, v46
4136     invoke-virtual {v0, v4}, Landroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
4138     move-result v4
4140     if-eqz v4, :cond_568
4142     new-instance v4, Landroid/content/Intent;
4144     move-object/from16 v0, v46
4146     invoke-direct {v4, v0}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
4148     move-object/from16 v0, v52
4150     move/from16 v1, v44
4152     invoke-virtual {v0, v1, v4}, Ljava/util/ArrayList;->set(ILjava/lang/Object;)Ljava/lang/Object;
4154     :cond_43f
4155     move/from16 v0, v44
4157     move/from16 v1, v34
4159     if-lt v0, v1, :cond_451
4161     new-instance v4, Landroid/content/Intent;
4163     move-object/from16 v0, v46
4165     invoke-direct {v4, v0}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
4167     move-object/from16 v0, v52
4169     invoke-virtual {v0, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
4171     :cond_451
4172     const/4 v4, -0x1
4174     move/from16 v0, p14
4176     if-ne v0, v4, :cond_56c
4178     move-object/from16 v0, p0
4180     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUserArray:[I
4182     move-object/from16 v63, v0
4184     :goto_45c
4185     const/16 v25, 0x0
4187     const/16 v16, 0x0
4189     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getFlags()I
4191     move-result v4
4193     const/high16 v6, 0x4000
4195     and-int/2addr v4, v6
4197     if-nez v4, :cond_475
4199     move-object/from16 v0, p0
4201     move-object/from16 v1, v46
4203     move-object/from16 v2, p4
4205     move-object/from16 v3, v63
4207     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;[I)Ljava/util/List;
4209     move-result-object v25
4211     :cond_475
4212     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
4214     move-result-object v4
4216     if-nez v4, :cond_48a
4218     move-object/from16 v0, p0
4220     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
4222     const/4 v6, 0x0
4224     move-object/from16 v0, v46
4226     move-object/from16 v1, p4
4228     move/from16 v2, p14
4230     invoke-virtual {v4, v0, v1, v6, v2}, Lcom/android/server/IntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;
4232     move-result-object v16
4234     :cond_48a
4235     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getFlags()I
4237     move-result v4
4239     const/high16 v6, 0x2000
4241     and-int/2addr v4, v6
4243     if-eqz v4, :cond_576
4245     const/16 v56, 0x1
4247     :goto_495
4248     if-eqz v16, :cond_57a
4250     invoke-interface/range {v16 .. v16}, Ljava/util/List;->size()I
4252     move-result v35
4254     :goto_49b
4255     if-nez p10, :cond_4de
4257     if-lez v35, :cond_4de
4259     move-object/from16 v0, p0
4261     move-object/from16 v1, v46
4263     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
4265     move-result-object v9
4267     new-instance v8, Lcom/android/server/am/BroadcastRecord;
4269     const/16 v23, 0x0
4271     move-object/from16 v10, v46
4273     move-object/from16 v11, p1
4275     move-object/from16 v12, p2
4277     move/from16 v13, p12
4279     move/from16 v14, p13
4281     move-object/from16 v15, p9
4283     move-object/from16 v17, p5
4285     move/from16 v18, p6
4287     move-object/from16 v19, p7
4289     move-object/from16 v20, p8
4291     move/from16 v21, p10
4293     move/from16 v22, p11
4295     move/from16 v24, p14
4297     invoke-direct/range {v8 .. v24}, Lcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IILjava/lang/String;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZI)V
4299     if-eqz v56, :cond_57e
4301     invoke-virtual {v9, v8}, Lcom/android/server/am/BroadcastQueue;->replaceParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Z
4303     move-result v4
4305     if-eqz v4, :cond_57e
4307     const/16 v57, 0x1
4309     :goto_4d2
4310     if-nez v57, :cond_4da
4312     invoke-virtual {v9, v8}, Lcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
4314     invoke-virtual {v9}, Lcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V
4316     :cond_4da
4317     const/16 v16, 0x0
4319     const/16 v35, 0x0
4321     :cond_4de
4322     const/16 v48, 0x0
4324     if-eqz v25, :cond_5ee
4326     const/16 v59, 0x0
4328     const-string v4, "android.intent.action.PACKAGE_ADDED"
4330     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4332     move-result-object v6
4334     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4336     move-result v4
4338     if-nez v4, :cond_508
4340     const-string v4, "android.intent.action.PACKAGE_RESTARTED"
4342     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4344     move-result-object v6
4346     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4348     move-result v4
4350     if-nez v4, :cond_508
4352     const-string v4, "android.intent.action.PACKAGE_DATA_CLEARED"
4354     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4356     move-result-object v6
4358     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4360     move-result v4
4362     if-eqz v4, :cond_582
4364     :cond_508
4365     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getData()Landroid/net/Uri;
4367     move-result-object v42
4369     if-eqz v42, :cond_51c
4371     invoke-virtual/range {v42 .. v42}, Landroid/net/Uri;->getSchemeSpecificPart()Ljava/lang/String;
4373     move-result-object v54
4375     if-eqz v54, :cond_51c
4377     const/4 v4, 0x1
4379     new-array v0, v4, [Ljava/lang/String;
4381     move-object/from16 v59, v0
4383     const/4 v4, 0x0
4385     aput-object v54, v59, v4
4387     :cond_51c
4388     :goto_51c
4389     if-eqz v59, :cond_59a
4391     move-object/from16 v0, v59
4393     array-length v4, v0
4395     if-lez v4, :cond_59a
4397     move-object/from16 v37, v59
4399     move-object/from16 v0, v37
4401     array-length v0, v0
4403     move/from16 v50, v0
4405     const/16 v45, 0x0
4407     :goto_52c
4408     move/from16 v0, v45
4410     move/from16 v1, v50
4412     if-ge v0, v1, :cond_59a
4414     aget-object v58, v37, v45
4416     if-eqz v58, :cond_597
4418     invoke-interface/range {v25 .. v25}, Ljava/util/List;->size()I
4420     move-result v36
4422     const/16 v49, 0x0
4424     :goto_53c
4425     move/from16 v0, v49
4427     move/from16 v1, v36
4429     if-ge v0, v1, :cond_597
4431     move-object/from16 v0, v25
4433     move/from16 v1, v49
4435     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
4437     move-result-object v41
4439     check-cast v41, Landroid/content/pm/ResolveInfo;
4441     move-object/from16 v0, v41
4443     iget-object v4, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
4445     iget-object v4, v4, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
4447     move-object/from16 v0, v58
4449     invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4451     move-result v4
4453     if-eqz v4, :cond_565
4455     move-object/from16 v0, v25
4457     move/from16 v1, v49
4459     invoke-interface {v0, v1}, Ljava/util/List;->remove(I)Ljava/lang/Object;
4461     add-int/lit8 v49, v49, -0x1
4463     add-int/lit8 v36, v36, -0x1
4465     :cond_565
4466     add-int/lit8 v49, v49, 0x1
4468     goto :goto_53c
4470     :cond_568
4471     add-int/lit8 v44, v44, 0x1
4473     goto/16 :goto_419
4475     :cond_56c
4476     const/4 v4, 0x1
4478     new-array v0, v4, [I
4480     move-object/from16 v63, v0
4482     const/4 v4, 0x0
4484     aput p14, v63, v4
4486     goto/16 :goto_45c
4488     :cond_576
4489     const/16 v56, 0x0
4491     goto/16 :goto_495
4493     :cond_57a
4494     const/16 v35, 0x0
4496     goto/16 :goto_49b
4498     :cond_57e
4499     const/16 v57, 0x0
4501     goto/16 :goto_4d2
4503     :cond_582
4504     const-string v4, "android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE"
4506     invoke-virtual/range {v46 .. v46}, Landroid/content/Intent;->getAction()Ljava/lang/String;
4508     move-result-object v6
4510     invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
4512     move-result v4
4514     if-eqz v4, :cond_51c
4516     const-string v4, "android.intent.extra.changed_package_list"
4518     move-object/from16 v0, v46
4520     invoke-virtual {v0, v4}, Landroid/content/Intent;->getStringArrayExtra(Ljava/lang/String;)[Ljava/lang/String;
4522     move-result-object v59
4524     goto :goto_51c
4526     :cond_597
4527     add-int/lit8 v45, v45, 0x1
4529     goto :goto_52c
4531     :cond_59a
4532     if-eqz v25, :cond_5e6
4534     invoke-interface/range {v25 .. v25}, Ljava/util/List;->size()I
4536     move-result v36
4538     :goto_5a0
4539     const/16 v49, 0x0
4541     const/16 v41, 0x0
4543     const/16 v40, 0x0
4545     :goto_5a6
4546     move/from16 v0, v49
4548     move/from16 v1, v36
4550     if-ge v0, v1, :cond_5ee
4552     move/from16 v0, v48
4554     move/from16 v1, v35
4556     if-ge v0, v1, :cond_5ee
4558     if-nez v41, :cond_5be
4560     move-object/from16 v0, v25
4562     move/from16 v1, v49
4564     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
4566     move-result-object v41
4568     check-cast v41, Landroid/content/pm/ResolveInfo;
4570     :cond_5be
4571     if-nez v40, :cond_5ca
4573     move-object/from16 v0, v16
4575     move/from16 v1, v48
4577     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
4579     move-result-object v40
4581     check-cast v40, Lcom/android/server/am/BroadcastFilter;
4583     :cond_5ca
4584     invoke-virtual/range {v40 .. v40}, Lcom/android/server/am/BroadcastFilter;->getPriority()I
4586     move-result v4
4588     move-object/from16 v0, v41
4590     iget v6, v0, Landroid/content/pm/ResolveInfo;->priority:I
4592     if-lt v4, v6, :cond_5e9
4594     move-object/from16 v0, v25
4596     move/from16 v1, v49
4598     move-object/from16 v2, v40
4600     invoke-interface {v0, v1, v2}, Ljava/util/List;->add(ILjava/lang/Object;)V
4602     add-int/lit8 v48, v48, 0x1
4604     const/16 v40, 0x0
4606     add-int/lit8 v49, v49, 0x1
4608     add-int/lit8 v36, v36, 0x1
4610     goto :goto_5a6
4612     :cond_5e6
4613     const/16 v36, 0x0
4615     goto :goto_5a0
4617     :cond_5e9
4618     add-int/lit8 v49, v49, 0x1
4620     const/16 v41, 0x0
4622     goto :goto_5a6
4624     :cond_5ee
4625     :goto_5ee
4626     move/from16 v0, v48
4628     move/from16 v1, v35
4630     if-ge v0, v1, :cond_60b
4632     if-nez v25, :cond_5fb
4634     new-instance v25, Ljava/util/ArrayList;
4636     invoke-direct/range {v25 .. v25}, Ljava/util/ArrayList;-><init>()V
4638     :cond_5fb
4639     move-object/from16 v0, v16
4641     move/from16 v1, v48
4643     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
4645     move-result-object v4
4647     move-object/from16 v0, v25
4649     invoke-interface {v0, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
4651     add-int/lit8 v48, v48, 0x1
4653     goto :goto_5ee
4655     :cond_60b
4656     if-eqz v25, :cond_613
4658     invoke-interface/range {v25 .. v25}, Ljava/util/List;->size()I
4660     move-result v4
4662     if-gtz v4, :cond_615
4664     :cond_613
4665     if-eqz p5, :cond_654
4667     :cond_615
4668     move-object/from16 v0, p0
4670     move-object/from16 v1, v46
4672     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
4674     move-result-object v9
4676     new-instance v8, Lcom/android/server/am/BroadcastRecord;
4678     const/16 v32, 0x0
4680     move-object/from16 v17, v8
4682     move-object/from16 v18, v9
4684     move-object/from16 v19, v46
4686     move-object/from16 v20, p1
4688     move-object/from16 v21, p2
4690     move/from16 v22, p12
4692     move/from16 v23, p13
4694     move-object/from16 v24, p9
4696     move-object/from16 v26, p5
4698     move/from16 v27, p6
4700     move-object/from16 v28, p7
4702     move-object/from16 v29, p8
4704     move/from16 v30, p10
4706     move/from16 v31, p11
4708     move/from16 v33, p14
4710     invoke-direct/range {v17 .. v33}, Lcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IILjava/lang/String;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZI)V
4712     if-eqz v56, :cond_657
4714     invoke-virtual {v9, v8}, Lcom/android/server/am/BroadcastQueue;->replaceOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Z
4716     move-result v4
4718     if-eqz v4, :cond_657
4720     const/16 v57, 0x1
4722     :goto_64c
4723     if-nez v57, :cond_654
4725     invoke-virtual {v9, v8}, Lcom/android/server/am/BroadcastQueue;->enqueueOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
4727     invoke-virtual {v9}, Lcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V
4729     :cond_654
4730     const/4 v4, 0x0
4732     goto/16 :goto_93
4734     :cond_657
4735     const/16 v57, 0x0
4737     goto :goto_64c
4738 .end method
4740 .method private static buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
4741     .registers 6
4743     if-ne p2, p3, :cond_19
4745     if-nez p1, :cond_5
4747     :goto_4
4748     return-object p0
4750     :cond_5
4751     new-instance v0, Ljava/lang/StringBuilder;
4753     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
4755     invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4757     move-result-object v0
4759     const-string v1, "  "
4761     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4763     move-result-object v0
4765     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4767     move-result-object p0
4769     goto :goto_4
4771     :cond_19
4772     new-instance v0, Ljava/lang/StringBuilder;
4774     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
4776     invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4778     move-result-object v0
4780     const-string v1, "+"
4782     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4784     move-result-object v0
4786     sub-int v1, p2, p3
4788     invoke-static {v1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
4790     move-result-object v1
4792     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
4794     move-result-object v0
4796     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
4798     move-result-object p0
4800     goto :goto_4
4801 .end method
4803 .method private final canGcNowLocked()Z
4804     .registers 7
4806     const/4 v3, 0x0
4808     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
4810     array-length v2, v0
4812     const/4 v1, 0x0
4814     :goto_5
4815     if-ge v1, v2, :cond_1d
4817     aget-object v4, v0, v1
4819     iget-object v5, v4, Lcom/android/server/am/BroadcastQueue;->mParallelBroadcasts:Ljava/util/ArrayList;
4821     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
4823     move-result v5
4825     if-nez v5, :cond_19
4827     iget-object v5, v4, Lcom/android/server/am/BroadcastQueue;->mOrderedBroadcasts:Ljava/util/ArrayList;
4829     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
4831     move-result v5
4833     if-eqz v5, :cond_1a
4835     :cond_19
4836     const/4 v3, 0x1
4838     :cond_1a
4839     add-int/lit8 v1, v1, 0x1
4841     goto :goto_5
4843     :cond_1d
4844     if-nez v3, :cond_33
4846     iget-boolean v5, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
4848     if-nez v5, :cond_31
4850     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
4852     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
4854     if-eqz v5, :cond_33
4856     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
4858     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
4860     iget-boolean v5, v5, Lcom/android/server/am/ActivityRecord;->idle:Z
4862     if-eqz v5, :cond_33
4864     :cond_31
4865     const/4 v5, 0x1
4867     :goto_32
4868     return v5
4870     :cond_33
4871     const/4 v5, 0x0
4873     goto :goto_32
4874 .end method
4876 .method private final checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
4877     .registers 16
4879     const/4 v8, 0x0
4881     if-eqz p2, :cond_19
4883     iget v2, p2, Lcom/android/server/am/ProcessRecord;->pid:I
4885     :goto_5
4886     if-eqz p2, :cond_1e
4888     iget v3, p2, Lcom/android/server/am/ProcessRecord;->uid:I
4890     :goto_9
4891     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
4893     iget-object v0, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
4895     iget v4, v0, Landroid/content/pm/ApplicationInfo;->uid:I
4897     iget-boolean v5, p1, Landroid/content/pm/ProviderInfo;->exported:Z
4899     move-object v0, p0
4901     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
4903     move-result v0
4905     if-nez v0, :cond_23
4907     :cond_18
4908     :goto_18
4909     return-object v8
4911     :cond_19
4912     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
4914     move-result v2
4916     goto :goto_5
4918     :cond_1e
4919     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
4921     move-result v3
4923     goto :goto_9
4925     :cond_23
4926     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
4928     iget-object v0, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
4930     iget v4, v0, Landroid/content/pm/ApplicationInfo;->uid:I
4932     iget-boolean v5, p1, Landroid/content/pm/ProviderInfo;->exported:Z
4934     move-object v0, p0
4936     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
4938     move-result v0
4940     if-eqz v0, :cond_18
4942     iget-object v11, p1, Landroid/content/pm/ProviderInfo;->pathPermissions:[Landroid/content/pm/PathPermission;
4944     if-eqz v11, :cond_60
4946     array-length v6, v11
4948     :cond_37
4949     if-lez v6, :cond_60
4951     add-int/lit8 v6, v6, -0x1
4953     aget-object v10, v11, v6
4955     invoke-virtual {v10}, Landroid/content/pm/PathPermission;->getReadPermission()Ljava/lang/String;
4957     move-result-object v1
4959     iget-object v0, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
4961     iget v4, v0, Landroid/content/pm/ApplicationInfo;->uid:I
4963     iget-boolean v5, p1, Landroid/content/pm/ProviderInfo;->exported:Z
4965     move-object v0, p0
4967     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
4969     move-result v0
4971     if-eqz v0, :cond_18
4973     invoke-virtual {v10}, Landroid/content/pm/PathPermission;->getWritePermission()Ljava/lang/String;
4975     move-result-object v1
4977     iget-object v0, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
4979     iget v4, v0, Landroid/content/pm/ApplicationInfo;->uid:I
4981     iget-boolean v5, p1, Landroid/content/pm/ProviderInfo;->exported:Z
4983     move-object v0, p0
4985     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
4987     move-result v0
4989     if-nez v0, :cond_37
4991     goto :goto_18
4993     :cond_60
4994     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
4996     invoke-virtual {v0, v3}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
4998     move-result-object v9
5000     check-cast v9, Ljava/util/HashMap;
5002     if-eqz v9, :cond_91
5004     invoke-virtual {v9}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
5006     move-result-object v0
5008     invoke-interface {v0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
5010     move-result-object v7
5012     :cond_72
5013     invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
5015     move-result v0
5017     if-eqz v0, :cond_91
5019     invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
5021     move-result-object v12
5023     check-cast v12, Ljava/util/Map$Entry;
5025     invoke-interface {v12}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
5027     move-result-object v0
5029     check-cast v0, Landroid/net/Uri;
5031     invoke-virtual {v0}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
5033     move-result-object v0
5035     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->authority:Ljava/lang/String;
5037     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
5039     move-result v0
5041     if-eqz v0, :cond_72
5043     goto :goto_18
5045     :cond_91
5046     iget-boolean v0, p1, Landroid/content/pm/ProviderInfo;->exported:Z
5048     if-nez v0, :cond_e2
5050     new-instance v0, Ljava/lang/StringBuilder;
5052     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5054     const-string v1, "Permission Denial: opening provider "
5056     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5058     move-result-object v0
5060     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
5062     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5064     move-result-object v0
5066     const-string v1, " from "
5068     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5070     move-result-object v0
5072     if-eqz p2, :cond_df
5074     :goto_ae
5075     invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
5077     move-result-object v0
5079     const-string v1, " (pid="
5081     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5083     move-result-object v0
5085     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5087     move-result-object v0
5089     const-string v1, ", uid="
5091     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5093     move-result-object v0
5095     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5097     move-result-object v0
5099     const-string v1, ") that is not exported from uid "
5101     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5103     move-result-object v0
5105     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
5107     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
5109     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5111     move-result-object v0
5113     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5115     move-result-object v8
5117     :goto_d8
5118     const-string v0, "ActivityManager"
5120     invoke-static {v0, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
5122     goto/16 :goto_18
5124     :cond_df
5125     const-string p2, "(null)"
5127     goto :goto_ae
5129     :cond_e2
5130     new-instance v0, Ljava/lang/StringBuilder;
5132     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
5134     const-string v1, "Permission Denial: opening provider "
5136     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5138     move-result-object v0
5140     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
5142     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5144     move-result-object v0
5146     const-string v1, " from "
5148     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5150     move-result-object v0
5152     if-eqz p2, :cond_130
5154     :goto_fb
5155     invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
5157     move-result-object v0
5159     const-string v1, " (pid="
5161     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5163     move-result-object v0
5165     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5167     move-result-object v0
5169     const-string v1, ", uid="
5171     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5173     move-result-object v0
5175     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5177     move-result-object v0
5179     const-string v1, ") requires "
5181     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5183     move-result-object v0
5185     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
5187     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5189     move-result-object v0
5191     const-string v1, " or "
5193     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5195     move-result-object v0
5197     iget-object v1, p1, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
5199     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5201     move-result-object v0
5203     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5205     move-result-object v8
5207     goto :goto_d8
5209     :cond_130
5210     const-string p2, "(null)"
5212     goto :goto_fb
5213 .end method
5215 .method private final checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Landroid/net/Uri;II)Z
5216     .registers 19
5218     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
5220     iget v12, v12, Landroid/content/pm/ApplicationInfo;->uid:I
5222     move/from16 v0, p4
5224     if-ne v12, v0, :cond_a
5226     const/4 v12, 0x1
5228     :goto_9
5229     return v12
5231     :cond_a
5232     iget-boolean v12, p2, Landroid/content/pm/ProviderInfo;->exported:Z
5234     if-nez v12, :cond_10
5236     const/4 v12, 0x0
5238     goto :goto_9
5240     :cond_10
5241     and-int/lit8 v12, p5, 0x1
5243     if-nez v12, :cond_82
5245     const/4 v10, 0x1
5247     :goto_15
5248     and-int/lit8 v12, p5, 0x2
5250     if-nez v12, :cond_84
5252     const/4 v11, 0x1
5254     :goto_1a
5255     if-nez v10, :cond_2b
5257     :try_start_1c
5258     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
5260     if-eqz v12, :cond_2b
5262     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
5264     move/from16 v0, p4
5266     invoke-interface {p1, v12, v0}, Landroid/content/pm/IPackageManager;->checkUidPermission(Ljava/lang/String;I)I
5268     move-result v12
5270     if-nez v12, :cond_2b
5272     const/4 v10, 0x1
5274     :cond_2b
5275     if-nez v11, :cond_3c
5277     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
5279     if-eqz v12, :cond_3c
5281     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
5283     move/from16 v0, p4
5285     invoke-interface {p1, v12, v0}, Landroid/content/pm/IPackageManager;->checkUidPermission(Ljava/lang/String;I)I
5287     move-result v12
5289     if-nez v12, :cond_3c
5291     const/4 v11, 0x1
5293     :cond_3c
5294     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
5296     if-nez v12, :cond_86
5298     const/4 v1, 0x1
5300     :goto_41
5301     iget-object v12, p2, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
5303     if-nez v12, :cond_88
5305     const/4 v2, 0x1
5307     :goto_46
5308     iget-object v8, p2, Landroid/content/pm/ProviderInfo;->pathPermissions:[Landroid/content/pm/PathPermission;
5310     if-eqz v8, :cond_8e
5312     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->getPath()Ljava/lang/String;
5314     move-result-object v5
5316     array-length v4, v8
5318     :cond_4f
5319     :goto_4f
5320     if-lez v4, :cond_8e
5322     if-eqz v10, :cond_55
5324     if-nez v11, :cond_8e
5326     :cond_55
5327     add-int/lit8 v4, v4, -0x1
5329     aget-object v6, v8, v4
5331     invoke-virtual {v6, v5}, Landroid/content/pm/PathPermission;->match(Ljava/lang/String;)Z
5333     move-result v12
5335     if-eqz v12, :cond_4f
5337     if-nez v10, :cond_70
5339     invoke-virtual {v6}, Landroid/content/pm/PathPermission;->getReadPermission()Ljava/lang/String;
5341     move-result-object v7
5343     if-eqz v7, :cond_70
5345     move/from16 v0, p4
5347     invoke-interface {p1, v7, v0}, Landroid/content/pm/IPackageManager;->checkUidPermission(Ljava/lang/String;I)I
5349     move-result v12
5351     if-nez v12, :cond_8a
5353     const/4 v10, 0x1
5355     :cond_70
5356     :goto_70
5357     if-nez v11, :cond_4f
5359     invoke-virtual {v6}, Landroid/content/pm/PathPermission;->getWritePermission()Ljava/lang/String;
5361     move-result-object v9
5363     if-eqz v9, :cond_4f
5365     move/from16 v0, p4
5367     invoke-interface {p1, v9, v0}, Landroid/content/pm/IPackageManager;->checkUidPermission(Ljava/lang/String;I)I
5368     :try_end_7d
5369     .catch Landroid/os/RemoteException; {:try_start_1c .. :try_end_7d} :catch_9b
5371     move-result v12
5373     if-nez v12, :cond_8c
5375     const/4 v11, 0x1
5377     goto :goto_4f
5379     :cond_82
5380     const/4 v10, 0x0
5382     goto :goto_15
5384     :cond_84
5385     const/4 v11, 0x0
5387     goto :goto_1a
5389     :cond_86
5390     const/4 v1, 0x0
5392     goto :goto_41
5394     :cond_88
5395     const/4 v2, 0x0
5397     goto :goto_46
5399     :cond_8a
5400     const/4 v1, 0x0
5402     goto :goto_70
5404     :cond_8c
5405     const/4 v2, 0x0
5407     goto :goto_4f
5409     :cond_8e
5410     if-eqz v1, :cond_91
5412     const/4 v10, 0x1
5414     :cond_91
5415     if-eqz v2, :cond_94
5417     const/4 v11, 0x1
5419     :cond_94
5420     if-eqz v10, :cond_9f
5422     if-eqz v11, :cond_9f
5424     const/4 v12, 0x1
5426     goto/16 :goto_9
5428     :catch_9b
5429     move-exception v3
5431     const/4 v12, 0x0
5433     goto/16 :goto_9
5435     :cond_9f
5436     const/4 v12, 0x0
5438     goto/16 :goto_9
5439 .end method
5441 .method private final checkUriPermissionLocked(Landroid/net/Uri;II)Z
5442     .registers 9
5444     const/4 v2, 0x1
5446     const/4 v3, 0x0
5448     if-nez p2, :cond_5
5450     :cond_4
5451     :goto_4
5452     return v2
5454     :cond_5
5455     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
5457     invoke-virtual {v4, p2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
5459     move-result-object v1
5461     check-cast v1, Ljava/util/HashMap;
5463     if-nez v1, :cond_11
5465     move v2, v3
5467     goto :goto_4
5469     :cond_11
5470     invoke-virtual {v1, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
5472     move-result-object v0
5474     check-cast v0, Lcom/android/server/am/UriPermission;
5476     if-nez v0, :cond_1b
5478     move v2, v3
5480     goto :goto_4
5482     :cond_1b
5483     iget v4, v0, Lcom/android/server/am/UriPermission;->modeFlags:I
5485     and-int/2addr v4, p3
5487     if-eq v4, p3, :cond_4
5489     move v2, v3
5491     goto :goto_4
5492 .end method
5494 .method private checkValidCaller(II)V
5495     .registers 6
5497     invoke-static {p1}, Landroid/os/UserHandle;->getUserId(I)I
5499     move-result v0
5501     if-eq v0, p2, :cond_c
5503     const/16 v0, 0x3e8
5505     if-eq p1, v0, :cond_c
5507     if-nez p1, :cond_d
5509     :cond_c
5510     return-void
5512     :cond_d
5513     new-instance v0, Ljava/lang/SecurityException;
5515     new-instance v1, Ljava/lang/StringBuilder;
5517     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
5519     const-string v2, "Caller uid="
5521     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5523     move-result-object v1
5525     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5527     move-result-object v1
5529     const-string v2, " is not privileged to communicate with user="
5531     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
5533     move-result-object v1
5535     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
5537     move-result-object v1
5539     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
5541     move-result-object v1
5543     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
5545     throw v0
5546 .end method
5548 .method private final cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
5549     .registers 21
5551     if-ltz p4, :cond_b
5553     move-object/from16 v0, p0
5555     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
5557     move/from16 v0, p4
5559     invoke-virtual {v11, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
5561     :cond_b
5562     move-object/from16 v0, p0
5564     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
5566     move-object/from16 v0, p1
5568     invoke-virtual {v11, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
5570     move-object/from16 v0, p1
5572     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->crashDialog:Landroid/app/Dialog;
5574     if-eqz v11, :cond_26
5576     move-object/from16 v0, p1
5578     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->crashDialog:Landroid/app/Dialog;
5580     invoke-virtual {v11}, Landroid/app/Dialog;->dismiss()V
5582     const/4 v11, 0x0
5584     move-object/from16 v0, p1
5586     iput-object v11, v0, Lcom/android/server/am/ProcessRecord;->crashDialog:Landroid/app/Dialog;
5588     :cond_26
5589     move-object/from16 v0, p1
5591     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
5593     if-eqz v11, :cond_38
5595     move-object/from16 v0, p1
5597     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
5599     invoke-virtual {v11}, Landroid/app/Dialog;->dismiss()V
5601     const/4 v11, 0x0
5603     move-object/from16 v0, p1
5605     iput-object v11, v0, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
5607     :cond_38
5608     move-object/from16 v0, p1
5610     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
5612     if-eqz v11, :cond_4a
5614     move-object/from16 v0, p1
5616     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
5618     invoke-virtual {v11}, Landroid/app/Dialog;->dismiss()V
5620     const/4 v11, 0x0
5622     move-object/from16 v0, p1
5624     iput-object v11, v0, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
5626     :cond_4a
5627     const/4 v11, 0x0
5629     move-object/from16 v0, p1
5631     iput-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->crashing:Z
5633     const/4 v11, 0x0
5635     move-object/from16 v0, p1
5637     iput-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
5639     invoke-virtual/range {p1 .. p1}, Lcom/android/server/am/ProcessRecord;->resetPackageList()V
5641     invoke-virtual/range {p1 .. p1}, Lcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
5643     const/4 v11, 0x0
5645     move-object/from16 v0, p1
5647     iput-object v11, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
5649     const/4 v11, 0x0
5651     move-object/from16 v0, p1
5653     iput-object v11, v0, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
5655     const/4 v11, 0x0
5657     move-object/from16 v0, p1
5659     iput-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
5661     const/4 v11, 0x0
5663     move-object/from16 v0, p1
5665     iput-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
5667     const/4 v11, 0x0
5669     move-object/from16 v0, p1
5671     iput-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
5673     const/4 v11, 0x0
5675     move-object/from16 v0, p1
5677     iput-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->hasAboveClient:Z
5679     move-object/from16 v0, p0
5681     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
5683     move-object/from16 v0, p1
5685     move/from16 v1, p3
5687     invoke-virtual {v11, v0, v1}, Lcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V
5689     const/4 v10, 0x0
5691     move-object/from16 v0, p1
5693     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
5695     invoke-virtual {v11}, Ljava/util/HashMap;->isEmpty()Z
5697     move-result v11
5699     if-nez v11, :cond_cc
5701     move-object/from16 v0, p1
5703     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
5705     invoke-virtual {v11}, Ljava/util/HashMap;->values()Ljava/util/Collection;
5707     move-result-object v11
5709     invoke-interface {v11}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
5711     move-result-object v7
5713     :goto_9a
5714     invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
5716     move-result v11
5718     if-eqz v11, :cond_c5
5720     invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
5722     move-result-object v5
5724     check-cast v5, Lcom/android/server/am/ContentProviderRecord;
5726     move-object/from16 v0, p1
5728     iget-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->bad:Z
5730     if-nez v11, :cond_ae
5732     if-nez p3, :cond_c3
5734     :cond_ae
5735     const/4 v2, 0x1
5737     :goto_af
5738     move-object/from16 v0, p0
5740     move-object/from16 v1, p1
5742     invoke-direct {v0, v1, v5, v2}, Lcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
5744     move-result v11
5746     if-nez v11, :cond_bb
5748     if-eqz v2, :cond_bc
5750     :cond_bb
5751     const/4 v10, 0x1
5753     :cond_bc
5754     const/4 v11, 0x0
5756     iput-object v11, v5, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
5758     const/4 v11, 0x0
5760     iput-object v11, v5, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
5762     goto :goto_9a
5764     :cond_c3
5765     const/4 v2, 0x0
5767     goto :goto_af
5769     :cond_c5
5770     move-object/from16 v0, p1
5772     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
5774     invoke-virtual {v11}, Ljava/util/HashMap;->clear()V
5776     :cond_cc
5777     const/4 v11, 0x0
5779     move-object/from16 v0, p0
5781     move-object/from16 v1, p1
5783     invoke-virtual {v0, v1, v11}, Lcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
5785     move-result v11
5787     if-eqz v11, :cond_d8
5789     const/4 v10, 0x1
5791     :cond_d8
5792     move-object/from16 v0, p1
5794     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
5796     invoke-virtual {v11}, Ljava/util/ArrayList;->isEmpty()Z
5798     move-result v11
5800     if-nez v11, :cond_108
5802     const/4 v6, 0x0
5804     :goto_e3
5805     move-object/from16 v0, p1
5807     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
5809     invoke-virtual {v11}, Ljava/util/ArrayList;->size()I
5811     move-result v11
5813     if-ge v6, v11, :cond_101
5815     move-object/from16 v0, p1
5817     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
5819     invoke-virtual {v11, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
5821     move-result-object v4
5823     check-cast v4, Lcom/android/server/am/ContentProviderConnection;
5825     iget-object v11, v4, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
5827     iget-object v11, v11, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
5829     invoke-virtual {v11, v4}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
5831     add-int/lit8 v6, v6, 0x1
5833     goto :goto_e3
5835     :cond_101
5836     move-object/from16 v0, p1
5838     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
5840     invoke-virtual {v11}, Ljava/util/ArrayList;->clear()V
5842     :cond_108
5843     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
5845     move-object/from16 v0, p1
5847     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
5849     invoke-virtual {v11}, Ljava/util/HashSet;->size()I
5851     move-result v11
5853     if-lez v11, :cond_136
5855     move-object/from16 v0, p1
5857     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
5859     invoke-virtual {v11}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
5861     move-result-object v8
5863     :goto_11d
5864     invoke-interface {v8}, Ljava/util/Iterator;->hasNext()Z
5866     move-result v11
5868     if-eqz v11, :cond_12f
5870     invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
5872     move-result-object v11
5874     check-cast v11, Lcom/android/server/am/ReceiverList;
5876     move-object/from16 v0, p0
5878     invoke-virtual {v0, v11}, Lcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
5880     goto :goto_11d
5882     :cond_12f
5883     move-object/from16 v0, p1
5885     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
5887     invoke-virtual {v11}, Ljava/util/HashSet;->clear()V
5889     :cond_136
5890     move-object/from16 v0, p0
5892     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
5894     if-eqz v11, :cond_15d
5896     move-object/from16 v0, p1
5898     iget v11, v0, Lcom/android/server/am/ProcessRecord;->pid:I
5900     move-object/from16 v0, p0
5902     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
5904     iget-object v12, v12, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
5906     iget v12, v12, Lcom/android/server/am/ProcessRecord;->pid:I
5908     if-ne v11, v12, :cond_15d
5910     :try_start_14a
5911     const-string v11, "backup"
5913     invoke-static {v11}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
5915     move-result-object v11
5917     invoke-static {v11}, Landroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager;
5919     move-result-object v3
5921     move-object/from16 v0, p1
5923     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
5925     iget-object v11, v11, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
5927     invoke-interface {v3, v11}, Landroid/app/backup/IBackupManager;->agentDisconnected(Ljava/lang/String;)V
5928     :try_end_15d
5929     .catch Landroid/os/RemoteException; {:try_start_14a .. :try_end_15d} :catch_28f
5931     :cond_15d
5932     :goto_15d
5933     move-object/from16 v0, p0
5935     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
5937     invoke-virtual {v11}, Ljava/util/ArrayList;->size()I
5939     move-result v11
5941     add-int/lit8 v6, v11, -0x1
5943     :goto_167
5944     if-ltz v6, :cond_18c
5946     move-object/from16 v0, p0
5948     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
5950     invoke-virtual {v11, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
5952     move-result-object v9
5954     check-cast v9, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
5956     iget v11, v9, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
5958     move-object/from16 v0, p1
5960     iget v12, v0, Lcom/android/server/am/ProcessRecord;->pid:I
5962     if-ne v11, v12, :cond_189
5964     move-object/from16 v0, p0
5966     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
5968     invoke-virtual {v11, v6}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
5970     move-object/from16 v0, p0
5972     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
5974     invoke-virtual {v11, v9}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
5976     :cond_189
5977     add-int/lit8 v6, v6, -0x1
5979     goto :goto_167
5981     :cond_18c
5982     move-object/from16 v0, p0
5984     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
5986     const/16 v12, 0x20
5988     move-object/from16 v0, p1
5990     iget v13, v0, Lcom/android/server/am/ProcessRecord;->pid:I
5992     move-object/from16 v0, p1
5994     iget-object v14, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
5996     iget v14, v14, Landroid/content/pm/ApplicationInfo;->uid:I
5998     const/4 v15, 0x0
6000     invoke-virtual {v11, v12, v13, v14, v15}, Landroid/os/Handler;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;
6002     move-result-object v11
6004     invoke-virtual {v11}, Landroid/os/Message;->sendToTarget()V
6006     if-eqz p2, :cond_1a7
6008     :cond_1a6
6009     :goto_1a6
6010     return-void
6012     :cond_1a7
6013     move-object/from16 v0, p1
6015     iget-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
6017     if-eqz v11, :cond_1b3
6019     move-object/from16 v0, p1
6021     iget-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
6023     if-eqz v11, :cond_23d
6025     :cond_1b3
6026     move-object/from16 v0, p0
6028     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
6030     move-object/from16 v0, p1
6032     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
6034     move-object/from16 v0, p1
6036     iget v13, v0, Lcom/android/server/am/ProcessRecord;->uid:I
6038     invoke-virtual {v11, v12, v13}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
6040     move-object/from16 v0, p0
6042     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
6044     move-object/from16 v0, p1
6046     iget v12, v0, Lcom/android/server/am/ProcessRecord;->uid:I
6048     invoke-virtual {v11, v12}, Landroid/util/SparseArray;->remove(I)V
6050     move-object/from16 v0, p0
6052     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
6054     move-object/from16 v0, p1
6056     if-ne v11, v0, :cond_1f2
6058     move-object/from16 v0, p0
6060     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
6062     move-object/from16 v0, p0
6064     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
6066     const/16 v13, 0x19
6068     move-object/from16 v0, p0
6070     iget-object v14, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
6072     iget v14, v14, Lcom/android/server/am/ProcessRecord;->userId:I
6074     const/4 v15, 0x0
6076     invoke-virtual {v12, v13, v14, v15}, Landroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
6078     move-result-object v12
6080     invoke-virtual {v11, v12}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
6082     const/4 v11, 0x0
6084     move-object/from16 v0, p0
6086     iput-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
6088     :cond_1f2
6089     :goto_1f2
6090     move-object/from16 v0, p0
6092     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
6094     move-object/from16 v0, p1
6096     invoke-virtual {v11, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
6098     move-object/from16 v0, p0
6100     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
6102     move-object/from16 v0, p1
6104     if-ne v0, v11, :cond_208
6106     const/4 v11, 0x0
6108     move-object/from16 v0, p0
6110     iput-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
6112     :cond_208
6113     move-object/from16 v0, p0
6115     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
6117     move-object/from16 v0, p1
6119     if-ne v0, v11, :cond_215
6121     const/4 v11, 0x0
6123     move-object/from16 v0, p0
6125     iput-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
6127     :cond_215
6128     if-eqz v10, :cond_25a
6130     move-object/from16 v0, p1
6132     iget-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
6134     if-nez v11, :cond_25a
6136     move-object/from16 v0, p0
6138     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
6140     move-object/from16 v0, p1
6142     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
6144     move-object/from16 v0, p1
6146     iget v13, v0, Lcom/android/server/am/ProcessRecord;->uid:I
6148     move-object/from16 v0, p1
6150     invoke-virtual {v11, v12, v13, v0}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
6152     const-string v11, "restart"
6154     move-object/from16 v0, p1
6156     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
6158     move-object/from16 v0, p0
6160     move-object/from16 v1, p1
6162     invoke-direct {v0, v1, v11, v12}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
6164     goto/16 :goto_1a6
6166     :cond_23d
6167     move-object/from16 v0, p1
6169     iget-boolean v11, v0, Lcom/android/server/am/ProcessRecord;->removed:Z
6171     if-nez v11, :cond_1f2
6173     move-object/from16 v0, p0
6175     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
6177     move-object/from16 v0, p1
6179     invoke-virtual {v11, v0}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
6181     move-result v11
6183     if-gez v11, :cond_1f2
6185     move-object/from16 v0, p0
6187     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
6189     move-object/from16 v0, p1
6191     invoke-virtual {v11, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
6193     const/4 v10, 0x1
6195     goto :goto_1f2
6197     :cond_25a
6198     move-object/from16 v0, p1
6200     iget v11, v0, Lcom/android/server/am/ProcessRecord;->pid:I
6202     if-lez v11, :cond_1a6
6204     move-object/from16 v0, p1
6206     iget v11, v0, Lcom/android/server/am/ProcessRecord;->pid:I
6208     sget v12, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
6210     if-eq v11, v12, :cond_1a6
6212     move-object/from16 v0, p0
6214     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
6216     monitor-enter v12
6218     :try_start_26d
6219     move-object/from16 v0, p0
6221     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
6223     move-object/from16 v0, p1
6225     iget v13, v0, Lcom/android/server/am/ProcessRecord;->pid:I
6227     invoke-virtual {v11, v13}, Landroid/util/SparseArray;->remove(I)V
6229     move-object/from16 v0, p0
6231     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
6233     const/16 v13, 0x14
6235     move-object/from16 v0, p1
6237     invoke-virtual {v11, v13, v0}, Landroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
6239     monitor-exit v12
6240     :try_end_284
6241     .catchall {:try_start_26d .. :try_end_284} :catchall_28c
6243     const/4 v11, 0x0
6245     move-object/from16 v0, p1
6247     invoke-virtual {v0, v11}, Lcom/android/server/am/ProcessRecord;->setPid(I)V
6249     goto/16 :goto_1a6
6251     :catchall_28c
6252     move-exception v11
6254     :try_start_28d
6255     monitor-exit v12
6256     :try_end_28e
6257     .catchall {:try_start_28d .. :try_end_28e} :catchall_28c
6259     throw v11
6261     :catch_28f
6262     move-exception v11
6264     goto/16 :goto_15d
6265 .end method
6267 .method private cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;I)V
6268     .registers 19
6270     and-int/lit8 v12, p2, 0x1
6272     if-eqz v12, :cond_35
6274     const/4 v5, 0x1
6276     :goto_5
6277     new-instance v1, Landroid/content/Intent;
6279     move-object/from16 v0, p1
6281     iget-object v12, v0, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
6283     if-eqz v12, :cond_37
6285     move-object/from16 v0, p1
6287     iget-object v12, v0, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
6289     :goto_11
6290     invoke-direct {v1, v12}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
6292     invoke-virtual {v1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
6294     move-result-object v2
6296     if-nez v2, :cond_3c
6298     const-string v12, "ActivityManager"
6300     new-instance v13, Ljava/lang/StringBuilder;
6302     invoke-direct {v13}, Ljava/lang/StringBuilder;-><init>()V
6304     const-string v14, "Now component for base intent of task: "
6306     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6308     move-result-object v13
6310     move-object/from16 v0, p1
6312     invoke-virtual {v13, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
6314     move-result-object v13
6316     invoke-virtual {v13}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
6318     move-result-object v13
6320     invoke-static {v12, v13}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
6322     :cond_34
6323     return-void
6325     :cond_35
6326     const/4 v5, 0x0
6328     goto :goto_5
6330     :cond_37
6331     move-object/from16 v0, p1
6333     iget-object v12, v0, Lcom/android/server/am/TaskRecord;->affinityIntent:Landroid/content/Intent;
6335     goto :goto_11
6337     :cond_3c
6338     move-object/from16 v0, p0
6340     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
6342     move-object/from16 v0, p1
6344     invoke-virtual {v12, v0, v2, v1}, Lcom/android/server/am/ActiveServices;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;Landroid/content/ComponentName;Landroid/content/Intent;)V
6346     if-eqz v5, :cond_34
6348     invoke-virtual {v2}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
6350     move-result-object v6
6352     new-instance v10, Ljava/util/ArrayList;
6354     invoke-direct {v10}, Ljava/util/ArrayList;-><init>()V
6356     move-object/from16 v0, p0
6358     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
6360     invoke-virtual {v12}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
6362     move-result-object v7
6364     invoke-virtual {v7}, Ljava/util/HashMap;->values()Ljava/util/Collection;
6366     move-result-object v12
6368     invoke-interface {v12}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
6370     move-result-object v4
6372     :cond_60
6373     invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
6375     move-result v12
6377     if-eqz v12, :cond_90
6379     invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
6381     move-result-object v11
6383     check-cast v11, Landroid/util/SparseArray;
6385     const/4 v3, 0x0
6387     :goto_6d
6388     invoke-virtual {v11}, Landroid/util/SparseArray;->size()I
6390     move-result v12
6392     if-ge v3, v12, :cond_60
6394     invoke-virtual {v11, v3}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
6396     move-result-object v9
6398     check-cast v9, Lcom/android/server/am/ProcessRecord;
6400     iget v12, v9, Lcom/android/server/am/ProcessRecord;->userId:I
6402     move-object/from16 v0, p1
6404     iget v13, v0, Lcom/android/server/am/TaskRecord;->userId:I
6406     if-eq v12, v13, :cond_84
6408     :cond_81
6409     :goto_81
6410     add-int/lit8 v3, v3, 0x1
6412     goto :goto_6d
6414     :cond_84
6415     iget-object v12, v9, Lcom/android/server/am/ProcessRecord;->pkgList:Ljava/util/HashSet;
6417     invoke-virtual {v12, v6}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
6419     move-result v12
6421     if-eqz v12, :cond_81
6423     invoke-virtual {v10, v9}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
6425     goto :goto_81
6427     :cond_90
6428     const/4 v3, 0x0
6430     :goto_91
6431     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
6433     move-result v12
6435     if-ge v3, v12, :cond_34
6437     invoke-virtual {v10, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
6439     move-result-object v8
6441     check-cast v8, Lcom/android/server/am/ProcessRecord;
6443     iget v12, v8, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
6445     if-nez v12, :cond_fb
6447     const-string v12, "ActivityManager"
6449     new-instance v13, Ljava/lang/StringBuilder;
6451     invoke-direct {v13}, Ljava/lang/StringBuilder;-><init>()V
6453     const-string v14, "Killing "
6455     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6457     move-result-object v13
6459     invoke-virtual {v8}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
6461     move-result-object v14
6463     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6465     move-result-object v13
6467     const-string v14, ": remove task"
6469     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
6471     move-result-object v13
6473     invoke-virtual {v13}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
6475     move-result-object v13
6477     invoke-static {v12, v13}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
6479     const/16 v12, 0x7547
6481     const/4 v13, 0x5
6483     new-array v13, v13, [Ljava/lang/Object;
6485     const/4 v14, 0x0
6487     iget v15, v8, Lcom/android/server/am/ProcessRecord;->userId:I
6489     invoke-static {v15}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
6491     move-result-object v15
6493     aput-object v15, v13, v14
6495     const/4 v14, 0x1
6497     iget v15, v8, Lcom/android/server/am/ProcessRecord;->pid:I
6499     invoke-static {v15}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
6501     move-result-object v15
6503     aput-object v15, v13, v14
6505     const/4 v14, 0x2
6507     iget-object v15, v8, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
6509     aput-object v15, v13, v14
6511     const/4 v14, 0x3
6513     iget v15, v8, Lcom/android/server/am/ProcessRecord;->setAdj:I
6515     invoke-static {v15}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
6517     move-result-object v15
6519     aput-object v15, v13, v14
6521     const/4 v14, 0x4
6523     const-string v15, "remove task"
6525     aput-object v15, v13, v14
6527     invoke-static {v12, v13}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
6529     const/4 v12, 0x1
6531     iput-boolean v12, v8, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
6533     iget v12, v8, Lcom/android/server/am/ProcessRecord;->pid:I
6535     invoke-static {v12}, Landroid/os/Process;->killProcessQuiet(I)V
6537     :goto_f8
6538     add-int/lit8 v3, v3, 0x1
6540     goto :goto_91
6542     :cond_fb
6543     const-string v12, "remove task"
6545     iput-object v12, v8, Lcom/android/server/am/ProcessRecord;->waitingToKill:Ljava/lang/String;
6547     goto :goto_f8
6548 .end method
6550 .method private clearProfilerLocked()V
6551     .registers 4
6553     const/4 v2, 0x0
6555     const/4 v1, 0x0
6557     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
6559     if-eqz v0, :cond_b
6561     :try_start_6
6562     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
6564     invoke-virtual {v0}, Landroid/os/ParcelFileDescriptor;->close()V
6565     :try_end_b
6566     .catch Ljava/io/IOException; {:try_start_6 .. :try_end_b} :catch_16
6568     :cond_b
6569     :goto_b
6570     iput-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
6572     iput-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
6574     iput-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
6576     iput v2, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
6578     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
6580     return-void
6582     :catch_16
6583     move-exception v0
6585     goto :goto_b
6586 .end method
6588 .method private collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;[I)Ljava/util/List;
6589     .registers 20
6590     .annotation system Ldalvik/annotation/Signature;
6591         value = {
6592             "(",
6593             "Landroid/content/Intent;",
6594             "Ljava/lang/String;",
6595             "[I)",
6596             "Ljava/util/List",
6597             "<",
6598             "Landroid/content/pm/ResolveInfo;",
6599             ">;"
6600         }
6601     .end annotation
6603     const/4 v8, 0x0
6605     const/4 v11, 0x0
6607     const/4 v10, 0x0
6609     move-object/from16 v2, p3
6611     :try_start_5
6612     array-length v6, v2
6614     const/4 v5, 0x0
6616     :goto_7
6617     if-ge v5, v6, :cond_c3
6619     aget v13, v2, v5
6621     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
6623     move-result-object v14
6625     const/16 v15, 0x400
6627     move-object/from16 v0, p1
6629     move-object/from16 v1, p2
6631     invoke-interface {v14, v0, v1, v15, v13}, Landroid/content/pm/IPackageManager;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
6633     move-result-object v7
6635     if-eqz v13, :cond_3b
6637     if-eqz v7, :cond_3b
6639     const/4 v4, 0x0
6641     :goto_1e
6642     invoke-interface {v7}, Ljava/util/List;->size()I
6644     move-result v14
6646     if-ge v4, v14, :cond_3b
6648     invoke-interface {v7, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
6650     move-result-object v9
6652     check-cast v9, Landroid/content/pm/ResolveInfo;
6654     iget-object v14, v9, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
6656     iget v14, v14, Landroid/content/pm/ActivityInfo;->flags:I
6658     const/high16 v15, 0x2000
6660     and-int/2addr v14, v15
6662     if-eqz v14, :cond_38
6664     invoke-interface {v7, v4}, Ljava/util/List;->remove(I)Ljava/lang/Object;
6666     add-int/lit8 v4, v4, -0x1
6668     :cond_38
6669     add-int/lit8 v4, v4, 0x1
6671     goto :goto_1e
6673     :cond_3b
6674     if-eqz v7, :cond_44
6676     invoke-interface {v7}, Ljava/util/List;->size()I
6677     :try_end_40
6678     .catch Landroid/os/RemoteException; {:try_start_5 .. :try_end_40} :catch_c2
6680     move-result v14
6682     if-nez v14, :cond_44
6684     const/4 v7, 0x0
6686     :cond_44
6687     if-nez v8, :cond_4a
6689     move-object v8, v7
6691     :cond_47
6692     :goto_47
6693     add-int/lit8 v5, v5, 0x1
6695     goto :goto_7
6697     :cond_4a
6698     if-eqz v7, :cond_47
6700     if-nez v10, :cond_82
6702     const/4 v10, 0x1
6704     const/4 v4, 0x0
6706     move-object v12, v11
6708     :goto_51
6709     :try_start_51
6710     invoke-interface {v8}, Ljava/util/List;->size()I
6712     move-result v14
6714     if-ge v4, v14, :cond_81
6716     invoke-interface {v8, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
6718     move-result-object v9
6720     check-cast v9, Landroid/content/pm/ResolveInfo;
6722     iget-object v14, v9, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
6724     iget v14, v14, Landroid/content/pm/ActivityInfo;->flags:I
6726     const/high16 v15, 0x4000
6728     and-int/2addr v14, v15
6730     if-eqz v14, :cond_ce
6732     new-instance v3, Landroid/content/ComponentName;
6734     iget-object v14, v9, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
6736     iget-object v14, v14, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
6738     iget-object v15, v9, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
6740     iget-object v15, v15, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
6742     invoke-direct {v3, v14, v15}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
6744     if-nez v12, :cond_cc
6746     new-instance v11, Ljava/util/HashSet;
6748     invoke-direct {v11}, Ljava/util/HashSet;-><init>()V
6749     :try_end_7a
6750     .catch Landroid/os/RemoteException; {:try_start_51 .. :try_end_7a} :catch_c4
6752     :goto_7a
6753     :try_start_7a
6754     invoke-virtual {v11, v3}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
6755     :try_end_7d
6756     .catch Landroid/os/RemoteException; {:try_start_7a .. :try_end_7d} :catch_c2
6758     :goto_7d
6759     add-int/lit8 v4, v4, 0x1
6761     move-object v12, v11
6763     goto :goto_51
6765     :cond_81
6766     move-object v11, v12
6768     :cond_82
6769     const/4 v4, 0x0
6771     move-object v12, v11
6773     :goto_84
6774     :try_start_84
6775     invoke-interface {v7}, Ljava/util/List;->size()I
6777     move-result v14
6779     if-ge v4, v14, :cond_c9
6781     invoke-interface {v7, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
6783     move-result-object v9
6785     check-cast v9, Landroid/content/pm/ResolveInfo;
6787     iget-object v14, v9, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
6789     iget v14, v14, Landroid/content/pm/ActivityInfo;->flags:I
6791     const/high16 v15, 0x4000
6793     and-int/2addr v14, v15
6795     if-eqz v14, :cond_bd
6797     new-instance v3, Landroid/content/ComponentName;
6799     iget-object v14, v9, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
6801     iget-object v14, v14, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
6803     iget-object v15, v9, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
6805     iget-object v15, v15, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
6807     invoke-direct {v3, v14, v15}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
6809     if-nez v12, :cond_c7
6811     new-instance v11, Ljava/util/HashSet;
6813     invoke-direct {v11}, Ljava/util/HashSet;-><init>()V
6814     :try_end_ad
6815     .catch Landroid/os/RemoteException; {:try_start_84 .. :try_end_ad} :catch_c4
6817     :goto_ad
6818     :try_start_ad
6819     invoke-virtual {v11, v3}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
6821     move-result v14
6823     if-nez v14, :cond_b9
6825     invoke-virtual {v11, v3}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
6827     invoke-interface {v8, v9}, Ljava/util/List;->add(Ljava/lang/Object;)Z
6828     :try_end_b9
6829     .catch Landroid/os/RemoteException; {:try_start_ad .. :try_end_b9} :catch_c2
6831     :cond_b9
6832     :goto_b9
6833     add-int/lit8 v4, v4, 0x1
6835     move-object v12, v11
6837     goto :goto_84
6839     :cond_bd
6840     :try_start_bd
6841     invoke-interface {v8, v9}, Ljava/util/List;->add(Ljava/lang/Object;)Z
6842     :try_end_c0
6843     .catch Landroid/os/RemoteException; {:try_start_bd .. :try_end_c0} :catch_c4
6845     move-object v11, v12
6847     goto :goto_b9
6849     :catch_c2
6850     move-exception v14
6852     :cond_c3
6853     :goto_c3
6854     return-object v8
6856     :catch_c4
6857     move-exception v14
6859     move-object v11, v12
6861     goto :goto_c3
6863     :cond_c7
6864     move-object v11, v12
6866     goto :goto_ad
6868     :cond_c9
6869     move-object v11, v12
6871     goto/16 :goto_47
6873     :cond_cc
6874     move-object v11, v12
6876     goto :goto_7a
6878     :cond_ce
6879     move-object v11, v12
6881     goto :goto_7d
6882 .end method
6884 .method private comeOutOfSleepIfNeededLocked()V
6885     .registers 3
6887     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
6889     if-nez v0, :cond_1a
6891     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
6893     if-nez v0, :cond_1a
6895     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
6897     if-eqz v0, :cond_1a
6899     const/4 v0, 0x0
6901     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
6903     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
6905     invoke-virtual {v0}, Lcom/android/server/am/ActivityStack;->awakeFromSleepingLocked()V
6907     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
6909     const/4 v1, 0x0
6911     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
6913     :cond_1a
6914     return-void
6915 .end method
6917 .method private final computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;IIILcom/android/server/am/ProcessRecord;ZZ)I
6918     .registers 47
6920     move-object/from16 v0, p0
6922     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
6924     move-object/from16 v0, p1
6926     iget v7, v0, Lcom/android/server/am/ProcessRecord;->adjSeq:I
6928     if-ne v2, v7, :cond_5b
6930     if-nez p6, :cond_2a
6932     move-object/from16 v0, p1
6934     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
6936     if-eqz v2, :cond_2a
6938     move-object/from16 v0, p1
6940     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
6942     if-eqz v2, :cond_2f
6944     move/from16 v0, p2
6946     move-object/from16 v1, p1
6948     iput v0, v1, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
6950     move/from16 v0, p2
6952     move-object/from16 v1, p1
6954     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
6956     move/from16 v0, p2
6958     move-object/from16 v1, p1
6960     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curAdj:I
6962     :cond_2a
6963     :goto_2a
6964     move-object/from16 v0, p1
6966     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
6968     :goto_2e
6969     return v2
6971     :cond_2f
6972     move-object/from16 v0, p1
6974     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasClientActivities:Z
6976     if-eqz v2, :cond_48
6978     move/from16 v0, p3
6980     move-object/from16 v1, p1
6982     iput v0, v1, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
6984     move/from16 v0, p3
6986     move-object/from16 v1, p1
6988     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
6990     move/from16 v0, p3
6992     move-object/from16 v1, p1
6994     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curAdj:I
6996     goto :goto_2a
6998     :cond_48
6999     move/from16 v0, p4
7001     move-object/from16 v1, p1
7003     iput v0, v1, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
7005     move/from16 v0, p4
7007     move-object/from16 v1, p1
7009     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
7011     move/from16 v0, p4
7013     move-object/from16 v1, p1
7015     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curAdj:I
7017     goto :goto_2a
7019     :cond_5b
7020     move-object/from16 v0, p1
7022     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
7024     if-nez v2, :cond_79
7026     move-object/from16 v0, p0
7028     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
7030     move-object/from16 v0, p1
7032     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjSeq:I
7034     const/4 v2, 0x0
7036     move-object/from16 v0, p1
7038     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
7040     const/16 v2, 0xf
7042     move-object/from16 v0, p1
7044     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
7046     move-object/from16 v0, p1
7048     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
7050     goto :goto_2e
7052     :cond_79
7053     const/4 v2, 0x0
7055     move-object/from16 v0, p1
7057     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
7059     const/4 v2, 0x0
7061     move-object/from16 v0, p1
7063     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
7065     const/4 v2, 0x0
7067     move-object/from16 v0, p1
7069     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
7071     const/4 v2, 0x0
7073     move-object/from16 v0, p1
7075     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->empty:Z
7077     const/4 v2, 0x0
7079     move-object/from16 v0, p1
7081     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7083     const/4 v2, 0x0
7085     move-object/from16 v0, p1
7087     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasClientActivities:Z
7089     move-object/from16 v0, p1
7091     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
7093     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
7095     move-result v12
7097     move-object/from16 v0, p1
7099     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
7101     if-gtz v2, :cond_121
7103     const-string v2, "fixed"
7105     move-object/from16 v0, p1
7107     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7109     move-object/from16 v0, p0
7111     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
7113     move-object/from16 v0, p1
7115     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjSeq:I
7117     move-object/from16 v0, p1
7119     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
7121     move-object/from16 v0, p1
7123     iput v2, v0, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
7125     move-object/from16 v0, p1
7127     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
7129     const/4 v2, 0x0
7131     move-object/from16 v0, p1
7133     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
7135     const/4 v2, 0x0
7137     move-object/from16 v0, p1
7139     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
7141     const/4 v2, 0x1
7143     move-object/from16 v0, p1
7145     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
7147     const/4 v2, -0x1
7149     move-object/from16 v0, p1
7151     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
7153     const/4 v2, 0x1
7155     move-object/from16 v0, p1
7157     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
7159     move-object/from16 v0, p1
7161     move-object/from16 v1, p5
7163     if-ne v0, v1, :cond_f2
7165     const/4 v2, 0x0
7167     move-object/from16 v0, p1
7169     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
7171     const/4 v2, 0x1
7173     move-object/from16 v0, p1
7175     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
7177     :cond_e8
7178     move-object/from16 v0, p1
7180     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
7182     move-object/from16 v0, p1
7184     iput v2, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
7186     goto/16 :goto_2e
7188     :cond_f2
7189     if-lez v12, :cond_e8
7191     const/16 v27, 0x0
7193     :goto_f6
7194     move/from16 v0, v27
7196     if-ge v0, v12, :cond_e8
7198     move-object/from16 v0, p1
7200     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
7202     move/from16 v0, v27
7204     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
7206     move-result-object v34
7208     check-cast v34, Lcom/android/server/am/ActivityRecord;
7210     move-object/from16 v0, v34
7212     iget-boolean v2, v0, Lcom/android/server/am/ActivityRecord;->visible:Z
7214     if-eqz v2, :cond_111
7216     const/4 v2, 0x0
7218     move-object/from16 v0, p1
7220     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
7222     :cond_111
7223     move-object/from16 v0, v34
7225     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
7227     move-object/from16 v0, p1
7229     if-ne v2, v0, :cond_11e
7231     const/4 v2, 0x1
7233     move-object/from16 v0, p1
7235     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
7237     :cond_11e
7238     add-int/lit8 v27, v27, 0x1
7240     goto :goto_f6
7242     :cond_121
7243     const/4 v2, 0x0
7245     move-object/from16 v0, p1
7247     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
7249     const/4 v2, 0x0
7251     move-object/from16 v0, p1
7253     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
7255     const/4 v2, 0x0
7257     move-object/from16 v0, p1
7259     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
7261     const/16 v21, 0x0
7263     const/16 v25, 0x0
7265     move-object/from16 v0, p1
7267     move-object/from16 v1, p5
7269     if-ne v0, v1, :cond_2d2
7271     const/4 v13, 0x0
7273     const/16 v36, -0x1
7275     const-string v2, "top-activity"
7277     move-object/from16 v0, p1
7279     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7281     const/16 v21, 0x1
7283     const/16 v25, 0x1
7285     const/4 v2, 0x1
7287     move-object/from16 v0, p1
7289     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
7291     :goto_14c
7292     const/16 v22, 0x0
7294     if-nez v21, :cond_182
7296     if-lez v12, :cond_182
7298     const/16 v27, 0x0
7300     :goto_154
7301     move/from16 v0, v27
7303     if-ge v0, v12, :cond_182
7305     move-object/from16 v0, p1
7307     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
7309     move/from16 v0, v27
7311     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
7313     move-result-object v34
7315     check-cast v34, Lcom/android/server/am/ActivityRecord;
7317     move-object/from16 v0, v34
7319     iget-boolean v2, v0, Lcom/android/server/am/ActivityRecord;->visible:Z
7321     if-eqz v2, :cond_327
7323     const/4 v2, 0x1
7325     if-le v13, v2, :cond_174
7327     const/4 v13, 0x1
7329     const-string v2, "visible"
7331     move-object/from16 v0, p1
7333     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7335     :cond_174
7336     const/16 v36, -0x1
7338     const/4 v2, 0x0
7340     move-object/from16 v0, p1
7342     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7344     const/4 v2, 0x1
7346     move-object/from16 v0, p1
7348     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
7350     const/16 v21, 0x1
7352     :cond_182
7353     move/from16 v0, p2
7355     if-ne v13, v0, :cond_19a
7357     move-object/from16 v0, p1
7359     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
7361     if-nez v2, :cond_19a
7363     move-object/from16 v0, p1
7365     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasClientActivities:Z
7367     if-eqz v2, :cond_36b
7369     move/from16 v13, p3
7371     const-string v2, "bg-client-act"
7373     move-object/from16 v0, p1
7375     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7377     :cond_19a
7378     :goto_19a
7379     const/4 v2, 0x2
7381     if-le v13, v2, :cond_1b1
7383     move-object/from16 v0, p1
7385     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
7387     if-eqz v2, :cond_37a
7389     const/4 v13, 0x2
7391     const/4 v2, 0x0
7393     move-object/from16 v0, p1
7395     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7397     const-string v2, "fg-service"
7399     move-object/from16 v0, p1
7401     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7403     const/16 v36, -0x1
7405     :cond_1b1
7406     :goto_1b1
7407     move-object/from16 v0, p1
7409     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
7411     if-eqz v2, :cond_1b9
7413     const/16 v25, 0x1
7415     :cond_1b9
7416     const/4 v2, 0x3
7418     if-le v13, v2, :cond_1d2
7420     move-object/from16 v0, p0
7422     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
7424     move-object/from16 v0, p1
7426     if-ne v0, v2, :cond_1d2
7428     const/4 v13, 0x3
7430     const/16 v36, 0x0
7432     const/4 v2, 0x0
7434     move-object/from16 v0, p1
7436     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7438     const-string v2, "heavy"
7440     move-object/from16 v0, p1
7442     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7444     :cond_1d2
7445     const/4 v2, 0x6
7447     if-le v13, v2, :cond_1eb
7449     move-object/from16 v0, p0
7451     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
7453     move-object/from16 v0, p1
7455     if-ne v0, v2, :cond_1eb
7457     const/4 v13, 0x6
7459     const/16 v36, 0x0
7461     const/4 v2, 0x0
7463     move-object/from16 v0, p1
7465     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7467     const-string v2, "home"
7469     move-object/from16 v0, p1
7471     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7473     :cond_1eb
7474     const/4 v2, 0x7
7476     if-le v13, v2, :cond_20e
7478     move-object/from16 v0, p0
7480     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
7482     move-object/from16 v0, p1
7484     if-ne v0, v2, :cond_20e
7486     move-object/from16 v0, p1
7488     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
7490     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
7492     move-result v2
7494     if-lez v2, :cond_20e
7496     const/4 v13, 0x7
7498     const/16 v36, 0x0
7500     const/4 v2, 0x0
7502     move-object/from16 v0, p1
7504     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7506     const-string v2, "previous"
7508     move-object/from16 v0, p1
7510     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7512     :cond_20e
7513     move-object/from16 v0, p0
7515     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
7517     move-object/from16 v0, p1
7519     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjSeq:I
7521     move-object/from16 v0, p1
7523     iput v13, v0, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
7525     move-object/from16 v0, p1
7527     iput v13, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
7529     move-object/from16 v0, p0
7531     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
7533     if-eqz v2, :cond_23d
7535     move-object/from16 v0, p0
7537     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
7539     iget-object v2, v2, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
7541     move-object/from16 v0, p1
7543     if-ne v0, v2, :cond_23d
7545     const/4 v2, 0x4
7547     if-le v13, v2, :cond_23d
7549     const/4 v13, 0x4
7551     const-string v2, "backup"
7553     move-object/from16 v0, p1
7555     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7557     const/4 v2, 0x0
7559     move-object/from16 v0, p1
7561     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7563     :cond_23d
7564     move-object/from16 v0, p1
7566     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
7568     invoke-virtual {v2}, Ljava/util/HashSet;->size()I
7570     move-result v2
7572     if-eqz v2, :cond_551
7574     if-gtz v13, :cond_24b
7576     if-nez v36, :cond_551
7578     :cond_24b
7579     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
7581     move-result-wide v31
7583     move-object/from16 v0, p1
7585     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
7587     invoke-virtual {v2}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
7589     move-result-object v29
7591     :cond_257
7592     invoke-interface/range {v29 .. v29}, Ljava/util/Iterator;->hasNext()Z
7594     move-result v2
7596     if-eqz v2, :cond_540
7598     if-lez v13, :cond_540
7600     invoke-interface/range {v29 .. v29}, Ljava/util/Iterator;->next()Ljava/lang/Object;
7602     move-result-object v35
7604     check-cast v35, Lcom/android/server/am/ServiceRecord;
7606     move-object/from16 v0, v35
7608     iget-boolean v2, v0, Lcom/android/server/am/ServiceRecord;->startRequested:Z
7610     if-eqz v2, :cond_287
7612     move-object/from16 v0, p1
7614     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
7616     if-eqz v2, :cond_398
7618     move-object/from16 v0, p0
7620     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
7622     move-object/from16 v0, p1
7624     if-eq v0, v2, :cond_398
7626     const/4 v2, 0x5
7628     if-le v13, v2, :cond_282
7630     const-string v2, "started-bg-ui-services"
7632     move-object/from16 v0, p1
7634     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7636     :cond_282
7637     :goto_282
7638     const/4 v2, 0x1
7640     move-object/from16 v0, p1
7642     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
7644     :cond_287
7645     move-object/from16 v0, v35
7647     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
7649     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
7651     move-result v2
7653     if-lez v2, :cond_257
7655     if-gtz v13, :cond_295
7657     if-nez v36, :cond_257
7659     :cond_295
7660     move-object/from16 v0, v35
7662     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->connections:Ljava/util/HashMap;
7664     invoke-virtual {v2}, Ljava/util/HashMap;->values()Ljava/util/Collection;
7666     move-result-object v2
7668     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
7670     move-result-object v30
7672     :cond_2a1
7673     invoke-interface/range {v30 .. v30}, Ljava/util/Iterator;->hasNext()Z
7675     move-result v2
7677     if-eqz v2, :cond_257
7679     if-lez v13, :cond_257
7681     invoke-interface/range {v30 .. v30}, Ljava/util/Iterator;->next()Ljava/lang/Object;
7683     move-result-object v17
7685     check-cast v17, Ljava/util/ArrayList;
7687     const/16 v23, 0x0
7689     :goto_2b1
7690     invoke-virtual/range {v17 .. v17}, Ljava/util/ArrayList;->size()I
7692     move-result v2
7694     move/from16 v0, v23
7696     if-ge v0, v2, :cond_2a1
7698     if-lez v13, :cond_2a1
7700     move-object/from16 v0, v17
7702     move/from16 v1, v23
7704     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
7706     move-result-object v20
7708     check-cast v20, Lcom/android/server/am/ConnectionRecord;
7710     move-object/from16 v0, v20
7712     iget-object v2, v0, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
7714     iget-object v2, v2, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
7716     move-object/from16 v0, p1
7718     if-ne v2, v0, :cond_3bf
7720     :cond_2cf
7721     :goto_2cf
7722     add-int/lit8 v23, v23, 0x1
7724     goto :goto_2b1
7726     :cond_2d2
7727     move-object/from16 v0, p1
7729     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
7731     if-eqz v2, :cond_2e5
7733     const/4 v13, 0x0
7735     const/16 v36, -0x1
7737     const-string v2, "instrumentation"
7739     move-object/from16 v0, p1
7741     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7743     const/16 v25, 0x1
7745     goto/16 :goto_14c
7747     :cond_2e5
7748     invoke-direct/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->isReceivingBroadcast(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/BroadcastQueue;
7750     move-result-object v33
7752     if-eqz v33, :cond_301
7754     const/4 v13, 0x0
7756     move-object/from16 v0, p0
7758     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
7760     move-object/from16 v0, v33
7762     if-ne v0, v2, :cond_2fe
7764     const/16 v36, -0x1
7766     :goto_2f6
7767     const-string v2, "broadcast"
7769     move-object/from16 v0, p1
7771     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7773     goto/16 :goto_14c
7775     :cond_2fe
7776     const/16 v36, 0x0
7778     goto :goto_2f6
7780     :cond_301
7781     move-object/from16 v0, p1
7783     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->executingServices:Ljava/util/HashSet;
7785     invoke-virtual {v2}, Ljava/util/HashSet;->size()I
7787     move-result v2
7789     if-lez v2, :cond_316
7791     const/4 v13, 0x0
7793     const/16 v36, -0x1
7795     const-string v2, "exec-service"
7797     move-object/from16 v0, p1
7799     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7801     goto/16 :goto_14c
7803     :cond_316
7804     move/from16 v13, p2
7806     const/16 v36, 0x0
7808     const/4 v2, 0x1
7810     move-object/from16 v0, p1
7812     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7814     const-string v2, "bg-act"
7816     move-object/from16 v0, p1
7818     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7820     goto/16 :goto_14c
7822     :cond_327
7823     move-object/from16 v0, v34
7825     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
7827     sget-object v7, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
7829     if-eq v2, v7, :cond_337
7831     move-object/from16 v0, v34
7833     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
7835     sget-object v7, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSED:Lcom/android/server/am/ActivityStack$ActivityState;
7837     if-ne v2, v7, :cond_359
7839     :cond_337
7840     const/4 v2, 0x2
7842     if-le v13, v2, :cond_341
7844     const/4 v13, 0x2
7846     const-string v2, "pausing"
7848     move-object/from16 v0, p1
7850     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7852     :cond_341
7853     const/4 v2, 0x0
7855     move-object/from16 v0, p1
7857     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7859     const/16 v21, 0x1
7861     :cond_348
7862     :goto_348
7863     move-object/from16 v0, v34
7865     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
7867     move-object/from16 v0, p1
7869     if-ne v2, v0, :cond_355
7871     const/4 v2, 0x1
7873     move-object/from16 v0, p1
7875     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
7877     :cond_355
7878     add-int/lit8 v27, v27, 0x1
7880     goto/16 :goto_154
7882     :cond_359
7883     move-object/from16 v0, v34
7885     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
7887     sget-object v7, Lcom/android/server/am/ActivityStack$ActivityState;->STOPPING:Lcom/android/server/am/ActivityStack$ActivityState;
7889     if-ne v2, v7, :cond_348
7891     const/4 v2, 0x0
7893     move-object/from16 v0, p1
7895     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7897     const/16 v21, 0x1
7899     const/16 v22, 0x1
7901     goto :goto_348
7903     :cond_36b
7904     move/from16 v13, p4
7906     const/4 v2, 0x1
7908     move-object/from16 v0, p1
7910     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->empty:Z
7912     const-string v2, "bg-empty"
7914     move-object/from16 v0, p1
7916     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7918     goto/16 :goto_19a
7920     :cond_37a
7921     move-object/from16 v0, p1
7923     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
7925     if-eqz v2, :cond_1b1
7927     const/4 v13, 0x2
7929     const/4 v2, 0x0
7931     move-object/from16 v0, p1
7933     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7935     const-string v2, "force-fg"
7937     move-object/from16 v0, p1
7939     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7941     move-object/from16 v0, p1
7943     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
7945     move-object/from16 v0, p1
7947     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
7949     const/16 v36, -0x1
7951     goto/16 :goto_1b1
7953     :cond_398
7954     move-object/from16 v0, v35
7956     iget-wide v7, v0, Lcom/android/server/am/ServiceRecord;->lastActivity:J
7958     const-wide/32 v37, 0x1b7740
7960     add-long v7, v7, v37
7962     cmp-long v2, v31, v7
7964     if-gez v2, :cond_3b4
7966     const/4 v2, 0x5
7968     if-le v13, v2, :cond_3b4
7970     const/4 v13, 0x5
7972     const-string v2, "started-services"
7974     move-object/from16 v0, p1
7976     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7978     const/4 v2, 0x0
7980     move-object/from16 v0, p1
7982     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
7984     :cond_3b4
7985     const/4 v2, 0x5
7987     if-le v13, v2, :cond_282
7989     const-string v2, "started-bg-services"
7991     move-object/from16 v0, p1
7993     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
7995     goto/16 :goto_282
7997     :cond_3bf
7998     move-object/from16 v0, v20
8000     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8002     and-int/lit8 v2, v2, 0x20
8004     if-nez v2, :cond_470
8006     move-object/from16 v0, v20
8008     iget-object v2, v0, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
8010     iget-object v3, v2, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
8012     move/from16 v16, v13
8014     move/from16 v4, p2
8016     iget v2, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
8018     if-le v4, v2, :cond_3dc
8020     iget v2, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
8022     const/4 v7, 0x1
8024     if-lt v2, v7, :cond_4bd
8026     iget v4, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
8028     :cond_3dc
8029     :goto_3dc
8030     move/from16 v5, p3
8032     iget v2, v3, Lcom/android/server/am/ProcessRecord;->clientHiddenAdj:I
8034     if-le v5, v2, :cond_3e9
8036     iget v2, v3, Lcom/android/server/am/ProcessRecord;->clientHiddenAdj:I
8038     const/4 v7, 0x1
8040     if-lt v2, v7, :cond_4c0
8042     iget v5, v3, Lcom/android/server/am/ProcessRecord;->clientHiddenAdj:I
8044     :cond_3e9
8045     :goto_3e9
8046     move/from16 v6, p4
8048     iget v2, v3, Lcom/android/server/am/ProcessRecord;->emptyAdj:I
8050     if-le v6, v2, :cond_3f6
8052     iget v2, v3, Lcom/android/server/am/ProcessRecord;->emptyAdj:I
8054     const/4 v7, 0x1
8056     if-lt v2, v7, :cond_4c3
8058     iget v6, v3, Lcom/android/server/am/ProcessRecord;->emptyAdj:I
8060     :cond_3f6
8061     :goto_3f6
8062     const/4 v8, 0x1
8064     move-object/from16 v2, p0
8066     move-object/from16 v7, p5
8068     move/from16 v9, p7
8070     invoke-direct/range {v2 .. v9}, Lcom/android/server/am/ActivityManagerService;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;IIILcom/android/server/am/ProcessRecord;ZZ)I
8072     move-result v16
8074     const/4 v14, 0x0
8076     move-object/from16 v0, v20
8078     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8080     and-int/lit8 v2, v2, 0x10
8082     if-eqz v2, :cond_4dd
8084     move-object/from16 v0, p1
8086     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
8088     if-eqz v2, :cond_4c6
8090     move-object/from16 v0, p0
8092     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
8094     move-object/from16 v0, p1
8096     if-eq v0, v2, :cond_4c6
8098     move/from16 v0, v16
8100     if-le v13, v0, :cond_41e
8102     const-string v14, "bound-bg-ui-services"
8104     :cond_41e
8105     const/4 v2, 0x0
8107     move-object/from16 v0, p1
8109     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8111     move/from16 v16, v13
8113     :cond_425
8114     :goto_425
8115     move/from16 v0, v16
8117     if-le v13, v0, :cond_43e
8119     move-object/from16 v0, p1
8121     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
8123     if-eqz v2, :cond_4fb
8125     move-object/from16 v0, p0
8127     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
8129     move-object/from16 v0, p1
8131     if-eq v0, v2, :cond_4fb
8133     const/4 v2, 0x2
8135     move/from16 v0, v16
8137     if-le v0, v2, :cond_4fb
8139     const-string v14, "bound-bg-ui-services"
8141     :cond_43e
8142     :goto_43e
8143     if-eqz v14, :cond_461
8145     move-object/from16 v0, p1
8147     iput-object v14, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8149     const/4 v2, 0x2
8151     move-object/from16 v0, p1
8153     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
8155     move-object/from16 v0, v20
8157     iget-object v2, v0, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
8159     iget-object v2, v2, Lcom/android/server/am/AppBindRecord;->client:Lcom/android/server/am/ProcessRecord;
8161     move-object/from16 v0, p1
8163     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
8165     move/from16 v0, v16
8167     move-object/from16 v1, p1
8169     iput v0, v1, Lcom/android/server/am/ProcessRecord;->adjSourceOom:I
8171     move-object/from16 v0, v35
8173     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
8175     move-object/from16 v0, p1
8177     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
8179     :cond_461
8180     move-object/from16 v0, v20
8182     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8184     and-int/lit8 v2, v2, 0x4
8186     if-nez v2, :cond_470
8188     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
8190     const/4 v7, -0x1
8192     if-ne v2, v7, :cond_470
8194     const/16 v36, -0x1
8196     :cond_470
8197     move-object/from16 v0, v20
8199     iget-object v11, v0, Lcom/android/server/am/ConnectionRecord;->activity:Lcom/android/server/am/ActivityRecord;
8201     move-object/from16 v0, v20
8203     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8205     and-int/lit16 v2, v2, 0x80
8207     if-eqz v2, :cond_2cf
8209     if-eqz v11, :cond_2cf
8211     if-lez v13, :cond_2cf
8213     iget-boolean v2, v11, Lcom/android/server/am/ActivityRecord;->visible:Z
8215     if-nez v2, :cond_490
8217     iget-object v2, v11, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
8219     sget-object v7, Lcom/android/server/am/ActivityStack$ActivityState;->RESUMED:Lcom/android/server/am/ActivityStack$ActivityState;
8221     if-eq v2, v7, :cond_490
8223     iget-object v2, v11, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
8225     sget-object v7, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
8227     if-ne v2, v7, :cond_2cf
8229     :cond_490
8230     const/4 v13, 0x0
8232     move-object/from16 v0, v20
8234     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8236     and-int/lit8 v2, v2, 0x4
8238     if-nez v2, :cond_49b
8240     const/16 v36, -0x1
8242     :cond_49b
8243     const/4 v2, 0x0
8245     move-object/from16 v0, p1
8247     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8249     const-string v2, "service"
8251     move-object/from16 v0, p1
8253     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8255     const/4 v2, 0x2
8257     move-object/from16 v0, p1
8259     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
8261     move-object/from16 v0, p1
8263     iput-object v11, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
8265     move-object/from16 v0, p1
8267     iput v13, v0, Lcom/android/server/am/ProcessRecord;->adjSourceOom:I
8269     move-object/from16 v0, v35
8271     iget-object v2, v0, Lcom/android/server/am/ServiceRecord;->name:Landroid/content/ComponentName;
8273     move-object/from16 v0, p1
8275     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
8277     goto/16 :goto_2cf
8279     :cond_4bd
8280     const/4 v4, 0x1
8282     goto/16 :goto_3dc
8284     :cond_4c0
8285     const/4 v5, 0x1
8287     goto/16 :goto_3e9
8289     :cond_4c3
8290     const/4 v6, 0x1
8292     goto/16 :goto_3f6
8294     :cond_4c6
8295     move-object/from16 v0, v35
8297     iget-wide v7, v0, Lcom/android/server/am/ServiceRecord;->lastActivity:J
8299     const-wide/32 v37, 0x1b7740
8301     add-long v7, v7, v37
8303     cmp-long v2, v31, v7
8305     if-ltz v2, :cond_425
8307     move/from16 v0, v16
8309     if-le v13, v0, :cond_4d9
8311     const-string v14, "bound-bg-services"
8313     :cond_4d9
8314     move/from16 v16, v13
8316     goto/16 :goto_425
8318     :cond_4dd
8319     move-object/from16 v0, v20
8321     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8323     and-int/lit8 v2, v2, 0x1
8325     if-eqz v2, :cond_425
8327     move-object/from16 v0, v20
8329     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8331     const/high16 v7, 0x4000
8333     and-int/2addr v2, v7
8335     if-nez v2, :cond_425
8337     move-object/from16 v0, p1
8339     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasClientActivities:Z
8341     iget-boolean v7, v3, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
8343     or-int/2addr v2, v7
8345     move-object/from16 v0, p1
8347     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasClientActivities:Z
8349     goto/16 :goto_425
8351     :cond_4fb
8352     move-object/from16 v0, v20
8354     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8356     and-int/lit8 v2, v2, 0x48
8358     if-eqz v2, :cond_51b
8360     move/from16 v13, v16
8362     :cond_505
8363     :goto_505
8364     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->hidden:Z
8366     if-nez v2, :cond_50e
8368     const/4 v2, 0x0
8370     move-object/from16 v0, p1
8372     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8374     :cond_50e
8375     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->keeping:Z
8377     if-eqz v2, :cond_517
8379     const/4 v2, 0x1
8381     move-object/from16 v0, p1
8383     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
8385     :cond_517
8386     const-string v14, "service"
8388     goto/16 :goto_43e
8390     :cond_51b
8391     move-object/from16 v0, v20
8393     iget v2, v0, Lcom/android/server/am/ConnectionRecord;->flags:I
8395     const/high16 v7, 0x4000
8397     and-int/2addr v2, v7
8399     if-eqz v2, :cond_52e
8401     const/4 v2, 0x2
8403     move/from16 v0, v16
8405     if-ge v0, v2, :cond_52e
8407     const/4 v2, 0x2
8409     if-le v13, v2, :cond_52e
8411     const/4 v13, 0x2
8413     goto :goto_505
8415     :cond_52e
8416     const/4 v2, 0x1
8418     move/from16 v0, v16
8420     if-le v0, v2, :cond_536
8422     move/from16 v13, v16
8424     goto :goto_505
8426     :cond_536
8427     const/4 v2, 0x1
8429     move-object/from16 v0, p1
8431     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
8433     const/4 v2, 0x1
8435     if-le v13, v2, :cond_505
8437     const/4 v13, 0x1
8439     goto :goto_505
8441     :cond_540
8442     move/from16 v0, p2
8444     if-le v13, v0, :cond_551
8446     move/from16 v13, p2
8448     const/4 v2, 0x0
8450     move-object/from16 v0, p1
8452     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8454     const-string v2, "bg-services"
8456     move-object/from16 v0, p1
8458     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8460     :cond_551
8461     move-object/from16 v0, p1
8463     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
8465     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
8467     move-result v2
8469     if-eqz v2, :cond_657
8471     if-gtz v13, :cond_55f
8473     if-nez v36, :cond_657
8475     :cond_55f
8476     move-object/from16 v0, p1
8478     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
8480     invoke-virtual {v2}, Ljava/util/HashMap;->values()Ljava/util/Collection;
8482     move-result-object v2
8484     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
8486     move-result-object v28
8488     :cond_56b
8489     :goto_56b
8490     invoke-interface/range {v28 .. v28}, Ljava/util/Iterator;->hasNext()Z
8492     move-result v2
8494     if-eqz v2, :cond_657
8496     if-gtz v13, :cond_575
8498     if-nez v36, :cond_657
8500     :cond_575
8501     invoke-interface/range {v28 .. v28}, Ljava/util/Iterator;->next()Ljava/lang/Object;
8503     move-result-object v19
8505     check-cast v19, Lcom/android/server/am/ContentProviderRecord;
8507     move-object/from16 v0, v19
8509     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
8511     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
8513     move-result v2
8515     add-int/lit8 v23, v2, -0x1
8517     :goto_585
8518     if-ltz v23, :cond_632
8520     if-gtz v13, :cond_58b
8522     if-nez v36, :cond_632
8524     :cond_58b
8525     move-object/from16 v0, v19
8527     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
8529     move/from16 v0, v23
8531     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
8533     move-result-object v18
8535     check-cast v18, Lcom/android/server/am/ContentProviderConnection;
8537     move-object/from16 v0, v18
8539     iget-object v3, v0, Lcom/android/server/am/ContentProviderConnection;->client:Lcom/android/server/am/ProcessRecord;
8541     move-object/from16 v0, p1
8543     if-ne v3, v0, :cond_5a2
8545     :cond_59f
8546     :goto_59f
8547     add-int/lit8 v23, v23, -0x1
8549     goto :goto_585
8551     :cond_5a2
8552     move/from16 v4, p2
8554     iget v2, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
8556     if-le v4, v2, :cond_5ae
8558     iget v2, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
8560     if-lez v2, :cond_61f
8562     iget v4, v3, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
8564     :cond_5ae
8565     :goto_5ae
8566     move/from16 v5, p3
8568     iget v2, v3, Lcom/android/server/am/ProcessRecord;->clientHiddenAdj:I
8570     if-le v5, v2, :cond_5ba
8572     iget v2, v3, Lcom/android/server/am/ProcessRecord;->clientHiddenAdj:I
8574     if-ltz v2, :cond_621
8576     iget v5, v3, Lcom/android/server/am/ProcessRecord;->clientHiddenAdj:I
8578     :cond_5ba
8579     :goto_5ba
8580     move/from16 v6, p4
8582     iget v2, v3, Lcom/android/server/am/ProcessRecord;->emptyAdj:I
8584     if-le v6, v2, :cond_5c6
8586     iget v2, v3, Lcom/android/server/am/ProcessRecord;->emptyAdj:I
8588     if-lez v2, :cond_623
8590     iget v6, v3, Lcom/android/server/am/ProcessRecord;->emptyAdj:I
8592     :cond_5c6
8593     :goto_5c6
8594     const/4 v8, 0x1
8596     move-object/from16 v2, p0
8598     move-object/from16 v7, p5
8600     move/from16 v9, p7
8602     invoke-direct/range {v2 .. v9}, Lcom/android/server/am/ActivityManagerService;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;IIILcom/android/server/am/ProcessRecord;ZZ)I
8604     move-result v16
8606     move/from16 v0, v16
8608     if-le v13, v0, :cond_617
8610     move-object/from16 v0, p1
8612     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasShownUi:Z
8614     if-eqz v2, :cond_625
8616     move-object/from16 v0, p0
8618     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
8620     move-object/from16 v0, p1
8622     if-eq v0, v2, :cond_625
8624     const/4 v2, 0x2
8626     move/from16 v0, v16
8628     if-le v0, v2, :cond_625
8630     const-string v2, "bg-ui-provider"
8632     move-object/from16 v0, p1
8634     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8636     :goto_5ee
8637     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->hidden:Z
8639     if-nez v2, :cond_5f7
8641     const/4 v2, 0x0
8643     move-object/from16 v0, p1
8645     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8647     :cond_5f7
8648     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->keeping:Z
8650     if-eqz v2, :cond_600
8652     const/4 v2, 0x1
8654     move-object/from16 v0, p1
8656     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
8658     :cond_600
8659     const/4 v2, 0x1
8661     move-object/from16 v0, p1
8663     iput v2, v0, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
8665     move-object/from16 v0, p1
8667     iput-object v3, v0, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
8669     move/from16 v0, v16
8671     move-object/from16 v1, p1
8673     iput v0, v1, Lcom/android/server/am/ProcessRecord;->adjSourceOom:I
8675     move-object/from16 v0, v19
8677     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
8679     move-object/from16 v0, p1
8681     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
8683     :cond_617
8684     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
8686     const/4 v7, -0x1
8688     if-ne v2, v7, :cond_59f
8690     const/16 v36, -0x1
8692     goto :goto_59f
8694     :cond_61f
8695     const/4 v4, 0x0
8697     goto :goto_5ae
8699     :cond_621
8700     const/4 v5, 0x0
8702     goto :goto_5ba
8704     :cond_623
8705     const/4 v6, 0x0
8707     goto :goto_5c6
8709     :cond_625
8710     if-lez v16, :cond_630
8712     move/from16 v13, v16
8714     :goto_629
8715     const-string v2, "provider"
8717     move-object/from16 v0, p1
8719     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8721     goto :goto_5ee
8723     :cond_630
8724     const/4 v13, 0x0
8726     goto :goto_629
8728     :cond_632
8729     invoke-virtual/range {v19 .. v19}, Lcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
8731     move-result v2
8733     if-eqz v2, :cond_56b
8735     if-lez v13, :cond_56b
8737     const/4 v13, 0x0
8739     const/16 v36, -0x1
8741     const/4 v2, 0x0
8743     move-object/from16 v0, p1
8745     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hidden:Z
8747     const/4 v2, 0x1
8749     move-object/from16 v0, p1
8751     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
8753     const-string v2, "provider"
8755     move-object/from16 v0, p1
8757     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8759     move-object/from16 v0, v19
8761     iget-object v2, v0, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
8763     move-object/from16 v0, p1
8765     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
8767     goto/16 :goto_56b
8769     :cond_657
8770     const/4 v2, 0x5
8772     if-ne v13, v2, :cond_78d
8774     if-eqz p7, :cond_677
8776     move-object/from16 v0, p0
8778     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
8780     move-object/from16 v0, p0
8782     iget v7, v0, Lcom/android/server/am/ActivityManagerService;->mNumServiceProcs:I
8784     div-int/lit8 v7, v7, 0x3
8786     if-le v2, v7, :cond_78a
8788     const/4 v2, 0x1
8790     :goto_669
8791     move-object/from16 v0, p1
8793     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->serviceb:Z
8795     move-object/from16 v0, p0
8797     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
8799     add-int/lit8 v2, v2, 0x1
8801     move-object/from16 v0, p0
8803     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
8805     :cond_677
8806     move-object/from16 v0, p1
8808     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->serviceb:Z
8810     if-eqz v2, :cond_67f
8812     const/16 v13, 0x8
8814     :cond_67f
8815     :goto_67f
8816     move-object/from16 v0, p1
8818     iput v13, v0, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
8820     if-eqz v22, :cond_68f
8822     const/4 v2, 0x2
8824     if-le v13, v2, :cond_68f
8826     const/4 v13, 0x2
8828     const-string v2, "stopping"
8830     move-object/from16 v0, p1
8832     iput-object v2, v0, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
8834     :cond_68f
8835     move-object/from16 v0, p1
8837     iput v13, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
8839     move-object/from16 v0, p1
8841     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
8843     if-le v13, v2, :cond_6a6
8845     move-object/from16 v0, p1
8847     iget v13, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
8849     move-object/from16 v0, p1
8851     iget v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
8853     const/4 v7, 0x2
8855     if-gt v2, v7, :cond_6a6
8857     const/16 v36, -0x1
8859     :cond_6a6
8860     sget v2, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
8862     if-ge v13, v2, :cond_6af
8864     const/4 v2, 0x1
8866     move-object/from16 v0, p1
8868     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
8870     :cond_6af
8871     move-object/from16 v0, p1
8873     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->hasAboveClient:Z
8875     if-eqz v2, :cond_6b7
8877     if-gez v13, :cond_794
8879     :cond_6b7
8880     :goto_6b7
8881     move-object/from16 v0, p1
8883     iget v0, v0, Lcom/android/server/am/ProcessRecord;->memImportance:I
8885     move/from16 v24, v0
8887     if-eqz v24, :cond_6cd
8889     move-object/from16 v0, p1
8891     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
8893     if-ne v13, v2, :cond_6cd
8895     move-object/from16 v0, p1
8897     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
8899     move/from16 v0, v36
8901     if-eq v0, v2, :cond_6db
8903     :cond_6cd
8904     move-object/from16 v0, p1
8906     iput v13, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
8908     move/from16 v0, v36
8910     move-object/from16 v1, p1
8912     iput v0, v1, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
8914     if-nez v25, :cond_7b0
8916     const/16 v24, 0x190
8918     :cond_6db
8919     :goto_6db
8920     move-object/from16 v0, p1
8922     iget v2, v0, Lcom/android/server/am/ProcessRecord;->memImportance:I
8924     move/from16 v0, v24
8926     if-eq v0, v2, :cond_7ed
8928     const/4 v15, 0x2
8930     :goto_6e4
8931     move-object/from16 v0, p1
8933     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
8935     move/from16 v0, v21
8937     if-eq v0, v2, :cond_6ee
8939     or-int/lit8 v15, v15, 0x1
8941     :cond_6ee
8942     if-eqz v15, :cond_784
8944     move/from16 v0, v24
8946     move-object/from16 v1, p1
8948     iput v0, v1, Lcom/android/server/am/ProcessRecord;->memImportance:I
8950     move/from16 v0, v21
8952     move-object/from16 v1, p1
8954     iput-boolean v0, v1, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
8956     move-object/from16 v0, p0
8958     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
8960     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
8962     move-result v2
8964     add-int/lit8 v23, v2, -0x1
8966     const/16 v26, 0x0
8968     :goto_708
8969     if-ltz v23, :cond_720
8971     move-object/from16 v0, p0
8973     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
8975     move/from16 v0, v23
8977     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
8979     move-result-object v26
8981     check-cast v26, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
8983     move-object/from16 v0, v26
8985     iget v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
8987     move-object/from16 v0, p1
8989     iget v7, v0, Lcom/android/server/am/ProcessRecord;->pid:I
8991     if-ne v2, v7, :cond_7f0
8993     :cond_720
8994     if-gez v23, :cond_76f
8996     move-object/from16 v0, p0
8998     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
9000     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
9002     move-result v10
9004     if-lez v10, :cond_7f4
9006     move-object/from16 v0, p0
9008     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
9010     add-int/lit8 v7, v10, -0x1
9012     invoke-virtual {v2, v7}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
9014     move-result-object v26
9016     check-cast v26, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9018     :goto_738
9019     const/4 v2, 0x0
9021     move-object/from16 v0, v26
9023     iput v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
9025     move-object/from16 v0, p1
9027     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
9029     move-object/from16 v0, v26
9031     iput v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
9033     move-object/from16 v0, p1
9035     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
9037     iget v2, v2, Landroid/content/pm/ApplicationInfo;->uid:I
9039     move-object/from16 v0, v26
9041     iput v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->uid:I
9043     move-object/from16 v0, p0
9045     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9047     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
9049     move-result v2
9051     if-nez v2, :cond_766
9053     move-object/from16 v0, p0
9055     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
9057     const/16 v7, 0x1f
9059     invoke-virtual {v2, v7}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
9061     move-result-object v2
9063     invoke-virtual {v2}, Landroid/os/Message;->sendToTarget()V
9065     :cond_766
9066     move-object/from16 v0, p0
9068     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9070     move-object/from16 v0, v26
9072     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
9074     :cond_76f
9075     move-object/from16 v0, v26
9077     iget v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
9079     or-int/2addr v2, v15
9081     move-object/from16 v0, v26
9083     iput v2, v0, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
9085     move/from16 v0, v24
9087     move-object/from16 v1, v26
9089     iput v0, v1, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->importance:I
9091     move/from16 v0, v21
9093     move-object/from16 v1, v26
9095     iput-boolean v0, v1, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->foregroundActivities:Z
9097     :cond_784
9098     move-object/from16 v0, p1
9100     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
9102     goto/16 :goto_2e
9104     :cond_78a
9105     const/4 v2, 0x0
9107     goto/16 :goto_669
9109     :cond_78d
9110     const/4 v2, 0x0
9112     move-object/from16 v0, p1
9114     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->serviceb:Z
9116     goto/16 :goto_67f
9118     :cond_794
9119     const/4 v2, 0x1
9121     if-ge v13, v2, :cond_79a
9123     const/4 v13, 0x1
9125     goto/16 :goto_6b7
9127     :cond_79a
9128     const/4 v2, 0x2
9130     if-ge v13, v2, :cond_7a0
9132     const/4 v13, 0x2
9134     goto/16 :goto_6b7
9136     :cond_7a0
9137     sget v2, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
9139     if-ge v13, v2, :cond_7a8
9141     sget v13, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
9143     goto/16 :goto_6b7
9145     :cond_7a8
9146     const/16 v2, 0xf
9148     if-ge v13, v2, :cond_6b7
9150     add-int/lit8 v13, v13, 0x1
9152     goto/16 :goto_6b7
9154     :cond_7b0
9155     sget v2, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
9157     if-lt v13, v2, :cond_7b8
9159     const/16 v24, 0x190
9161     goto/16 :goto_6db
9163     :cond_7b8
9164     const/16 v2, 0x8
9166     if-lt v13, v2, :cond_7c0
9168     const/16 v24, 0x12c
9170     goto/16 :goto_6db
9172     :cond_7c0
9173     const/4 v2, 0x6
9175     if-lt v13, v2, :cond_7c7
9177     const/16 v24, 0x190
9179     goto/16 :goto_6db
9181     :cond_7c7
9182     const/4 v2, 0x5
9184     if-lt v13, v2, :cond_7ce
9186     const/16 v24, 0x12c
9188     goto/16 :goto_6db
9190     :cond_7ce
9191     const/4 v2, 0x3
9193     if-lt v13, v2, :cond_7d5
9195     const/16 v24, 0xaa
9197     goto/16 :goto_6db
9199     :cond_7d5
9200     const/4 v2, 0x2
9202     if-lt v13, v2, :cond_7dc
9204     const/16 v24, 0x82
9206     goto/16 :goto_6db
9208     :cond_7dc
9209     const/4 v2, 0x1
9211     if-lt v13, v2, :cond_7e3
9213     const/16 v24, 0xc8
9215     goto/16 :goto_6db
9217     :cond_7e3
9218     if-ltz v13, :cond_7e9
9220     const/16 v24, 0x64
9222     goto/16 :goto_6db
9224     :cond_7e9
9225     const/16 v24, 0x32
9227     goto/16 :goto_6db
9229     :cond_7ed
9230     const/4 v15, 0x0
9232     goto/16 :goto_6e4
9234     :cond_7f0
9235     add-int/lit8 v23, v23, -0x1
9237     goto/16 :goto_708
9239     :cond_7f4
9240     new-instance v26, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9242     invoke-direct/range {v26 .. v26}, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;-><init>()V
9244     goto/16 :goto_738
9245 .end method
9247 .method private crashApplication(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;)V
9248     .registers 27
9250     invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
9252     move-result-wide v8
9254     move-object/from16 v0, p2
9256     iget-object v6, v0, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionClassName:Ljava/lang/String;
9258     move-object/from16 v0, p2
9260     iget-object v7, v0, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionMessage:Ljava/lang/String;
9262     move-object/from16 v0, p2
9264     iget-object v0, v0, Landroid/app/ApplicationErrorReport$CrashInfo;->stackTrace:Ljava/lang/String;
9266     move-object/from16 v20, v0
9268     if-eqz v6, :cond_7a
9270     if-eqz v7, :cond_7a
9272     new-instance v3, Ljava/lang/StringBuilder;
9274     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
9276     invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9278     move-result-object v3
9280     const-string v10, ": "
9282     invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9284     move-result-object v3
9286     invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9288     move-result-object v3
9290     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9292     move-result-object v7
9294     :cond_2d
9295     :goto_2d
9296     new-instance v19, Lcom/android/server/am/AppErrorResult;
9298     invoke-direct/range {v19 .. v19}, Lcom/android/server/am/AppErrorResult;-><init>()V
9300     monitor-enter p0
9302     :try_start_33
9303     move-object/from16 v0, p0
9305     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
9306     :try_end_37
9307     .catchall {:try_start_33 .. :try_end_37} :catchall_12a
9309     if-eqz v3, :cond_8b
9311     if-eqz p1, :cond_7e
9313     :try_start_3b
9314     move-object/from16 v0, p1
9316     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
9318     :goto_3f
9319     if-eqz p1, :cond_80
9321     move-object/from16 v0, p1
9323     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
9325     :goto_45
9326     move-object/from16 v0, p0
9328     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
9330     move-object/from16 v0, p2
9332     iget-object v10, v0, Landroid/app/ApplicationErrorReport$CrashInfo;->stackTrace:Ljava/lang/String;
9334     invoke-interface/range {v3 .. v10}, Landroid/app/IActivityController;->appCrashed(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;JLjava/lang/String;)Z
9336     move-result v3
9338     if-nez v3, :cond_8b
9340     const-string v3, "ActivityManager"
9342     new-instance v10, Ljava/lang/StringBuilder;
9344     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
9346     const-string v21, "Force-killing crashed app "
9348     move-object/from16 v0, v21
9350     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9352     move-result-object v10
9354     invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9356     move-result-object v10
9358     const-string v21, " at watcher\'s request"
9360     move-object/from16 v0, v21
9362     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9364     move-result-object v10
9366     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9368     move-result-object v10
9370     invoke-static {v3, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
9372     invoke-static {v5}, Landroid/os/Process;->killProcess(I)V
9373     :try_end_78
9374     .catchall {:try_start_3b .. :try_end_78} :catchall_12a
9375     .catch Landroid/os/RemoteException; {:try_start_3b .. :try_end_78} :catch_85
9377     :try_start_78
9378     monitor-exit p0
9379     :try_end_79
9380     .catchall {:try_start_78 .. :try_end_79} :catchall_12a
9382     :cond_79
9383     :goto_79
9384     return-void
9386     :cond_7a
9387     if-eqz v6, :cond_2d
9389     move-object v7, v6
9391     goto :goto_2d
9393     :cond_7e
9394     const/4 v4, 0x0
9396     goto :goto_3f
9398     :cond_80
9399     :try_start_80
9400     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
9401     :try_end_83
9402     .catchall {:try_start_80 .. :try_end_83} :catchall_12a
9403     .catch Landroid/os/RemoteException; {:try_start_80 .. :try_end_83} :catch_85
9405     move-result v5
9407     goto :goto_45
9409     :catch_85
9410     move-exception v13
9412     const/4 v3, 0x0
9414     :try_start_87
9415     move-object/from16 v0, p0
9417     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
9419     :cond_8b
9420     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
9422     move-result-wide v16
9424     if-eqz p1, :cond_12d
9426     move-object/from16 v0, p1
9428     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
9430     if-eqz v3, :cond_12d
9432     const-string v3, "ActivityManager"
9434     new-instance v10, Ljava/lang/StringBuilder;
9436     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
9438     const-string v21, "Error in app "
9440     move-object/from16 v0, v21
9442     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9444     move-result-object v10
9446     move-object/from16 v0, p1
9448     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
9450     move-object/from16 v21, v0
9452     move-object/from16 v0, v21
9454     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9456     move-result-object v10
9458     const-string v21, " running instrumentation "
9460     move-object/from16 v0, v21
9462     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9464     move-result-object v10
9466     move-object/from16 v0, p1
9468     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
9470     move-object/from16 v21, v0
9472     move-object/from16 v0, v21
9474     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
9476     move-result-object v10
9478     const-string v21, ":"
9480     move-object/from16 v0, v21
9482     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9484     move-result-object v10
9486     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9488     move-result-object v10
9490     invoke-static {v3, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
9492     if-eqz v6, :cond_f1
9494     const-string v3, "ActivityManager"
9496     new-instance v10, Ljava/lang/StringBuilder;
9498     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
9500     const-string v21, "  "
9502     move-object/from16 v0, v21
9504     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9506     move-result-object v10
9508     invoke-virtual {v10, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9510     move-result-object v10
9512     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9514     move-result-object v10
9516     invoke-static {v3, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
9518     :cond_f1
9519     if-eqz v7, :cond_10d
9521     const-string v3, "ActivityManager"
9523     new-instance v10, Ljava/lang/StringBuilder;
9525     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
9527     const-string v21, "  "
9529     move-object/from16 v0, v21
9531     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9533     move-result-object v10
9535     invoke-virtual {v10, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
9537     move-result-object v10
9539     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
9541     move-result-object v10
9543     invoke-static {v3, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
9545     :cond_10d
9546     new-instance v14, Landroid/os/Bundle;
9548     invoke-direct {v14}, Landroid/os/Bundle;-><init>()V
9550     const-string v3, "shortMsg"
9552     invoke-virtual {v14, v3, v6}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
9554     const-string v3, "longMsg"
9556     invoke-virtual {v14, v3, v7}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
9558     const/4 v3, 0x0
9560     move-object/from16 v0, p0
9562     move-object/from16 v1, p1
9564     invoke-virtual {v0, v1, v3, v14}, Lcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
9566     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
9568     monitor-exit p0
9570     goto/16 :goto_79
9572     :catchall_12a
9573     move-exception v3
9575     monitor-exit p0
9576     :try_end_12c
9577     .catchall {:try_start_87 .. :try_end_12c} :catchall_12a
9579     throw v3
9581     :cond_12d
9582     if-eqz p1, :cond_13b
9584     :try_start_12f
9585     move-object/from16 v0, p0
9587     move-object/from16 v1, p1
9589     move-object/from16 v2, v20
9591     invoke-direct {v0, v1, v6, v7, v2}, Lcom/android/server/am/ActivityManagerService;->makeAppCrashingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
9593     move-result v3
9595     if-nez v3, :cond_141
9597     :cond_13b
9598     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
9600     monitor-exit p0
9602     goto/16 :goto_79
9604     :cond_141
9605     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
9607     move-result-object v15
9609     const/4 v3, 0x1
9611     iput v3, v15, Landroid/os/Message;->what:I
9613     new-instance v12, Ljava/util/HashMap;
9615     invoke-direct {v12}, Ljava/util/HashMap;-><init>()V
9617     const-string v3, "result"
9619     move-object/from16 v0, v19
9621     invoke-virtual {v12, v3, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
9623     const-string v3, "app"
9625     move-object/from16 v0, p1
9627     invoke-virtual {v12, v3, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
9629     iput-object v12, v15, Landroid/os/Message;->obj:Ljava/lang/Object;
9631     move-object/from16 v0, p0
9633     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
9635     invoke-virtual {v3, v15}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
9637     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
9639     monitor-exit p0
9640     :try_end_168
9641     .catchall {:try_start_12f .. :try_end_168} :catchall_12a
9643     invoke-virtual/range {v19 .. v19}, Lcom/android/server/am/AppErrorResult;->get()I
9645     move-result v18
9647     const/4 v11, 0x0
9649     monitor-enter p0
9651     if-eqz p1, :cond_195
9653     :try_start_170
9654     move-object/from16 v0, p1
9656     iget-boolean v3, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
9658     if-nez v3, :cond_195
9660     move-object/from16 v0, p0
9662     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
9664     move-object/from16 v0, p1
9666     iget-object v10, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
9668     iget-object v10, v10, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
9670     move-object/from16 v0, p1
9672     iget v0, v0, Lcom/android/server/am/ProcessRecord;->uid:I
9674     move/from16 v21, v0
9676     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
9678     move-result-wide v22
9680     invoke-static/range {v22 .. v23}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
9682     move-result-object v22
9684     move/from16 v0, v21
9686     move-object/from16 v1, v22
9688     invoke-virtual {v3, v10, v0, v1}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
9690     :cond_195
9691     const/4 v3, 0x1
9693     move/from16 v0, v18
9695     if-ne v0, v3, :cond_1a4
9697     move-object/from16 v0, p0
9699     move-object/from16 v1, p1
9701     move-object/from16 v2, p2
9703     invoke-virtual {v0, v1, v8, v9, v2}, Lcom/android/server/am/ActivityManagerService;->createAppErrorIntentLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/content/Intent;
9705     move-result-object v11
9707     :cond_1a4
9708     monitor-exit p0
9709     :try_end_1a5
9710     .catchall {:try_start_170 .. :try_end_1a5} :catchall_1c7
9712     if-eqz v11, :cond_79
9714     :try_start_1a7
9715     move-object/from16 v0, p0
9717     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
9719     new-instance v10, Landroid/os/UserHandle;
9721     move-object/from16 v0, p1
9723     iget v0, v0, Lcom/android/server/am/ProcessRecord;->userId:I
9725     move/from16 v21, v0
9727     move/from16 v0, v21
9729     invoke-direct {v10, v0}, Landroid/os/UserHandle;-><init>(I)V
9731     invoke-virtual {v3, v11, v10}, Landroid/content/Context;->startActivityAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
9732     :try_end_1bb
9733     .catch Landroid/content/ActivityNotFoundException; {:try_start_1a7 .. :try_end_1bb} :catch_1bd
9735     goto/16 :goto_79
9737     :catch_1bd
9738     move-exception v13
9740     const-string v3, "ActivityManager"
9742     const-string v10, "bug report receiver dissappeared"
9744     invoke-static {v3, v10, v13}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
9746     goto/16 :goto_79
9748     :catchall_1c7
9749     move-exception v3
9751     :try_start_1c8
9752     monitor-exit p0
9753     :try_end_1c9
9754     .catchall {:try_start_1c8 .. :try_end_1c9} :catchall_1c7
9756     throw v3
9757 .end method
9759 .method private createAppErrorReportLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/app/ApplicationErrorReport;
9760     .registers 8
9762     const/4 v0, 0x0
9764     const/4 v2, 0x1
9766     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->errorReportReceiver:Landroid/content/ComponentName;
9768     if-nez v1, :cond_7
9770     :cond_6
9771     :goto_6
9772     return-object v0
9774     :cond_7
9775     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->crashing:Z
9777     if-nez v1, :cond_f
9779     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
9781     if-eqz v1, :cond_6
9783     :cond_f
9784     new-instance v0, Landroid/app/ApplicationErrorReport;
9786     invoke-direct {v0}, Landroid/app/ApplicationErrorReport;-><init>()V
9788     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
9790     iget-object v1, v1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
9792     iput-object v1, v0, Landroid/app/ApplicationErrorReport;->packageName:Ljava/lang/String;
9794     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->errorReportReceiver:Landroid/content/ComponentName;
9796     invoke-virtual {v1}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
9798     move-result-object v1
9800     iput-object v1, v0, Landroid/app/ApplicationErrorReport;->installerPackageName:Ljava/lang/String;
9802     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
9804     iput-object v1, v0, Landroid/app/ApplicationErrorReport;->processName:Ljava/lang/String;
9806     iput-wide p2, v0, Landroid/app/ApplicationErrorReport;->time:J
9808     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
9810     iget v1, v1, Landroid/content/pm/ApplicationInfo;->flags:I
9812     and-int/lit8 v1, v1, 0x1
9814     if-eqz v1, :cond_3c
9816     move v1, v2
9818     :goto_31
9819     iput-boolean v1, v0, Landroid/app/ApplicationErrorReport;->systemApp:Z
9821     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->crashing:Z
9823     if-eqz v1, :cond_3e
9825     iput v2, v0, Landroid/app/ApplicationErrorReport;->type:I
9827     iput-object p4, v0, Landroid/app/ApplicationErrorReport;->crashInfo:Landroid/app/ApplicationErrorReport$CrashInfo;
9829     goto :goto_6
9831     :cond_3c
9832     const/4 v1, 0x0
9834     goto :goto_31
9836     :cond_3e
9837     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
9839     if-eqz v1, :cond_6
9841     const/4 v1, 0x2
9843     iput v1, v0, Landroid/app/ApplicationErrorReport;->type:I
9845     new-instance v1, Landroid/app/ApplicationErrorReport$AnrInfo;
9847     invoke-direct {v1}, Landroid/app/ApplicationErrorReport$AnrInfo;-><init>()V
9849     iput-object v1, v0, Landroid/app/ApplicationErrorReport;->anrInfo:Landroid/app/ApplicationErrorReport$AnrInfo;
9851     iget-object v1, v0, Landroid/app/ApplicationErrorReport;->anrInfo:Landroid/app/ApplicationErrorReport$AnrInfo;
9853     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
9855     iget-object v2, v2, Landroid/app/ActivityManager$ProcessErrorStateInfo;->tag:Ljava/lang/String;
9857     iput-object v2, v1, Landroid/app/ApplicationErrorReport$AnrInfo;->activity:Ljava/lang/String;
9859     iget-object v1, v0, Landroid/app/ApplicationErrorReport;->anrInfo:Landroid/app/ApplicationErrorReport$AnrInfo;
9861     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
9863     iget-object v2, v2, Landroid/app/ActivityManager$ProcessErrorStateInfo;->shortMsg:Ljava/lang/String;
9865     iput-object v2, v1, Landroid/app/ApplicationErrorReport$AnrInfo;->cause:Ljava/lang/String;
9867     iget-object v1, v0, Landroid/app/ApplicationErrorReport;->anrInfo:Landroid/app/ApplicationErrorReport$AnrInfo;
9869     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
9871     iget-object v2, v2, Landroid/app/ActivityManager$ProcessErrorStateInfo;->longMsg:Ljava/lang/String;
9873     iput-object v2, v1, Landroid/app/ApplicationErrorReport$AnrInfo;->info:Ljava/lang/String;
9875     goto :goto_6
9876 .end method
9878 .method private dispatchProcessDied(II)V
9879     .registers 6
9881     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
9883     invoke-virtual {v2}, Landroid/os/RemoteCallbackList;->beginBroadcast()I
9885     move-result v0
9887     :cond_6
9888     :goto_6
9889     if-lez v0, :cond_1a
9891     add-int/lit8 v0, v0, -0x1
9893     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
9895     invoke-virtual {v2, v0}, Landroid/os/RemoteCallbackList;->getBroadcastItem(I)Landroid/os/IInterface;
9897     move-result-object v1
9899     check-cast v1, Landroid/app/IProcessObserver;
9901     if-eqz v1, :cond_6
9903     :try_start_14
9904     invoke-interface {v1, p1, p2}, Landroid/app/IProcessObserver;->onProcessDied(II)V
9905     :try_end_17
9906     .catch Landroid/os/RemoteException; {:try_start_14 .. :try_end_17} :catch_18
9908     goto :goto_6
9910     :catch_18
9911     move-exception v2
9913     goto :goto_6
9915     :cond_1a
9916     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
9918     invoke-virtual {v2}, Landroid/os/RemoteCallbackList;->finishBroadcast()V
9920     return-void
9921 .end method
9923 .method private dispatchProcessesChanged()V
9924     .registers 9
9926     monitor-enter p0
9928     :try_start_1
9929     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9931     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
9933     move-result v0
9935     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9937     array-length v5, v5
9939     if-ge v5, v0, :cond_10
9941     new-array v5, v0, [Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9943     iput-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9945     :cond_10
9946     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9948     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9950     invoke-virtual {v5, v6}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
9952     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mAvailProcessChanges:Ljava/util/ArrayList;
9954     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9956     invoke-virtual {v5, v6}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z
9958     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPendingProcessChanges:Ljava/util/ArrayList;
9960     invoke-virtual {v5}, Ljava/util/ArrayList;->clear()V
9962     monitor-exit p0
9963     :try_end_24
9964     .catchall {:try_start_1 .. :try_end_24} :catchall_60
9966     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
9968     invoke-virtual {v5}, Landroid/os/RemoteCallbackList;->beginBroadcast()I
9970     move-result v1
9972     :cond_2a
9973     :goto_2a
9974     if-lez v1, :cond_63
9976     add-int/lit8 v1, v1, -0x1
9978     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
9980     invoke-virtual {v5, v1}, Landroid/os/RemoteCallbackList;->getBroadcastItem(I)Landroid/os/IInterface;
9982     move-result-object v4
9984     check-cast v4, Landroid/app/IProcessObserver;
9986     if-eqz v4, :cond_2a
9988     const/4 v3, 0x0
9990     :goto_39
9991     if-ge v3, v0, :cond_2a
9993     :try_start_3b
9994     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mActiveProcessChanges:[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
9996     aget-object v2, v5, v3
9998     iget v5, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
10000     and-int/lit8 v5, v5, 0x1
10002     if-eqz v5, :cond_4e
10004     iget v5, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
10006     iget v6, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->uid:I
10008     iget-boolean v7, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->foregroundActivities:Z
10010     invoke-interface {v4, v5, v6, v7}, Landroid/app/IProcessObserver;->onForegroundActivitiesChanged(IIZ)V
10012     :cond_4e
10013     iget v5, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->changes:I
10015     and-int/lit8 v5, v5, 0x2
10017     if-eqz v5, :cond_5d
10019     iget v5, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->pid:I
10021     iget v6, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->uid:I
10023     iget v7, v2, Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;->importance:I
10025     invoke-interface {v4, v5, v6, v7}, Landroid/app/IProcessObserver;->onImportanceChanged(III)V
10026     :try_end_5d
10027     .catch Landroid/os/RemoteException; {:try_start_3b .. :try_end_5d} :catch_69
10029     :cond_5d
10030     add-int/lit8 v3, v3, 0x1
10032     goto :goto_39
10034     :catchall_60
10035     move-exception v5
10037     :try_start_61
10038     monitor-exit p0
10039     :try_end_62
10040     .catchall {:try_start_61 .. :try_end_62} :catchall_60
10042     throw v5
10044     :cond_63
10045     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
10047     invoke-virtual {v5}, Landroid/os/RemoteCallbackList;->finishBroadcast()V
10049     return-void
10051     :catch_69
10052     move-exception v5
10054     goto :goto_2a
10055 .end method
10057 .method private dumpActivity(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ActivityRecord;[Ljava/lang/String;Z)V
10058     .registers 13
10060     new-instance v3, Ljava/lang/StringBuilder;
10062     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
10064     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10066     move-result-object v3
10068     const-string v4, "  "
10070     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10072     move-result-object v3
10074     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10076     move-result-object v1
10078     monitor-enter p0
10080     :try_start_14
10081     invoke-virtual {p3, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10083     const-string v3, "ACTIVITY "
10085     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10087     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
10089     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10091     const-string v3, " "
10093     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10095     invoke-static {p4}, Ljava/lang/System;->identityHashCode(Ljava/lang/Object;)I
10097     move-result v3
10099     invoke-static {v3}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
10101     move-result-object v3
10103     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10105     const-string v3, " pid="
10107     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10109     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10111     if-eqz v3, :cond_71
10113     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10115     iget v3, v3, Lcom/android/server/am/ProcessRecord;->pid:I
10117     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(I)V
10119     :goto_41
10120     if-eqz p6, :cond_46
10122     invoke-virtual {p4, p3, v1}, Lcom/android/server/am/ActivityRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
10124     :cond_46
10125     monitor-exit p0
10126     :try_end_47
10127     .catchall {:try_start_14 .. :try_end_47} :catchall_77
10129     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10131     if-eqz v3, :cond_70
10133     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10135     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
10137     if-eqz v3, :cond_70
10139     invoke-virtual {p3}, Ljava/io/PrintWriter;->flush()V
10141     :try_start_54
10142     new-instance v2, Lcom/android/server/am/TransferPipe;
10144     invoke-direct {v2}, Lcom/android/server/am/TransferPipe;-><init>()V
10145     :try_end_59
10146     .catch Ljava/io/IOException; {:try_start_54 .. :try_end_59} :catch_7f
10147     .catch Landroid/os/RemoteException; {:try_start_54 .. :try_end_59} :catch_9b
10149     :try_start_59
10150     iget-object v3, p4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10152     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
10154     invoke-virtual {v2}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
10156     move-result-object v4
10158     invoke-virtual {v4}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
10160     move-result-object v4
10162     iget-object v5, p4, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
10164     invoke-interface {v3, v4, v5, v1, p5}, Landroid/app/IApplicationThread;->dumpActivity(Ljava/io/FileDescriptor;Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;)V
10166     invoke-virtual {v2, p2}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;)V
10167     :try_end_6d
10168     .catchall {:try_start_59 .. :try_end_6d} :catchall_7a
10170     :try_start_6d
10171     invoke-virtual {v2}, Lcom/android/server/am/TransferPipe;->kill()V
10172     :try_end_70
10173     .catch Ljava/io/IOException; {:try_start_6d .. :try_end_70} :catch_7f
10174     .catch Landroid/os/RemoteException; {:try_start_6d .. :try_end_70} :catch_9b
10176     :cond_70
10177     :goto_70
10178     return-void
10180     :cond_71
10181     :try_start_71
10182     const-string v3, "(not running)"
10184     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10186     goto :goto_41
10188     :catchall_77
10189     move-exception v3
10191     monitor-exit p0
10192     :try_end_79
10193     .catchall {:try_start_71 .. :try_end_79} :catchall_77
10195     throw v3
10197     :catchall_7a
10198     move-exception v3
10200     :try_start_7b
10201     invoke-virtual {v2}, Lcom/android/server/am/TransferPipe;->kill()V
10203     throw v3
10204     :try_end_7f
10205     .catch Ljava/io/IOException; {:try_start_7b .. :try_end_7f} :catch_7f
10206     .catch Landroid/os/RemoteException; {:try_start_7b .. :try_end_7f} :catch_9b
10208     :catch_7f
10209     move-exception v0
10211     new-instance v3, Ljava/lang/StringBuilder;
10213     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
10215     invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10217     move-result-object v3
10219     const-string v4, "Failure while dumping the activity: "
10221     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10223     move-result-object v3
10225     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
10227     move-result-object v3
10229     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10231     move-result-object v3
10233     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10235     goto :goto_70
10237     :catch_9b
10238     move-exception v0
10240     new-instance v3, Ljava/lang/StringBuilder;
10242     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
10244     invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10246     move-result-object v3
10248     const-string v4, "Got a RemoteException while dumping the activity"
10250     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10252     move-result-object v3
10254     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10256     move-result-object v3
10258     invoke-virtual {p3, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10260     goto :goto_70
10261 .end method
10263 .method private static final dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
10264     .registers 22
10266     const/4 v6, 0x0
10268     const/4 v7, 0x0
10270     new-instance v10, Ljava/lang/StringBuilder;
10272     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
10274     move-object/from16 v0, p3
10276     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10278     move-result-object v10
10280     const-string v11, "      "
10282     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10284     move-result-object v10
10286     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10288     move-result-object v5
10290     const/4 v10, 0x0
10292     new-array v1, v10, [Ljava/lang/String;
10294     invoke-interface {p2}, Ljava/util/List;->size()I
10296     move-result v10
10298     add-int/lit8 v4, v10, -0x1
10300     :goto_20
10301     if-ltz v4, :cond_146
10303     invoke-interface {p2, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
10305     move-result-object v8
10307     check-cast v8, Lcom/android/server/am/ActivityRecord;
10309     if-eqz p8, :cond_37
10311     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
10313     move-object/from16 v0, p8
10315     invoke-virtual {v0, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
10317     move-result v10
10319     if-nez v10, :cond_37
10321     :cond_34
10322     :goto_34
10323     add-int/lit8 v4, v4, -0x1
10325     goto :goto_20
10327     :cond_37
10328     if-nez p6, :cond_cf
10330     if-nez p5, :cond_41
10332     invoke-virtual {v8}, Lcom/android/server/am/ActivityRecord;->isInHistory()Z
10334     move-result v10
10336     if-nez v10, :cond_cf
10338     :cond_41
10339     const/4 v3, 0x1
10341     :goto_42
10342     if-eqz v7, :cond_4a
10344     const-string v10, " "
10346     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10348     const/4 v7, 0x0
10350     :cond_4a
10351     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
10353     if-eq v6, v10, :cond_79
10355     iget-object v6, v8, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
10357     move-object/from16 v0, p3
10359     invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10361     if-eqz v3, :cond_d2
10363     const-string v10, "* "
10365     :goto_59
10366     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10368     invoke-virtual {p1, v6}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
10370     if-eqz v3, :cond_d5
10372     new-instance v10, Ljava/lang/StringBuilder;
10374     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
10376     move-object/from16 v0, p3
10378     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10380     move-result-object v10
10382     const-string v11, "  "
10384     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10386     move-result-object v10
10388     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10390     move-result-object v10
10392     invoke-virtual {v6, p1, v10}, Lcom/android/server/am/TaskRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
10394     :cond_79
10395     :goto_79
10396     move-object/from16 v0, p3
10398     invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10400     if-eqz v3, :cond_ef
10402     const-string v10, "  * "
10404     :goto_82
10405     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10407     move-object/from16 v0, p4
10409     invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10411     const-string v10, " #"
10413     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10415     invoke-virtual {p1, v4}, Ljava/io/PrintWriter;->print(I)V
10417     const-string v10, ": "
10419     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10421     invoke-virtual {p1, v8}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
10423     if-eqz v3, :cond_f2
10425     invoke-virtual {v8, p1, v5}, Lcom/android/server/am/ActivityRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
10427     :cond_9f
10428     :goto_9f
10429     if-eqz p7, :cond_34
10431     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10433     if-eqz v10, :cond_34
10435     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10437     iget-object v10, v10, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
10439     if-eqz v10, :cond_34
10441     invoke-virtual {p1}, Ljava/io/PrintWriter;->flush()V
10443     :try_start_ae
10444     new-instance v9, Lcom/android/server/am/TransferPipe;
10446     invoke-direct {v9}, Lcom/android/server/am/TransferPipe;-><init>()V
10447     :try_end_b3
10448     .catch Ljava/io/IOException; {:try_start_ae .. :try_end_b3} :catch_112
10449     .catch Landroid/os/RemoteException; {:try_start_ae .. :try_end_b3} :catch_12e
10451     :try_start_b3
10452     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10454     iget-object v10, v10, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
10456     invoke-virtual {v9}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
10458     move-result-object v11
10460     invoke-virtual {v11}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
10462     move-result-object v11
10464     iget-object v12, v8, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
10466     invoke-interface {v10, v11, v12, v5, v1}, Landroid/app/IApplicationThread;->dumpActivity(Ljava/io/FileDescriptor;Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;)V
10468     const-wide/16 v10, 0x7d0
10470     invoke-virtual {v9, p0, v10, v11}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;J)V
10471     :try_end_c9
10472     .catchall {:try_start_b3 .. :try_end_c9} :catchall_10d
10474     :try_start_c9
10475     invoke-virtual {v9}, Lcom/android/server/am/TransferPipe;->kill()V
10476     :try_end_cc
10477     .catch Ljava/io/IOException; {:try_start_c9 .. :try_end_cc} :catch_112
10478     .catch Landroid/os/RemoteException; {:try_start_c9 .. :try_end_cc} :catch_12e
10480     :goto_cc
10481     const/4 v7, 0x1
10483     goto/16 :goto_34
10485     :cond_cf
10486     const/4 v3, 0x0
10488     goto/16 :goto_42
10490     :cond_d2
10491     const-string v10, "  "
10493     goto :goto_59
10495     :cond_d5
10496     if-eqz p5, :cond_79
10498     iget-object v10, v6, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
10500     if-eqz v10, :cond_79
10502     move-object/from16 v0, p3
10504     invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10506     const-string v10, "  "
10508     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10510     iget-object v10, v6, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
10512     invoke-virtual {v10}, Landroid/content/Intent;->toInsecureStringWithClip()Ljava/lang/String;
10514     move-result-object v10
10516     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10518     goto :goto_79
10520     :cond_ef
10521     const-string v10, "    "
10523     goto :goto_82
10525     :cond_f2
10526     if-eqz p5, :cond_9f
10528     invoke-virtual {p1, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10530     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
10532     invoke-virtual {v10}, Landroid/content/Intent;->toInsecureString()Ljava/lang/String;
10534     move-result-object v10
10536     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10538     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10540     if-eqz v10, :cond_9f
10542     invoke-virtual {p1, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10544     iget-object v10, v8, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
10546     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
10548     goto :goto_9f
10550     :catchall_10d
10551     move-exception v10
10553     :try_start_10e
10554     invoke-virtual {v9}, Lcom/android/server/am/TransferPipe;->kill()V
10556     throw v10
10557     :try_end_112
10558     .catch Ljava/io/IOException; {:try_start_10e .. :try_end_112} :catch_112
10559     .catch Landroid/os/RemoteException; {:try_start_10e .. :try_end_112} :catch_12e
10561     :catch_112
10562     move-exception v2
10564     new-instance v10, Ljava/lang/StringBuilder;
10566     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
10568     invoke-virtual {v10, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10570     move-result-object v10
10572     const-string v11, "Failure while dumping the activity: "
10574     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10576     move-result-object v10
10578     invoke-virtual {v10, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
10580     move-result-object v10
10582     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10584     move-result-object v10
10586     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10588     goto :goto_cc
10590     :catch_12e
10591     move-exception v2
10593     new-instance v10, Ljava/lang/StringBuilder;
10595     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
10597     invoke-virtual {v10, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10599     move-result-object v10
10601     const-string v11, "Got a RemoteException while dumping the activity"
10603     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10605     move-result-object v10
10607     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10609     move-result-object v10
10611     invoke-virtual {p1, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10613     goto :goto_cc
10615     :cond_146
10616     return-void
10617 .end method
10619 .method static final dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
10620     .registers 12
10621     .annotation system Ldalvik/annotation/Signature;
10622         value = {
10623             "(",
10624             "Ljava/io/PrintWriter;",
10625             "Ljava/lang/String;",
10626             "Ljava/util/ArrayList",
10627             "<",
10628             "Lcom/android/server/am/ActivityManagerService$MemItem;",
10629             ">;Z)V"
10630         }
10631     .end annotation
10633     const/4 v7, 0x1
10635     if-eqz p3, :cond_b
10637     new-instance v2, Lcom/android/server/am/ActivityManagerService$15;
10639     invoke-direct {v2}, Lcom/android/server/am/ActivityManagerService$15;-><init>()V
10641     invoke-static {p2, v2}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
10643     :cond_b
10644     const/4 v0, 0x0
10646     :goto_c
10647     invoke-virtual {p2}, Ljava/util/ArrayList;->size()I
10649     move-result v2
10651     if-ge v0, v2, :cond_4f
10653     invoke-virtual {p2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
10655     move-result-object v1
10657     check-cast v1, Lcom/android/server/am/ActivityManagerService$MemItem;
10659     invoke-virtual {p0, p1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
10661     const-string v2, "%7d kB: "
10663     new-array v3, v7, [Ljava/lang/Object;
10665     const/4 v4, 0x0
10667     iget-wide v5, v1, Lcom/android/server/am/ActivityManagerService$MemItem;->pss:J
10669     invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
10671     move-result-object v5
10673     aput-object v5, v3, v4
10675     invoke-virtual {p0, v2, v3}, Ljava/io/PrintWriter;->printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;
10677     iget-object v2, v1, Lcom/android/server/am/ActivityManagerService$MemItem;->label:Ljava/lang/String;
10679     invoke-virtual {p0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10681     iget-object v2, v1, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
10683     if-eqz v2, :cond_4c
10685     new-instance v2, Ljava/lang/StringBuilder;
10687     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
10689     invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10691     move-result-object v2
10693     const-string v3, "           "
10695     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
10697     move-result-object v2
10699     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
10701     move-result-object v2
10703     iget-object v3, v1, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
10705     invoke-static {p0, v2, v3, v7}, Lcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
10707     :cond_4c
10708     add-int/lit8 v0, v0, 0x1
10710     goto :goto_c
10712     :cond_4f
10713     return-void
10714 .end method
10716 .method private static final dumpProcessList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
10717     .registers 15
10719     const/4 v2, 0x0
10721     invoke-interface {p2}, Ljava/util/List;->size()I
10723     move-result v4
10725     add-int/lit8 v0, v4, -0x1
10727     move v1, v0
10729     :goto_8
10730     if-ltz v1, :cond_4d
10732     invoke-interface {p2, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
10734     move-result-object v3
10736     check-cast v3, Lcom/android/server/am/ProcessRecord;
10738     if-eqz p6, :cond_1f
10740     iget-object v4, v3, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
10742     iget-object v4, v4, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
10744     invoke-virtual {p6, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
10746     move-result v4
10748     if-nez v4, :cond_1f
10750     :cond_1c
10751     :goto_1c
10752     add-int/lit8 v1, v1, -0x1
10754     goto :goto_8
10756     :cond_1f
10757     const-string v5, "%s%s #%2d: %s"
10759     const/4 v4, 0x4
10761     new-array v6, v4, [Ljava/lang/Object;
10763     const/4 v4, 0x0
10765     aput-object p3, v6, v4
10767     const/4 v7, 0x1
10769     iget-boolean v4, v3, Lcom/android/server/am/ProcessRecord;->persistent:Z
10771     if-eqz v4, :cond_4b
10773     move-object v4, p5
10775     :goto_2d
10776     aput-object v4, v6, v7
10778     const/4 v4, 0x2
10780     invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
10782     move-result-object v7
10784     aput-object v7, v6, v4
10786     const/4 v4, 0x3
10788     invoke-virtual {v3}, Lcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;
10790     move-result-object v7
10792     aput-object v7, v6, v4
10794     invoke-static {v5, v6}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
10796     move-result-object v4
10798     invoke-virtual {p0, v4}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
10800     iget-boolean v4, v3, Lcom/android/server/am/ProcessRecord;->persistent:Z
10802     if-eqz v4, :cond_1c
10804     add-int/lit8 v2, v2, 0x1
10806     goto :goto_1c
10808     :cond_4b
10809     move-object v4, p4
10811     goto :goto_2d
10813     :cond_4d
10814     return v2
10815 .end method
10817 .method private static final dumpProcessOomList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Z
10818     .registers 36
10819     .annotation system Ldalvik/annotation/Signature;
10820         value = {
10821             "(",
10822             "Ljava/io/PrintWriter;",
10823             "Lcom/android/server/am/ActivityManagerService;",
10824             "Ljava/util/List",
10825             "<",
10826             "Lcom/android/server/am/ProcessRecord;",
10827             ">;",
10828             "Ljava/lang/String;",
10829             "Ljava/lang/String;",
10830             "Ljava/lang/String;",
10831             "Z",
10832             "Ljava/lang/String;",
10833             ")Z"
10834         }
10835     .end annotation
10837     new-instance v10, Ljava/util/ArrayList;
10839     invoke-interface/range {p2 .. p2}, Ljava/util/List;->size()I
10841     move-result v23
10843     move/from16 v0, v23
10845     invoke-direct {v10, v0}, Ljava/util/ArrayList;-><init>(I)V
10847     const/4 v9, 0x0
10849     :goto_c
10850     invoke-interface/range {p2 .. p2}, Ljava/util/List;->size()I
10852     move-result v23
10854     move/from16 v0, v23
10856     if-ge v9, v0, :cond_4a
10858     move-object/from16 v0, p2
10860     invoke-interface {v0, v9}, Ljava/util/List;->get(I)Ljava/lang/Object;
10862     move-result-object v12
10864     check-cast v12, Lcom/android/server/am/ProcessRecord;
10866     if-eqz p7, :cond_35
10868     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
10870     move-object/from16 v23, v0
10872     move-object/from16 v0, v23
10874     iget-object v0, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
10876     move-object/from16 v23, v0
10878     move-object/from16 v0, p7
10880     move-object/from16 v1, v23
10882     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
10884     move-result v23
10886     if-nez v23, :cond_35
10888     :goto_32
10889     add-int/lit8 v9, v9, 0x1
10891     goto :goto_c
10893     :cond_35
10894     new-instance v23, Landroid/util/Pair;
10896     move-object/from16 v0, p2
10898     invoke-interface {v0, v9}, Ljava/util/List;->get(I)Ljava/lang/Object;
10900     move-result-object v24
10902     invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
10904     move-result-object v25
10906     invoke-direct/range {v23 .. v25}, Landroid/util/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
10908     move-object/from16 v0, v23
10910     invoke-virtual {v10, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
10912     goto :goto_32
10914     :cond_4a
10915     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
10917     move-result v23
10919     if-gtz v23, :cond_53
10921     const/16 v23, 0x0
10923     :goto_52
10924     return v23
10926     :cond_53
10927     new-instance v3, Lcom/android/server/am/ActivityManagerService$14;
10929     invoke-direct {v3}, Lcom/android/server/am/ActivityManagerService$14;-><init>()V
10931     invoke-static {v10, v3}, Ljava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
10933     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
10935     move-result-wide v4
10937     move-object/from16 v0, p1
10939     iget-wide v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
10941     move-wide/from16 v23, v0
10943     sub-long v13, v4, v23
10945     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
10947     move-result-wide v6
10949     move-object/from16 v0, p1
10951     iget-wide v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
10953     move-wide/from16 v23, v0
10955     sub-long v19, v6, v23
10957     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
10959     move-result v23
10961     add-int/lit8 v9, v23, -0x1
10963     :goto_79
10964     if-ltz v9, :cond_531
10966     invoke-virtual {v10, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
10968     move-result-object v23
10970     check-cast v23, Landroid/util/Pair;
10972     move-object/from16 v0, v23
10974     iget-object v12, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
10976     check-cast v12, Lcom/android/server/am/ProcessRecord;
10978     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
10980     move/from16 v23, v0
10982     sget v24, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
10984     move/from16 v0, v23
10986     move/from16 v1, v24
10988     if-lt v0, v1, :cond_398
10990     const-string v23, "bak"
10992     const-string v24, "  "
10994     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
10996     move/from16 v25, v0
10998     sget v26, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
11000     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11002     move-result-object v11
11004     :goto_a1
11005     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
11007     move/from16 v23, v0
11009     packed-switch v23, :pswitch_data_536
11011     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
11013     move/from16 v23, v0
11015     invoke-static/range {v23 .. v23}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
11017     move-result-object v15
11019     :goto_b0
11020     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->foregroundActivities:Z
11022     move/from16 v23, v0
11024     if-eqz v23, :cond_4d8
11026     const-string v8, "A"
11028     :goto_b8
11029     const-string v24, "%s%s #%2d: adj=%s/%s%s trm=%2d %s (%s)"
11031     const/16 v23, 0x9
11033     move/from16 v0, v23
11035     new-array v0, v0, [Ljava/lang/Object;
11037     move-object/from16 v25, v0
11039     const/16 v23, 0x0
11041     aput-object p3, v25, v23
11043     const/16 v26, 0x1
11045     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->persistent:Z
11047     move/from16 v23, v0
11049     if-eqz v23, :cond_4e6
11051     move-object/from16 v23, p5
11053     :goto_d0
11054     aput-object v23, v25, v26
11056     const/16 v26, 0x2
11058     invoke-interface/range {p2 .. p2}, Ljava/util/List;->size()I
11060     move-result v23
11062     add-int/lit8 v27, v23, -0x1
11064     invoke-virtual {v10, v9}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
11066     move-result-object v23
11068     check-cast v23, Landroid/util/Pair;
11070     move-object/from16 v0, v23
11072     iget-object v0, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
11074     move-object/from16 v23, v0
11076     check-cast v23, Ljava/lang/Integer;
11078     invoke-virtual/range {v23 .. v23}, Ljava/lang/Integer;->intValue()I
11080     move-result v23
11082     sub-int v23, v27, v23
11084     invoke-static/range {v23 .. v23}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
11086     move-result-object v23
11088     aput-object v23, v25, v26
11090     const/16 v23, 0x3
11092     aput-object v11, v25, v23
11094     const/16 v23, 0x4
11096     aput-object v15, v25, v23
11098     const/16 v23, 0x5
11100     aput-object v8, v25, v23
11102     const/16 v23, 0x6
11104     iget v0, v12, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
11106     move/from16 v26, v0
11108     invoke-static/range {v26 .. v26}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
11110     move-result-object v26
11112     aput-object v26, v25, v23
11114     const/16 v23, 0x7
11116     invoke-virtual {v12}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
11118     move-result-object v26
11120     aput-object v26, v25, v23
11122     const/16 v23, 0x8
11124     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjType:Ljava/lang/String;
11126     move-object/from16 v26, v0
11128     aput-object v26, v25, v23
11130     invoke-static/range {v24 .. v25}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
11132     move-result-object v23
11134     move-object/from16 v0, p0
11136     move-object/from16 v1, v23
11138     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11140     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
11142     move-object/from16 v23, v0
11144     if-nez v23, :cond_133
11146     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
11148     move-object/from16 v23, v0
11150     if-eqz v23, :cond_198
11152     :cond_133
11153     move-object/from16 v0, p0
11155     move-object/from16 v1, p3
11157     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11159     const-string v23, "    "
11161     move-object/from16 v0, p0
11163     move-object/from16 v1, v23
11165     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11167     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
11169     move-object/from16 v23, v0
11171     move-object/from16 v0, v23
11173     instance-of v0, v0, Landroid/content/ComponentName;
11175     move/from16 v23, v0
11177     if-eqz v23, :cond_4ea
11179     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
11181     move-object/from16 v23, v0
11183     check-cast v23, Landroid/content/ComponentName;
11185     invoke-virtual/range {v23 .. v23}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
11187     move-result-object v23
11189     move-object/from16 v0, p0
11191     move-object/from16 v1, v23
11193     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11195     :goto_160
11196     const-string v23, "<="
11198     move-object/from16 v0, p0
11200     move-object/from16 v1, v23
11202     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11204     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
11206     move-object/from16 v23, v0
11208     move-object/from16 v0, v23
11210     instance-of v0, v0, Lcom/android/server/am/ProcessRecord;
11212     move/from16 v23, v0
11214     if-eqz v23, :cond_50c
11216     const-string v23, "Proc{"
11218     move-object/from16 v0, p0
11220     move-object/from16 v1, v23
11222     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11224     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
11226     move-object/from16 v23, v0
11228     check-cast v23, Lcom/android/server/am/ProcessRecord;
11230     invoke-virtual/range {v23 .. v23}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
11232     move-result-object v23
11234     move-object/from16 v0, p0
11236     move-object/from16 v1, v23
11238     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11240     const-string v23, "}"
11242     move-object/from16 v0, p0
11244     move-object/from16 v1, v23
11246     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11248     :cond_198
11249     :goto_198
11250     if-eqz p6, :cond_394
11252     move-object/from16 v0, p0
11254     move-object/from16 v1, p3
11256     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11258     const-string v23, "    "
11260     move-object/from16 v0, p0
11262     move-object/from16 v1, v23
11264     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11266     const-string v23, "oom: max="
11268     move-object/from16 v0, p0
11270     move-object/from16 v1, v23
11272     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11274     iget v0, v12, Lcom/android/server/am/ProcessRecord;->maxAdj:I
11276     move/from16 v23, v0
11278     move-object/from16 v0, p0
11280     move/from16 v1, v23
11282     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11284     const-string v23, " hidden="
11286     move-object/from16 v0, p0
11288     move-object/from16 v1, v23
11290     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11292     iget v0, v12, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
11294     move/from16 v23, v0
11296     move-object/from16 v0, p0
11298     move/from16 v1, v23
11300     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11302     const-string v23, " client="
11304     move-object/from16 v0, p0
11306     move-object/from16 v1, v23
11308     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11310     iget v0, v12, Lcom/android/server/am/ProcessRecord;->clientHiddenAdj:I
11312     move/from16 v23, v0
11314     move-object/from16 v0, p0
11316     move/from16 v1, v23
11318     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11320     const-string v23, " empty="
11322     move-object/from16 v0, p0
11324     move-object/from16 v1, v23
11326     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11328     iget v0, v12, Lcom/android/server/am/ProcessRecord;->emptyAdj:I
11330     move/from16 v23, v0
11332     move-object/from16 v0, p0
11334     move/from16 v1, v23
11336     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11338     const-string v23, " curRaw="
11340     move-object/from16 v0, p0
11342     move-object/from16 v1, v23
11344     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11346     iget v0, v12, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
11348     move/from16 v23, v0
11350     move-object/from16 v0, p0
11352     move/from16 v1, v23
11354     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11356     const-string v23, " setRaw="
11358     move-object/from16 v0, p0
11360     move-object/from16 v1, v23
11362     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11364     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setRawAdj:I
11366     move/from16 v23, v0
11368     move-object/from16 v0, p0
11370     move/from16 v1, v23
11372     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11374     const-string v23, " cur="
11376     move-object/from16 v0, p0
11378     move-object/from16 v1, v23
11380     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11382     iget v0, v12, Lcom/android/server/am/ProcessRecord;->curAdj:I
11384     move/from16 v23, v0
11386     move-object/from16 v0, p0
11388     move/from16 v1, v23
11390     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
11392     const-string v23, " set="
11394     move-object/from16 v0, p0
11396     move-object/from16 v1, v23
11398     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11400     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11402     move/from16 v23, v0
11404     move-object/from16 v0, p0
11406     move/from16 v1, v23
11408     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(I)V
11410     move-object/from16 v0, p0
11412     move-object/from16 v1, p3
11414     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11416     const-string v23, "    "
11418     move-object/from16 v0, p0
11420     move-object/from16 v1, v23
11422     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11424     const-string v23, "keeping="
11426     move-object/from16 v0, p0
11428     move-object/from16 v1, v23
11430     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11432     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->keeping:Z
11434     move/from16 v23, v0
11436     move-object/from16 v0, p0
11438     move/from16 v1, v23
11440     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Z)V
11442     const-string v23, " hidden="
11444     move-object/from16 v0, p0
11446     move-object/from16 v1, v23
11448     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11450     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->hidden:Z
11452     move/from16 v23, v0
11454     move-object/from16 v0, p0
11456     move/from16 v1, v23
11458     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Z)V
11460     const-string v23, " empty="
11462     move-object/from16 v0, p0
11464     move-object/from16 v1, v23
11466     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11468     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->empty:Z
11470     move/from16 v23, v0
11472     move-object/from16 v0, p0
11474     move/from16 v1, v23
11476     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Z)V
11478     const-string v23, " hasAboveClient="
11480     move-object/from16 v0, p0
11482     move-object/from16 v1, v23
11484     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11486     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->hasAboveClient:Z
11488     move/from16 v23, v0
11490     move-object/from16 v0, p0
11492     move/from16 v1, v23
11494     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Z)V
11496     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->keeping:Z
11498     move/from16 v23, v0
11500     if-nez v23, :cond_394
11502     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
11504     move-wide/from16 v23, v0
11506     const-wide/16 v25, 0x0
11508     cmp-long v23, v23, v25
11510     if-eqz v23, :cond_331
11512     move-object/from16 v0, p1
11514     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
11516     move-object/from16 v23, v0
11518     invoke-virtual/range {v23 .. v23}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
11520     move-result-object v16
11522     monitor-enter v16
11524     :try_start_2c5
11525     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
11527     move-object/from16 v23, v0
11529     move-object/from16 v0, v23
11531     iget v0, v0, Landroid/content/pm/ApplicationInfo;->uid:I
11533     move/from16 v23, v0
11535     iget v0, v12, Lcom/android/server/am/ProcessRecord;->pid:I
11537     move/from16 v24, v0
11539     move-object/from16 v0, v16
11541     move/from16 v1, v23
11543     move/from16 v2, v24
11545     invoke-virtual {v0, v1, v2, v4, v5}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessWakeTime(IIJ)J
11547     move-result-wide v21
11549     monitor-exit v16
11550     :try_end_2de
11551     .catchall {:try_start_2c5 .. :try_end_2de} :catchall_52e
11553     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
11555     move-wide/from16 v23, v0
11557     sub-long v17, v21, v23
11559     move-object/from16 v0, p0
11561     move-object/from16 v1, p3
11563     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11565     const-string v23, "    "
11567     move-object/from16 v0, p0
11569     move-object/from16 v1, v23
11571     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11573     const-string v23, "keep awake over "
11575     move-object/from16 v0, p0
11577     move-object/from16 v1, v23
11579     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11581     move-object/from16 v0, p0
11583     invoke-static {v13, v14, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
11585     const-string v23, " used "
11587     move-object/from16 v0, p0
11589     move-object/from16 v1, v23
11591     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11593     move-wide/from16 v0, v17
11595     move-object/from16 v2, p0
11597     invoke-static {v0, v1, v2}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
11599     const-string v23, " ("
11601     move-object/from16 v0, p0
11603     move-object/from16 v1, v23
11605     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11607     const-wide/16 v23, 0x64
11609     mul-long v23, v23, v17
11611     div-long v23, v23, v13
11613     move-object/from16 v0, p0
11615     move-wide/from16 v1, v23
11617     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
11619     const-string v23, "%)"
11621     move-object/from16 v0, p0
11623     move-object/from16 v1, v23
11625     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11627     :cond_331
11628     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
11630     move-wide/from16 v23, v0
11632     const-wide/16 v25, 0x0
11634     cmp-long v23, v23, v25
11636     if-eqz v23, :cond_394
11638     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
11640     move-wide/from16 v23, v0
11642     iget-wide v0, v12, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
11644     move-wide/from16 v25, v0
11646     sub-long v17, v23, v25
11648     move-object/from16 v0, p0
11650     move-object/from16 v1, p3
11652     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11654     const-string v23, "    "
11656     move-object/from16 v0, p0
11658     move-object/from16 v1, v23
11660     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11662     const-string v23, "run cpu over "
11664     move-object/from16 v0, p0
11666     move-object/from16 v1, v23
11668     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11670     move-wide/from16 v0, v19
11672     move-object/from16 v2, p0
11674     invoke-static {v0, v1, v2}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
11676     const-string v23, " used "
11678     move-object/from16 v0, p0
11680     move-object/from16 v1, v23
11682     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11684     move-wide/from16 v0, v17
11686     move-object/from16 v2, p0
11688     invoke-static {v0, v1, v2}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
11690     const-string v23, " ("
11692     move-object/from16 v0, p0
11694     move-object/from16 v1, v23
11696     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
11698     const-wide/16 v23, 0x64
11700     mul-long v23, v23, v17
11702     div-long v23, v23, v19
11704     move-object/from16 v0, p0
11706     move-wide/from16 v1, v23
11708     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
11710     const-string v23, "%)"
11712     move-object/from16 v0, p0
11714     move-object/from16 v1, v23
11716     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
11718     :cond_394
11719     add-int/lit8 v9, v9, -0x1
11721     goto/16 :goto_79
11723     :cond_398
11724     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11726     move/from16 v23, v0
11728     const/16 v24, 0x8
11730     move/from16 v0, v23
11732     move/from16 v1, v24
11734     if-lt v0, v1, :cond_3b4
11736     const-string v23, "svcb "
11738     const/16 v24, 0x0
11740     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11742     move/from16 v25, v0
11744     const/16 v26, 0x8
11746     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11748     move-result-object v11
11750     goto/16 :goto_a1
11752     :cond_3b4
11753     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11755     move/from16 v23, v0
11757     const/16 v24, 0x7
11759     move/from16 v0, v23
11761     move/from16 v1, v24
11763     if-lt v0, v1, :cond_3d0
11765     const-string v23, "prev "
11767     const/16 v24, 0x0
11769     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11771     move/from16 v25, v0
11773     const/16 v26, 0x7
11775     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11777     move-result-object v11
11779     goto/16 :goto_a1
11781     :cond_3d0
11782     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11784     move/from16 v23, v0
11786     const/16 v24, 0x6
11788     move/from16 v0, v23
11790     move/from16 v1, v24
11792     if-lt v0, v1, :cond_3ec
11794     const-string v23, "home "
11796     const/16 v24, 0x0
11798     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11800     move/from16 v25, v0
11802     const/16 v26, 0x6
11804     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11806     move-result-object v11
11808     goto/16 :goto_a1
11810     :cond_3ec
11811     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11813     move/from16 v23, v0
11815     const/16 v24, 0x5
11817     move/from16 v0, v23
11819     move/from16 v1, v24
11821     if-lt v0, v1, :cond_408
11823     const-string v23, "svc  "
11825     const/16 v24, 0x0
11827     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11829     move/from16 v25, v0
11831     const/16 v26, 0x5
11833     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11835     move-result-object v11
11837     goto/16 :goto_a1
11839     :cond_408
11840     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11842     move/from16 v23, v0
11844     const/16 v24, 0x4
11846     move/from16 v0, v23
11848     move/from16 v1, v24
11850     if-lt v0, v1, :cond_424
11852     const-string v23, "bkup "
11854     const/16 v24, 0x0
11856     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11858     move/from16 v25, v0
11860     const/16 v26, 0x4
11862     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11864     move-result-object v11
11866     goto/16 :goto_a1
11868     :cond_424
11869     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11871     move/from16 v23, v0
11873     const/16 v24, 0x3
11875     move/from16 v0, v23
11877     move/from16 v1, v24
11879     if-lt v0, v1, :cond_440
11881     const-string v23, "hvy  "
11883     const/16 v24, 0x0
11885     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11887     move/from16 v25, v0
11889     const/16 v26, 0x3
11891     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11893     move-result-object v11
11895     goto/16 :goto_a1
11897     :cond_440
11898     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11900     move/from16 v23, v0
11902     const/16 v24, 0x2
11904     move/from16 v0, v23
11906     move/from16 v1, v24
11908     if-lt v0, v1, :cond_45c
11910     const-string v23, "prcp "
11912     const/16 v24, 0x0
11914     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11916     move/from16 v25, v0
11918     const/16 v26, 0x2
11920     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11922     move-result-object v11
11924     goto/16 :goto_a1
11926     :cond_45c
11927     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11929     move/from16 v23, v0
11931     const/16 v24, 0x1
11933     move/from16 v0, v23
11935     move/from16 v1, v24
11937     if-lt v0, v1, :cond_478
11939     const-string v23, "vis  "
11941     const/16 v24, 0x0
11943     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11945     move/from16 v25, v0
11947     const/16 v26, 0x1
11949     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11951     move-result-object v11
11953     goto/16 :goto_a1
11955     :cond_478
11956     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11958     move/from16 v23, v0
11960     if-ltz v23, :cond_48e
11962     const-string v23, "fore "
11964     const/16 v24, 0x0
11966     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11968     move/from16 v25, v0
11970     const/16 v26, 0x0
11972     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
11974     move-result-object v11
11976     goto/16 :goto_a1
11978     :cond_48e
11979     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11981     move/from16 v23, v0
11983     const/16 v24, -0xc
11985     move/from16 v0, v23
11987     move/from16 v1, v24
11989     if-lt v0, v1, :cond_4aa
11991     const-string v23, "pers "
11993     const/16 v24, 0x0
11995     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
11997     move/from16 v25, v0
11999     const/16 v26, -0xc
12001     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12003     move-result-object v11
12005     goto/16 :goto_a1
12007     :cond_4aa
12008     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12010     move/from16 v23, v0
12012     const/16 v24, -0x10
12014     move/from16 v0, v23
12016     move/from16 v1, v24
12018     if-lt v0, v1, :cond_4c6
12020     const-string v23, "sys  "
12022     const/16 v24, 0x0
12024     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12026     move/from16 v25, v0
12028     const/16 v26, -0x10
12030     invoke-static/range {v23 .. v26}, Lcom/android/server/am/ActivityManagerService;->buildOomTag(Ljava/lang/String;Ljava/lang/String;II)Ljava/lang/String;
12032     move-result-object v11
12034     goto/16 :goto_a1
12036     :cond_4c6
12037     iget v0, v12, Lcom/android/server/am/ProcessRecord;->setAdj:I
12039     move/from16 v23, v0
12041     invoke-static/range {v23 .. v23}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
12043     move-result-object v11
12045     goto/16 :goto_a1
12047     :pswitch_4d0
12048     const-string v15, "B"
12050     goto/16 :goto_b0
12052     :pswitch_4d4
12053     const-string v15, "F"
12055     goto/16 :goto_b0
12057     :cond_4d8
12058     iget-boolean v0, v12, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
12060     move/from16 v23, v0
12062     if-eqz v23, :cond_4e2
12064     const-string v8, "S"
12066     goto/16 :goto_b8
12068     :cond_4e2
12069     const-string v8, " "
12071     goto/16 :goto_b8
12073     :cond_4e6
12074     move-object/from16 v23, p4
12076     goto/16 :goto_d0
12078     :cond_4ea
12079     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
12081     move-object/from16 v23, v0
12083     if-eqz v23, :cond_501
12085     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
12087     move-object/from16 v23, v0
12089     invoke-virtual/range {v23 .. v23}, Ljava/lang/Object;->toString()Ljava/lang/String;
12091     move-result-object v23
12093     move-object/from16 v0, p0
12095     move-object/from16 v1, v23
12097     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12099     goto/16 :goto_160
12101     :cond_501
12102     const-string v23, "{null}"
12104     move-object/from16 v0, p0
12106     move-object/from16 v1, v23
12108     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
12110     goto/16 :goto_160
12112     :cond_50c
12113     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
12115     move-object/from16 v23, v0
12117     if-eqz v23, :cond_523
12119     iget-object v0, v12, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
12121     move-object/from16 v23, v0
12123     invoke-virtual/range {v23 .. v23}, Ljava/lang/Object;->toString()Ljava/lang/String;
12125     move-result-object v23
12127     move-object/from16 v0, p0
12129     move-object/from16 v1, v23
12131     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
12133     goto/16 :goto_198
12135     :cond_523
12136     const-string v23, "{null}"
12138     move-object/from16 v0, p0
12140     move-object/from16 v1, v23
12142     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
12144     goto/16 :goto_198
12146     :catchall_52e
12147     move-exception v23
12149     :try_start_52f
12150     monitor-exit v16
12151     :try_end_530
12152     .catchall {:try_start_52f .. :try_end_530} :catchall_52e
12154     throw v23
12156     :cond_531
12157     const/16 v23, 0x1
12159     goto/16 :goto_52
12161     nop
12163     :pswitch_data_536
12164     .packed-switch -0x1
12165         :pswitch_4d4
12166         :pswitch_4d0
12167     .end packed-switch
12168 .end method
12170 .method public static dumpStackTraces(ZLjava/util/ArrayList;Lcom/android/internal/os/ProcessStats;Landroid/util/SparseArray;[Ljava/lang/String;)Ljava/io/File;
12171     .registers 14
12172     .annotation system Ldalvik/annotation/Signature;
12173         value = {
12174             "(Z",
12175             "Ljava/util/ArrayList",
12176             "<",
12177             "Ljava/lang/Integer;",
12178             ">;",
12179             "Lcom/android/internal/os/ProcessStats;",
12180             "Landroid/util/SparseArray",
12181             "<",
12182             "Ljava/lang/Boolean;",
12183             ">;[",
12184             "Ljava/lang/String;",
12185             ")",
12186             "Ljava/io/File;"
12187         }
12188     .end annotation
12190     const/4 v4, 0x0
12192     const-string v5, "dalvik.vm.stack-trace-file"
12194     invoke-static {v5, v4}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
12196     move-result-object v3
12198     if-eqz v3, :cond_f
12200     invoke-virtual {v3}, Ljava/lang/String;->length()I
12202     move-result v5
12204     if-nez v5, :cond_11
12206     :cond_f
12207     move-object v2, v4
12209     :goto_10
12210     return-object v2
12212     :cond_11
12213     new-instance v2, Ljava/io/File;
12215     invoke-direct {v2, v3}, Ljava/io/File;-><init>(Ljava/lang/String;)V
12217     :try_start_16
12218     invoke-virtual {v2}, Ljava/io/File;->getParentFile()Ljava/io/File;
12220     move-result-object v1
12222     invoke-virtual {v1}, Ljava/io/File;->exists()Z
12224     move-result v5
12226     if-nez v5, :cond_2b
12228     invoke-virtual {v2}, Ljava/io/File;->mkdirs()Z
12230     invoke-static {v1}, Landroid/os/SELinux;->restorecon(Ljava/io/File;)Z
12232     move-result v5
12234     if-nez v5, :cond_2b
12236     move-object v2, v4
12238     goto :goto_10
12240     :cond_2b
12241     invoke-virtual {v1}, Ljava/io/File;->getPath()Ljava/lang/String;
12243     move-result-object v5
12245     const/16 v6, 0x1fd
12247     const/4 v7, -0x1
12249     const/4 v8, -0x1
12251     invoke-static {v5, v6, v7, v8}, Landroid/os/FileUtils;->setPermissions(Ljava/lang/String;III)I
12253     if-eqz p0, :cond_41
12255     invoke-virtual {v2}, Ljava/io/File;->exists()Z
12257     move-result v5
12259     if-eqz v5, :cond_41
12261     invoke-virtual {v2}, Ljava/io/File;->delete()Z
12263     :cond_41
12264     invoke-virtual {v2}, Ljava/io/File;->createNewFile()Z
12266     invoke-virtual {v2}, Ljava/io/File;->getPath()Ljava/lang/String;
12268     move-result-object v5
12270     const/16 v6, 0x1b6
12272     const/4 v7, -0x1
12274     const/4 v8, -0x1
12276     invoke-static {v5, v6, v7, v8}, Landroid/os/FileUtils;->setPermissions(Ljava/lang/String;III)I
12277     :try_end_4f
12278     .catch Ljava/io/IOException; {:try_start_16 .. :try_end_4f} :catch_53
12280     invoke-static {v3, p1, p2, p3, p4}, Lcom/android/server/am/ActivityManagerService;->dumpStackTraces(Ljava/lang/String;Ljava/util/ArrayList;Lcom/android/internal/os/ProcessStats;Landroid/util/SparseArray;[Ljava/lang/String;)V
12282     goto :goto_10
12284     :catch_53
12285     move-exception v0
12287     const-string v5, "ActivityManager"
12289     new-instance v6, Ljava/lang/StringBuilder;
12291     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
12293     const-string v7, "Unable to prepare ANR traces file: "
12295     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12297     move-result-object v6
12299     invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12301     move-result-object v6
12303     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
12305     move-result-object v6
12307     invoke-static {v5, v6, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
12309     move-object v2, v4
12311     goto :goto_10
12312 .end method
12314 .method private static dumpStackTraces(Ljava/lang/String;Ljava/util/ArrayList;Lcom/android/internal/os/ProcessStats;Landroid/util/SparseArray;[Ljava/lang/String;)V
12315     .registers 20
12316     .annotation system Ldalvik/annotation/Signature;
12317         value = {
12318             "(",
12319             "Ljava/lang/String;",
12320             "Ljava/util/ArrayList",
12321             "<",
12322             "Ljava/lang/Integer;",
12323             ">;",
12324             "Lcom/android/internal/os/ProcessStats;",
12325             "Landroid/util/SparseArray",
12326             "<",
12327             "Ljava/lang/Boolean;",
12328             ">;[",
12329             "Ljava/lang/String;",
12330             ")V"
12331         }
12332     .end annotation
12334     new-instance v9, Lcom/android/server/am/ActivityManagerService$4;
12336     const/16 v13, 0x8
12338     invoke-direct {v9, p0, v13}, Lcom/android/server/am/ActivityManagerService$4;-><init>(Ljava/lang/String;I)V
12340     :try_start_7
12341     invoke-virtual {v9}, Landroid/os/FileObserver;->startWatching()V
12342     :try_end_a
12343     .catchall {:try_start_7 .. :try_end_a} :catchall_89
12345     if-eqz p1, :cond_36
12347     :try_start_c
12348     invoke-virtual/range {p1 .. p1}, Ljava/util/ArrayList;->size()I
12350     move-result v7
12352     const/4 v4, 0x0
12354     :goto_11
12355     if-ge v4, v7, :cond_36
12357     monitor-enter v9
12358     :try_end_14
12359     .catchall {:try_start_c .. :try_end_14} :catchall_89
12360     .catch Ljava/lang/InterruptedException; {:try_start_c .. :try_end_14} :catch_30
12362     :try_start_14
12363     move-object/from16 v0, p1
12365     invoke-virtual {v0, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
12367     move-result-object v13
12369     check-cast v13, Ljava/lang/Integer;
12371     invoke-virtual {v13}, Ljava/lang/Integer;->intValue()I
12373     move-result v13
12375     const/4 v14, 0x3
12377     invoke-static {v13, v14}, Landroid/os/Process;->sendSignal(II)V
12379     const-wide/16 v13, 0xc8
12381     invoke-virtual {v9, v13, v14}, Ljava/lang/Object;->wait(J)V
12383     monitor-exit v9
12385     add-int/lit8 v4, v4, 0x1
12387     goto :goto_11
12389     :catchall_2d
12390     move-exception v13
12392     monitor-exit v9
12393     :try_end_2f
12394     .catchall {:try_start_14 .. :try_end_2f} :catchall_2d
12396     :try_start_2f
12397     throw v13
12398     :try_end_30
12399     .catchall {:try_start_2f .. :try_end_30} :catchall_89
12400     .catch Ljava/lang/InterruptedException; {:try_start_2f .. :try_end_30} :catch_30
12402     :catch_30
12403     move-exception v3
12405     :try_start_31
12406     const-string v13, "ActivityManager"
12408     invoke-static {v13, v3}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/Throwable;)I
12410     :cond_36
12411     if-eqz p2, :cond_8e
12413     invoke-virtual/range {p2 .. p2}, Lcom/android/internal/os/ProcessStats;->init()V
12415     invoke-static {}, Ljava/lang/System;->gc()V
12417     invoke-virtual/range {p2 .. p2}, Lcom/android/internal/os/ProcessStats;->update()V
12418     :try_end_41
12419     .catchall {:try_start_31 .. :try_end_41} :catchall_89
12421     :try_start_41
12422     monitor-enter p2
12423     :try_end_42
12424     .catchall {:try_start_41 .. :try_end_42} :catchall_89
12425     .catch Ljava/lang/InterruptedException; {:try_start_41 .. :try_end_42} :catch_7d
12427     const-wide/16 v13, 0x1f4
12429     :try_start_44
12430     move-object/from16 v0, p2
12432     invoke-virtual {v0, v13, v14}, Ljava/lang/Object;->wait(J)V
12434     monitor-exit p2
12435     :try_end_4a
12436     .catchall {:try_start_44 .. :try_end_4a} :catchall_7a
12438     :goto_4a
12439     :try_start_4a
12440     invoke-virtual/range {p2 .. p2}, Lcom/android/internal/os/ProcessStats;->update()V
12442     invoke-virtual/range {p2 .. p2}, Lcom/android/internal/os/ProcessStats;->countWorkingStats()I
12444     move-result v1
12446     const/4 v8, 0x0
12448     const/4 v4, 0x0
12450     :goto_53
12451     if-ge v4, v1, :cond_8e
12453     const/4 v13, 0x5
12455     if-ge v8, v13, :cond_8e
12457     move-object/from16 v0, p2
12459     invoke-virtual {v0, v4}, Lcom/android/internal/os/ProcessStats;->getWorkingStats(I)Lcom/android/internal/os/ProcessStats$Stats;
12461     move-result-object v12
12463     iget v13, v12, Lcom/android/internal/os/ProcessStats$Stats;->pid:I
12465     move-object/from16 v0, p3
12467     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->indexOfKey(I)I
12468     :try_end_65
12469     .catchall {:try_start_4a .. :try_end_65} :catchall_89
12471     move-result v13
12473     if-ltz v13, :cond_77
12475     add-int/lit8 v8, v8, 0x1
12477     :try_start_6a
12478     monitor-enter v9
12479     :try_end_6b
12480     .catchall {:try_start_6a .. :try_end_6b} :catchall_89
12481     .catch Ljava/lang/InterruptedException; {:try_start_6a .. :try_end_6b} :catch_82
12483     :try_start_6b
12484     iget v13, v12, Lcom/android/internal/os/ProcessStats$Stats;->pid:I
12486     const/4 v14, 0x3
12488     invoke-static {v13, v14}, Landroid/os/Process;->sendSignal(II)V
12490     const-wide/16 v13, 0xc8
12492     invoke-virtual {v9, v13, v14}, Ljava/lang/Object;->wait(J)V
12494     monitor-exit v9
12495     :try_end_77
12496     .catchall {:try_start_6b .. :try_end_77} :catchall_7f
12498     :cond_77
12499     :goto_77
12500     add-int/lit8 v4, v4, 0x1
12502     goto :goto_53
12504     :catchall_7a
12505     move-exception v13
12507     :try_start_7b
12508     monitor-exit p2
12509     :try_end_7c
12510     .catchall {:try_start_7b .. :try_end_7c} :catchall_7a
12512     :try_start_7c
12513     throw v13
12514     :try_end_7d
12515     .catchall {:try_start_7c .. :try_end_7d} :catchall_89
12516     .catch Ljava/lang/InterruptedException; {:try_start_7c .. :try_end_7d} :catch_7d
12518     :catch_7d
12519     move-exception v13
12521     goto :goto_4a
12523     :catchall_7f
12524     move-exception v13
12526     :try_start_80
12527     monitor-exit v9
12528     :try_end_81
12529     .catchall {:try_start_80 .. :try_end_81} :catchall_7f
12531     :try_start_81
12532     throw v13
12533     :try_end_82
12534     .catchall {:try_start_81 .. :try_end_82} :catchall_89
12535     .catch Ljava/lang/InterruptedException; {:try_start_81 .. :try_end_82} :catch_82
12537     :catch_82
12538     move-exception v3
12540     :try_start_83
12541     const-string v13, "ActivityManager"
12543     invoke-static {v13, v3}, Landroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/Throwable;)I
12544     :try_end_88
12545     .catchall {:try_start_83 .. :try_end_88} :catchall_89
12547     goto :goto_77
12549     :catchall_89
12550     move-exception v13
12552     invoke-virtual {v9}, Landroid/os/FileObserver;->stopWatching()V
12554     throw v13
12556     :cond_8e
12557     invoke-virtual {v9}, Landroid/os/FileObserver;->stopWatching()V
12559     if-eqz p4, :cond_a6
12561     invoke-static/range {p4 .. p4}, Landroid/os/Process;->getPidsForCommands([Ljava/lang/String;)[I
12563     move-result-object v11
12565     if-eqz v11, :cond_a6
12567     move-object v2, v11
12569     array-length v6, v2
12571     const/4 v5, 0x0
12573     :goto_9c
12574     if-ge v5, v6, :cond_a6
12576     aget v10, v2, v5
12578     invoke-static {v10, p0}, Landroid/os/Debug;->dumpNativeBacktraceToFile(ILjava/lang/String;)V
12580     add-int/lit8 v5, v5, 0x1
12582     goto :goto_9c
12584     :cond_a6
12585     return-void
12586 .end method
12588 .method private fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;)V
12589     .registers 5
12591     iget v1, p1, Lcom/android/server/am/ProcessRecord;->pid:I
12593     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->pid:I
12595     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
12597     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
12599     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->uid:I
12601     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
12603     if-ne v1, p1, :cond_14
12605     iget v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
12607     or-int/lit8 v1, v1, 0x1
12609     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
12611     :cond_14
12612     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->persistent:Z
12614     if-eqz v1, :cond_1e
12616     iget v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
12618     or-int/lit8 v1, v1, 0x2
12620     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
12622     :cond_1e
12623     iget-boolean v1, p1, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
12625     if-eqz v1, :cond_28
12627     iget v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
12629     or-int/lit8 v1, v1, 0x4
12631     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I
12633     :cond_28
12634     iget v1, p1, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
12636     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->lastTrimLevel:I
12638     iget v0, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
12640     invoke-static {v0, p2}, Lcom/android/server/am/ActivityManagerService;->oomAdjToImportance(ILandroid/app/ActivityManager$RunningAppProcessInfo;)I
12642     move-result v1
12644     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->importance:I
12646     iget v1, p1, Lcom/android/server/am/ProcessRecord;->adjTypeCode:I
12648     iput v1, p2, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonCode:I
12650     return-void
12651 .end method
12653 .method private final findAffinityTaskTopLocked(ILjava/lang/String;)I
12654     .registers 10
12656     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
12658     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
12660     invoke-virtual {v5, p1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
12662     move-result-object v5
12664     check-cast v5, Lcom/android/server/am/ActivityRecord;
12666     iget-object v4, v5, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
12668     move-object v2, v4
12670     add-int/lit8 v1, p1, -0x1
12672     :goto_f
12673     if-ltz v1, :cond_2e
12675     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
12677     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
12679     invoke-virtual {v5, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
12681     move-result-object v3
12683     check-cast v3, Lcom/android/server/am/ActivityRecord;
12685     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
12687     if-eq v5, v2, :cond_2b
12689     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
12691     iget-object v5, v2, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
12693     invoke-virtual {p2, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
12695     move-result v5
12697     if-eqz v5, :cond_2b
12699     move v5, v1
12701     :goto_2a
12702     return v5
12704     :cond_2b
12705     add-int/lit8 v1, v1, -0x1
12707     goto :goto_f
12709     :cond_2e
12710     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
12712     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
12714     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
12716     move-result v0
12718     move-object v2, v4
12720     add-int/lit8 v1, p1, 0x1
12722     :goto_39
12723     if-ge v1, v0, :cond_58
12725     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
12727     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
12729     invoke-virtual {v5, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
12731     move-result-object v3
12733     check-cast v3, Lcom/android/server/am/ActivityRecord;
12735     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
12737     if-eq v5, v2, :cond_55
12739     iget-object v5, v2, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
12741     invoke-virtual {p2, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
12743     move-result v5
12745     if-eqz v5, :cond_53
12747     move v5, v1
12749     goto :goto_2a
12751     :cond_53
12752     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
12754     :cond_55
12755     add-int/lit8 v1, v1, 0x1
12757     goto :goto_39
12759     :cond_58
12760     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
12762     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
12764     add-int/lit8 v6, v0, -0x1
12766     invoke-virtual {v5, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
12768     move-result-object v5
12770     check-cast v5, Lcom/android/server/am/ActivityRecord;
12772     iget-object v5, v5, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
12774     iget-object v5, v5, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
12776     invoke-virtual {p2, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
12778     move-result v5
12780     if-eqz v5, :cond_71
12782     add-int/lit8 v5, v0, -0x1
12784     goto :goto_2a
12786     :cond_71
12787     const/4 v5, -0x1
12789     goto :goto_2a
12790 .end method
12792 .method private findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
12793     .registers 12
12795     const/4 v5, 0x0
12797     if-nez p1, :cond_5
12799     move-object v4, v5
12801     :goto_4
12802     return-object v4
12804     :cond_5
12805     monitor-enter p0
12807     :try_start_6
12808     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
12810     invoke-virtual {v6}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
12812     move-result-object v6
12814     invoke-virtual {v6}, Ljava/util/HashMap;->values()Ljava/util/Collection;
12816     move-result-object v6
12818     invoke-interface {v6}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
12820     move-result-object v2
12822     :cond_14
12823     invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
12825     move-result v6
12827     if-eqz v6, :cond_41
12829     invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
12831     move-result-object v1
12833     check-cast v1, Landroid/util/SparseArray;
12835     invoke-virtual {v1}, Landroid/util/SparseArray;->size()I
12837     move-result v0
12839     const/4 v3, 0x0
12841     :goto_25
12842     if-ge v3, v0, :cond_14
12844     invoke-virtual {v1, v3}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
12846     move-result-object v4
12848     check-cast v4, Lcom/android/server/am/ProcessRecord;
12850     iget-object v6, v4, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
12852     if-eqz v6, :cond_3e
12854     iget-object v6, v4, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
12856     invoke-interface {v6}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
12858     move-result-object v6
12860     if-ne v6, p1, :cond_3e
12862     monitor-exit p0
12864     goto :goto_4
12866     :catchall_3b
12867     move-exception v5
12869     monitor-exit p0
12870     :try_end_3d
12871     .catchall {:try_start_6 .. :try_end_3d} :catchall_3b
12873     throw v5
12875     :cond_3e
12876     add-int/lit8 v3, v3, 0x1
12878     goto :goto_25
12880     :cond_41
12881     :try_start_41
12882     const-string v6, "ActivityManager"
12884     new-instance v7, Ljava/lang/StringBuilder;
12886     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
12888     const-string v8, "Can\'t find mystery application for "
12890     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12892     move-result-object v7
12894     invoke-virtual {v7, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12896     move-result-object v7
12898     const-string v8, " from pid="
12900     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12902     move-result-object v7
12904     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
12906     move-result v8
12908     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
12910     move-result-object v7
12912     const-string v8, " uid="
12914     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12916     move-result-object v7
12918     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
12920     move-result v8
12922     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
12924     move-result-object v7
12926     const-string v8, ": "
12928     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
12930     move-result-object v7
12932     invoke-virtual {v7, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
12934     move-result-object v7
12936     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
12938     move-result-object v7
12940     invoke-static {v6, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
12942     monitor-exit p0
12943     :try_end_80
12944     .catchall {:try_start_41 .. :try_end_80} :catchall_3b
12946     move-object v4, v5
12948     goto :goto_4
12949 .end method
12951 .method private findProcessLocked(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/am/ProcessRecord;
12952     .registers 19
12954     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
12956     move-result v2
12958     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
12960     move-result v3
12962     const/4 v5, 0x1
12964     const/4 v6, 0x1
12966     const/4 v8, 0x0
12968     move-object v1, p0
12970     move/from16 v4, p2
12972     move-object/from16 v7, p3
12974     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
12976     move-result p2
12978     const/4 v12, 0x0
12980     :try_start_15
12981     invoke-static/range {p1 .. p1}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
12983     move-result v11
12985     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
12987     monitor-enter v2
12988     :try_end_1c
12989     .catch Ljava/lang/NumberFormatException; {:try_start_15 .. :try_end_1c} :catch_69
12991     :try_start_1c
12992     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
12994     invoke-virtual {v1, v11}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
12996     move-result-object v1
12998     move-object v0, v1
13000     check-cast v0, Lcom/android/server/am/ProcessRecord;
13002     move-object v12, v0
13004     monitor-exit v2
13005     :try_end_27
13006     .catchall {:try_start_1c .. :try_end_27} :catchall_66
13008     :goto_27
13009     if-nez v12, :cond_65
13011     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
13013     invoke-virtual {v1}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
13015     move-result-object v9
13017     move-object/from16 v0, p1
13019     invoke-virtual {v9, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
13021     move-result-object v13
13023     check-cast v13, Landroid/util/SparseArray;
13025     if-eqz v13, :cond_65
13027     invoke-virtual {v13}, Landroid/util/SparseArray;->size()I
13029     move-result v1
13031     if-lez v1, :cond_65
13033     const/4 v1, 0x0
13035     invoke-virtual {v13, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
13037     move-result-object v12
13039     check-cast v12, Lcom/android/server/am/ProcessRecord;
13041     const/4 v1, -0x1
13043     move/from16 v0, p2
13045     if-eq v0, v1, :cond_65
13047     iget v1, v12, Lcom/android/server/am/ProcessRecord;->userId:I
13049     move/from16 v0, p2
13051     if-eq v1, v0, :cond_65
13053     const/4 v10, 0x1
13055     :goto_52
13056     invoke-virtual {v13}, Landroid/util/SparseArray;->size()I
13058     move-result v1
13060     if-ge v10, v1, :cond_65
13062     invoke-virtual {v13, v10}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
13064     move-result-object v14
13066     check-cast v14, Lcom/android/server/am/ProcessRecord;
13068     iget v1, v14, Lcom/android/server/am/ProcessRecord;->userId:I
13070     move/from16 v0, p2
13072     if-ne v1, v0, :cond_6b
13074     move-object v12, v14
13076     :cond_65
13077     return-object v12
13079     :catchall_66
13080     move-exception v1
13082     :try_start_67
13083     monitor-exit v2
13084     :try_end_68
13085     .catchall {:try_start_67 .. :try_end_68} :catchall_66
13087     :try_start_68
13088     throw v1
13089     :try_end_69
13090     .catch Ljava/lang/NumberFormatException; {:try_start_68 .. :try_end_69} :catch_69
13092     :catch_69
13093     move-exception v1
13095     goto :goto_27
13097     :cond_6b
13098     add-int/lit8 v10, v10, 0x1
13100     goto :goto_52
13101 .end method
13103 .method private final finishReceiverLocked(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
13104     .registers 14
13106     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->broadcastRecordForReceiverLocked(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
13108     move-result-object v1
13110     if-nez v1, :cond_f
13112     const-string v0, "ActivityManager"
13114     const-string v2, "finishReceiver called but not found on queue"
13116     invoke-static {v0, v2}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
13118     const/4 v0, 0x0
13120     :goto_e
13121     return v0
13123     :cond_f
13124     iget-object v0, v1, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
13126     move v2, p2
13128     move-object v3, p3
13130     move-object v4, p4
13132     move v5, p5
13134     move v6, p6
13136     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
13138     move-result v0
13140     goto :goto_e
13141 .end method
13143 .method private forceStopPackageLocked(Ljava/lang/String;I)V
13144     .registers 19
13146     invoke-static/range {p2 .. p2}, Landroid/os/UserHandle;->getAppId(I)I
13148     move-result v3
13150     const/4 v4, 0x0
13152     const/4 v5, 0x0
13154     const/4 v6, 0x1
13156     const/4 v7, 0x0
13158     invoke-static/range {p2 .. p2}, Landroid/os/UserHandle;->getUserId(I)I
13160     move-result v8
13162     move-object/from16 v1, p0
13164     move-object/from16 v2, p1
13166     invoke-direct/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
13168     new-instance v4, Landroid/content/Intent;
13170     const-string v1, "android.intent.action.PACKAGE_RESTARTED"
13172     const-string v2, "package"
13174     const/4 v3, 0x0
13176     move-object/from16 v0, p1
13178     invoke-static {v2, v0, v3}, Landroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
13180     move-result-object v2
13182     invoke-direct {v4, v1, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
13184     move-object/from16 v0, p0
13186     iget-boolean v1, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
13188     if-nez v1, :cond_2e
13190     const/high16 v1, 0x5000
13192     invoke-virtual {v4, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
13194     :cond_2e
13195     const-string v1, "android.intent.extra.UID"
13197     move/from16 v0, p2
13199     invoke-virtual {v4, v1, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
13201     const-string v1, "android.intent.extra.user_handle"
13203     invoke-static/range {p2 .. p2}, Landroid/os/UserHandle;->getUserId(I)I
13205     move-result v2
13207     invoke-virtual {v4, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
13209     const/4 v2, 0x0
13211     const/4 v3, 0x0
13213     const/4 v5, 0x0
13215     const/4 v6, 0x0
13217     const/4 v7, 0x0
13219     const/4 v8, 0x0
13221     const/4 v9, 0x0
13223     const/4 v10, 0x0
13225     const/4 v11, 0x0
13227     const/4 v12, 0x0
13229     sget v13, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
13231     const/16 v14, 0x3e8
13233     invoke-static/range {p2 .. p2}, Landroid/os/UserHandle;->getUserId(I)I
13235     move-result v15
13237     move-object/from16 v1, p0
13239     invoke-direct/range {v1 .. v15}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
13241     return-void
13242 .end method
13244 .method private final forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
13245     .registers 34
13247     const/4 v4, -0x1
13249     move/from16 v0, p7
13251     if-ne v0, v4, :cond_e
13253     if-nez p1, :cond_e
13255     const-string v4, "ActivityManager"
13257     const-string v7, "Can\'t force stop all processes of all users, that is insane!"
13259     invoke-static {v4, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
13261     :cond_e
13262     if-gez p2, :cond_21
13264     if-eqz p1, :cond_21
13266     :try_start_12
13267     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
13269     move-result-object v4
13271     const/4 v7, 0x0
13273     move-object/from16 v0, p1
13275     invoke-interface {v4, v0, v7}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
13277     move-result v4
13279     invoke-static {v4}, Landroid/os/UserHandle;->getAppId(I)I
13280     :try_end_20
13281     .catch Landroid/os/RemoteException; {:try_start_12 .. :try_end_20} :catch_2cd
13283     move-result p2
13285     :cond_21
13286     :goto_21
13287     if-eqz p5, :cond_dd
13289     if-eqz p1, :cond_9e
13291     const-string v4, "ActivityManager"
13293     new-instance v7, Ljava/lang/StringBuilder;
13295     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
13297     const-string v8, "Force stopping package "
13299     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13301     move-result-object v7
13303     move-object/from16 v0, p1
13305     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13307     move-result-object v7
13309     const-string v8, " appid="
13311     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13313     move-result-object v7
13315     move/from16 v0, p2
13317     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13319     move-result-object v7
13321     const-string v8, " user="
13323     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13325     move-result-object v7
13327     move/from16 v0, p7
13329     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13331     move-result-object v7
13333     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13335     move-result-object v7
13337     invoke-static {v4, v7}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
13339     :goto_57
13340     move-object/from16 v0, p0
13342     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
13344     invoke-virtual {v4}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
13346     move-result-object v4
13348     invoke-virtual {v4}, Ljava/util/HashMap;->values()Ljava/util/Collection;
13350     move-result-object v4
13352     invoke-interface {v4}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
13354     move-result-object v17
13356     :cond_67
13357     :goto_67
13358     invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->hasNext()Z
13360     move-result v4
13362     if-eqz v4, :cond_dd
13364     invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->next()Ljava/lang/Object;
13366     move-result-object v16
13368     check-cast v16, Landroid/util/SparseArray;
13370     invoke-virtual/range {v16 .. v16}, Landroid/util/SparseArray;->size()I
13372     move-result v4
13374     add-int/lit8 v6, v4, -0x1
13376     :goto_79
13377     if-ltz v6, :cond_d3
13379     const/16 v23, 0x0
13381     move-object/from16 v0, v16
13383     invoke-virtual {v0, v6}, Landroid/util/SparseArray;->keyAt(I)I
13385     move-result v19
13387     if-eqz p1, :cond_c8
13389     const/4 v4, -0x1
13391     move/from16 v0, p7
13393     if-ne v0, v4, :cond_b9
13395     invoke-static/range {v19 .. v19}, Landroid/os/UserHandle;->getAppId(I)I
13397     move-result v4
13399     move/from16 v0, p2
13401     if-ne v4, v0, :cond_94
13403     const/16 v23, 0x1
13405     :cond_94
13406     :goto_94
13407     if-eqz v23, :cond_9b
13409     move-object/from16 v0, v16
13411     invoke-virtual {v0, v6}, Landroid/util/SparseArray;->removeAt(I)V
13413     :cond_9b
13414     add-int/lit8 v6, v6, -0x1
13416     goto :goto_79
13418     :cond_9e
13419     const-string v4, "ActivityManager"
13421     new-instance v7, Ljava/lang/StringBuilder;
13423     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
13425     const-string v8, "Force stopping user "
13427     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13429     move-result-object v7
13431     move/from16 v0, p7
13433     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13435     move-result-object v7
13437     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13439     move-result-object v7
13441     invoke-static {v4, v7}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
13443     goto :goto_57
13445     :cond_b9
13446     move/from16 v0, p7
13448     move/from16 v1, p2
13450     invoke-static {v0, v1}, Landroid/os/UserHandle;->getUid(II)I
13452     move-result v4
13454     move/from16 v0, v19
13456     if-ne v0, v4, :cond_94
13458     const/16 v23, 0x1
13460     goto :goto_94
13462     :cond_c8
13463     invoke-static/range {v19 .. v19}, Landroid/os/UserHandle;->getUserId(I)I
13465     move-result v4
13467     move/from16 v0, p7
13469     if-ne v4, v0, :cond_94
13471     const/16 v23, 0x1
13473     goto :goto_94
13475     :cond_d3
13476     invoke-virtual/range {v16 .. v16}, Landroid/util/SparseArray;->size()I
13478     move-result v4
13480     if-nez v4, :cond_67
13482     invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->remove()V
13484     goto :goto_67
13486     :cond_dd
13487     const/16 v8, -0x64
13489     const/4 v10, 0x0
13491     if-nez p1, :cond_160
13493     new-instance v4, Ljava/lang/StringBuilder;
13495     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
13497     const-string v7, "force stop user "
13499     invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13501     move-result-object v4
13503     move/from16 v0, p7
13505     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
13507     move-result-object v4
13509     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13511     move-result-object v13
13513     :goto_f7
13514     move-object/from16 v4, p0
13516     move-object/from16 v5, p1
13518     move/from16 v6, p2
13520     move/from16 v7, p7
13522     move/from16 v9, p3
13524     move/from16 v11, p5
13526     move/from16 v12, p6
13528     invoke-direct/range {v4 .. v13}, Lcom/android/server/am/ActivityManagerService;->killPackageProcessesLocked(Ljava/lang/String;IIIZZZZLjava/lang/String;)Z
13530     move-result v18
13532     const/16 v21, 0x0
13534     const/4 v6, 0x0
13536     :goto_10c
13537     move-object/from16 v0, p0
13539     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
13541     iget-object v4, v4, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
13543     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
13545     move-result v4
13547     if-ge v6, v4, :cond_1b7
13549     move-object/from16 v0, p0
13551     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
13553     iget-object v4, v4, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
13555     invoke-virtual {v4, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
13557     move-result-object v5
13559     check-cast v5, Lcom/android/server/am/ActivityRecord;
13561     iget-object v4, v5, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
13563     move-object/from16 v0, p1
13565     invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
13567     move-result v4
13569     if-nez v4, :cond_136
13571     if-nez p1, :cond_176
13573     iget v4, v5, Lcom/android/server/am/ActivityRecord;->userId:I
13575     move/from16 v0, p7
13577     if-ne v4, v0, :cond_176
13579     :cond_136
13580     const/16 v24, 0x1
13582     :goto_138
13583     const/4 v4, -0x1
13585     move/from16 v0, p7
13587     if-eq v0, v4, :cond_143
13589     iget v4, v5, Lcom/android/server/am/ActivityRecord;->userId:I
13591     move/from16 v0, p7
13593     if-ne v4, v0, :cond_15d
13595     :cond_143
13596     if-nez v24, :cond_14b
13598     iget-object v4, v5, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
13600     move-object/from16 v0, v21
13602     if-ne v4, v0, :cond_15d
13604     :cond_14b
13605     iget-object v4, v5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
13607     if-eqz v4, :cond_157
13609     if-nez p6, :cond_157
13611     iget-object v4, v5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
13613     iget-boolean v4, v4, Lcom/android/server/am/ProcessRecord;->persistent:Z
13615     if-nez v4, :cond_15d
13617     :cond_157
13618     if-nez p5, :cond_17b
13620     iget-boolean v4, v5, Lcom/android/server/am/ActivityRecord;->finishing:Z
13622     if-eqz v4, :cond_179
13624     :cond_15d
13625     :goto_15d
13626     add-int/lit8 v6, v6, 0x1
13628     goto :goto_10c
13630     :cond_160
13631     new-instance v4, Ljava/lang/StringBuilder;
13633     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
13635     const-string v7, "force stop "
13637     invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13639     move-result-object v4
13641     move-object/from16 v0, p1
13643     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13645     move-result-object v4
13647     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13649     move-result-object v13
13651     goto :goto_f7
13653     :cond_176
13654     const/16 v24, 0x0
13656     goto :goto_138
13658     :cond_179
13659     const/4 v4, 0x1
13661     :goto_17a
13662     return v4
13664     :cond_17b
13665     const/16 v18, 0x1
13667     const-string v4, "ActivityManager"
13669     new-instance v7, Ljava/lang/StringBuilder;
13671     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
13673     const-string v8, "  Force finishing activity "
13675     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
13677     move-result-object v7
13679     invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
13681     move-result-object v7
13683     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
13685     move-result-object v7
13687     invoke-static {v4, v7}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
13689     if-eqz v24, :cond_1a3
13691     iget-object v4, v5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
13693     if-eqz v4, :cond_1a0
13695     iget-object v4, v5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
13697     const/4 v7, 0x1
13699     iput-boolean v7, v4, Lcom/android/server/am/ProcessRecord;->removed:Z
13701     :cond_1a0
13702     const/4 v4, 0x0
13704     iput-object v4, v5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
13706     :cond_1a3
13707     iget-object v0, v5, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
13709     move-object/from16 v21, v0
13711     iget-object v4, v5, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
13713     const/4 v7, 0x0
13715     const/4 v8, 0x0
13717     const-string v9, "force-stop"
13719     const/4 v10, 0x1
13721     invoke-virtual/range {v4 .. v10}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;Z)Z
13723     move-result v4
13725     if-eqz v4, :cond_15d
13727     add-int/lit8 v6, v6, -0x1
13729     goto :goto_15d
13731     :cond_1b7
13732     move-object/from16 v0, p0
13734     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
13736     move-object/from16 v0, p1
13738     move/from16 v1, p7
13740     move/from16 v2, p6
13742     move/from16 v3, p5
13744     invoke-virtual {v4, v0, v1, v2, v3}, Lcom/android/server/am/ActiveServices;->forceStopLocked(Ljava/lang/String;IZZ)Z
13746     move-result v4
13748     if-eqz v4, :cond_1cf
13750     if-nez p5, :cond_1cd
13752     const/4 v4, 0x1
13754     goto :goto_17a
13756     :cond_1cd
13757     const/16 v18, 0x1
13759     :cond_1cf
13760     if-nez p1, :cond_1da
13762     move-object/from16 v0, p0
13764     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
13766     move/from16 v0, p7
13768     invoke-virtual {v4, v0}, Landroid/util/SparseArray;->remove(I)V
13770     :cond_1da
13771     new-instance v13, Ljava/util/ArrayList;
13773     invoke-direct {v13}, Ljava/util/ArrayList;-><init>()V
13775     move-object/from16 v0, p0
13777     iget-object v7, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
13779     move-object/from16 v8, p1
13781     move/from16 v9, p2
13783     move/from16 v10, p5
13785     move/from16 v11, p6
13787     move/from16 v12, p7
13789     invoke-virtual/range {v7 .. v13}, Lcom/android/server/am/ProviderMap;->collectForceStopProviders(Ljava/lang/String;IZZILjava/util/ArrayList;)Z
13791     move-result v4
13793     if-eqz v4, :cond_1f9
13795     if-nez p5, :cond_1f7
13797     const/4 v4, 0x1
13799     goto :goto_17a
13801     :cond_1f7
13802     const/16 v18, 0x1
13804     :cond_1f9
13805     invoke-virtual {v13}, Ljava/util/ArrayList;->size()I
13807     move-result v14
13809     const/4 v6, 0x0
13811     :goto_1fe
13812     if-ge v6, v14, :cond_210
13814     const/4 v7, 0x0
13816     invoke-virtual {v13, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
13818     move-result-object v4
13820     check-cast v4, Lcom/android/server/am/ContentProviderRecord;
13822     const/4 v8, 0x1
13824     move-object/from16 v0, p0
13826     invoke-direct {v0, v7, v4, v8}, Lcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
13828     add-int/lit8 v6, v6, 0x1
13830     goto :goto_1fe
13832     :cond_210
13833     if-nez p1, :cond_2a3
13835     move-object/from16 v0, p0
13837     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
13839     invoke-virtual {v4}, Ljava/util/HashMap;->size()I
13841     move-result v4
13843     if-lez v4, :cond_2a3
13845     move-object/from16 v0, p0
13847     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
13849     invoke-virtual {v4}, Ljava/util/HashMap;->values()Ljava/util/Collection;
13851     move-result-object v4
13853     invoke-interface {v4}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
13855     move-result-object v20
13857     :cond_228
13858     :goto_228
13859     invoke-interface/range {v20 .. v20}, Ljava/util/Iterator;->hasNext()Z
13861     move-result v4
13863     if-eqz v4, :cond_2a3
13865     invoke-interface/range {v20 .. v20}, Ljava/util/Iterator;->next()Ljava/lang/Object;
13867     move-result-object v25
13869     check-cast v25, Ljava/lang/ref/WeakReference;
13871     if-nez v25, :cond_23a
13873     invoke-interface/range {v20 .. v20}, Ljava/util/Iterator;->remove()V
13875     goto :goto_228
13877     :cond_23a
13878     invoke-virtual/range {v25 .. v25}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
13880     move-result-object v22
13882     check-cast v22, Lcom/android/server/am/PendingIntentRecord;
13884     if-nez v22, :cond_246
13886     invoke-interface/range {v20 .. v20}, Ljava/util/Iterator;->remove()V
13888     goto :goto_228
13890     :cond_246
13891     if-nez p1, :cond_257
13893     move-object/from16 v0, v22
13895     iget-object v4, v0, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
13897     iget v4, v4, Lcom/android/server/am/PendingIntentRecord$Key;->userId:I
13899     move/from16 v0, p7
13901     if-ne v4, v0, :cond_228
13903     :cond_252
13904     if-nez p5, :cond_281
13906     const/4 v4, 0x1
13908     goto/16 :goto_17a
13910     :cond_257
13911     move-object/from16 v0, v22
13913     iget v4, v0, Lcom/android/server/am/PendingIntentRecord;->uid:I
13915     invoke-static {v4}, Landroid/os/UserHandle;->getAppId(I)I
13917     move-result v4
13919     move/from16 v0, p2
13921     if-ne v4, v0, :cond_228
13923     const/4 v4, -0x1
13925     move/from16 v0, p7
13927     if-eq v0, v4, :cond_272
13929     move-object/from16 v0, v22
13931     iget-object v4, v0, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
13933     iget v4, v4, Lcom/android/server/am/PendingIntentRecord$Key;->userId:I
13935     move/from16 v0, p7
13937     if-ne v4, v0, :cond_228
13939     :cond_272
13940     move-object/from16 v0, v22
13942     iget-object v4, v0, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
13944     iget-object v4, v4, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
13946     move-object/from16 v0, p1
13948     invoke-virtual {v4, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
13950     move-result v4
13952     if-nez v4, :cond_252
13954     goto :goto_228
13956     :cond_281
13957     const/16 v18, 0x1
13959     invoke-interface/range {v20 .. v20}, Ljava/util/Iterator;->remove()V
13961     const/4 v4, 0x1
13963     move-object/from16 v0, v22
13965     iput-boolean v4, v0, Lcom/android/server/am/PendingIntentRecord;->canceled:Z
13967     move-object/from16 v0, v22
13969     iget-object v4, v0, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
13971     iget-object v4, v4, Lcom/android/server/am/PendingIntentRecord$Key;->activity:Lcom/android/server/am/ActivityRecord;
13973     if-eqz v4, :cond_228
13975     move-object/from16 v0, v22
13977     iget-object v4, v0, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
13979     iget-object v4, v4, Lcom/android/server/am/PendingIntentRecord$Key;->activity:Lcom/android/server/am/ActivityRecord;
13981     iget-object v4, v4, Lcom/android/server/am/ActivityRecord;->pendingResults:Ljava/util/HashSet;
13983     move-object/from16 v0, v22
13985     iget-object v7, v0, Lcom/android/server/am/PendingIntentRecord;->ref:Ljava/lang/ref/WeakReference;
13987     invoke-virtual {v4, v7}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
13989     goto :goto_228
13991     :cond_2a3
13992     if-eqz p5, :cond_2c9
13994     if-eqz p4, :cond_2b4
13996     if-eqz p1, :cond_2b4
13998     invoke-static {}, Lcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache;
14000     move-result-object v15
14002     if-eqz v15, :cond_2b4
14004     move-object/from16 v0, p1
14006     invoke-virtual {v15, v0}, Lcom/android/server/AttributeCache;->removePackage(Ljava/lang/String;)V
14008     :cond_2b4
14009     move-object/from16 v0, p0
14011     iget-boolean v4, v0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
14013     if-eqz v4, :cond_2c9
14015     move-object/from16 v0, p0
14017     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
14019     const/4 v7, 0x0
14021     invoke-virtual {v4, v7}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
14023     move-object/from16 v0, p0
14025     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
14027     invoke-virtual {v4}, Lcom/android/server/am/ActivityStack;->scheduleIdleLocked()V
14029     :cond_2c9
14030     move/from16 v4, v18
14032     goto/16 :goto_17a
14034     :catch_2cd
14035     move-exception v4
14037     goto/16 :goto_21
14038 .end method
14040 .method private forceStopUserLocked(I)V
14041     .registers 18
14043     const/4 v2, 0x0
14045     const/4 v3, -0x1
14047     const/4 v4, 0x0
14049     const/4 v5, 0x0
14051     const/4 v6, 0x1
14053     const/4 v7, 0x0
14055     move-object/from16 v1, p0
14057     move/from16 v8, p1
14059     invoke-direct/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
14061     new-instance v4, Landroid/content/Intent;
14063     const-string v1, "android.intent.action.USER_STOPPED"
14065     invoke-direct {v4, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
14067     const/high16 v1, 0x5000
14069     invoke-virtual {v4, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
14071     const-string v1, "android.intent.extra.user_handle"
14073     move/from16 v0, p1
14075     invoke-virtual {v4, v1, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
14077     const/4 v2, 0x0
14079     const/4 v3, 0x0
14081     const/4 v5, 0x0
14083     const/4 v6, 0x0
14085     const/4 v7, 0x0
14087     const/4 v8, 0x0
14089     const/4 v9, 0x0
14091     const/4 v10, 0x0
14093     const/4 v11, 0x0
14095     const/4 v12, 0x0
14097     sget v13, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
14099     const/16 v14, 0x3e8
14101     const/4 v15, -0x1
14103     move-object/from16 v1, p0
14105     invoke-direct/range {v1 .. v15}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
14107     return-void
14108 .end method
14110 .method private final generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
14111     .registers 14
14112     .annotation system Ldalvik/annotation/Signature;
14113         value = {
14114             "(",
14115             "Lcom/android/server/am/ProcessRecord;",
14116             ")",
14117             "Ljava/util/List",
14118             "<",
14119             "Landroid/content/pm/ProviderInfo;",
14120             ">;"
14121         }
14122     .end annotation
14124     const/4 v8, 0x0
14126     :try_start_1
14127     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
14129     move-result-object v1
14131     iget-object v3, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
14133     iget v10, p1, Lcom/android/server/am/ProcessRecord;->uid:I
14135     const/16 v11, 0xc00
14137     invoke-interface {v1, v3, v10, v11}, Landroid/content/pm/IPackageManager;->queryContentProviders(Ljava/lang/String;II)Ljava/util/List;
14138     :try_end_e
14139     .catch Landroid/os/RemoteException; {:try_start_1 .. :try_end_e} :catch_73
14141     move-result-object v8
14143     :goto_f
14144     iget v9, p1, Lcom/android/server/am/ProcessRecord;->userId:I
14146     if-eqz v8, :cond_72
14148     invoke-interface {v8}, Ljava/util/List;->size()I
14150     move-result v6
14152     const/4 v7, 0x0
14154     :goto_18
14155     if-ge v7, v6, :cond_72
14157     invoke-interface {v8, v7}, Ljava/util/List;->get(I)Ljava/lang/Object;
14159     move-result-object v2
14161     check-cast v2, Landroid/content/pm/ProviderInfo;
14163     iget-object v1, v2, Landroid/content/pm/ProviderInfo;->processName:Ljava/lang/String;
14165     iget-object v3, v2, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14167     iget-object v10, v2, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
14169     iget v11, v2, Landroid/content/pm/ProviderInfo;->flags:I
14171     invoke-virtual {p0, v1, v3, v10, v11}, Lcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z
14173     move-result v5
14175     if-eqz v5, :cond_3e
14177     iget v1, p1, Lcom/android/server/am/ProcessRecord;->uid:I
14179     invoke-static {v1}, Landroid/os/UserHandle;->getUserId(I)I
14181     move-result v1
14183     if-eqz v1, :cond_3e
14185     invoke-interface {v8, v7}, Ljava/util/List;->remove(I)Ljava/lang/Object;
14187     add-int/lit8 v6, v6, -0x1
14189     :goto_3b
14190     add-int/lit8 v7, v7, 0x1
14192     goto :goto_18
14194     :cond_3e
14195     new-instance v4, Landroid/content/ComponentName;
14197     iget-object v1, v2, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
14199     iget-object v3, v2, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
14201     invoke-direct {v4, v1, v3}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
14203     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
14205     invoke-virtual {v1, v4, v9}, Lcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
14207     move-result-object v0
14209     if-nez v0, :cond_5c
14211     new-instance v0, Lcom/android/server/am/ContentProviderRecord;
14213     iget-object v3, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
14215     move-object v1, p0
14217     invoke-direct/range {v0 .. v5}, Lcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V
14219     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
14221     invoke-virtual {v1, v4, v0}, Lcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
14223     :cond_5c
14224     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
14226     iget-object v3, v2, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
14228     invoke-virtual {v1, v3, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14230     iget-object v1, v2, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14232     iget-object v1, v1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
14234     invoke-virtual {p1, v1}, Lcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;)Z
14236     iget-object v1, v2, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14238     iget-object v1, v1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
14240     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->ensurePackageDexOpt(Ljava/lang/String;)V
14242     goto :goto_3b
14244     :cond_72
14245     return-object v8
14247     :catch_73
14248     move-exception v1
14250     goto :goto_f
14251 .end method
14253 .method private generateProcessError(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/ActivityManager$ProcessErrorStateInfo;
14254     .registers 9
14256     new-instance v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;
14258     invoke-direct {v0}, Landroid/app/ActivityManager$ProcessErrorStateInfo;-><init>()V
14260     iput p2, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->condition:I
14262     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
14264     iput-object v1, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->processName:Ljava/lang/String;
14266     iget v1, p1, Lcom/android/server/am/ProcessRecord;->pid:I
14268     iput v1, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->pid:I
14270     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
14272     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
14274     iput v1, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->uid:I
14276     iput-object p3, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->tag:Ljava/lang/String;
14278     iput-object p4, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->shortMsg:Ljava/lang/String;
14280     iput-object p5, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->longMsg:Ljava/lang/String;
14282     iput-object p6, v0, Landroid/app/ActivityManager$ProcessErrorStateInfo;->stackTrace:Ljava/lang/String;
14284     return-object v0
14285 .end method
14287 .method private static getCalledPreBootReceiversFile()Ljava/io/File;
14288     .registers 4
14290     invoke-static {}, Landroid/os/Environment;->getDataDirectory()Ljava/io/File;
14292     move-result-object v0
14294     new-instance v2, Ljava/io/File;
14296     const-string v3, "system"
14298     invoke-direct {v2, v0, v3}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
14300     new-instance v1, Ljava/io/File;
14302     const-string v3, "called_pre_boots.dat"
14304     invoke-direct {v1, v2, v3}, Ljava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
14306     return-object v1
14307 .end method
14309 .method private getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
14310     .registers 4
14312     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
14314     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
14316     move-result-object v0
14318     if-nez v0, :cond_a
14320     const/4 v1, 0x0
14322     :goto_9
14323     return-object v1
14325     :cond_a
14326     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->resultTo:Lcom/android/server/am/ActivityRecord;
14328     goto :goto_9
14329 .end method
14331 .method private getCommonServicesLocked()Ljava/util/HashMap;
14332     .registers 4
14333     .annotation system Ldalvik/annotation/Signature;
14334         value = {
14335             "()",
14336             "Ljava/util/HashMap",
14337             "<",
14338             "Ljava/lang/String;",
14339             "Landroid/os/IBinder;",
14340             ">;"
14341         }
14342     .end annotation
14344     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14346     if-nez v0, :cond_32
14348     new-instance v0, Ljava/util/HashMap;
14350     invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
14352     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14354     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14356     const-string v1, "package"
14358     const-string v2, "package"
14360     invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
14362     move-result-object v2
14364     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14366     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14368     const-string v1, "window"
14370     const-string v2, "window"
14372     invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
14374     move-result-object v2
14376     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14378     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14380     const-string v1, "alarm"
14382     const-string v2, "alarm"
14384     invoke-static {v2}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
14386     move-result-object v2
14388     invoke-virtual {v0, v1, v2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
14390     :cond_32
14391     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppBindArgs:Ljava/util/HashMap;
14393     return-object v0
14394 .end method
14396 .method private getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)Landroid/app/IActivityManager$ContentProviderHolder;
14397     .registers 10
14399     const/4 v1, 0x0
14401     const/4 v4, 0x1
14403     move-object v0, p0
14405     move-object v2, p1
14407     move-object v3, p2
14409     move v5, p3
14411     invoke-direct/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ZI)Landroid/app/IActivityManager$ContentProviderHolder;
14413     move-result-object v0
14415     return-object v0
14416 .end method
14418 .method private final getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ZI)Landroid/app/IActivityManager$ContentProviderHolder;
14419     .registers 40
14421     const/16 v20, 0x0
14423     const/4 v6, 0x0
14425     monitor-enter p0
14427     const/16 v32, 0x0
14429     if-eqz p1, :cond_46
14431     :try_start_8
14432     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
14434     move-result-object v32
14436     if-nez v32, :cond_46
14438     new-instance v5, Ljava/lang/SecurityException;
14440     new-instance v10, Ljava/lang/StringBuilder;
14442     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
14444     const-string v11, "Unable to find app for caller "
14446     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14448     move-result-object v10
14450     move-object/from16 v0, p1
14452     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14454     move-result-object v10
14456     const-string v11, " (pid="
14458     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14460     move-result-object v10
14462     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
14464     move-result v11
14466     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
14468     move-result-object v10
14470     const-string v11, ") when getting content provider "
14472     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14474     move-result-object v10
14476     move-object/from16 v0, p2
14478     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14480     move-result-object v10
14482     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14484     move-result-object v10
14486     invoke-direct {v5, v10}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
14488     throw v5
14490     :catchall_43
14491     move-exception v5
14493     monitor-exit p0
14494     :try_end_45
14495     .catchall {:try_start_8 .. :try_end_45} :catchall_43
14497     throw v5
14499     :cond_46
14500     :try_start_46
14501     move-object/from16 v0, p0
14503     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
14505     move-object/from16 v0, p2
14507     move/from16 v1, p5
14509     invoke-virtual {v5, v0, v1}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
14511     move-result-object v4
14513     if-eqz v4, :cond_6c
14515     const/16 v31, 0x1
14517     :goto_56
14518     if-eqz v31, :cond_117
14520     iget-object v6, v4, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
14522     move-object/from16 v0, p0
14524     move-object/from16 v1, v32
14526     invoke-direct {v0, v6, v1}, Lcom/android/server/am/ActivityManagerService;->checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
14528     move-result-object v27
14530     if-eqz v27, :cond_6f
14532     new-instance v5, Ljava/lang/SecurityException;
14534     move-object/from16 v0, v27
14536     invoke-direct {v5, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
14538     throw v5
14540     :cond_6c
14541     const/16 v31, 0x0
14543     goto :goto_56
14545     :cond_6f
14546     if-eqz v32, :cond_85
14548     move-object/from16 v0, v32
14550     invoke-virtual {v4, v0}, Lcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
14552     move-result v5
14554     if-eqz v5, :cond_85
14556     const/4 v5, 0x0
14558     invoke-virtual {v4, v5}, Lcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/IActivityManager$ContentProviderHolder;
14560     move-result-object v24
14562     const/4 v5, 0x0
14564     move-object/from16 v0, v24
14566     iput-object v5, v0, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
14568     monitor-exit p0
14570     :goto_84
14571     return-object v24
14573     :cond_85
14574     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
14576     move-result-wide v28
14578     move-object/from16 v0, p0
14580     move-object/from16 v1, v32
14582     move-object/from16 v2, p3
14584     move/from16 v3, p4
14586     invoke-virtual {v0, v1, v4, v2, v3}, Lcom/android/server/am/ActivityManagerService;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Lcom/android/server/am/ContentProviderConnection;
14588     move-result-object v20
14590     if-eqz v20, :cond_b6
14592     move-object/from16 v0, v20
14594     iget v5, v0, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
14596     move-object/from16 v0, v20
14598     iget v10, v0, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
14600     add-int/2addr v5, v10
14602     const/4 v10, 0x1
14604     if-ne v5, v10, :cond_b6
14606     iget-object v5, v4, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
14608     if-eqz v5, :cond_b6
14610     move-object/from16 v0, v32
14612     iget v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
14614     const/4 v10, 0x2
14616     if-gt v5, v10, :cond_b6
14618     iget-object v5, v4, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
14620     const/4 v10, 0x0
14622     move-object/from16 v0, p0
14624     invoke-virtual {v0, v5, v10}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;Z)V
14626     :cond_b6
14627     iget-object v5, v4, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
14629     if-eqz v5, :cond_114
14631     iget-object v5, v4, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
14633     move-object/from16 v0, p0
14635     invoke-virtual {v0, v5}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
14637     move-result v33
14639     if-nez v33, :cond_114
14641     const-string v5, "ActivityManager"
14643     new-instance v10, Ljava/lang/StringBuilder;
14645     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
14647     const-string v11, "Existing provider "
14649     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14651     move-result-object v10
14653     iget-object v11, v4, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
14655     invoke-virtual {v11}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
14657     move-result-object v11
14659     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14661     move-result-object v10
14663     const-string v11, " is crashing; detaching "
14665     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14667     move-result-object v10
14669     move-object/from16 v0, v32
14671     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14673     move-result-object v10
14675     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14677     move-result-object v10
14679     invoke-static {v5, v10}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
14681     move-object/from16 v0, p0
14683     move-object/from16 v1, v20
14685     move-object/from16 v2, p3
14687     move/from16 v3, p4
14689     invoke-virtual {v0, v1, v4, v2, v3}, Lcom/android/server/am/ActivityManagerService;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z
14691     move-result v26
14693     iget-object v5, v4, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
14695     iget-object v10, v4, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
14697     iget v10, v10, Lcom/android/server/am/ProcessRecord;->pid:I
14699     iget-object v11, v4, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
14701     iget-object v11, v11, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
14703     move-object/from16 v0, p0
14705     invoke-virtual {v0, v5, v10, v11}, Lcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
14707     if-nez v26, :cond_110
14709     const/16 v24, 0x0
14711     monitor-exit p0
14713     goto/16 :goto_84
14715     :cond_110
14716     const/16 v31, 0x0
14718     const/16 v20, 0x0
14720     :cond_114
14721     invoke-static/range {v28 .. v29}, Landroid/os/Binder;->restoreCallingIdentity(J)V
14722     :try_end_117
14723     .catchall {:try_start_46 .. :try_end_117} :catchall_43
14725     :cond_117
14726     if-nez v31, :cond_34f
14728     :try_start_119
14729     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
14731     move-result-object v5
14733     const/16 v10, 0xc00
14735     move-object/from16 v0, p2
14737     move/from16 v1, p5
14739     invoke-interface {v5, v0, v10, v1}, Landroid/content/pm/IPackageManager;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
14740     :try_end_126
14741     .catchall {:try_start_119 .. :try_end_126} :catchall_43
14742     .catch Landroid/os/RemoteException; {:try_start_119 .. :try_end_126} :catch_401
14744     move-result-object v6
14746     :goto_127
14747     if-nez v6, :cond_12e
14749     const/16 v24, 0x0
14751     :try_start_12b
14752     monitor-exit p0
14754     goto/16 :goto_84
14756     :cond_12e
14757     iget-object v5, v6, Landroid/content/pm/ProviderInfo;->processName:Ljava/lang/String;
14759     iget-object v10, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14761     iget-object v11, v6, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
14763     iget v12, v6, Landroid/content/pm/ProviderInfo;->flags:I
14765     move-object/from16 v0, p0
14767     invoke-virtual {v0, v5, v10, v11, v12}, Lcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z
14769     move-result v9
14771     if-eqz v9, :cond_140
14773     const/16 p5, 0x0
14775     :cond_140
14776     iget-object v5, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14778     move-object/from16 v0, p0
14780     move/from16 v1, p5
14782     invoke-virtual {v0, v5, v1}, Lcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
14784     move-result-object v5
14786     iput-object v5, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14788     move-object/from16 v0, p0
14790     move-object/from16 v1, v32
14792     invoke-direct {v0, v6, v1}, Lcom/android/server/am/ActivityManagerService;->checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
14794     move-result-object v27
14796     if-eqz v27, :cond_15e
14798     new-instance v5, Ljava/lang/SecurityException;
14800     move-object/from16 v0, v27
14802     invoke-direct {v5, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
14804     throw v5
14806     :cond_15e
14807     move-object/from16 v0, p0
14809     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
14811     if-nez v5, :cond_182
14813     move-object/from16 v0, p0
14815     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mDidUpdate:Z
14817     if-nez v5, :cond_182
14819     move-object/from16 v0, p0
14821     iget-boolean v5, v0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
14823     if-nez v5, :cond_182
14825     iget-object v5, v6, Landroid/content/pm/ProviderInfo;->processName:Ljava/lang/String;
14827     const-string v10, "system"
14829     invoke-virtual {v5, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
14831     move-result v5
14833     if-nez v5, :cond_182
14835     new-instance v5, Ljava/lang/IllegalArgumentException;
14837     const-string v10, "Attempt to launch content provider before system ready"
14839     invoke-direct {v5, v10}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
14841     throw v5
14843     :cond_182
14844     move-object/from16 v0, p0
14846     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
14848     move/from16 v0, p5
14850     invoke-virtual {v5, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
14852     move-result-object v5
14854     if-nez v5, :cond_1db
14856     const-string v5, "ActivityManager"
14858     new-instance v10, Ljava/lang/StringBuilder;
14860     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
14862     const-string v11, "Unable to launch app "
14864     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14866     move-result-object v10
14868     iget-object v11, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14870     iget-object v11, v11, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
14872     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14874     move-result-object v10
14876     const-string v11, "/"
14878     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14880     move-result-object v10
14882     iget-object v11, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14884     iget v11, v11, Landroid/content/pm/ApplicationInfo;->uid:I
14886     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
14888     move-result-object v10
14890     const-string v11, " for provider "
14892     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14894     move-result-object v10
14896     move-object/from16 v0, p2
14898     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14900     move-result-object v10
14902     const-string v11, ": user "
14904     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14906     move-result-object v10
14908     move/from16 v0, p5
14910     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
14912     move-result-object v10
14914     const-string v11, " is stopped"
14916     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14918     move-result-object v10
14920     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14922     move-result-object v10
14924     invoke-static {v5, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
14926     const/16 v24, 0x0
14928     monitor-exit p0
14930     goto/16 :goto_84
14932     :cond_1db
14933     new-instance v8, Landroid/content/ComponentName;
14935     iget-object v5, v6, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
14937     iget-object v10, v6, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
14939     invoke-direct {v8, v5, v10}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
14941     move-object/from16 v0, p0
14943     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
14945     move/from16 v0, p5
14947     invoke-virtual {v5, v8, v0}, Lcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
14948     :try_end_1ed
14949     .catchall {:try_start_12b .. :try_end_1ed} :catchall_43
14951     move-result-object v21
14953     if-nez v21, :cond_227
14955     const/16 v23, 0x1
14957     :goto_1f2
14958     if-eqz v23, :cond_404
14960     :try_start_1f4
14961     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
14963     move-result-object v5
14965     iget-object v10, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
14967     iget-object v10, v10, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
14969     const/16 v11, 0x400
14971     move/from16 v0, p5
14973     invoke-interface {v5, v10, v11, v0}, Landroid/content/pm/IPackageManager;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;
14975     move-result-object v7
14977     if-nez v7, :cond_22a
14979     const-string v5, "ActivityManager"
14981     new-instance v10, Ljava/lang/StringBuilder;
14983     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
14985     const-string v11, "No package info for content provider "
14987     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14989     move-result-object v10
14991     iget-object v11, v6, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
14993     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
14995     move-result-object v10
14997     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
14999     move-result-object v10
15001     invoke-static {v5, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
15002     :try_end_220
15003     .catchall {:try_start_1f4 .. :try_end_220} :catchall_43
15004     .catch Landroid/os/RemoteException; {:try_start_1f4 .. :try_end_220} :catch_24b
15006     const/16 v24, 0x0
15008     :try_start_222
15009     monitor-exit p0
15010     :try_end_223
15011     .catchall {:try_start_222 .. :try_end_223} :catchall_43
15013     move-object/from16 v4, v21
15015     goto/16 :goto_84
15017     :cond_227
15018     const/16 v23, 0x0
15020     goto :goto_1f2
15022     :cond_22a
15023     :try_start_22a
15024     move-object/from16 v0, p0
15026     move/from16 v1, p5
15028     invoke-virtual {v0, v7, v1}, Lcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
15030     move-result-object v7
15032     new-instance v4, Lcom/android/server/am/ContentProviderRecord;
15034     move-object/from16 v5, p0
15036     invoke-direct/range {v4 .. v9}, Lcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V
15037     :try_end_239
15038     .catchall {:try_start_22a .. :try_end_239} :catchall_43
15039     .catch Landroid/os/RemoteException; {:try_start_22a .. :try_end_239} :catch_24b
15041     :goto_239
15042     if-eqz v32, :cond_24f
15044     :try_start_23b
15045     move-object/from16 v0, v32
15047     invoke-virtual {v4, v0}, Lcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
15049     move-result v5
15051     if-eqz v5, :cond_24f
15053     const/4 v5, 0x0
15055     invoke-virtual {v4, v5}, Lcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/IActivityManager$ContentProviderHolder;
15057     move-result-object v24
15059     monitor-exit p0
15061     goto/16 :goto_84
15063     :catch_24b
15064     move-exception v5
15066     move-object/from16 v4, v21
15068     goto :goto_239
15070     :cond_24f
15071     move-object/from16 v0, p0
15073     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
15075     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
15077     move-result v19
15079     const/16 v25, 0x0
15081     :goto_259
15082     move/from16 v0, v25
15084     move/from16 v1, v19
15086     if-ge v0, v1, :cond_26b
15088     move-object/from16 v0, p0
15090     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
15092     move/from16 v0, v25
15094     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
15096     move-result-object v5
15098     if-ne v5, v4, :cond_2e8
15100     :cond_26b
15101     move/from16 v0, v25
15103     move/from16 v1, v19
15105     if-lt v0, v1, :cond_32a
15107     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
15108     :try_end_274
15109     .catchall {:try_start_23b .. :try_end_274} :catchall_43
15111     move-result-wide v28
15113     :try_start_275
15114     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
15116     move-result-object v5
15118     iget-object v10, v4, Lcom/android/server/am/ContentProviderRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
15120     iget-object v10, v10, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15122     const/4 v11, 0x0
15124     move/from16 v0, p5
15126     invoke-interface {v5, v10, v11, v0}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V
15127     :try_end_283
15128     .catchall {:try_start_275 .. :try_end_283} :catchall_317
15129     .catch Landroid/os/RemoteException; {:try_start_275 .. :try_end_283} :catch_3fe
15130     .catch Ljava/lang/IllegalArgumentException; {:try_start_275 .. :try_end_283} :catch_2ec
15132     :goto_283
15133     :try_start_283
15134     iget-object v11, v6, Landroid/content/pm/ProviderInfo;->processName:Ljava/lang/String;
15136     iget-object v12, v4, Lcom/android/server/am/ContentProviderRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
15138     const/4 v13, 0x0
15140     const/4 v14, 0x0
15142     const-string v15, "content provider"
15144     new-instance v16, Landroid/content/ComponentName;
15146     iget-object v5, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15148     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15150     iget-object v10, v6, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
15152     move-object/from16 v0, v16
15154     invoke-direct {v0, v5, v10}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
15156     const/16 v17, 0x0
15158     const/16 v18, 0x0
15160     move-object/from16 v10, p0
15162     invoke-virtual/range {v10 .. v18}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZ)Lcom/android/server/am/ProcessRecord;
15164     move-result-object v30
15166     if-nez v30, :cond_31c
15168     const-string v5, "ActivityManager"
15170     new-instance v10, Ljava/lang/StringBuilder;
15172     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
15174     const-string v11, "Unable to launch app "
15176     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15178     move-result-object v10
15180     iget-object v11, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15182     iget-object v11, v11, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15184     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15186     move-result-object v10
15188     const-string v11, "/"
15190     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15192     move-result-object v10
15194     iget-object v11, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15196     iget v11, v11, Landroid/content/pm/ApplicationInfo;->uid:I
15198     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
15200     move-result-object v10
15202     const-string v11, " for provider "
15204     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15206     move-result-object v10
15208     move-object/from16 v0, p2
15210     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15212     move-result-object v10
15214     const-string v11, ": process is bad"
15216     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15218     move-result-object v10
15220     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15222     move-result-object v10
15224     invoke-static {v5, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
15225     :try_end_2e0
15226     .catchall {:try_start_283 .. :try_end_2e0} :catchall_317
15228     const/16 v24, 0x0
15230     :try_start_2e2
15231     invoke-static/range {v28 .. v29}, Landroid/os/Binder;->restoreCallingIdentity(J)V
15233     monitor-exit p0
15234     :try_end_2e6
15235     .catchall {:try_start_2e2 .. :try_end_2e6} :catchall_43
15237     goto/16 :goto_84
15239     :cond_2e8
15240     add-int/lit8 v25, v25, 0x1
15242     goto/16 :goto_259
15244     :catch_2ec
15245     move-exception v22
15247     :try_start_2ed
15248     const-string v5, "ActivityManager"
15250     new-instance v10, Ljava/lang/StringBuilder;
15252     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
15254     const-string v11, "Failed trying to unstop package "
15256     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15258     move-result-object v10
15260     iget-object v11, v4, Lcom/android/server/am/ContentProviderRecord;->appInfo:Landroid/content/pm/ApplicationInfo;
15262     iget-object v11, v11, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15264     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15266     move-result-object v10
15268     const-string v11, ": "
15270     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15272     move-result-object v10
15274     move-object/from16 v0, v22
15276     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
15278     move-result-object v10
15280     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15282     move-result-object v10
15284     invoke-static {v5, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
15285     :try_end_315
15286     .catchall {:try_start_2ed .. :try_end_315} :catchall_317
15288     goto/16 :goto_283
15290     :catchall_317
15291     move-exception v5
15293     :try_start_318
15294     invoke-static/range {v28 .. v29}, Landroid/os/Binder;->restoreCallingIdentity(J)V
15296     throw v5
15297     :try_end_31c
15298     .catchall {:try_start_318 .. :try_end_31c} :catchall_43
15300     :cond_31c
15301     :try_start_31c
15302     move-object/from16 v0, v30
15304     iput-object v0, v4, Lcom/android/server/am/ContentProviderRecord;->launchingApp:Lcom/android/server/am/ProcessRecord;
15306     move-object/from16 v0, p0
15308     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
15310     invoke-virtual {v5, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
15311     :try_end_327
15312     .catchall {:try_start_31c .. :try_end_327} :catchall_317
15314     :try_start_327
15315     invoke-static/range {v28 .. v29}, Landroid/os/Binder;->restoreCallingIdentity(J)V
15317     :cond_32a
15318     if-eqz v23, :cond_333
15320     move-object/from16 v0, p0
15322     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
15324     invoke-virtual {v5, v8, v4}, Lcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
15326     :cond_333
15327     move-object/from16 v0, p0
15329     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
15331     move-object/from16 v0, p2
15333     invoke-virtual {v5, v0, v4}, Lcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
15335     move-object/from16 v0, p0
15337     move-object/from16 v1, v32
15339     move-object/from16 v2, p3
15341     move/from16 v3, p4
15343     invoke-virtual {v0, v1, v4, v2, v3}, Lcom/android/server/am/ActivityManagerService;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Lcom/android/server/am/ContentProviderConnection;
15345     move-result-object v20
15347     if-eqz v20, :cond_34f
15349     const/4 v5, 0x1
15351     move-object/from16 v0, v20
15353     iput-boolean v5, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
15355     :cond_34f
15356     monitor-exit p0
15357     :try_end_350
15358     .catchall {:try_start_327 .. :try_end_350} :catchall_43
15360     monitor-enter v4
15362     :cond_351
15363     :goto_351
15364     :try_start_351
15365     iget-object v5, v4, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
15367     if-nez v5, :cond_3e5
15369     iget-object v5, v4, Lcom/android/server/am/ContentProviderRecord;->launchingApp:Lcom/android/server/am/ProcessRecord;
15371     if-nez v5, :cond_3c9
15373     const-string v5, "ActivityManager"
15375     new-instance v10, Ljava/lang/StringBuilder;
15377     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
15379     const-string v11, "Unable to launch app "
15381     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15383     move-result-object v10
15385     iget-object v11, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15387     iget-object v11, v11, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15389     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15391     move-result-object v10
15393     const-string v11, "/"
15395     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15397     move-result-object v10
15399     iget-object v11, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15401     iget v11, v11, Landroid/content/pm/ApplicationInfo;->uid:I
15403     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
15405     move-result-object v10
15407     const-string v11, " for provider "
15409     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15411     move-result-object v10
15413     move-object/from16 v0, p2
15415     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15417     move-result-object v10
15419     const-string v11, ": launching app became null"
15421     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15423     move-result-object v10
15425     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15427     move-result-object v10
15429     invoke-static {v5, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
15431     const/16 v5, 0x7554
15433     const/4 v10, 0x4
15435     new-array v10, v10, [Ljava/lang/Object;
15437     const/4 v11, 0x0
15439     iget-object v12, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15441     iget v12, v12, Landroid/content/pm/ApplicationInfo;->uid:I
15443     invoke-static {v12}, Landroid/os/UserHandle;->getUserId(I)I
15445     move-result v12
15447     invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
15449     move-result-object v12
15451     aput-object v12, v10, v11
15453     const/4 v11, 0x1
15455     iget-object v12, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15457     iget-object v12, v12, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
15459     aput-object v12, v10, v11
15461     const/4 v11, 0x2
15463     iget-object v12, v6, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
15465     iget v12, v12, Landroid/content/pm/ApplicationInfo;->uid:I
15467     invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
15469     move-result-object v12
15471     aput-object v12, v10, v11
15473     const/4 v11, 0x3
15475     aput-object p2, v10, v11
15477     invoke-static {v5, v10}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
15479     const/16 v24, 0x0
15481     monitor-exit v4
15483     goto/16 :goto_84
15485     :catchall_3c6
15486     move-exception v5
15488     monitor-exit v4
15489     :try_end_3c8
15490     .catchall {:try_start_351 .. :try_end_3c8} :catchall_3c6
15492     throw v5
15494     :cond_3c9
15495     if-eqz v20, :cond_3d0
15497     const/4 v5, 0x1
15499     :try_start_3cc
15500     move-object/from16 v0, v20
15502     iput-boolean v5, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
15504     :cond_3d0
15505     invoke-virtual {v4}, Ljava/lang/Object;->wait()V
15506     :try_end_3d3
15507     .catchall {:try_start_3cc .. :try_end_3d3} :catchall_3dc
15508     .catch Ljava/lang/InterruptedException; {:try_start_3cc .. :try_end_3d3} :catch_3f4
15510     if-eqz v20, :cond_351
15512     const/4 v5, 0x0
15514     :try_start_3d6
15515     move-object/from16 v0, v20
15517     iput-boolean v5, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
15519     goto/16 :goto_351
15521     :catchall_3dc
15522     move-exception v5
15524     if-eqz v20, :cond_3e4
15526     const/4 v10, 0x0
15528     move-object/from16 v0, v20
15530     iput-boolean v10, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
15532     :cond_3e4
15533     throw v5
15535     :cond_3e5
15536     monitor-exit v4
15537     :try_end_3e6
15538     .catchall {:try_start_3d6 .. :try_end_3e6} :catchall_3c6
15540     if-eqz v4, :cond_3f2
15542     move-object/from16 v0, v20
15544     invoke-virtual {v4, v0}, Lcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/IActivityManager$ContentProviderHolder;
15546     move-result-object v5
15548     :goto_3ee
15549     move-object/from16 v24, v5
15551     goto/16 :goto_84
15553     :cond_3f2
15554     const/4 v5, 0x0
15556     goto :goto_3ee
15558     :catch_3f4
15559     move-exception v5
15561     if-eqz v20, :cond_351
15563     const/4 v5, 0x0
15565     :try_start_3f8
15566     move-object/from16 v0, v20
15568     iput-boolean v5, v0, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
15569     :try_end_3fc
15570     .catchall {:try_start_3f8 .. :try_end_3fc} :catchall_3c6
15572     goto/16 :goto_351
15574     :catch_3fe
15575     move-exception v5
15577     goto/16 :goto_283
15579     :catch_401
15580     move-exception v5
15582     goto/16 :goto_127
15584     :cond_404
15585     move-object/from16 v4, v21
15587     goto/16 :goto_239
15588 .end method
15590 .method private final getLRURecordIndexForAppLocked(Landroid/app/IApplicationThread;)I
15591     .registers 6
15593     invoke-interface {p1}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
15595     move-result-object v2
15597     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
15599     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
15601     move-result v3
15603     add-int/lit8 v0, v3, -0x1
15605     :goto_c
15606     if-ltz v0, :cond_26
15608     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
15610     invoke-virtual {v3, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
15612     move-result-object v1
15614     check-cast v1, Lcom/android/server/am/ProcessRecord;
15616     iget-object v3, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
15618     if-eqz v3, :cond_23
15620     iget-object v3, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
15622     invoke-interface {v3}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
15624     move-result-object v3
15626     if-ne v3, v2, :cond_23
15628     :goto_22
15629     return v0
15631     :cond_23
15632     add-int/lit8 v0, v0, -0x1
15634     goto :goto_c
15636     :cond_26
15637     const/4 v0, -0x1
15639     goto :goto_22
15640 .end method
15642 .method private final getStickiesLocked(Ljava/lang/String;Landroid/content/IntentFilter;Ljava/util/List;I)Ljava/util/List;
15643     .registers 14
15645     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
15647     invoke-virtual {v7}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
15649     move-result-object v5
15651     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
15653     invoke-virtual {v7, p4}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
15655     move-result-object v6
15657     check-cast v6, Ljava/util/HashMap;
15659     if-nez v6, :cond_12
15661     move-object v1, p3
15663     :goto_11
15664     return-object v1
15666     :cond_12
15667     invoke-virtual {v6, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
15669     move-result-object v4
15671     check-cast v4, Ljava/util/ArrayList;
15673     if-nez v4, :cond_1c
15675     move-object v1, p3
15677     goto :goto_11
15679     :cond_1c
15680     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
15682     move-result v0
15684     const/4 v2, 0x0
15686     :goto_21
15687     if-ge v2, v0, :cond_3f
15689     invoke-virtual {v4, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
15691     move-result-object v3
15693     check-cast v3, Landroid/content/Intent;
15695     const/4 v7, 0x1
15697     const-string v8, "ActivityManager"
15699     invoke-virtual {p2, v5, v3, v7, v8}, Landroid/content/IntentFilter;->match(Landroid/content/ContentResolver;Landroid/content/Intent;ZLjava/lang/String;)I
15701     move-result v7
15703     if-ltz v7, :cond_3c
15705     if-nez p3, :cond_39
15707     new-instance p3, Ljava/util/ArrayList;
15709     invoke-direct {p3}, Ljava/util/ArrayList;-><init>()V
15711     :cond_39
15712     invoke-interface {p3, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
15714     :cond_3c
15715     add-int/lit8 v2, v2, 0x1
15717     goto :goto_21
15719     :cond_3f
15720     move-object v1, p3
15722     goto :goto_11
15723 .end method
15725 .method private getUiContext()Landroid/content/Context;
15726     .registers 2
15728     monitor-enter p0
15730     :try_start_1
15731     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUiContext:Landroid/content/Context;
15733     if-nez v0, :cond_11
15735     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
15737     if-eqz v0, :cond_11
15739     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
15741     invoke-static {v0}, Lcom/android/internal/app/ThemeUtils;->createUiContext(Landroid/content/Context;)Landroid/content/Context;
15743     move-result-object v0
15745     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUiContext:Landroid/content/Context;
15747     :cond_11
15748     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUiContext:Landroid/content/Context;
15750     if-eqz v0, :cond_19
15752     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUiContext:Landroid/content/Context;
15754     :goto_17
15755     monitor-exit p0
15757     return-object v0
15759     :cond_19
15760     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
15762     goto :goto_17
15764     :catchall_1c
15765     move-exception v0
15767     monitor-exit p0
15768     :try_end_1e
15769     .catchall {:try_start_1 .. :try_end_1e} :catchall_1c
15771     throw v0
15772 .end method
15774 .method private handleAppCrashLocked(Lcom/android/server/am/ProcessRecord;)Z
15775     .registers 20
15777     move-object/from16 v0, p0
15779     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
15781     if-eqz v2, :cond_24
15783     const-string v2, "ActivityManager"
15785     new-instance v5, Ljava/lang/StringBuilder;
15787     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
15789     const-string v6, "handleAppCrashLocked: "
15791     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15793     move-result-object v5
15795     move-object/from16 v0, p1
15797     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
15799     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15801     move-result-object v5
15803     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15805     move-result-object v5
15807     invoke-static {v2, v5}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
15809     const/4 v2, 0x0
15811     :goto_23
15812     return v2
15814     :cond_24
15815     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
15817     move-result-wide v15
15819     move-object/from16 v0, p1
15821     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
15823     if-nez v2, :cond_ea
15825     move-object/from16 v0, p0
15827     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
15829     move-object/from16 v0, p1
15831     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
15833     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
15835     move-object/from16 v0, p1
15837     iget v6, v0, Lcom/android/server/am/ProcessRecord;->uid:I
15839     invoke-virtual {v2, v5, v6}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
15841     move-result-object v12
15843     check-cast v12, Ljava/lang/Long;
15845     :goto_42
15846     if-eqz v12, :cond_197
15848     invoke-virtual {v12}, Ljava/lang/Long;->longValue()J
15850     move-result-wide v5
15852     const-wide/32 v8, 0xea60
15854     add-long/2addr v5, v8
15856     cmp-long v2, v15, v5
15858     if-gez v2, :cond_197
15860     const-string v2, "ActivityManager"
15862     new-instance v5, Ljava/lang/StringBuilder;
15864     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
15866     const-string v6, "Process "
15868     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15870     move-result-object v5
15872     move-object/from16 v0, p1
15874     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
15876     iget-object v6, v6, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
15878     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15880     move-result-object v5
15882     const-string v6, " has crashed too many times: killing!"
15884     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15886     move-result-object v5
15888     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15890     move-result-object v5
15892     invoke-static {v2, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
15894     const/16 v2, 0x7550
15896     const/4 v5, 0x3
15898     new-array v5, v5, [Ljava/lang/Object;
15900     const/4 v6, 0x0
15902     move-object/from16 v0, p1
15904     iget v8, v0, Lcom/android/server/am/ProcessRecord;->userId:I
15906     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
15908     move-result-object v8
15910     aput-object v8, v5, v6
15912     const/4 v6, 0x1
15914     move-object/from16 v0, p1
15916     iget-object v8, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
15918     iget-object v8, v8, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
15920     aput-object v8, v5, v6
15922     const/4 v6, 0x2
15924     move-object/from16 v0, p1
15926     iget v8, v0, Lcom/android/server/am/ProcessRecord;->uid:I
15928     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
15930     move-result-object v8
15932     aput-object v8, v5, v6
15934     invoke-static {v2, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
15936     move-object/from16 v0, p0
15938     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
15940     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
15942     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
15944     move-result v2
15946     add-int/lit8 v4, v2, -0x1
15948     :goto_a7
15949     if-ltz v4, :cond_ed
15951     move-object/from16 v0, p0
15953     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
15955     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
15957     invoke-virtual {v2, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
15959     move-result-object v3
15961     check-cast v3, Lcom/android/server/am/ActivityRecord;
15963     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
15965     move-object/from16 v0, p1
15967     if-ne v2, v0, :cond_e7
15969     const-string v2, "ActivityManager"
15971     new-instance v5, Ljava/lang/StringBuilder;
15973     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
15975     const-string v6, "  Force finishing activity "
15977     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15979     move-result-object v5
15981     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
15983     invoke-virtual {v6}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
15985     move-result-object v6
15987     invoke-virtual {v6}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
15989     move-result-object v6
15991     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
15993     move-result-object v5
15995     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
15997     move-result-object v5
15999     invoke-static {v2, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
16001     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
16003     const/4 v5, 0x0
16005     const/4 v6, 0x0
16007     const-string v7, "crashed"
16009     const/4 v8, 0x0
16011     invoke-virtual/range {v2 .. v8}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;Z)Z
16013     :cond_e7
16014     add-int/lit8 v4, v4, -0x1
16016     goto :goto_a7
16018     :cond_ea
16019     const/4 v12, 0x0
16021     goto/16 :goto_42
16023     :cond_ed
16024     move-object/from16 v0, p1
16026     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
16028     if-nez v2, :cond_166
16030     const/16 v2, 0x753f
16032     const/4 v5, 0x3
16034     new-array v5, v5, [Ljava/lang/Object;
16036     const/4 v6, 0x0
16038     move-object/from16 v0, p1
16040     iget v8, v0, Lcom/android/server/am/ProcessRecord;->userId:I
16042     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
16044     move-result-object v8
16046     aput-object v8, v5, v6
16048     const/4 v6, 0x1
16050     move-object/from16 v0, p1
16052     iget v8, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16054     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
16056     move-result-object v8
16058     aput-object v8, v5, v6
16060     const/4 v6, 0x2
16062     move-object/from16 v0, p1
16064     iget-object v8, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16066     iget-object v8, v8, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16068     aput-object v8, v5, v6
16070     invoke-static {v2, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
16072     move-object/from16 v0, p1
16074     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
16076     if-nez v2, :cond_146
16078     move-object/from16 v0, p0
16080     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
16082     move-object/from16 v0, p1
16084     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16086     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16088     move-object/from16 v0, p1
16090     iget v6, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16092     invoke-static/range {v15 .. v16}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
16094     move-result-object v8
16096     invoke-virtual {v2, v5, v6, v8}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
16098     move-object/from16 v0, p0
16100     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
16102     move-object/from16 v0, p1
16104     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16106     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16108     move-object/from16 v0, p1
16110     iget v6, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16112     invoke-virtual {v2, v5, v6}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
16114     :cond_146
16115     const/4 v2, 0x1
16117     move-object/from16 v0, p1
16119     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->bad:Z
16121     const/4 v2, 0x1
16123     move-object/from16 v0, p1
16125     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->removed:Z
16127     const/4 v2, 0x0
16129     const/4 v5, 0x0
16131     const-string v6, "crash"
16133     move-object/from16 v0, p0
16135     move-object/from16 v1, p1
16137     invoke-direct {v0, v1, v2, v5, v6}, Lcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
16139     move-object/from16 v0, p0
16141     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16143     const/4 v5, 0x0
16145     invoke-virtual {v2, v5}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
16147     const/4 v2, 0x0
16149     goto/16 :goto_23
16151     :cond_166
16152     move-object/from16 v0, p0
16154     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16156     const/4 v5, 0x0
16158     invoke-virtual {v2, v5}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
16160     :cond_16e
16161     :goto_16e
16162     move-object/from16 v0, p1
16164     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
16166     invoke-virtual {v2}, Ljava/util/HashSet;->size()I
16168     move-result v2
16170     if-eqz v2, :cond_23a
16172     move-object/from16 v0, p1
16174     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
16176     invoke-virtual {v2}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
16178     move-result-object v14
16180     :goto_180
16181     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
16183     move-result v2
16185     if-eqz v2, :cond_23a
16187     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
16189     move-result-object v17
16191     check-cast v17, Lcom/android/server/am/ServiceRecord;
16193     move-object/from16 v0, v17
16195     iget v2, v0, Lcom/android/server/am/ServiceRecord;->crashCount:I
16197     add-int/lit8 v2, v2, 0x1
16199     move-object/from16 v0, v17
16201     iput v2, v0, Lcom/android/server/am/ServiceRecord;->crashCount:I
16203     goto :goto_180
16205     :cond_197
16206     move-object/from16 v0, p0
16208     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16210     const/4 v5, 0x0
16212     invoke-virtual {v2, v5}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
16214     move-result-object v3
16216     if-eqz v3, :cond_16e
16218     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
16220     move-object/from16 v0, p1
16222     if-ne v2, v0, :cond_16e
16224     const-string v2, "ActivityManager"
16226     new-instance v5, Ljava/lang/StringBuilder;
16228     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16230     const-string v6, "  Force finishing activity "
16232     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16234     move-result-object v5
16236     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
16238     invoke-virtual {v6}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
16240     move-result-object v6
16242     invoke-virtual {v6}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
16244     move-result-object v6
16246     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16248     move-result-object v5
16250     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16252     move-result-object v5
16254     invoke-static {v2, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
16256     move-object/from16 v0, p0
16258     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16260     invoke-virtual {v2, v3}, Lcom/android/server/am/ActivityStack;->indexOfActivityLocked(Lcom/android/server/am/ActivityRecord;)I
16262     move-result v7
16264     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
16266     const/4 v8, 0x0
16268     const/4 v9, 0x0
16270     const-string v10, "crashed"
16272     const/4 v11, 0x0
16274     move-object v6, v3
16276     invoke-virtual/range {v5 .. v11}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;Z)Z
16278     add-int/lit8 v7, v7, -0x1
16280     if-ltz v7, :cond_16e
16282     move-object/from16 v0, p0
16284     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16286     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
16288     invoke-virtual {v2, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
16290     move-result-object v3
16292     check-cast v3, Lcom/android/server/am/ActivityRecord;
16294     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
16296     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->RESUMED:Lcom/android/server/am/ActivityStack$ActivityState;
16298     if-eq v2, v5, :cond_1ff
16300     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
16302     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
16304     if-eq v2, v5, :cond_1ff
16306     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
16308     sget-object v5, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSED:Lcom/android/server/am/ActivityStack$ActivityState;
16310     if-ne v2, v5, :cond_16e
16312     :cond_1ff
16313     iget-boolean v2, v3, Lcom/android/server/am/ActivityRecord;->isHomeActivity:Z
16315     if-eqz v2, :cond_20b
16317     move-object/from16 v0, p0
16319     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16321     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
16323     if-eq v2, v5, :cond_16e
16325     :cond_20b
16326     const-string v2, "ActivityManager"
16328     new-instance v5, Ljava/lang/StringBuilder;
16330     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16332     const-string v6, "  Force finishing activity "
16334     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16336     move-result-object v5
16338     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
16340     invoke-virtual {v6}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
16342     move-result-object v6
16344     invoke-virtual {v6}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
16346     move-result-object v6
16348     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16350     move-result-object v5
16352     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16354     move-result-object v5
16356     invoke-static {v2, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
16358     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
16360     const/4 v8, 0x0
16362     const/4 v9, 0x0
16364     const-string v10, "crashed"
16366     const/4 v11, 0x0
16368     move-object v6, v3
16370     invoke-virtual/range {v5 .. v11}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;Z)Z
16372     goto/16 :goto_16e
16374     :cond_23a
16375     move-object/from16 v0, p0
16377     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16379     move-object/from16 v0, p1
16381     if-ne v0, v2, :cond_29a
16383     move-object/from16 v0, p0
16385     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16387     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
16389     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
16391     move-result v2
16393     if-lez v2, :cond_29a
16395     move-object/from16 v0, p0
16397     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16399     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16401     iget v2, v2, Landroid/content/pm/ApplicationInfo;->flags:I
16403     and-int/lit8 v2, v2, 0x1
16405     if-nez v2, :cond_29a
16407     move-object/from16 v0, p0
16409     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
16411     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
16413     invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
16415     move-result-object v13
16417     :cond_264
16418     :goto_264
16419     invoke-interface {v13}, Ljava/util/Iterator;->hasNext()Z
16421     move-result v2
16423     if-eqz v2, :cond_29a
16425     invoke-interface {v13}, Ljava/util/Iterator;->next()Ljava/lang/Object;
16427     move-result-object v3
16429     check-cast v3, Lcom/android/server/am/ActivityRecord;
16431     iget-boolean v2, v3, Lcom/android/server/am/ActivityRecord;->isHomeActivity:Z
16433     if-eqz v2, :cond_264
16435     const-string v2, "ActivityManager"
16437     new-instance v5, Ljava/lang/StringBuilder;
16439     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
16441     const-string v6, "Clearing package preferred activities from "
16443     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16445     move-result-object v5
16447     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
16449     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16451     move-result-object v5
16453     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16455     move-result-object v5
16457     invoke-static {v2, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
16459     :try_start_28e
16460     invoke-static {}, Landroid/app/ActivityThread;->getPackageManager()Landroid/content/pm/IPackageManager;
16462     move-result-object v2
16464     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
16466     invoke-interface {v2, v5}, Landroid/content/pm/IPackageManager;->clearPackagePreferredActivities(Ljava/lang/String;)V
16467     :try_end_297
16468     .catch Landroid/os/RemoteException; {:try_start_28e .. :try_end_297} :catch_298
16470     goto :goto_264
16472     :catch_298
16473     move-exception v2
16475     goto :goto_264
16477     :cond_29a
16478     move-object/from16 v0, p1
16480     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
16482     if-nez v2, :cond_2b5
16484     move-object/from16 v0, p0
16486     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
16488     move-object/from16 v0, p1
16490     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
16492     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
16494     move-object/from16 v0, p1
16496     iget v6, v0, Lcom/android/server/am/ProcessRecord;->uid:I
16498     invoke-static/range {v15 .. v16}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
16500     move-result-object v8
16502     invoke-virtual {v2, v5, v6, v8}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
16504     :cond_2b5
16505     const/4 v2, 0x1
16507     goto/16 :goto_23
16508 .end method
16510 .method private final handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
16511     .registers 11
16513     const/4 v6, 0x0
16515     const/4 v5, 0x0
16517     const/4 v2, -0x1
16519     invoke-direct {p0, p1, p2, p3, v2}, Lcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
16521     if-nez p2, :cond_d
16523     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
16525     invoke-virtual {v2, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
16527     :cond_d
16528     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
16530     if-ne v2, p1, :cond_14
16532     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->clearProfilerLocked()V
16534     :cond_14
16535     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16537     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
16539     if-eqz v2, :cond_26
16541     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16543     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
16545     iget-object v2, v2, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
16547     if-ne v2, p1, :cond_26
16549     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16551     iput-object v5, v2, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
16553     :cond_26
16554     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16556     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mLastPausedActivity:Lcom/android/server/am/ActivityRecord;
16558     if-eqz v2, :cond_38
16560     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16562     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mLastPausedActivity:Lcom/android/server/am/ActivityRecord;
16564     iget-object v2, v2, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
16566     if-ne v2, p1, :cond_38
16568     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16570     iput-object v5, v2, Lcom/android/server/am/ActivityStack;->mLastPausedActivity:Lcom/android/server/am/ActivityRecord;
16572     :cond_38
16573     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16575     invoke-virtual {v2, p1}, Lcom/android/server/am/ActivityStack;->removeHistoryRecordsForAppLocked(Lcom/android/server/am/ProcessRecord;)Z
16577     move-result v0
16579     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
16581     invoke-virtual {v2}, Ljava/util/ArrayList;->clear()V
16583     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
16585     if-eqz v2, :cond_7c
16587     const-string v2, "ActivityManager"
16589     new-instance v3, Ljava/lang/StringBuilder;
16591     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
16593     const-string v4, "Crash of app "
16595     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16597     move-result-object v3
16599     iget-object v4, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
16601     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16603     move-result-object v3
16605     const-string v4, " running instrumentation "
16607     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16609     move-result-object v3
16611     iget-object v4, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
16613     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
16615     move-result-object v3
16617     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16619     move-result-object v3
16621     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
16623     new-instance v1, Landroid/os/Bundle;
16625     invoke-direct {v1}, Landroid/os/Bundle;-><init>()V
16627     const-string v2, "shortMsg"
16629     const-string v3, "Process crashed."
16631     invoke-virtual {v1, v2, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
16633     invoke-virtual {p0, p1, v6, v1}, Lcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
16635     :cond_7c
16636     if-nez p2, :cond_8d
16638     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16640     invoke-virtual {v2, v5}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
16642     move-result v2
16644     if-nez v2, :cond_8d
16646     if-eqz v0, :cond_8d
16648     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
16650     invoke-virtual {v2, v5, v6}, Lcom/android/server/am/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;I)V
16652     :cond_8d
16653     return-void
16654 .end method
16656 .method public static final installSystemProviders()V
16657     .registers 8
16659     sget-object v5, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
16661     monitor-enter v5
16663     :try_start_3
16664     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
16666     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
16668     const-string v6, "system"
16670     const/16 v7, 0x3e8
16672     invoke-virtual {v4, v6, v7}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
16674     move-result-object v0
16676     check-cast v0, Lcom/android/server/am/ProcessRecord;
16678     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
16680     invoke-direct {v4, v0}, Lcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
16682     move-result-object v3
16684     if-eqz v3, :cond_55
16686     invoke-interface {v3}, Ljava/util/List;->size()I
16688     move-result v4
16690     add-int/lit8 v1, v4, -0x1
16692     :goto_1f
16693     if-ltz v1, :cond_55
16695     invoke-interface {v3, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
16697     move-result-object v2
16699     check-cast v2, Landroid/content/pm/ProviderInfo;
16701     iget-object v4, v2, Landroid/content/pm/ProviderInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
16703     iget v4, v4, Landroid/content/pm/ApplicationInfo;->flags:I
16705     and-int/lit8 v4, v4, 0x1
16707     if-nez v4, :cond_52
16709     const-string v4, "ActivityManager"
16711     new-instance v6, Ljava/lang/StringBuilder;
16713     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
16715     const-string v7, "Not installing system proc provider "
16717     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16719     move-result-object v6
16721     iget-object v7, v2, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
16723     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16725     move-result-object v6
16727     const-string v7, ": not system .apk"
16729     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16731     move-result-object v6
16733     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16735     move-result-object v6
16737     invoke-static {v4, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
16739     invoke-interface {v3, v1}, Ljava/util/List;->remove(I)Ljava/lang/Object;
16741     :cond_52
16742     add-int/lit8 v1, v1, -0x1
16744     goto :goto_1f
16746     :cond_55
16747     monitor-exit v5
16748     :try_end_56
16749     .catchall {:try_start_3 .. :try_end_56} :catchall_70
16751     if-eqz v3, :cond_5d
16753     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
16755     invoke-virtual {v4, v3}, Landroid/app/ActivityThread;->installSystemProviders(Ljava/util/List;)V
16757     :cond_5d
16758     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
16760     new-instance v5, Lcom/android/server/am/CoreSettingsObserver;
16762     sget-object v6, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
16764     invoke-direct {v5, v6}, Lcom/android/server/am/CoreSettingsObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
16766     iput-object v5, v4, Lcom/android/server/am/ActivityManagerService;->mCoreSettingsObserver:Lcom/android/server/am/CoreSettingsObserver;
16768     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
16770     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
16772     invoke-virtual {v4}, Lcom/android/server/am/UsageStatsService;->monitorPackages()V
16774     return-void
16776     :catchall_70
16777     move-exception v4
16779     :try_start_71
16780     monitor-exit v5
16781     :try_end_72
16782     .catchall {:try_start_71 .. :try_end_72} :catchall_70
16784     throw v4
16785 .end method
16787 .method private isReceivingBroadcast(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/BroadcastQueue;
16788     .registers 8
16790     iget-object v4, p1, Lcom/android/server/am/ProcessRecord;->curReceiver:Lcom/android/server/am/BroadcastRecord;
16792     if-eqz v4, :cond_7
16794     iget-object v3, v4, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
16796     :goto_6
16797     return-object v3
16799     :cond_7
16800     monitor-enter p0
16802     :try_start_8
16803     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
16805     array-length v2, v0
16807     const/4 v1, 0x0
16809     :goto_c
16810     if-ge v1, v2, :cond_20
16812     aget-object v3, v0, v1
16814     iget-object v4, v3, Lcom/android/server/am/BroadcastQueue;->mPendingBroadcast:Lcom/android/server/am/BroadcastRecord;
16816     if-eqz v4, :cond_1d
16818     iget-object v5, v4, Lcom/android/server/am/BroadcastRecord;->curApp:Lcom/android/server/am/ProcessRecord;
16820     if-ne v5, p1, :cond_1d
16822     monitor-exit p0
16824     goto :goto_6
16826     :catchall_1a
16827     move-exception v5
16829     monitor-exit p0
16830     :try_end_1c
16831     .catchall {:try_start_8 .. :try_end_1c} :catchall_1a
16833     throw v5
16835     :cond_1d
16836     add-int/lit8 v1, v1, 0x1
16838     goto :goto_c
16840     :cond_20
16841     :try_start_20
16842     monitor-exit p0
16843     :try_end_21
16844     .catchall {:try_start_20 .. :try_end_21} :catchall_1a
16846     const/4 v3, 0x0
16848     goto :goto_6
16849 .end method
16851 .method private final killPackageProcessesLocked(Ljava/lang/String;IIIZZZZLjava/lang/String;)Z
16852     .registers 24
16854     new-instance v11, Ljava/util/ArrayList;
16856     invoke-direct {v11}, Ljava/util/ArrayList;-><init>()V
16858     if-eqz p1, :cond_4a
16860     new-instance v12, Ljava/lang/StringBuilder;
16862     invoke-direct {v12}, Ljava/lang/StringBuilder;-><init>()V
16864     invoke-virtual {v12, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16866     move-result-object v12
16868     const-string v13, ":"
16870     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
16872     move-result-object v12
16874     invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
16876     move-result-object v10
16878     :goto_1a
16879     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
16881     invoke-virtual {v12}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
16883     move-result-object v12
16885     invoke-virtual {v12}, Ljava/util/HashMap;->values()Ljava/util/Collection;
16887     move-result-object v12
16889     invoke-interface {v12}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
16891     move-result-object v8
16893     :cond_28
16894     invoke-interface {v8}, Ljava/util/Iterator;->hasNext()Z
16896     move-result v12
16898     if-eqz v12, :cond_8d
16900     invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
16902     move-result-object v6
16904     check-cast v6, Landroid/util/SparseArray;
16906     invoke-virtual {v6}, Landroid/util/SparseArray;->size()I
16908     move-result v4
16910     const/4 v9, 0x0
16912     :goto_39
16913     if-ge v9, v4, :cond_28
16915     invoke-virtual {v6, v9}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
16917     move-result-object v5
16919     check-cast v5, Lcom/android/server/am/ProcessRecord;
16921     iget-boolean v12, v5, Lcom/android/server/am/ProcessRecord;->persistent:Z
16923     if-eqz v12, :cond_4c
16925     if-nez p8, :cond_4c
16927     :cond_47
16928     :goto_47
16929     add-int/lit8 v9, v9, 0x1
16931     goto :goto_39
16933     :cond_4a
16934     const/4 v10, 0x0
16936     goto :goto_1a
16938     :cond_4c
16939     iget-boolean v12, v5, Lcom/android/server/am/ProcessRecord;->removed:Z
16941     if-eqz v12, :cond_56
16943     if-eqz p7, :cond_47
16945     invoke-virtual {v11, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
16947     goto :goto_47
16949     :cond_56
16950     iget v12, v5, Lcom/android/server/am/ProcessRecord;->setAdj:I
16952     move/from16 v0, p4
16954     if-lt v12, v0, :cond_47
16956     if-nez p1, :cond_68
16958     iget v12, v5, Lcom/android/server/am/ProcessRecord;->userId:I
16960     move/from16 v0, p3
16962     if-ne v12, v0, :cond_47
16964     :cond_64
16965     if-nez p7, :cond_86
16967     const/4 v12, 0x1
16969     :goto_67
16970     return v12
16972     :cond_68
16973     iget v12, v5, Lcom/android/server/am/ProcessRecord;->uid:I
16975     invoke-static {v12}, Landroid/os/UserHandle;->getAppId(I)I
16977     move-result v12
16979     move/from16 v0, p2
16981     if-ne v12, v0, :cond_47
16983     const/4 v12, -0x1
16985     move/from16 v0, p3
16987     if-eq v0, v12, :cond_7d
16989     iget v12, v5, Lcom/android/server/am/ProcessRecord;->userId:I
16991     move/from16 v0, p3
16993     if-ne v12, v0, :cond_47
16995     :cond_7d
16996     iget-object v12, v5, Lcom/android/server/am/ProcessRecord;->pkgList:Ljava/util/HashSet;
16998     invoke-virtual {v12, p1}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
17000     move-result v12
17002     if-nez v12, :cond_64
17004     goto :goto_47
17006     :cond_86
17007     const/4 v12, 0x1
17009     iput-boolean v12, v5, Lcom/android/server/am/ProcessRecord;->removed:Z
17011     invoke-virtual {v11, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
17013     goto :goto_47
17015     :cond_8d
17016     invoke-virtual {v11}, Ljava/util/ArrayList;->size()I
17018     move-result v3
17020     const/4 v7, 0x0
17022     :goto_92
17023     if-ge v7, v3, :cond_a6
17025     invoke-virtual {v11, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
17027     move-result-object v12
17029     check-cast v12, Lcom/android/server/am/ProcessRecord;
17031     move/from16 v0, p5
17033     move/from16 v1, p6
17035     move-object/from16 v2, p9
17037     invoke-direct {p0, v12, v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
17039     add-int/lit8 v7, v7, 0x1
17041     goto :goto_92
17043     :cond_a6
17044     if-lez v3, :cond_aa
17046     const/4 v12, 0x1
17048     goto :goto_67
17050     :cond_aa
17051     const/4 v12, 0x0
17053     goto :goto_67
17054 .end method
17056 .method private killProcessesBelowAdj(ILjava/lang/String;)Z
17057     .registers 14
17059     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
17061     move-result v6
17063     const/16 v7, 0x3e8
17065     if-eq v6, v7, :cond_10
17067     new-instance v6, Ljava/lang/SecurityException;
17069     const-string v7, "killProcessesBelowAdj() only available to system"
17071     invoke-direct {v6, v7}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
17073     throw v6
17075     :cond_10
17076     const/4 v2, 0x0
17078     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
17080     monitor-enter v7
17082     :try_start_14
17083     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
17085     invoke-virtual {v6}, Landroid/util/SparseArray;->size()I
17087     move-result v5
17089     const/4 v1, 0x0
17091     :goto_1b
17092     if-ge v1, v5, :cond_98
17094     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
17096     invoke-virtual {v6, v1}, Landroid/util/SparseArray;->keyAt(I)I
17098     move-result v3
17100     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
17102     invoke-virtual {v6, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
17104     move-result-object v4
17106     check-cast v4, Lcom/android/server/am/ProcessRecord;
17108     if-nez v4, :cond_30
17110     :cond_2d
17111     :goto_2d
17112     add-int/lit8 v1, v1, 0x1
17114     goto :goto_1b
17116     :cond_30
17117     iget v0, v4, Lcom/android/server/am/ProcessRecord;->setAdj:I
17119     if-le v0, p1, :cond_2d
17121     iget-boolean v6, v4, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
17123     if-nez v6, :cond_2d
17125     const-string v6, "ActivityManager"
17127     new-instance v8, Ljava/lang/StringBuilder;
17129     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
17131     const-string v9, "Killing "
17133     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17135     move-result-object v8
17137     invoke-virtual {v8, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
17139     move-result-object v8
17141     const-string v9, " (adj "
17143     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17145     move-result-object v8
17147     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
17149     move-result-object v8
17151     const-string v9, "): "
17153     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17155     move-result-object v8
17157     invoke-virtual {v8, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17159     move-result-object v8
17161     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17163     move-result-object v8
17165     invoke-static {v6, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
17167     const/16 v6, 0x7547
17169     const/4 v8, 0x5
17171     new-array v8, v8, [Ljava/lang/Object;
17173     const/4 v9, 0x0
17175     iget v10, v4, Lcom/android/server/am/ProcessRecord;->userId:I
17177     invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
17179     move-result-object v10
17181     aput-object v10, v8, v9
17183     const/4 v9, 0x1
17185     iget v10, v4, Lcom/android/server/am/ProcessRecord;->pid:I
17187     invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
17189     move-result-object v10
17191     aput-object v10, v8, v9
17193     const/4 v9, 0x2
17195     iget-object v10, v4, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
17197     aput-object v10, v8, v9
17199     const/4 v9, 0x3
17201     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
17203     move-result-object v10
17205     aput-object v10, v8, v9
17207     const/4 v9, 0x4
17209     aput-object p2, v8, v9
17211     invoke-static {v6, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
17213     const/4 v2, 0x1
17215     const/4 v6, 0x1
17217     iput-boolean v6, v4, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
17219     invoke-static {v3}, Landroid/os/Process;->killProcessQuiet(I)V
17221     goto :goto_2d
17223     :catchall_95
17224     move-exception v6
17226     monitor-exit v7
17227     :try_end_97
17228     .catchall {:try_start_14 .. :try_end_97} :catchall_95
17230     throw v6
17232     :cond_98
17233     :try_start_98
17234     monitor-exit v7
17235     :try_end_99
17236     .catchall {:try_start_98 .. :try_end_99} :catchall_95
17238     return v2
17239 .end method
17241 .method private logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V
17242     .registers 21
17244     if-nez p2, :cond_3
17246     :cond_2
17247     :goto_2
17248     return-void
17250     :cond_3
17251     if-eqz p1, :cond_f
17253     move-object/from16 v0, p1
17255     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
17257     iget v2, v2, Landroid/content/pm/ApplicationInfo;->flags:I
17259     and-int/lit16 v2, v2, 0x81
17261     if-eqz v2, :cond_118
17263     :cond_f
17264     const/4 v11, 0x1
17266     :goto_10
17267     if-nez p1, :cond_11b
17269     const-string v14, "unknown"
17271     :goto_14
17272     if-eqz v11, :cond_121
17274     const-string v7, "system_app_strictmode"
17276     :goto_18
17277     move-object/from16 v0, p0
17279     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
17281     const-string v3, "dropbox"
17283     invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
17285     move-result-object v6
17287     check-cast v6, Landroid/os/DropBoxManager;
17289     if-eqz v6, :cond_2
17291     invoke-virtual {v6, v7}, Landroid/os/DropBoxManager;->isTagEnabled(Ljava/lang/String;)Z
17293     move-result v2
17295     if-eqz v2, :cond_2
17297     if-eqz v11, :cond_125
17299     move-object/from16 v0, p0
17301     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService;->mStrictModeBuffer:Ljava/lang/StringBuilder;
17303     :goto_32
17304     monitor-enter v5
17306     :try_start_33
17307     invoke-virtual {v5}, Ljava/lang/StringBuilder;->length()I
17309     move-result v2
17311     if-nez v2, :cond_12e
17313     const/4 v9, 0x1
17315     :goto_3a
17316     move-object/from16 v0, p0
17318     move-object/from16 v1, p1
17320     invoke-direct {v0, v1, v14, v5}, Lcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V
17322     const-string v2, "Build: "
17324     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17326     move-result-object v2
17328     sget-object v3, Landroid/os/Build;->FINGERPRINT:Ljava/lang/String;
17330     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17332     move-result-object v2
17334     const-string v3, "\n"
17336     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17338     const-string v2, "System-App: "
17340     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17342     move-result-object v2
17344     invoke-virtual {v2, v11}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
17346     move-result-object v2
17348     const-string v3, "\n"
17350     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17352     const-string v2, "Uptime-Millis: "
17354     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17356     move-result-object v2
17358     move-object/from16 v0, p2
17360     iget-wide v3, v0, Landroid/os/StrictMode$ViolationInfo;->violationUptimeMillis:J
17362     invoke-virtual {v2, v3, v4}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
17364     move-result-object v2
17366     const-string v3, "\n"
17368     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17370     move-object/from16 v0, p2
17372     iget v2, v0, Landroid/os/StrictMode$ViolationInfo;->violationNumThisLoop:I
17374     if-eqz v2, :cond_8d
17376     const-string v2, "Loop-Violation-Number: "
17378     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17380     move-result-object v2
17382     move-object/from16 v0, p2
17384     iget v3, v0, Landroid/os/StrictMode$ViolationInfo;->violationNumThisLoop:I
17386     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
17388     move-result-object v2
17390     const-string v3, "\n"
17392     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17394     :cond_8d
17395     move-object/from16 v0, p2
17397     iget v2, v0, Landroid/os/StrictMode$ViolationInfo;->numAnimationsRunning:I
17399     if-eqz v2, :cond_a6
17401     const-string v2, "Animations-Running: "
17403     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17405     move-result-object v2
17407     move-object/from16 v0, p2
17409     iget v3, v0, Landroid/os/StrictMode$ViolationInfo;->numAnimationsRunning:I
17411     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
17413     move-result-object v2
17415     const-string v3, "\n"
17417     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17419     :cond_a6
17420     move-object/from16 v0, p2
17422     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->broadcastIntentAction:Ljava/lang/String;
17424     if-eqz v2, :cond_bf
17426     const-string v2, "Broadcast-Intent-Action: "
17428     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17430     move-result-object v2
17432     move-object/from16 v0, p2
17434     iget-object v3, v0, Landroid/os/StrictMode$ViolationInfo;->broadcastIntentAction:Ljava/lang/String;
17436     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17438     move-result-object v2
17440     const-string v3, "\n"
17442     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17444     :cond_bf
17445     move-object/from16 v0, p2
17447     iget v2, v0, Landroid/os/StrictMode$ViolationInfo;->durationMillis:I
17449     const/4 v3, -0x1
17451     if-eq v2, v3, :cond_d9
17453     const-string v2, "Duration-Millis: "
17455     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17457     move-result-object v2
17459     move-object/from16 v0, p2
17461     iget v3, v0, Landroid/os/StrictMode$ViolationInfo;->durationMillis:I
17463     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
17465     move-result-object v2
17467     const-string v3, "\n"
17469     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17471     :cond_d9
17472     move-object/from16 v0, p2
17474     iget-wide v2, v0, Landroid/os/StrictMode$ViolationInfo;->numInstances:J
17476     const-wide/16 v16, -0x1
17478     cmp-long v2, v2, v16
17480     if-eqz v2, :cond_f6
17482     const-string v2, "Instance-Count: "
17484     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17486     move-result-object v2
17488     move-object/from16 v0, p2
17490     iget-wide v3, v0, Landroid/os/StrictMode$ViolationInfo;->numInstances:J
17492     invoke-virtual {v2, v3, v4}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
17494     move-result-object v2
17496     const-string v3, "\n"
17498     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17500     :cond_f6
17501     move-object/from16 v0, p2
17503     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->tags:[Ljava/lang/String;
17505     if-eqz v2, :cond_131
17507     move-object/from16 v0, p2
17509     iget-object v8, v0, Landroid/os/StrictMode$ViolationInfo;->tags:[Ljava/lang/String;
17511     array-length v12, v8
17513     const/4 v10, 0x0
17515     :goto_102
17516     if-ge v10, v12, :cond_131
17518     aget-object v15, v8, v10
17520     const-string v2, "Span-Tag: "
17522     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17524     move-result-object v2
17526     invoke-virtual {v2, v15}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17528     move-result-object v2
17530     const-string v3, "\n"
17532     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17533     :try_end_115
17534     .catchall {:try_start_33 .. :try_end_115} :catchall_181
17536     add-int/lit8 v10, v10, 0x1
17538     goto :goto_102
17540     :cond_118
17541     const/4 v11, 0x0
17543     goto/16 :goto_10
17545     :cond_11b
17546     move-object/from16 v0, p1
17548     iget-object v14, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
17550     goto/16 :goto_14
17552     :cond_121
17553     const-string v7, "data_app_strictmode"
17555     goto/16 :goto_18
17557     :cond_125
17558     new-instance v5, Ljava/lang/StringBuilder;
17560     const/16 v2, 0x400
17562     invoke-direct {v5, v2}, Ljava/lang/StringBuilder;-><init>(I)V
17564     goto/16 :goto_32
17566     :cond_12e
17567     const/4 v9, 0x0
17569     goto/16 :goto_3a
17571     :cond_131
17572     :try_start_131
17573     const-string v2, "\n"
17575     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17577     move-object/from16 v0, p2
17579     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->crashInfo:Landroid/app/ApplicationErrorReport$CrashInfo;
17581     if-eqz v2, :cond_14d
17583     move-object/from16 v0, p2
17585     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->crashInfo:Landroid/app/ApplicationErrorReport$CrashInfo;
17587     iget-object v2, v2, Landroid/app/ApplicationErrorReport$CrashInfo;->stackTrace:Ljava/lang/String;
17589     if-eqz v2, :cond_14d
17591     move-object/from16 v0, p2
17593     iget-object v2, v0, Landroid/os/StrictMode$ViolationInfo;->crashInfo:Landroid/app/ApplicationErrorReport$CrashInfo;
17595     iget-object v2, v2, Landroid/app/ApplicationErrorReport$CrashInfo;->stackTrace:Ljava/lang/String;
17597     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17599     :cond_14d
17600     const-string v2, "\n"
17602     invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17604     invoke-virtual {v5}, Ljava/lang/StringBuilder;->length()I
17606     move-result v2
17608     const/high16 v3, 0x1
17610     if-le v2, v3, :cond_17f
17612     const/4 v13, 0x1
17614     :goto_15b
17615     monitor-exit v5
17616     :try_end_15c
17617     .catchall {:try_start_131 .. :try_end_15c} :catchall_181
17619     if-eqz v11, :cond_160
17621     if-eqz v13, :cond_184
17623     :cond_160
17624     new-instance v2, Lcom/android/server/am/ActivityManagerService$11;
17626     new-instance v3, Ljava/lang/StringBuilder;
17628     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
17630     const-string v4, "Error dump: "
17632     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17634     move-result-object v3
17636     invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17638     move-result-object v3
17640     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17642     move-result-object v4
17644     move-object/from16 v3, p0
17646     invoke-direct/range {v2 .. v7}, Lcom/android/server/am/ActivityManagerService$11;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/StringBuilder;Landroid/os/DropBoxManager;Ljava/lang/String;)V
17648     invoke-virtual {v2}, Lcom/android/server/am/ActivityManagerService$11;->start()V
17650     goto/16 :goto_2
17652     :cond_17f
17653     const/4 v13, 0x0
17655     goto :goto_15b
17657     :catchall_181
17658     move-exception v2
17660     :try_start_182
17661     monitor-exit v5
17662     :try_end_183
17663     .catchall {:try_start_182 .. :try_end_183} :catchall_181
17665     throw v2
17667     :cond_184
17668     if-eqz v9, :cond_2
17670     new-instance v2, Lcom/android/server/am/ActivityManagerService$12;
17672     new-instance v3, Ljava/lang/StringBuilder;
17674     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
17676     const-string v4, "Error dump: "
17678     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17680     move-result-object v3
17682     invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
17684     move-result-object v3
17686     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
17688     move-result-object v3
17690     move-object/from16 v0, p0
17692     invoke-direct {v2, v0, v3, v6, v7}, Lcom/android/server/am/ActivityManagerService$12;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Landroid/os/DropBoxManager;Ljava/lang/String;)V
17694     invoke-virtual {v2}, Lcom/android/server/am/ActivityManagerService$12;->start()V
17696     goto/16 :goto_2
17697 .end method
17699 .method public static final main(I)Landroid/content/Context;
17700     .registers 8
17702     const/4 v6, 0x1
17704     const/4 v5, 0x0
17706     new-instance v3, Lcom/android/server/am/ActivityManagerService$AThread;
17708     invoke-direct {v3}, Lcom/android/server/am/ActivityManagerService$AThread;-><init>()V
17710     invoke-virtual {v3}, Lcom/android/server/am/ActivityManagerService$AThread;->start()V
17712     monitor-enter v3
17714     :goto_b
17715     :try_start_b
17716     iget-object v4, v3, Lcom/android/server/am/ActivityManagerService$AThread;->mService:Lcom/android/server/am/ActivityManagerService;
17717     :try_end_d
17718     .catchall {:try_start_b .. :try_end_d} :catchall_4b
17720     if-nez v4, :cond_15
17722     :try_start_f
17723     invoke-virtual {v3}, Ljava/lang/Object;->wait()V
17724     :try_end_12
17725     .catchall {:try_start_f .. :try_end_12} :catchall_4b
17726     .catch Ljava/lang/InterruptedException; {:try_start_f .. :try_end_12} :catch_13
17728     goto :goto_b
17730     :catch_13
17731     move-exception v4
17733     goto :goto_b
17735     :cond_15
17736     :try_start_15
17737     monitor-exit v3
17738     :try_end_16
17739     .catchall {:try_start_15 .. :try_end_16} :catchall_4b
17741     iget-object v2, v3, Lcom/android/server/am/ActivityManagerService$AThread;->mService:Lcom/android/server/am/ActivityManagerService;
17743     sput-object v2, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
17745     invoke-static {}, Landroid/app/ActivityThread;->systemMain()Landroid/app/ActivityThread;
17747     move-result-object v0
17749     sput-object v0, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
17751     invoke-virtual {v0}, Landroid/app/ActivityThread;->getSystemContext()Landroid/app/ContextImpl;
17753     move-result-object v1
17755     const v4, 0x103006b
17757     invoke-virtual {v1, v4}, Landroid/content/Context;->setTheme(I)V
17759     iput-object v1, v2, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
17761     iput p0, v2, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
17763     new-instance v4, Lcom/android/server/am/ActivityStack;
17765     invoke-direct {v4, v2, v1, v6}, Lcom/android/server/am/ActivityStack;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/Context;Z)V
17767     iput-object v4, v2, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
17769     iget-object v4, v2, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
17771     invoke-virtual {v4, v1}, Lcom/android/server/am/BatteryStatsService;->publish(Landroid/content/Context;)V
17773     iget-object v4, v2, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
17775     invoke-virtual {v4, v1}, Lcom/android/server/am/UsageStatsService;->publish(Landroid/content/Context;)V
17777     monitor-enter v3
17779     const/4 v4, 0x1
17781     :try_start_41
17782     iput-boolean v4, v3, Lcom/android/server/am/ActivityManagerService$AThread;->mReady:Z
17784     invoke-virtual {v3}, Ljava/lang/Object;->notifyAll()V
17786     monitor-exit v3
17787     :try_end_47
17788     .catchall {:try_start_41 .. :try_end_47} :catchall_4e
17790     invoke-virtual {v2, v5, v5, v5, v5}, Lcom/android/server/am/ActivityManagerService;->startRunning(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
17792     return-object v1
17794     :catchall_4b
17795     move-exception v4
17797     :try_start_4c
17798     monitor-exit v3
17799     :try_end_4d
17800     .catchall {:try_start_4c .. :try_end_4d} :catchall_4b
17802     throw v4
17804     :catchall_4e
17805     move-exception v4
17807     :try_start_4f
17808     monitor-exit v3
17809     :try_end_50
17810     .catchall {:try_start_4f .. :try_end_50} :catchall_4e
17812     throw v4
17813 .end method
17815 .method private makeAppCrashingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
17816     .registers 12
17818     const/4 v2, 0x1
17820     iput-boolean v2, p1, Lcom/android/server/am/ProcessRecord;->crashing:Z
17822     const/4 v3, 0x0
17824     move-object v0, p0
17826     move-object v1, p1
17828     move-object v4, p2
17830     move-object v5, p3
17832     move-object v6, p4
17834     invoke-direct/range {v0 .. v6}, Lcom/android/server/am/ActivityManagerService;->generateProcessError(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/ActivityManager$ProcessErrorStateInfo;
17836     move-result-object v0
17838     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->crashingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
17840     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->startAppProblemLocked(Lcom/android/server/am/ProcessRecord;)V
17842     invoke-virtual {p1}, Lcom/android/server/am/ProcessRecord;->stopFreezingAllLocked()V
17844     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->handleAppCrashLocked(Lcom/android/server/am/ProcessRecord;)Z
17846     move-result v0
17848     return v0
17849 .end method
17851 .method private makeAppNotRespondingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
17852     .registers 12
17854     const/4 v0, 0x1
17856     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
17858     const/4 v2, 0x2
17860     const/4 v6, 0x0
17862     move-object v0, p0
17864     move-object v1, p1
17866     move-object v3, p2
17868     move-object v4, p3
17870     move-object v5, p4
17872     invoke-direct/range {v0 .. v6}, Lcom/android/server/am/ActivityManagerService;->generateProcessError(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/ActivityManager$ProcessErrorStateInfo;
17874     move-result-object v0
17876     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
17878     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->startAppProblemLocked(Lcom/android/server/am/ProcessRecord;)V
17880     invoke-virtual {p1}, Lcom/android/server/am/ProcessRecord;->stopFreezingAllLocked()V
17882     return-void
17883 .end method
17885 .method private final moveTaskBackwardsLocked(I)V
17886     .registers 4
17888     const-string v0, "ActivityManager"
17890     const-string v1, "moveTaskBackwards not yet implemented!"
17892     invoke-static {v0, v1}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
17894     return-void
17895 .end method
17897 .method static oomAdjToImportance(ILandroid/app/ActivityManager$RunningAppProcessInfo;)I
17898     .registers 5
17900     const/16 v0, 0x190
17902     const/16 v1, 0x12c
17904     sget v2, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
17906     if-lt p0, v2, :cond_13
17908     if-eqz p1, :cond_12
17910     sget v1, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
17912     sub-int v1, p0, v1
17914     add-int/lit8 v1, v1, 0x1
17916     iput v1, p1, Landroid/app/ActivityManager$RunningAppProcessInfo;->lru:I
17918     :cond_12
17919     :goto_12
17920     return v0
17922     :cond_13
17923     const/16 v2, 0x8
17925     if-lt p0, v2, :cond_19
17927     move v0, v1
17929     goto :goto_12
17931     :cond_19
17932     const/4 v2, 0x6
17934     if-lt p0, v2, :cond_22
17936     if-eqz p1, :cond_12
17938     const/4 v1, 0x0
17940     iput v1, p1, Landroid/app/ActivityManager$RunningAppProcessInfo;->lru:I
17942     goto :goto_12
17944     :cond_22
17945     const/4 v0, 0x5
17947     if-lt p0, v0, :cond_27
17949     move v0, v1
17951     goto :goto_12
17953     :cond_27
17954     const/4 v0, 0x3
17956     if-lt p0, v0, :cond_2d
17958     const/16 v0, 0xaa
17960     goto :goto_12
17962     :cond_2d
17963     const/4 v0, 0x2
17965     if-lt p0, v0, :cond_33
17967     const/16 v0, 0x82
17969     goto :goto_12
17971     :cond_33
17972     const/4 v0, 0x1
17974     if-lt p0, v0, :cond_39
17976     const/16 v0, 0xc8
17978     goto :goto_12
17980     :cond_39
17981     const/16 v0, 0x64
17983     goto :goto_12
17984 .end method
17986 .method private static processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
17987     .registers 3
17989     if-eqz p0, :cond_8
17991     iget v0, p0, Lcom/android/server/am/ProcessRecord;->pid:I
17993     sget v1, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
17995     if-ne v0, v1, :cond_b
17997     :cond_8
17998     const-string v0, "system_server"
18000     :goto_a
18001     return-object v0
18003     :cond_b
18004     iget-object v0, p0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
18006     iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I
18008     and-int/lit8 v0, v0, 0x1
18010     if-eqz v0, :cond_16
18012     const-string v0, "system_app"
18014     goto :goto_a
18016     :cond_16
18017     const-string v0, "data_app"
18019     goto :goto_a
18020 .end method
18022 .method private final processStartTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V
18023     .registers 15
18025     const/4 v12, 0x4
18027     const/4 v11, 0x3
18029     const/4 v10, 0x2
18031     const/4 v9, 0x1
18033     const/4 v8, 0x0
18035     iget v3, p1, Lcom/android/server/am/ProcessRecord;->pid:I
18037     const/4 v1, 0x0
18039     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
18041     monitor-enter v5
18043     :try_start_b
18044     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
18046     invoke-virtual {v4, v3}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
18048     move-result-object v2
18050     check-cast v2, Lcom/android/server/am/ProcessRecord;
18052     if-eqz v2, :cond_1f
18054     iget-object v4, v2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
18056     if-nez v4, :cond_1f
18058     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
18060     invoke-virtual {v4, v3}, Landroid/util/SparseArray;->remove(I)V
18062     const/4 v1, 0x1
18064     :cond_1f
18065     monitor-exit v5
18066     :try_end_20
18067     .catchall {:try_start_b .. :try_end_20} :catchall_ef
18069     if-eqz v1, :cond_f2
18071     const-string v4, "ActivityManager"
18073     new-instance v5, Ljava/lang/StringBuilder;
18075     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
18077     const-string v6, "Process "
18079     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18081     move-result-object v5
18083     invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
18085     move-result-object v5
18087     const-string v6, " failed to attach"
18089     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18091     move-result-object v5
18093     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18095     move-result-object v5
18097     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
18099     const/16 v4, 0x7555
18101     new-array v5, v12, [Ljava/lang/Object;
18103     iget v6, p1, Lcom/android/server/am/ProcessRecord;->userId:I
18105     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18107     move-result-object v6
18109     aput-object v6, v5, v8
18111     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18113     move-result-object v6
18115     aput-object v6, v5, v9
18117     iget v6, p1, Lcom/android/server/am/ProcessRecord;->uid:I
18119     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18121     move-result-object v6
18123     aput-object v6, v5, v10
18125     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
18127     aput-object v6, v5, v11
18129     invoke-static {v4, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
18131     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
18133     iget-object v5, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
18135     iget v6, p1, Lcom/android/server/am/ProcessRecord;->uid:I
18137     invoke-virtual {v4, v5, v6}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
18139     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
18141     iget v5, p1, Lcom/android/server/am/ProcessRecord;->uid:I
18143     invoke-virtual {v4, v5}, Landroid/util/SparseArray;->remove(I)V
18145     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
18147     if-ne v4, p1, :cond_89
18149     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
18151     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
18153     const/16 v6, 0x19
18155     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
18157     iget v7, v7, Lcom/android/server/am/ProcessRecord;->userId:I
18159     invoke-virtual {v5, v6, v7, v8}, Landroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
18161     move-result-object v5
18163     invoke-virtual {v4, v5}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
18165     const/4 v4, 0x0
18167     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
18169     :cond_89
18170     invoke-virtual {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
18172     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
18174     invoke-virtual {v4, p1}, Lcom/android/server/am/ActiveServices;->processStartTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V
18176     const/16 v4, 0x7547
18178     const/4 v5, 0x5
18180     new-array v5, v5, [Ljava/lang/Object;
18182     iget v6, p1, Lcom/android/server/am/ProcessRecord;->userId:I
18184     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18186     move-result-object v6
18188     aput-object v6, v5, v8
18190     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18192     move-result-object v6
18194     aput-object v6, v5, v9
18196     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
18198     aput-object v6, v5, v10
18200     iget v6, p1, Lcom/android/server/am/ProcessRecord;->setAdj:I
18202     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18204     move-result-object v6
18206     aput-object v6, v5, v11
18208     const-string v6, "start timeout"
18210     aput-object v6, v5, v12
18212     invoke-static {v4, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
18214     invoke-static {v3}, Landroid/os/Process;->killProcessQuiet(I)V
18216     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
18218     if-eqz v4, :cond_de
18220     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
18222     iget-object v4, v4, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
18224     iget v4, v4, Lcom/android/server/am/ProcessRecord;->pid:I
18226     if-ne v4, v3, :cond_de
18228     const-string v4, "ActivityManager"
18230     const-string v5, "Unattached app died before backup, skipping"
18232     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
18234     :try_start_cd
18235     const-string v4, "backup"
18237     invoke-static {v4}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
18239     move-result-object v4
18241     invoke-static {v4}, Landroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager;
18243     move-result-object v0
18245     iget-object v4, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
18247     iget-object v4, v4, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
18249     invoke-interface {v0, v4}, Landroid/app/backup/IBackupManager;->agentDisconnected(Ljava/lang/String;)V
18250     :try_end_de
18251     .catch Landroid/os/RemoteException; {:try_start_cd .. :try_end_de} :catch_10b
18253     :cond_de
18254     :goto_de
18255     invoke-virtual {p0, v3}, Lcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z
18257     move-result v4
18259     if-eqz v4, :cond_ee
18261     const-string v4, "ActivityManager"
18263     const-string v5, "Unattached app died before broadcast acknowledged, skipping"
18265     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
18267     invoke-virtual {p0, v3}, Lcom/android/server/am/ActivityManagerService;->skipPendingBroadcastLocked(I)V
18269     :cond_ee
18270     :goto_ee
18271     return-void
18273     :catchall_ef
18274     move-exception v4
18276     :try_start_f0
18277     monitor-exit v5
18278     :try_end_f1
18279     .catchall {:try_start_f0 .. :try_end_f1} :catchall_ef
18281     throw v4
18283     :cond_f2
18284     const-string v4, "ActivityManager"
18286     new-instance v5, Ljava/lang/StringBuilder;
18288     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
18290     const-string v6, "Spurious process start timeout - pid not known for "
18292     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18294     move-result-object v5
18296     invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
18298     move-result-object v5
18300     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18302     move-result-object v5
18304     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
18306     goto :goto_ee
18308     :catch_10b
18309     move-exception v4
18311     goto :goto_de
18312 .end method
18314 .method private static readLastDonePreBootReceivers()Ljava/util/ArrayList;
18315     .registers 15
18316     .annotation system Ldalvik/annotation/Signature;
18317         value = {
18318             "()",
18319             "Ljava/util/ArrayList",
18320             "<",
18321             "Landroid/content/ComponentName;",
18322             ">;"
18323         }
18324     .end annotation
18326     new-instance v9, Ljava/util/ArrayList;
18328     invoke-direct {v9}, Ljava/util/ArrayList;-><init>()V
18330     invoke-static {}, Lcom/android/server/am/ActivityManagerService;->getCalledPreBootReceiversFile()Ljava/io/File;
18332     move-result-object v5
18334     const/4 v6, 0x0
18336     :try_start_a
18337     new-instance v7, Ljava/io/FileInputStream;
18339     invoke-direct {v7, v5}, Ljava/io/FileInputStream;-><init>(Ljava/io/File;)V
18340     :try_end_f
18341     .catchall {:try_start_a .. :try_end_f} :catchall_7f
18342     .catch Ljava/io/FileNotFoundException; {:try_start_a .. :try_end_f} :catch_90
18343     .catch Ljava/io/IOException; {:try_start_a .. :try_end_f} :catch_6f
18345     :try_start_f
18346     new-instance v3, Ljava/io/DataInputStream;
18348     new-instance v13, Ljava/io/BufferedInputStream;
18350     const/16 v14, 0x800
18352     invoke-direct {v13, v7, v14}, Ljava/io/BufferedInputStream;-><init>(Ljava/io/InputStream;I)V
18354     invoke-direct {v3, v13}, Ljava/io/DataInputStream;-><init>(Ljava/io/InputStream;)V
18356     invoke-virtual {v3}, Ljava/io/DataInputStream;->readInt()I
18358     move-result v8
18360     const/16 v13, 0x2710
18362     if-ne v8, v13, :cond_68
18364     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
18366     move-result-object v12
18368     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
18370     move-result-object v2
18372     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
18374     move-result-object v0
18376     sget-object v13, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String;
18378     invoke-virtual {v13, v12}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
18380     move-result v13
18382     if-eqz v13, :cond_68
18384     sget-object v13, Landroid/os/Build$VERSION;->CODENAME:Ljava/lang/String;
18386     invoke-virtual {v13, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
18388     move-result v13
18390     if-eqz v13, :cond_68
18392     sget-object v13, Landroid/os/Build$VERSION;->INCREMENTAL:Ljava/lang/String;
18394     invoke-virtual {v13, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
18396     move-result v13
18398     if-eqz v13, :cond_68
18400     invoke-virtual {v3}, Ljava/io/DataInputStream;->readInt()I
18402     move-result v10
18404     :goto_4b
18405     if-lez v10, :cond_68
18407     add-int/lit8 v10, v10, -0x1
18409     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
18411     move-result-object v11
18413     invoke-virtual {v3}, Ljava/io/DataInputStream;->readUTF()Ljava/lang/String;
18415     move-result-object v1
18417     new-instance v13, Landroid/content/ComponentName;
18419     invoke-direct {v13, v11, v1}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
18421     invoke-virtual {v9, v13}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
18422     :try_end_5f
18423     .catchall {:try_start_f .. :try_end_5f} :catchall_8a
18424     .catch Ljava/io/FileNotFoundException; {:try_start_f .. :try_end_5f} :catch_60
18425     .catch Ljava/io/IOException; {:try_start_f .. :try_end_5f} :catch_8d
18427     goto :goto_4b
18429     :catch_60
18430     move-exception v13
18432     move-object v6, v7
18434     :goto_62
18435     if-eqz v6, :cond_67
18437     :try_start_64
18438     invoke-virtual {v6}, Ljava/io/FileInputStream;->close()V
18439     :try_end_67
18440     .catch Ljava/io/IOException; {:try_start_64 .. :try_end_67} :catch_7d
18442     :cond_67
18443     :goto_67
18444     return-object v9
18446     :cond_68
18447     if-eqz v7, :cond_6d
18449     :try_start_6a
18450     invoke-virtual {v7}, Ljava/io/FileInputStream;->close()V
18451     :try_end_6d
18452     .catch Ljava/io/IOException; {:try_start_6a .. :try_end_6d} :catch_88
18454     :cond_6d
18455     :goto_6d
18456     move-object v6, v7
18458     goto :goto_67
18460     :catch_6f
18461     move-exception v4
18463     :goto_70
18464     :try_start_70
18465     const-string v13, "ActivityManager"
18467     const-string v14, "Failure reading last done pre-boot receivers"
18469     invoke-static {v13, v14, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
18470     :try_end_77
18471     .catchall {:try_start_70 .. :try_end_77} :catchall_7f
18473     if-eqz v6, :cond_67
18475     :try_start_79
18476     invoke-virtual {v6}, Ljava/io/FileInputStream;->close()V
18477     :try_end_7c
18478     .catch Ljava/io/IOException; {:try_start_79 .. :try_end_7c} :catch_7d
18480     goto :goto_67
18482     :catch_7d
18483     move-exception v13
18485     goto :goto_67
18487     :catchall_7f
18488     move-exception v13
18490     :goto_80
18491     if-eqz v6, :cond_85
18493     :try_start_82
18494     invoke-virtual {v6}, Ljava/io/FileInputStream;->close()V
18495     :try_end_85
18496     .catch Ljava/io/IOException; {:try_start_82 .. :try_end_85} :catch_86
18498     :cond_85
18499     :goto_85
18500     throw v13
18502     :catch_86
18503     move-exception v14
18505     goto :goto_85
18507     :catch_88
18508     move-exception v13
18510     goto :goto_6d
18512     :catchall_8a
18513     move-exception v13
18515     move-object v6, v7
18517     goto :goto_80
18519     :catch_8d
18520     move-exception v4
18522     move-object v6, v7
18524     goto :goto_70
18526     :catch_90
18527     move-exception v13
18529     goto :goto_62
18530 .end method
18532 .method private removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
18533     .registers 10
18535     monitor-enter p0
18537     :try_start_1
18538     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
18540     invoke-virtual {v3, p1, p3}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
18542     move-result-object v1
18544     if-nez v1, :cond_b
18546     monitor-exit p0
18548     :goto_a
18549     return-void
18551     :cond_b
18552     new-instance v0, Landroid/content/ComponentName;
18554     iget-object v3, v1, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
18556     iget-object v3, v3, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
18558     iget-object v4, v1, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
18560     iget-object v4, v4, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
18562     invoke-direct {v0, v3, v4}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
18564     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
18566     invoke-virtual {v3, v0, p3}, Lcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
18568     move-result-object v2
18570     invoke-virtual {v2}, Lcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
18572     move-result v3
18574     if-eqz v3, :cond_5b
18576     invoke-virtual {v2, p2}, Lcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleLocked(Landroid/os/IBinder;)Z
18578     move-result v3
18580     if-eqz v3, :cond_32
18582     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
18584     :goto_2d
18585     monitor-exit p0
18587     goto :goto_a
18589     :catchall_2f
18590     move-exception v3
18592     monitor-exit p0
18593     :try_end_31
18594     .catchall {:try_start_1 .. :try_end_31} :catchall_2f
18596     throw v3
18598     :cond_32
18599     :try_start_32
18600     const-string v3, "ActivityManager"
18602     new-instance v4, Ljava/lang/StringBuilder;
18604     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
18606     const-string v5, "Attmpt to remove content provider "
18608     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18610     move-result-object v4
18612     invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
18614     move-result-object v4
18616     const-string v5, " with no external reference for token: "
18618     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18620     move-result-object v4
18622     invoke-virtual {v4, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
18624     move-result-object v4
18626     const-string v5, "."
18628     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18630     move-result-object v4
18632     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18634     move-result-object v4
18636     invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
18638     goto :goto_2d
18640     :cond_5b
18641     const-string v3, "ActivityManager"
18643     new-instance v4, Ljava/lang/StringBuilder;
18645     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
18647     const-string v5, "Attmpt to remove content provider: "
18649     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18651     move-result-object v4
18653     invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
18655     move-result-object v4
18657     const-string v5, " with no external references."
18659     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18661     move-result-object v4
18663     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18665     move-result-object v4
18667     invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
18668     :try_end_79
18669     .catchall {:try_start_32 .. :try_end_79} :catchall_2f
18671     goto :goto_2d
18672 .end method
18674 .method private final removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
18675     .registers 16
18677     const/4 v11, 0x1
18679     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
18681     invoke-virtual {v6, p2}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
18683     move-result v3
18685     if-eqz v3, :cond_b
18687     if-eqz p3, :cond_41
18689     :cond_b
18690     monitor-enter p2
18692     const/4 v6, 0x0
18694     :try_start_d
18695     iput-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->launchingApp:Lcom/android/server/am/ProcessRecord;
18697     invoke-virtual {p2}, Ljava/lang/Object;->notifyAll()V
18699     monitor-exit p2
18700     :try_end_13
18701     .catchall {:try_start_d .. :try_end_13} :catchall_3e
18703     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
18705     iget-object v7, p2, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
18707     iget v8, p2, Lcom/android/server/am/ContentProviderRecord;->uid:I
18709     invoke-static {v8}, Landroid/os/UserHandle;->getUserId(I)I
18711     move-result v8
18713     invoke-virtual {v6, v7, v8}, Lcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V
18715     iget-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
18717     iget-object v6, v6, Landroid/content/pm/ProviderInfo;->authority:Ljava/lang/String;
18719     const-string v7, ";"
18721     invoke-virtual {v6, v7}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
18723     move-result-object v5
18725     const/4 v4, 0x0
18727     :goto_2b
18728     array-length v6, v5
18730     if-ge v4, v6, :cond_41
18732     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
18734     aget-object v7, v5, v4
18736     iget v8, p2, Lcom/android/server/am/ContentProviderRecord;->uid:I
18738     invoke-static {v8}, Landroid/os/UserHandle;->getUserId(I)I
18740     move-result v8
18742     invoke-virtual {v6, v7, v8}, Lcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V
18744     add-int/lit8 v4, v4, 0x1
18746     goto :goto_2b
18748     :catchall_3e
18749     move-exception v6
18751     :try_start_3f
18752     monitor-exit p2
18753     :try_end_40
18754     .catchall {:try_start_3f .. :try_end_40} :catchall_3e
18756     throw v6
18758     :cond_41
18759     const/4 v2, 0x0
18761     :goto_42
18762     iget-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
18764     invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
18766     move-result v6
18768     if-ge v2, v6, :cond_12b
18770     iget-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
18772     invoke-virtual {v6, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
18774     move-result-object v1
18776     check-cast v1, Lcom/android/server/am/ContentProviderConnection;
18778     iget-boolean v6, v1, Lcom/android/server/am/ContentProviderConnection;->waiting:Z
18780     if-eqz v6, :cond_5d
18782     if-eqz v3, :cond_5d
18784     if-nez p3, :cond_5d
18786     :cond_5a
18787     :goto_5a
18788     add-int/lit8 v2, v2, 0x1
18790     goto :goto_42
18792     :cond_5d
18793     iget-object v0, v1, Lcom/android/server/am/ContentProviderConnection;->client:Lcom/android/server/am/ProcessRecord;
18795     iput-boolean v11, v1, Lcom/android/server/am/ContentProviderConnection;->dead:Z
18797     iget v6, v1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
18799     if-lez v6, :cond_106
18801     iget-boolean v6, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
18803     if-nez v6, :cond_5a
18805     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
18807     if-eqz v6, :cond_5a
18809     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
18811     if-eqz v6, :cond_5a
18813     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
18815     sget v7, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
18817     if-eq v6, v7, :cond_5a
18819     const-string v7, "ActivityManager"
18821     new-instance v6, Ljava/lang/StringBuilder;
18823     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
18825     const-string v8, "Kill "
18827     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18829     move-result-object v6
18831     iget-object v8, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
18833     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18835     move-result-object v6
18837     const-string v8, " (pid "
18839     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18841     move-result-object v6
18843     iget v8, v0, Lcom/android/server/am/ProcessRecord;->pid:I
18845     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
18847     move-result-object v6
18849     const-string v8, "): provider "
18851     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18853     move-result-object v6
18855     iget-object v8, p2, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
18857     iget-object v8, v8, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
18859     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18861     move-result-object v6
18863     const-string v8, " in dying process "
18865     invoke-virtual {v6, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18867     move-result-object v8
18869     if-eqz p1, :cond_103
18871     iget-object v6, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
18873     :goto_ae
18874     invoke-virtual {v8, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18876     move-result-object v6
18878     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18880     move-result-object v6
18882     invoke-static {v7, v6}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
18884     const/16 v6, 0x7547
18886     const/4 v7, 0x5
18888     new-array v7, v7, [Ljava/lang/Object;
18890     const/4 v8, 0x0
18892     iget v9, v0, Lcom/android/server/am/ProcessRecord;->userId:I
18894     invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18896     move-result-object v9
18898     aput-object v9, v7, v8
18900     iget v8, v0, Lcom/android/server/am/ProcessRecord;->pid:I
18902     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18904     move-result-object v8
18906     aput-object v8, v7, v11
18908     const/4 v8, 0x2
18910     iget-object v9, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
18912     aput-object v9, v7, v8
18914     const/4 v8, 0x3
18916     iget v9, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
18918     invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
18920     move-result-object v9
18922     aput-object v9, v7, v8
18924     const/4 v8, 0x4
18926     new-instance v9, Ljava/lang/StringBuilder;
18928     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
18930     const-string v10, "dying provider "
18932     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18934     move-result-object v9
18936     iget-object v10, p2, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
18938     invoke-virtual {v10}, Landroid/content/ComponentName;->toShortString()Ljava/lang/String;
18940     move-result-object v10
18942     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
18944     move-result-object v9
18946     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
18948     move-result-object v9
18950     aput-object v9, v7, v8
18952     invoke-static {v6, v7}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
18954     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
18956     invoke-static {v6}, Landroid/os/Process;->killProcessQuiet(I)V
18958     goto/16 :goto_5a
18960     :cond_103
18961     const-string v6, "??"
18963     goto :goto_ae
18965     :cond_106
18966     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
18968     if-eqz v6, :cond_5a
18970     iget-object v6, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
18972     iget-object v6, v6, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
18974     if-eqz v6, :cond_5a
18976     :try_start_110
18977     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
18979     iget-object v7, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
18981     iget-object v7, v7, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
18983     invoke-interface {v7}, Landroid/content/IContentProvider;->asBinder()Landroid/os/IBinder;
18985     move-result-object v7
18987     invoke-interface {v6, v7}, Landroid/app/IApplicationThread;->unstableProviderDied(Landroid/os/IBinder;)V
18988     :try_end_11d
18989     .catch Landroid/os/RemoteException; {:try_start_110 .. :try_end_11d} :catch_135
18991     :goto_11d
18992     iget-object v6, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
18994     invoke-virtual {v6, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
18996     iget-object v6, v1, Lcom/android/server/am/ContentProviderConnection;->client:Lcom/android/server/am/ProcessRecord;
18998     iget-object v6, v6, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
19000     invoke-virtual {v6, v1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
19002     goto/16 :goto_5a
19004     :cond_12b
19005     if-eqz v3, :cond_134
19007     if-eqz p3, :cond_134
19009     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
19011     invoke-virtual {v6, p2}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
19013     :cond_134
19014     return v3
19016     :catch_135
19017     move-exception v6
19019     goto :goto_11d
19020 .end method
19022 .method private final removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
19023     .registers 14
19025     const/4 v8, 0x0
19027     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
19029     iget v3, p1, Lcom/android/server/am/ProcessRecord;->uid:I
19031     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
19033     invoke-virtual {v4, v0, v3}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
19035     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
19037     iget v5, p1, Lcom/android/server/am/ProcessRecord;->uid:I
19039     invoke-virtual {v4, v5}, Landroid/util/SparseArray;->remove(I)V
19041     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
19043     if-ne v4, p1, :cond_29
19045     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
19047     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
19049     const/16 v6, 0x19
19051     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
19053     iget v7, v7, Lcom/android/server/am/ProcessRecord;->userId:I
19055     invoke-virtual {v5, v6, v7, v8}, Landroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
19057     move-result-object v5
19059     invoke-virtual {v4, v5}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
19061     const/4 v4, 0x0
19063     iput-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
19065     :cond_29
19066     const/4 v1, 0x0
19068     iget v4, p1, Lcom/android/server/am/ProcessRecord;->pid:I
19070     if-lez v4, :cond_8d
19072     iget v4, p1, Lcom/android/server/am/ProcessRecord;->pid:I
19074     sget v5, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
19076     if-eq v4, v5, :cond_8d
19078     iget v2, p1, Lcom/android/server/am/ProcessRecord;->pid:I
19080     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
19082     monitor-enter v5
19084     :try_start_39
19085     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
19087     invoke-virtual {v4, v2}, Landroid/util/SparseArray;->remove(I)V
19089     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
19091     const/16 v6, 0x14
19093     invoke-virtual {v4, v6, p1}, Landroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
19095     monitor-exit v5
19096     :try_end_46
19097     .catchall {:try_start_39 .. :try_end_46} :catchall_88
19099     const-string v4, "ActivityManager"
19101     new-instance v5, Ljava/lang/StringBuilder;
19103     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
19105     const-string v6, "Killing proc "
19107     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19109     move-result-object v5
19111     invoke-virtual {p1}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
19113     move-result-object v6
19115     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19117     move-result-object v5
19119     const-string v6, ": "
19121     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19123     move-result-object v5
19125     invoke-virtual {v5, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19127     move-result-object v5
19129     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
19131     move-result-object v5
19133     invoke-static {v4, v5}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
19135     const/4 v4, 0x1
19137     invoke-direct {p0, p1, v4, p3}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
19139     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
19141     invoke-virtual {v4, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
19143     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
19145     iget-boolean v4, p1, Lcom/android/server/am/ProcessRecord;->persistent:Z
19147     if-eqz v4, :cond_87
19149     iget-boolean v4, p1, Lcom/android/server/am/ProcessRecord;->isolated:Z
19151     if-nez v4, :cond_87
19153     if-nez p2, :cond_8b
19155     iget-object v4, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
19157     invoke-virtual {p0, v4, v8}, Lcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
19159     :cond_87
19160     :goto_87
19161     return v1
19163     :catchall_88
19164     move-exception v4
19166     :try_start_89
19167     monitor-exit v5
19168     :try_end_8a
19169     .catchall {:try_start_89 .. :try_end_8a} :catchall_88
19171     throw v4
19173     :cond_8b
19174     const/4 v1, 0x1
19176     goto :goto_87
19178     :cond_8d
19179     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
19181     invoke-virtual {v4, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
19183     goto :goto_87
19184 .end method
19186 .method private reportStartInstrumentationFailure(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;Ljava/lang/String;)V
19187     .registers 8
19189     const-string v2, "ActivityManager"
19191     invoke-static {v2, p3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
19193     if-eqz p1, :cond_1c
19195     :try_start_7
19196     new-instance v1, Landroid/os/Bundle;
19198     invoke-direct {v1}, Landroid/os/Bundle;-><init>()V
19200     const-string v2, "id"
19202     const-string v3, "ActivityManagerService"
19204     invoke-virtual {v1, v2, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
19206     const-string v2, "Error"
19208     invoke-virtual {v1, v2, p3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
19210     const/4 v2, -0x1
19212     invoke-interface {p1, p2, v2, v1}, Landroid/app/IInstrumentationWatcher;->instrumentationStatus(Landroid/content/ComponentName;ILandroid/os/Bundle;)V
19213     :try_end_1c
19214     .catch Landroid/os/RemoteException; {:try_start_7 .. :try_end_1c} :catch_1d
19216     :cond_1c
19217     :goto_1c
19218     return-void
19220     :catch_1d
19221     move-exception v0
19223     const-string v2, "ActivityManager"
19225     invoke-static {v2, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/Throwable;)I
19227     goto :goto_1c
19228 .end method
19230 .method private resolveActivityInfo(Landroid/content/Intent;II)Landroid/content/pm/ActivityInfo;
19231     .registers 9
19233     const/4 v0, 0x0
19235     invoke-virtual {p1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
19237     move-result-object v1
19239     if-eqz v1, :cond_10
19241     :try_start_7
19242     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
19244     move-result-object v3
19246     invoke-interface {v3, v1, p2, p3}, Landroid/content/pm/IPackageManager;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
19248     move-result-object v0
19250     :cond_f
19251     :goto_f
19252     return-object v0
19254     :cond_10
19255     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
19257     move-result-object v3
19259     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
19261     invoke-virtual {v4}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
19263     move-result-object v4
19265     invoke-virtual {p1, v4}, Landroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String;
19267     move-result-object v4
19269     invoke-interface {v3, p1, v4, p2, p3}, Landroid/content/pm/IPackageManager;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
19271     move-result-object v2
19273     if-eqz v2, :cond_f
19275     iget-object v0, v2, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
19276     :try_end_26
19277     .catch Landroid/os/RemoteException; {:try_start_7 .. :try_end_26} :catch_27
19279     goto :goto_f
19281     :catch_27
19282     move-exception v3
19284     goto :goto_f
19285 .end method
19287 .method private final resumedAppLocked()Lcom/android/server/am/ActivityRecord;
19288     .registers 4
19290     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
19292     iget-object v0, v1, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
19294     if-eqz v0, :cond_a
19296     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
19298     if-nez v1, :cond_1b
19300     :cond_a
19301     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
19303     iget-object v0, v1, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
19305     if-eqz v0, :cond_14
19307     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
19309     if-nez v1, :cond_1b
19311     :cond_14
19312     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
19314     const/4 v2, 0x0
19316     invoke-virtual {v1, v2}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
19318     move-result-object v0
19320     :cond_1b
19321     return-object v0
19322 .end method
19324 .method private retrieveSettings()V
19325     .registers 9
19327     const/4 v5, 0x1
19329     const/4 v6, 0x0
19331     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
19333     invoke-virtual {v7}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
19335     move-result-object v3
19337     const-string v7, "debug_app"
19339     invoke-static {v3, v7}, Landroid/provider/Settings$Global;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
19341     move-result-object v2
19343     const-string v7, "wait_for_debugger"
19345     invoke-static {v3, v7, v6}, Landroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
19347     move-result v7
19349     if-eqz v7, :cond_3b
19351     move v4, v5
19353     :goto_17
19354     const-string v7, "always_finish_activities"
19356     invoke-static {v3, v7, v6}, Landroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
19358     move-result v7
19360     if-eqz v7, :cond_3d
19362     move v0, v5
19364     :goto_20
19365     new-instance v1, Landroid/content/res/Configuration;
19367     invoke-direct {v1}, Landroid/content/res/Configuration;-><init>()V
19369     invoke-static {v3, v1}, Landroid/provider/Settings$System;->getConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)V
19371     monitor-enter p0
19373     :try_start_29
19374     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
19376     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
19378     iput-boolean v4, p0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
19380     iput-boolean v4, p0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
19382     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
19384     const/4 v5, 0x0
19386     const/4 v6, 0x0
19388     const/4 v7, 0x1
19390     invoke-virtual {p0, v1, v5, v6, v7}, Lcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
19392     monitor-exit p0
19394     return-void
19396     :cond_3b
19397     move v4, v6
19399     goto :goto_17
19401     :cond_3d
19402     move v0, v6
19404     goto :goto_20
19406     :catchall_3f
19407     move-exception v5
19409     monitor-exit p0
19410     :try_end_41
19411     .catchall {:try_start_29 .. :try_end_41} :catchall_3f
19413     throw v5
19414 .end method
19416 .method private revokeUriPermissionLocked(ILandroid/net/Uri;I)V
19417     .registers 24
19419     and-int/lit8 p3, p3, 0x3
19421     if-nez p3, :cond_5
19423     :cond_4
19424     :goto_4
19425     return-void
19427     :cond_5
19428     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
19430     move-result-object v2
19432     invoke-virtual/range {p2 .. p2}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
19434     move-result-object v10
19436     const/4 v3, 0x0
19438     invoke-static/range {p1 .. p1}, Landroid/os/UserHandle;->getUserId(I)I
19440     move-result v19
19442     move-object/from16 v0, p0
19444     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
19446     move/from16 v0, v19
19448     invoke-virtual {v1, v10, v0}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
19450     move-result-object v11
19452     if-eqz v11, :cond_3f
19454     iget-object v3, v11, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
19456     :goto_20
19457     if-nez v3, :cond_48
19459     const-string v1, "ActivityManager"
19461     new-instance v4, Ljava/lang/StringBuilder;
19463     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
19465     const-string v5, "No content provider found for permission revoke: "
19467     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19469     move-result-object v4
19471     invoke-virtual/range {p2 .. p2}, Landroid/net/Uri;->toSafeString()Ljava/lang/String;
19473     move-result-object v5
19475     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19477     move-result-object v4
19479     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
19481     move-result-object v4
19483     invoke-static {v1, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
19485     goto :goto_4
19487     :cond_3f
19488     const/16 v1, 0x800
19490     :try_start_41
19491     move/from16 v0, v19
19493     invoke-interface {v2, v10, v1, v0}, Landroid/content/pm/IPackageManager;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
19494     :try_end_46
19495     .catch Landroid/os/RemoteException; {:try_start_41 .. :try_end_46} :catch_10b
19497     move-result-object v3
19499     goto :goto_20
19501     :cond_48
19502     move-object/from16 v1, p0
19504     move-object/from16 v4, p2
19506     move/from16 v5, p1
19508     move/from16 v6, p3
19510     invoke-direct/range {v1 .. v6}, Lcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Landroid/net/Uri;II)Z
19512     move-result v1
19514     if-nez v1, :cond_7d
19516     new-instance v1, Ljava/lang/SecurityException;
19518     new-instance v4, Ljava/lang/StringBuilder;
19520     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
19522     const-string v5, "Uid "
19524     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19526     move-result-object v4
19528     move/from16 v0, p1
19530     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
19532     move-result-object v4
19534     const-string v5, " does not have permission to uri "
19536     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
19538     move-result-object v4
19540     move-object/from16 v0, p2
19542     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
19544     move-result-object v4
19546     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
19548     move-result-object v4
19550     invoke-direct {v1, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
19552     throw v1
19554     :cond_7d
19555     invoke-virtual/range {p2 .. p2}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
19557     move-result-object v9
19559     if-eqz v9, :cond_4
19561     invoke-interface {v9}, Ljava/util/List;->size()I
19563     move-result v8
19565     move-object/from16 v0, p0
19567     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
19569     invoke-virtual {v1}, Landroid/util/SparseArray;->size()I
19571     move-result v7
19573     const/4 v12, 0x0
19575     :goto_90
19576     if-ge v12, v7, :cond_4
19578     move-object/from16 v0, p0
19580     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
19582     invoke-virtual {v1, v12}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
19584     move-result-object v16
19586     check-cast v16, Ljava/util/HashMap;
19588     invoke-virtual/range {v16 .. v16}, Ljava/util/HashMap;->values()Ljava/util/Collection;
19590     move-result-object v1
19592     invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
19594     move-result-object v13
19596     :cond_a4
19597     :goto_a4
19598     invoke-interface {v13}, Ljava/util/Iterator;->hasNext()Z
19600     move-result v1
19602     if-eqz v1, :cond_ef
19604     invoke-interface {v13}, Ljava/util/Iterator;->next()Ljava/lang/Object;
19606     move-result-object v15
19608     check-cast v15, Lcom/android/server/am/UriPermission;
19610     iget-object v0, v15, Lcom/android/server/am/UriPermission;->uri:Landroid/net/Uri;
19612     move-object/from16 v18, v0
19614     invoke-virtual/range {v18 .. v18}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
19616     move-result-object v1
19618     invoke-virtual {v10, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
19620     move-result v1
19622     if-eqz v1, :cond_a4
19624     invoke-virtual/range {v18 .. v18}, Landroid/net/Uri;->getPathSegments()Ljava/util/List;
19626     move-result-object v17
19628     if-eqz v17, :cond_a4
19630     invoke-interface/range {v17 .. v17}, Ljava/util/List;->size()I
19632     move-result v1
19634     if-lt v1, v8, :cond_a4
19636     const/4 v14, 0x0
19638     :goto_cb
19639     if-ge v14, v8, :cond_e2
19641     invoke-interface {v9, v14}, Ljava/util/List;->get(I)Ljava/lang/Object;
19643     move-result-object v1
19645     check-cast v1, Ljava/lang/String;
19647     move-object/from16 v0, v17
19649     invoke-interface {v0, v14}, Ljava/util/List;->get(I)Ljava/lang/Object;
19651     move-result-object v4
19653     invoke-virtual {v1, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
19655     move-result v1
19657     if-eqz v1, :cond_a4
19659     add-int/lit8 v14, v14, 0x1
19661     goto :goto_cb
19663     :cond_e2
19664     move/from16 v0, p3
19666     invoke-virtual {v15, v0}, Lcom/android/server/am/UriPermission;->clearModes(I)V
19668     iget v1, v15, Lcom/android/server/am/UriPermission;->modeFlags:I
19670     if-nez v1, :cond_a4
19672     invoke-interface {v13}, Ljava/util/Iterator;->remove()V
19674     goto :goto_a4
19676     :cond_ef
19677     invoke-virtual/range {v16 .. v16}, Ljava/util/HashMap;->size()I
19679     move-result v1
19681     if-nez v1, :cond_108
19683     move-object/from16 v0, p0
19685     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
19687     move-object/from16 v0, p0
19689     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
19691     invoke-virtual {v4, v12}, Landroid/util/SparseArray;->keyAt(I)I
19693     move-result v4
19695     invoke-virtual {v1, v4}, Landroid/util/SparseArray;->remove(I)V
19697     add-int/lit8 v7, v7, -0x1
19699     add-int/lit8 v12, v12, -0x1
19701     :cond_108
19702     add-int/lit8 v12, v12, 0x1
19704     goto :goto_90
19706     :catch_10b
19707     move-exception v1
19709     goto/16 :goto_20
19710 .end method
19712 .method private saveLocaleLocked(Ljava/util/Locale;ZZ)V
19713     .registers 6
19715     if-eqz p2, :cond_14
19717     const-string v0, "user.language"
19719     invoke-virtual {p1}, Ljava/util/Locale;->getLanguage()Ljava/lang/String;
19721     move-result-object v1
19723     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
19725     const-string v0, "user.region"
19727     invoke-virtual {p1}, Ljava/util/Locale;->getCountry()Ljava/lang/String;
19729     move-result-object v1
19731     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
19733     :cond_14
19734     if-eqz p3, :cond_31
19736     const-string v0, "persist.sys.language"
19738     invoke-virtual {p1}, Ljava/util/Locale;->getLanguage()Ljava/lang/String;
19740     move-result-object v1
19742     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
19744     const-string v0, "persist.sys.country"
19746     invoke-virtual {p1}, Ljava/util/Locale;->getCountry()Ljava/lang/String;
19748     move-result-object v1
19750     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
19752     const-string v0, "persist.sys.localevar"
19754     invoke-virtual {p1}, Ljava/util/Locale;->getVariant()Ljava/lang/String;
19756     move-result-object v1
19758     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
19760     :cond_31
19761     return-void
19762 .end method
19764 .method private saveThemeResourceLocked(Landroid/content/res/CustomTheme;Z)V
19765     .registers 5
19767     if-eqz p2, :cond_14
19769     const-string v0, "persist.sys.themeId"
19771     invoke-virtual {p1}, Landroid/content/res/CustomTheme;->getThemeId()Ljava/lang/String;
19773     move-result-object v1
19775     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
19777     const-string v0, "persist.sys.themePackageName"
19779     invoke-virtual {p1}, Landroid/content/res/CustomTheme;->getThemePackageName()Ljava/lang/String;
19781     move-result-object v1
19783     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
19785     :cond_14
19786     return-void
19787 .end method
19789 .method private static scanArgs([Ljava/lang/String;Ljava/lang/String;)Z
19790     .registers 7
19792     if-eqz p0, :cond_14
19794     move-object v1, p0
19796     array-length v3, v1
19798     const/4 v2, 0x0
19800     :goto_5
19801     if-ge v2, v3, :cond_14
19803     aget-object v0, v1, v2
19805     invoke-virtual {p1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
19807     move-result v4
19809     if-eqz v4, :cond_11
19811     const/4 v4, 0x1
19813     :goto_10
19814     return v4
19816     :cond_11
19817     add-int/lit8 v2, v2, 0x1
19819     goto :goto_5
19821     :cond_14
19822     const/4 v4, 0x0
19824     goto :goto_10
19825 .end method
19827 .method public static self()Lcom/android/server/am/ActivityManagerService;
19828     .registers 1
19830     sget-object v0, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
19832     return-object v0
19833 .end method
19835 .method private final sendPackageBroadcastLocked(I[Ljava/lang/String;I)V
19836     .registers 7
19838     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
19840     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
19842     move-result v2
19844     add-int/lit8 v0, v2, -0x1
19846     :goto_8
19847     if-ltz v0, :cond_25
19849     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
19851     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
19853     move-result-object v1
19855     check-cast v1, Lcom/android/server/am/ProcessRecord;
19857     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
19859     if-eqz v2, :cond_22
19861     const/4 v2, -0x1
19863     if-eq p3, v2, :cond_1d
19865     iget v2, v1, Lcom/android/server/am/ProcessRecord;->userId:I
19867     if-ne v2, p3, :cond_22
19869     :cond_1d
19870     :try_start_1d
19871     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
19873     invoke-interface {v2, p1, p2}, Landroid/app/IApplicationThread;->dispatchPackageBroadcast(I[Ljava/lang/String;)V
19874     :try_end_22
19875     .catch Landroid/os/RemoteException; {:try_start_1d .. :try_end_22} :catch_26
19877     :cond_22
19878     :goto_22
19879     add-int/lit8 v0, v0, -0x1
19881     goto :goto_8
19883     :cond_25
19884     return-void
19886     :catch_26
19887     move-exception v2
19889     goto :goto_22
19890 .end method
19892 .method public static setSystemProcess()V
19893     .registers 9
19895     :try_start_0
19896     sget-object v3, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
19898     const-string v4, "activity"
19900     const/4 v5, 0x1
19902     invoke-static {v4, v3, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;Z)V
19904     const-string v4, "meminfo"
19906     new-instance v5, Lcom/android/server/am/ActivityManagerService$MemBinder;
19908     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$MemBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
19910     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
19912     const-string v4, "gfxinfo"
19914     new-instance v5, Lcom/android/server/am/ActivityManagerService$GraphicsBinder;
19916     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$GraphicsBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
19918     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
19920     const-string v4, "dbinfo"
19922     new-instance v5, Lcom/android/server/am/ActivityManagerService$DbBinder;
19924     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$DbBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
19926     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
19928     const-string v4, "cpuinfo"
19930     new-instance v5, Lcom/android/server/am/ActivityManagerService$CpuBinder;
19932     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$CpuBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
19934     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
19936     const-string v4, "permission"
19938     new-instance v5, Lcom/android/server/am/ActivityManagerService$PermissionController;
19940     invoke-direct {v5, v3}, Lcom/android/server/am/ActivityManagerService$PermissionController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
19942     invoke-static {v4, v5}, Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
19944     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
19946     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
19948     invoke-virtual {v4}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
19950     move-result-object v4
19952     const-string v5, "android"
19954     const/16 v6, 0x400
19956     invoke-virtual {v4, v5, v6}, Landroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
19958     move-result-object v2
19960     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
19962     invoke-virtual {v4, v2}, Landroid/app/ActivityThread;->installSystemApplicationInfo(Landroid/content/pm/ApplicationInfo;)V
19964     sget-object v5, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
19966     monitor-enter v5
19967     :try_end_52
19968     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_0 .. :try_end_52} :catch_94
19970     :try_start_52
19971     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
19973     sget-object v6, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
19975     invoke-virtual {v6}, Landroid/app/ActivityThread;->getApplicationThread()Landroid/app/ActivityThread$ApplicationThread;
19977     move-result-object v6
19979     iget-object v7, v2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
19981     const/4 v8, 0x0
19983     invoke-virtual {v4, v6, v2, v7, v8}, Lcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Lcom/android/server/am/ProcessRecord;
19985     move-result-object v0
19987     const/4 v4, 0x1
19989     iput-boolean v4, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
19991     sget v4, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
19993     iput v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
19995     const/16 v4, -0x10
19997     iput v4, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
19999     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
20001     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
20003     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20005     iget v7, v0, Lcom/android/server/am/ProcessRecord;->uid:I
20007     invoke-virtual {v4, v6, v7, v0}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
20009     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
20011     iget-object v6, v4, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
20013     monitor-enter v6
20014     :try_end_7c
20015     .catchall {:try_start_52 .. :try_end_7c} :catchall_91
20017     :try_start_7c
20018     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
20020     iget-object v4, v4, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
20022     iget v7, v0, Lcom/android/server/am/ProcessRecord;->pid:I
20024     invoke-virtual {v4, v7, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
20026     monitor-exit v6
20027     :try_end_86
20028     .catchall {:try_start_7c .. :try_end_86} :catchall_8e
20030     :try_start_86
20031     sget-object v4, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
20033     const/4 v6, 0x1
20035     invoke-virtual {v4, v0, v6}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;Z)V
20037     monitor-exit v5
20038     :try_end_8d
20039     .catchall {:try_start_86 .. :try_end_8d} :catchall_91
20041     return-void
20043     :catchall_8e
20044     move-exception v4
20046     :try_start_8f
20047     monitor-exit v6
20048     :try_end_90
20049     .catchall {:try_start_8f .. :try_end_90} :catchall_8e
20051     :try_start_90
20052     throw v4
20054     :catchall_91
20055     move-exception v4
20057     monitor-exit v5
20058     :try_end_93
20059     .catchall {:try_start_90 .. :try_end_93} :catchall_91
20061     :try_start_93
20062     throw v4
20063     :try_end_94
20064     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_93 .. :try_end_94} :catch_94
20066     :catch_94
20067     move-exception v1
20069     new-instance v4, Ljava/lang/RuntimeException;
20071     const-string v5, "Unable to find android system package"
20073     invoke-direct {v4, v5, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
20075     throw v4
20076 .end method
20078 .method private static final shouldShowDialogs(Landroid/content/res/Configuration;)Z
20079     .registers 3
20081     const/4 v0, 0x1
20083     iget v1, p0, Landroid/content/res/Configuration;->keyboard:I
20085     if-ne v1, v0, :cond_9
20087     iget v1, p0, Landroid/content/res/Configuration;->touchscreen:I
20089     if-eq v1, v0, :cond_a
20091     :cond_9
20092     :goto_9
20093     return v0
20095     :cond_a
20096     const/4 v0, 0x0
20098     goto :goto_9
20099 .end method
20101 .method private final startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
20102     .registers 23
20104     move-object/from16 v0, p1
20106     iget v1, v0, Lcom/android/server/am/ProcessRecord;->pid:I
20108     if-lez v1, :cond_30
20110     move-object/from16 v0, p1
20112     iget v1, v0, Lcom/android/server/am/ProcessRecord;->pid:I
20114     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
20116     if-eq v1, v2, :cond_30
20118     move-object/from16 v0, p0
20120     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
20122     monitor-enter v2
20124     :try_start_13
20125     move-object/from16 v0, p0
20127     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
20129     move-object/from16 v0, p1
20131     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
20133     invoke-virtual {v1, v4}, Landroid/util/SparseArray;->remove(I)V
20135     move-object/from16 v0, p0
20137     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
20139     const/16 v4, 0x14
20141     move-object/from16 v0, p1
20143     invoke-virtual {v1, v4, v0}, Landroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
20145     monitor-exit v2
20146     :try_end_2a
20147     .catchall {:try_start_13 .. :try_end_2a} :catchall_1f6
20149     const/4 v1, 0x0
20151     move-object/from16 v0, p1
20153     invoke-virtual {v0, v1}, Lcom/android/server/am/ProcessRecord;->setPid(I)V
20155     :cond_30
20156     move-object/from16 v0, p0
20158     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
20160     move-object/from16 v0, p1
20162     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
20164     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStats()V
20166     move-object/from16 v0, p0
20168     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
20170     const/4 v2, 0x0
20172     move-object/from16 v0, p0
20174     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
20176     const/4 v8, 0x1
20178     move-object/from16 v0, p0
20180     iget-object v9, v0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
20182     array-length v9, v9
20184     add-int/lit8 v9, v9, -0x1
20186     invoke-static {v1, v2, v4, v8, v9}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
20188     move-object/from16 v0, p0
20190     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
20192     const/4 v2, 0x0
20194     const/4 v4, 0x0
20196     aput v4, v1, v2
20198     :try_start_58
20199     move-object/from16 v0, p1
20201     iget v3, v0, Lcom/android/server/am/ProcessRecord;->uid:I
20203     const/4 v5, 0x0
20205     const/4 v7, 0x0
20207     move-object/from16 v0, p1
20209     iget-boolean v1, v0, Lcom/android/server/am/ProcessRecord;->isolated:Z
20210     :try_end_62
20211     .catch Ljava/lang/RuntimeException; {:try_start_58 .. :try_end_62} :catch_206
20213     if-nez v1, :cond_a1
20215     const/16 v16, 0x0
20217     :try_start_66
20218     move-object/from16 v0, p0
20220     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
20222     invoke-virtual {v1}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
20224     move-result-object v17
20226     move-object/from16 v0, p1
20228     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
20230     iget-object v1, v1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
20232     move-object/from16 v0, v17
20234     invoke-virtual {v0, v1}, Landroid/content/pm/PackageManager;->getPackageGids(Ljava/lang/String;)[I
20236     move-result-object v16
20238     invoke-static {}, Landroid/os/Environment;->isExternalStorageEmulated()Z
20240     move-result v1
20242     if-eqz v1, :cond_91
20244     const-string v1, "android.permission.ACCESS_ALL_EXTERNAL_STORAGE"
20246     move-object/from16 v0, p1
20248     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
20250     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
20252     move-object/from16 v0, v17
20254     invoke-virtual {v0, v1, v2}, Landroid/content/pm/PackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I
20255     :try_end_8d
20256     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_66 .. :try_end_8d} :catch_1fc
20257     .catch Ljava/lang/RuntimeException; {:try_start_66 .. :try_end_8d} :catch_206
20259     move-result v1
20261     if-nez v1, :cond_1f9
20263     const/4 v7, 0x3
20265     :cond_91
20266     :goto_91
20267     if-nez v16, :cond_22a
20269     const/4 v1, 0x1
20271     :try_start_94
20272     new-array v5, v1, [I
20274     :goto_96
20275     const/4 v1, 0x0
20277     invoke-static {v3}, Landroid/os/UserHandle;->getAppId(I)I
20279     move-result v2
20281     invoke-static {v2}, Landroid/os/UserHandle;->getSharedAppGid(I)I
20283     move-result v2
20285     aput v2, v5, v1
20287     :cond_a1
20288     move-object/from16 v0, p0
20290     iget v1, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
20292     if-eqz v1, :cond_d9
20294     move-object/from16 v0, p0
20296     iget v1, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
20298     const/4 v2, 0x1
20300     if-ne v1, v2, :cond_c7
20302     move-object/from16 v0, p0
20304     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
20306     if-eqz v1, :cond_c7
20308     move-object/from16 v0, p1
20310     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20312     move-object/from16 v0, p0
20314     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
20316     invoke-virtual {v2}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
20318     move-result-object v2
20320     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
20322     move-result v1
20324     if-eqz v1, :cond_c7
20326     const/4 v3, 0x0
20328     :cond_c7
20329     move-object/from16 v0, p0
20331     iget v1, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
20333     const/4 v2, 0x2
20335     if-ne v1, v2, :cond_d9
20337     move-object/from16 v0, p1
20339     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
20341     iget v1, v1, Landroid/content/pm/ApplicationInfo;->flags:I
20343     and-int/lit8 v1, v1, 0x10
20345     if-eqz v1, :cond_d9
20347     const/4 v3, 0x0
20349     :cond_d9
20350     const/4 v6, 0x0
20352     move-object/from16 v0, p1
20354     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
20356     iget v1, v1, Landroid/content/pm/ApplicationInfo;->flags:I
20358     and-int/lit8 v1, v1, 0x2
20360     if-eqz v1, :cond_e8
20362     or-int/lit8 v6, v6, 0x1
20364     or-int/lit8 v6, v6, 0x2
20366     :cond_e8
20367     move-object/from16 v0, p1
20369     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
20371     iget v1, v1, Landroid/content/pm/ApplicationInfo;->flags:I
20373     and-int/lit16 v1, v1, 0x4000
20375     if-nez v1, :cond_f7
20377     sget-boolean v1, Ldalvik/system/Zygote;->systemInSafeMode:Z
20379     const/4 v2, 0x1
20381     if-ne v1, v2, :cond_f9
20383     :cond_f7
20384     or-int/lit8 v6, v6, 0x8
20386     :cond_f9
20387     const-string v1, "1"
20389     const-string v2, "debug.checkjni"
20391     invoke-static {v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
20393     move-result-object v2
20395     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
20397     move-result v1
20399     if-eqz v1, :cond_109
20401     or-int/lit8 v6, v6, 0x2
20403     :cond_109
20404     const-string v1, "1"
20406     const-string v2, "debug.jni.logging"
20408     invoke-static {v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
20410     move-result-object v2
20412     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
20414     move-result v1
20416     if-eqz v1, :cond_119
20418     or-int/lit8 v6, v6, 0x10
20420     :cond_119
20421     const-string v1, "1"
20423     const-string v2, "debug.assert"
20425     invoke-static {v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
20427     move-result-object v2
20429     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
20431     move-result v1
20433     if-eqz v1, :cond_129
20435     or-int/lit8 v6, v6, 0x4
20437     :cond_129
20438     const-string v1, "android.app.ActivityThread"
20440     move-object/from16 v0, p1
20442     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20444     move-object/from16 v0, p1
20446     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
20448     iget v8, v4, Landroid/content/pm/ApplicationInfo;->targetSdkVersion:I
20450     const/4 v9, 0x0
20452     const/4 v10, 0x0
20454     move v4, v3
20456     invoke-static/range {v1 .. v10}, Landroid/os/Process;->start(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult;
20458     move-result-object v18
20460     move-object/from16 v0, p1
20462     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->batteryStats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
20464     invoke-virtual {v1}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl;
20466     move-result-object v11
20468     monitor-enter v11
20469     :try_end_145
20470     .catch Ljava/lang/RuntimeException; {:try_start_94 .. :try_end_145} :catch_206
20472     :try_start_145
20473     invoke-virtual {v11}, Lcom/android/internal/os/BatteryStatsImpl;->isOnBattery()Z
20475     move-result v1
20477     if-eqz v1, :cond_152
20479     move-object/from16 v0, p1
20481     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->batteryStats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
20483     invoke-virtual {v1}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->incStartsLocked()V
20485     :cond_152
20486     monitor-exit v11
20487     :try_end_153
20488     .catchall {:try_start_145 .. :try_end_153} :catchall_23d
20490     const/16 v2, 0x753e
20492     const/4 v1, 0x6
20494     :try_start_156
20495     new-array v4, v1, [Ljava/lang/Object;
20497     const/4 v1, 0x0
20499     invoke-static {v3}, Landroid/os/UserHandle;->getUserId(I)I
20501     move-result v8
20503     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
20505     move-result-object v8
20507     aput-object v8, v4, v1
20509     const/4 v1, 0x1
20511     move-object/from16 v0, v18
20513     iget v8, v0, Landroid/os/Process$ProcessStartResult;->pid:I
20515     invoke-static {v8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
20517     move-result-object v8
20519     aput-object v8, v4, v1
20521     const/4 v1, 0x2
20523     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
20525     move-result-object v8
20527     aput-object v8, v4, v1
20529     const/4 v1, 0x3
20531     move-object/from16 v0, p1
20533     iget-object v8, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20535     aput-object v8, v4, v1
20537     const/4 v1, 0x4
20539     aput-object p2, v4, v1
20541     const/4 v8, 0x5
20543     if-eqz p3, :cond_240
20545     move-object/from16 v1, p3
20547     :goto_184
20548     aput-object v1, v4, v8
20550     invoke-static {v2, v4}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
20552     move-object/from16 v0, p1
20554     iget-boolean v1, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
20556     if-eqz v1, :cond_19e
20558     invoke-static {}, Lcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog;
20560     move-result-object v1
20562     move-object/from16 v0, p1
20564     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20566     move-object/from16 v0, v18
20568     iget v4, v0, Landroid/os/Process$ProcessStartResult;->pid:I
20570     invoke-virtual {v1, v2, v4}, Lcom/android/server/Watchdog;->processStarted(Ljava/lang/String;I)V
20572     :cond_19e
20573     move-object/from16 v0, p0
20575     iget-object v12, v0, Lcom/android/server/am/ActivityManagerService;->mStringBuilder:Ljava/lang/StringBuilder;
20577     const/4 v1, 0x0
20579     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->setLength(I)V
20581     const-string v1, "Start proc "
20583     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20585     move-object/from16 v0, p1
20587     iget-object v1, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20589     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20591     const-string v1, " for "
20593     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20595     move-object/from16 v0, p2
20597     invoke-virtual {v12, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20599     if-eqz p3, :cond_1c8
20601     const-string v1, " "
20603     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20605     move-object/from16 v0, p3
20607     invoke-virtual {v12, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20609     :cond_1c8
20610     const-string v1, ": pid="
20612     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20614     move-object/from16 v0, v18
20616     iget v1, v0, Landroid/os/Process$ProcessStartResult;->pid:I
20618     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
20620     const-string v1, " uid="
20622     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20624     invoke-virtual {v12, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
20626     const-string v1, " gids={"
20628     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20630     if-eqz v5, :cond_244
20632     const/4 v14, 0x0
20634     :goto_1e4
20635     array-length v1, v5
20637     if-ge v14, v1, :cond_244
20639     if-eqz v14, :cond_1ee
20641     const-string v1, ", "
20643     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20645     :cond_1ee
20646     aget v1, v5, v14
20648     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
20649     :try_end_1f3
20650     .catch Ljava/lang/RuntimeException; {:try_start_156 .. :try_end_1f3} :catch_206
20652     add-int/lit8 v14, v14, 0x1
20654     goto :goto_1e4
20656     :catchall_1f6
20657     move-exception v1
20659     :try_start_1f7
20660     monitor-exit v2
20661     :try_end_1f8
20662     .catchall {:try_start_1f7 .. :try_end_1f8} :catchall_1f6
20664     throw v1
20666     :cond_1f9
20667     const/4 v7, 0x2
20669     goto/16 :goto_91
20671     :catch_1fc
20672     move-exception v13
20674     :try_start_1fd
20675     const-string v1, "ActivityManager"
20677     const-string v2, "Unable to retrieve gids"
20679     invoke-static {v1, v2, v13}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
20680     :try_end_204
20681     .catch Ljava/lang/RuntimeException; {:try_start_1fd .. :try_end_204} :catch_206
20683     goto/16 :goto_91
20685     :catch_206
20686     move-exception v13
20688     const/4 v1, 0x0
20690     move-object/from16 v0, p1
20692     invoke-virtual {v0, v1}, Lcom/android/server/am/ProcessRecord;->setPid(I)V
20694     const-string v1, "ActivityManager"
20696     new-instance v2, Ljava/lang/StringBuilder;
20698     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
20700     const-string v4, "Failure starting process "
20702     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20704     move-result-object v2
20706     move-object/from16 v0, p1
20708     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
20710     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20712     move-result-object v2
20714     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
20716     move-result-object v2
20718     invoke-static {v1, v2, v13}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
20720     :goto_229
20721     return-void
20723     :cond_22a
20724     :try_start_22a
20725     move-object/from16 v0, v16
20727     array-length v1, v0
20729     add-int/lit8 v1, v1, 0x1
20731     new-array v5, v1, [I
20733     const/4 v1, 0x0
20735     const/4 v2, 0x1
20737     move-object/from16 v0, v16
20739     array-length v4, v0
20741     move-object/from16 v0, v16
20743     invoke-static {v0, v1, v5, v2, v4}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
20744     :try_end_23b
20745     .catch Ljava/lang/RuntimeException; {:try_start_22a .. :try_end_23b} :catch_206
20747     goto/16 :goto_96
20749     :catchall_23d
20750     move-exception v1
20752     :try_start_23e
20753     monitor-exit v11
20754     :try_end_23f
20755     .catchall {:try_start_23e .. :try_end_23f} :catchall_23d
20757     :try_start_23f
20758     throw v1
20760     :cond_240
20761     const-string v1, ""
20763     goto/16 :goto_184
20765     :cond_244
20766     const-string v1, "}"
20768     invoke-virtual {v12, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
20770     const-string v1, "ActivityManager"
20772     invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
20774     move-result-object v2
20776     invoke-static {v1, v2}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
20778     move-object/from16 v0, v18
20780     iget v1, v0, Landroid/os/Process$ProcessStartResult;->pid:I
20782     move-object/from16 v0, p1
20784     invoke-virtual {v0, v1}, Lcom/android/server/am/ProcessRecord;->setPid(I)V
20786     move-object/from16 v0, v18
20788     iget-boolean v1, v0, Landroid/os/Process$ProcessStartResult;->usingWrapper:Z
20790     move-object/from16 v0, p1
20792     iput-boolean v1, v0, Lcom/android/server/am/ProcessRecord;->usingWrapper:Z
20794     const/4 v1, 0x0
20796     move-object/from16 v0, p1
20798     iput-boolean v1, v0, Lcom/android/server/am/ProcessRecord;->removed:Z
20800     move-object/from16 v0, p0
20802     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
20804     monitor-enter v4
20805     :try_end_26d
20806     .catch Ljava/lang/RuntimeException; {:try_start_23f .. :try_end_26d} :catch_206
20808     :try_start_26d
20809     move-object/from16 v0, p0
20811     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
20813     move-object/from16 v0, v18
20815     iget v2, v0, Landroid/os/Process$ProcessStartResult;->pid:I
20817     move-object/from16 v0, p1
20819     invoke-virtual {v1, v2, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
20821     move-object/from16 v0, p0
20823     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
20825     const/16 v2, 0x14
20827     invoke-virtual {v1, v2}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
20829     move-result-object v15
20831     move-object/from16 v0, p1
20833     iput-object v0, v15, Landroid/os/Message;->obj:Ljava/lang/Object;
20835     move-object/from16 v0, p0
20837     iget-object v8, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
20839     move-object/from16 v0, v18
20841     iget-boolean v1, v0, Landroid/os/Process$ProcessStartResult;->usingWrapper:Z
20843     if-eqz v1, :cond_29d
20845     const-wide/32 v1, 0x493e0
20847     :goto_295
20848     invoke-virtual {v8, v15, v1, v2}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
20850     monitor-exit v4
20852     goto :goto_229
20854     :catchall_29a
20855     move-exception v1
20857     monitor-exit v4
20858     :try_end_29c
20859     .catchall {:try_start_26d .. :try_end_29c} :catchall_29a
20861     :try_start_29c
20862     throw v1
20863     :try_end_29d
20864     .catch Ljava/lang/RuntimeException; {:try_start_29c .. :try_end_29d} :catch_206
20866     :cond_29d
20867     const-wide/16 v1, 0x2710
20869     goto :goto_295
20870 .end method
20872 .method private stopProfilerLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
20873     .registers 8
20875     if-eqz p1, :cond_6
20877     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
20879     if-ne p1, v1, :cond_f
20881     :cond_6
20882     iget-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
20884     iget-object p2, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
20886     iget p3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
20888     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->clearProfilerLocked()V
20890     :cond_f
20891     if-nez p1, :cond_12
20893     :goto_11
20894     return-void
20896     :cond_12
20897     :try_start_12
20898     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
20900     const/4 v2, 0x0
20902     const/4 v3, 0x0
20904     invoke-interface {v1, v2, p2, v3, p3}, Landroid/app/IApplicationThread;->profilerControl(ZLjava/lang/String;Landroid/os/ParcelFileDescriptor;I)V
20905     :try_end_19
20906     .catch Landroid/os/RemoteException; {:try_start_12 .. :try_end_19} :catch_1a
20908     goto :goto_11
20910     :catch_1a
20911     move-exception v0
20913     new-instance v1, Ljava/lang/IllegalStateException;
20915     const-string v2, "Process disappeared"
20917     invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
20919     throw v1
20920 .end method
20922 .method private stopUserLocked(ILandroid/app/IStopUserCallback;)I
20923     .registers 28
20925     move-object/from16 v0, p0
20927     iget v4, v0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
20929     move/from16 v0, p1
20931     if-ne v4, v0, :cond_a
20933     const/4 v4, -0x2
20935     :goto_9
20936     return v4
20938     :cond_a
20939     move-object/from16 v0, p0
20941     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
20943     move/from16 v0, p1
20945     invoke-virtual {v4, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
20947     move-result-object v5
20949     check-cast v5, Lcom/android/server/am/UserStartedState;
20951     if-nez v5, :cond_2e
20953     if-eqz p2, :cond_2c
20955     move-object/from16 v0, p0
20957     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
20959     new-instance v8, Lcom/android/server/am/ActivityManagerService$19;
20961     move-object/from16 v0, p0
20963     move-object/from16 v1, p2
20965     move/from16 v2, p1
20967     invoke-direct {v8, v0, v1, v2}, Lcom/android/server/am/ActivityManagerService$19;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/app/IStopUserCallback;I)V
20969     invoke-virtual {v4, v8}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
20971     :cond_2c
20972     const/4 v4, 0x0
20974     goto :goto_9
20976     :cond_2e
20977     if-eqz p2, :cond_37
20979     iget-object v4, v5, Lcom/android/server/am/UserStartedState;->mStopCallbacks:Ljava/util/ArrayList;
20981     move-object/from16 v0, p2
20983     invoke-virtual {v4, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
20985     :cond_37
20986     iget v4, v5, Lcom/android/server/am/UserStartedState;->mState:I
20988     const/4 v8, 0x2
20990     if-eq v4, v8, :cond_91
20992     iget v4, v5, Lcom/android/server/am/UserStartedState;->mState:I
20994     const/4 v8, 0x3
20996     if-eq v4, v8, :cond_91
20998     const/4 v4, 0x2
21000     iput v4, v5, Lcom/android/server/am/UserStartedState;->mState:I
21002     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateStartedUserArrayLocked()V
21004     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
21006     move-result-wide v23
21008     :try_start_4b
21009     new-instance v11, Landroid/content/Intent;
21011     const-string v4, "android.intent.action.USER_STOPPING"
21013     invoke-direct {v11, v4}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
21015     const/high16 v4, 0x4000
21017     invoke-virtual {v11, v4}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
21019     const-string v4, "android.intent.extra.user_handle"
21021     move/from16 v0, p1
21023     invoke-virtual {v11, v4, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
21025     new-instance v6, Landroid/content/Intent;
21027     const-string v4, "android.intent.action.ACTION_SHUTDOWN"
21029     invoke-direct {v6, v4}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
21031     new-instance v7, Lcom/android/server/am/ActivityManagerService$20;
21033     move-object/from16 v0, p0
21035     invoke-direct {v7, v0, v5}, Lcom/android/server/am/ActivityManagerService$20;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/UserStartedState;)V
21037     new-instance v3, Lcom/android/server/am/ActivityManagerService$21;
21039     move-object/from16 v4, p0
21041     move/from16 v8, p1
21043     invoke-direct/range {v3 .. v8}, Lcom/android/server/am/ActivityManagerService$21;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/UserStartedState;Landroid/content/Intent;Landroid/content/IIntentReceiver;I)V
21045     const/4 v9, 0x0
21047     const/4 v10, 0x0
21049     const/4 v12, 0x0
21051     const/4 v14, 0x0
21053     const/4 v15, 0x0
21055     const/16 v16, 0x0
21057     const-string v17, "android.permission.INTERACT_ACROSS_USERS"
21059     const/16 v18, 0x1
21061     const/16 v19, 0x0
21063     sget v20, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
21065     const/16 v21, 0x3e8
21067     const/16 v22, -0x1
21069     move-object/from16 v8, p0
21071     move-object v13, v3
21073     invoke-direct/range {v8 .. v22}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
21074     :try_end_8e
21075     .catchall {:try_start_4b .. :try_end_8e} :catchall_94
21077     invoke-static/range {v23 .. v24}, Landroid/os/Binder;->restoreCallingIdentity(J)V
21079     :cond_91
21080     const/4 v4, 0x0
21082     goto/16 :goto_9
21084     :catchall_94
21085     move-exception v4
21087     invoke-static/range {v23 .. v24}, Landroid/os/Binder;->restoreCallingIdentity(J)V
21089     throw v4
21090 .end method
21092 .method private taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
21093     .registers 6
21095     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
21097     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
21099     move-result v0
21101     const/4 v1, 0x0
21103     :goto_7
21104     if-ge v1, v0, :cond_19
21106     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
21108     invoke-virtual {v3, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
21110     move-result-object v2
21112     check-cast v2, Lcom/android/server/am/TaskRecord;
21114     iget v3, v2, Lcom/android/server/am/TaskRecord;->taskId:I
21116     if-ne v3, p1, :cond_16
21118     :goto_15
21119     return-object v2
21121     :cond_16
21122     add-int/lit8 v1, v1, 0x1
21124     goto :goto_7
21126     :cond_19
21127     const/4 v2, 0x0
21129     goto :goto_15
21130 .end method
21132 .method private updateEventDispatchingLocked()V
21133     .registers 3
21135     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
21137     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
21139     if-eqz v0, :cond_13
21141     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
21143     if-nez v0, :cond_13
21145     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
21147     if-nez v0, :cond_13
21149     const/4 v0, 0x1
21151     :goto_f
21152     invoke-virtual {v1, v0}, Lcom/android/server/wm/WindowManagerService;->setEventDispatching(Z)V
21154     return-void
21156     :cond_13
21157     const/4 v0, 0x0
21159     goto :goto_f
21160 .end method
21162 .method private final updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;I)V
21163     .registers 15
21165     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
21167     invoke-virtual {v8, p1}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
21169     move-result v5
21171     if-ltz v5, :cond_d
21173     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
21175     invoke-virtual {v8, v5}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
21177     :cond_d
21178     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
21180     invoke-virtual {v8}, Ljava/util/ArrayList;->size()I
21182     move-result v8
21184     add-int/lit8 v2, v8, -0x1
21186     const/4 v7, 0x0
21188     iget v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
21190     iput v8, p1, Lcom/android/server/am/ProcessRecord;->lruSeq:I
21192     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
21194     move-result-wide v8
21196     iput-wide v8, p1, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
21198     iget-object v8, p1, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
21200     invoke-virtual {v8}, Ljava/util/ArrayList;->size()I
21202     move-result v8
21204     if-lez v8, :cond_9d
21206     iget-wide v8, p1, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
21208     iput-wide v8, p1, Lcom/android/server/am/ProcessRecord;->lruWeight:J
21210     :goto_2c
21211     if-ltz v2, :cond_51
21213     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
21215     invoke-virtual {v8, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
21217     move-result-object v6
21219     check-cast v6, Lcom/android/server/am/ProcessRecord;
21221     if-lez v7, :cond_40
21223     iget v8, v6, Lcom/android/server/am/ProcessRecord;->setAdj:I
21225     sget v9, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
21227     if-lt v8, v9, :cond_40
21229     add-int/lit8 v7, v7, -0x1
21231     :cond_40
21232     iget-wide v8, v6, Lcom/android/server/am/ProcessRecord;->lruWeight:J
21234     iget-wide v10, p1, Lcom/android/server/am/ProcessRecord;->lruWeight:J
21236     cmp-long v8, v8, v10
21238     if-lez v8, :cond_4a
21240     if-ge v2, p2, :cond_ba
21242     :cond_4a
21243     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
21245     add-int/lit8 v9, v2, 0x1
21247     invoke-virtual {v8, v9, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
21249     :cond_51
21250     if-gez v2, :cond_59
21252     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
21254     const/4 v9, 0x0
21256     invoke-virtual {v8, v9, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
21258     :cond_59
21259     iget-object v8, p1, Lcom/android/server/am/ProcessRecord;->connections:Ljava/util/HashSet;
21261     invoke-virtual {v8}, Ljava/util/HashSet;->size()I
21263     move-result v8
21265     if-lez v8, :cond_be
21267     iget-object v8, p1, Lcom/android/server/am/ProcessRecord;->connections:Ljava/util/HashSet;
21269     invoke-virtual {v8}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
21271     move-result-object v3
21273     :cond_67
21274     :goto_67
21275     invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
21277     move-result v8
21279     if-eqz v8, :cond_be
21281     invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
21283     move-result-object v1
21285     check-cast v1, Lcom/android/server/am/ConnectionRecord;
21287     iget-object v8, v1, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
21289     if-eqz v8, :cond_67
21291     iget-object v8, v1, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
21293     iget-object v8, v8, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
21295     if-eqz v8, :cond_67
21297     iget-object v8, v1, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
21299     iget-object v8, v8, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
21301     iget-object v8, v8, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
21303     if-eqz v8, :cond_67
21305     iget-object v8, v1, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
21307     iget-object v8, v8, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
21309     iget-object v8, v8, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
21311     iget v8, v8, Lcom/android/server/am/ProcessRecord;->lruSeq:I
21313     iget v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
21315     if-eq v8, v9, :cond_67
21317     iget-object v8, v1, Lcom/android/server/am/ConnectionRecord;->binding:Lcom/android/server/am/AppBindRecord;
21319     iget-object v8, v8, Lcom/android/server/am/AppBindRecord;->service:Lcom/android/server/am/ServiceRecord;
21321     iget-object v8, v8, Lcom/android/server/am/ServiceRecord;->app:Lcom/android/server/am/ProcessRecord;
21323     add-int/lit8 v9, v2, 0x1
21325     invoke-direct {p0, v8, v9}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;I)V
21327     goto :goto_67
21329     :cond_9d
21330     iget-object v8, p1, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
21332     invoke-virtual {v8}, Ljava/util/HashMap;->size()I
21334     move-result v8
21336     if-lez v8, :cond_af
21338     iget-wide v8, p1, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
21340     const-wide/16 v10, 0x3a98
21342     sub-long/2addr v8, v10
21344     iput-wide v8, p1, Lcom/android/server/am/ProcessRecord;->lruWeight:J
21346     const/4 v7, 0x2
21348     goto/16 :goto_2c
21350     :cond_af
21351     iget-wide v8, p1, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
21353     const-wide/32 v10, 0x1d4c0
21355     sub-long/2addr v8, v10
21357     iput-wide v8, p1, Lcom/android/server/am/ProcessRecord;->lruWeight:J
21359     const/4 v7, 0x2
21361     goto/16 :goto_2c
21363     :cond_ba
21364     add-int/lit8 v2, v2, -0x1
21366     goto/16 :goto_2c
21368     :cond_be
21369     iget-object v8, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
21371     invoke-virtual {v8}, Ljava/util/ArrayList;->size()I
21373     move-result v8
21375     add-int/lit8 v4, v8, -0x1
21377     :goto_c6
21378     if-ltz v4, :cond_e8
21380     iget-object v8, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
21382     invoke-virtual {v8, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
21384     move-result-object v8
21386     check-cast v8, Lcom/android/server/am/ContentProviderConnection;
21388     iget-object v0, v8, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
21390     iget-object v8, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
21392     if-eqz v8, :cond_e5
21394     iget-object v8, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
21396     iget v8, v8, Lcom/android/server/am/ProcessRecord;->lruSeq:I
21398     iget v9, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
21400     if-eq v8, v9, :cond_e5
21402     iget-object v8, v0, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
21404     add-int/lit8 v9, v2, 0x1
21406     invoke-direct {p0, v8, v9}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;I)V
21408     :cond_e5
21409     add-int/lit8 v4, v4, -0x1
21411     goto :goto_c6
21413     :cond_e8
21414     return-void
21415 .end method
21417 .method private final updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;IIILcom/android/server/am/ProcessRecord;Z)Z
21418     .registers 23
21420     move/from16 v0, p2
21422     move-object/from16 v1, p1
21424     iput v0, v1, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
21426     move/from16 v0, p3
21428     move-object/from16 v1, p1
21430     iput v0, v1, Lcom/android/server/am/ProcessRecord;->clientHiddenAdj:I
21432     move/from16 v0, p4
21434     move-object/from16 v1, p1
21436     iput v0, v1, Lcom/android/server/am/ProcessRecord;->emptyAdj:I
21438     move-object/from16 v0, p1
21440     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
21442     if-nez v2, :cond_1a
21444     const/4 v14, 0x0
21446     :cond_19
21447     :goto_19
21448     return v14
21450     :cond_1a
21451     move-object/from16 v0, p1
21453     iget-boolean v15, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
21455     const/4 v14, 0x1
21457     const/4 v8, 0x0
21459     move-object/from16 v2, p0
21461     move-object/from16 v3, p1
21463     move/from16 v4, p2
21465     move/from16 v5, p3
21467     move/from16 v6, p4
21469     move-object/from16 v7, p5
21471     move/from16 v9, p6
21473     invoke-direct/range {v2 .. v9}, Lcom/android/server/am/ActivityManagerService;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;IIILcom/android/server/am/ProcessRecord;ZZ)I
21475     move-object/from16 v0, p1
21477     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
21479     move-object/from16 v0, p1
21481     iget v3, v0, Lcom/android/server/am/ProcessRecord;->setRawAdj:I
21483     if-eq v2, v3, :cond_73
21485     if-eqz v15, :cond_6b
21487     move-object/from16 v0, p1
21489     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
21491     if-nez v2, :cond_6b
21493     move-object/from16 v0, p0
21495     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
21497     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
21499     move-result-object v13
21501     monitor-enter v13
21503     :try_start_4c
21504     move-object/from16 v0, p1
21506     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
21508     iget v2, v2, Landroid/content/pm/ApplicationInfo;->uid:I
21510     move-object/from16 v0, p1
21512     iget v3, v0, Lcom/android/server/am/ProcessRecord;->pid:I
21514     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
21516     move-result-wide v4
21518     invoke-virtual {v13, v2, v3, v4, v5}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessWakeTime(IIJ)J
21520     move-result-wide v2
21522     move-object/from16 v0, p1
21524     iput-wide v2, v0, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
21526     monitor-exit v13
21527     :try_end_63
21528     .catchall {:try_start_4c .. :try_end_63} :catchall_121
21530     move-object/from16 v0, p1
21532     iget-wide v2, v0, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
21534     move-object/from16 v0, p1
21536     iput-wide v2, v0, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
21538     :cond_6b
21539     move-object/from16 v0, p1
21541     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
21543     move-object/from16 v0, p1
21545     iput v2, v0, Lcom/android/server/am/ProcessRecord;->setRawAdj:I
21547     :cond_73
21548     move-object/from16 v0, p1
21550     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
21552     move-object/from16 v0, p1
21554     iget v3, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
21556     if-eq v2, v3, :cond_93
21558     move-object/from16 v0, p1
21560     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
21562     move-object/from16 v0, p1
21564     iget v3, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
21566     invoke-static {v2, v3}, Landroid/os/Process;->setOomAdj(II)Z
21568     move-result v2
21570     if-eqz v2, :cond_124
21572     move-object/from16 v0, p1
21574     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
21576     move-object/from16 v0, p1
21578     iput v2, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
21580     :cond_93
21581     :goto_93
21582     move-object/from16 v0, p1
21584     iget v2, v0, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
21586     move-object/from16 v0, p1
21588     iget v3, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
21590     if-eq v2, v3, :cond_19
21592     move-object/from16 v0, p1
21594     iget v2, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
21596     move-object/from16 v0, p1
21598     iput v2, v0, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
21600     move-object/from16 v0, p1
21602     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->waitingToKill:Ljava/lang/String;
21604     if-eqz v2, :cond_14f
21606     move-object/from16 v0, p1
21608     iget v2, v0, Lcom/android/server/am/ProcessRecord;->setSchedGroup:I
21610     if-nez v2, :cond_14f
21612     const-string v2, "ActivityManager"
21614     new-instance v3, Ljava/lang/StringBuilder;
21616     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
21618     const-string v4, "Killing "
21620     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21622     move-result-object v3
21624     invoke-virtual/range {p1 .. p1}, Lcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
21626     move-result-object v4
21628     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21630     move-result-object v3
21632     const-string v4, ": "
21634     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21636     move-result-object v3
21638     move-object/from16 v0, p1
21640     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->waitingToKill:Ljava/lang/String;
21642     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21644     move-result-object v3
21646     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
21648     move-result-object v3
21650     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
21652     const/16 v2, 0x7547
21654     const/4 v3, 0x5
21656     new-array v3, v3, [Ljava/lang/Object;
21658     const/4 v4, 0x0
21660     move-object/from16 v0, p1
21662     iget v5, v0, Lcom/android/server/am/ProcessRecord;->userId:I
21664     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
21666     move-result-object v5
21668     aput-object v5, v3, v4
21670     const/4 v4, 0x1
21672     move-object/from16 v0, p1
21674     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
21676     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
21678     move-result-object v5
21680     aput-object v5, v3, v4
21682     const/4 v4, 0x2
21684     move-object/from16 v0, p1
21686     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
21688     aput-object v5, v3, v4
21690     const/4 v4, 0x3
21692     move-object/from16 v0, p1
21694     iget v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
21696     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
21698     move-result-object v5
21700     aput-object v5, v3, v4
21702     const/4 v4, 0x4
21704     move-object/from16 v0, p1
21706     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->waitingToKill:Ljava/lang/String;
21708     aput-object v5, v3, v4
21710     invoke-static {v2, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
21712     const/4 v2, 0x1
21714     move-object/from16 v0, p1
21716     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
21718     move-object/from16 v0, p1
21720     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
21722     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
21724     const/4 v14, 0x0
21726     goto/16 :goto_19
21728     :catchall_121
21729     move-exception v2
21731     :try_start_122
21732     monitor-exit v13
21733     :try_end_123
21734     .catchall {:try_start_122 .. :try_end_123} :catchall_121
21736     throw v2
21738     :cond_124
21739     const/4 v14, 0x0
21741     const-string v2, "ActivityManager"
21743     new-instance v3, Ljava/lang/StringBuilder;
21745     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
21747     const-string v4, "Failed setting oom adj of "
21749     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21751     move-result-object v3
21753     move-object/from16 v0, p1
21755     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
21757     move-result-object v3
21759     const-string v4, " to "
21761     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21763     move-result-object v3
21765     move-object/from16 v0, p1
21767     iget v4, v0, Lcom/android/server/am/ProcessRecord;->curAdj:I
21769     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21771     move-result-object v3
21773     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
21775     move-result-object v3
21777     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
21779     goto/16 :goto_93
21781     :cond_14f
21782     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
21784     move-result-wide v11
21786     :try_start_153
21787     move-object/from16 v0, p1
21789     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
21791     move-object/from16 v0, p1
21793     iget v3, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
21795     invoke-static {v2, v3}, Landroid/os/Process;->setProcessGroup(II)V
21796     :try_end_15e
21797     .catchall {:try_start_153 .. :try_end_15e} :catchall_192
21798     .catch Ljava/lang/Exception; {:try_start_153 .. :try_end_15e} :catch_163
21800     :goto_15e
21801     invoke-static {v11, v12}, Landroid/os/Binder;->restoreCallingIdentity(J)V
21803     goto/16 :goto_19
21805     :catch_163
21806     move-exception v10
21808     :try_start_164
21809     const-string v2, "ActivityManager"
21811     new-instance v3, Ljava/lang/StringBuilder;
21813     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
21815     const-string v4, "Failed setting process group of "
21817     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21819     move-result-object v3
21821     move-object/from16 v0, p1
21823     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
21825     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21827     move-result-object v3
21829     const-string v4, " to "
21831     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
21833     move-result-object v3
21835     move-object/from16 v0, p1
21837     iget v4, v0, Lcom/android/server/am/ProcessRecord;->curSchedGroup:I
21839     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
21841     move-result-object v3
21843     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
21845     move-result-object v3
21847     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
21849     invoke-virtual {v10}, Ljava/lang/Exception;->printStackTrace()V
21850     :try_end_191
21851     .catchall {:try_start_164 .. :try_end_191} :catchall_192
21853     goto :goto_15e
21855     :catchall_192
21856     move-exception v2
21858     invoke-static {v11, v12}, Landroid/os/Binder;->restoreCallingIdentity(J)V
21860     throw v2
21861 .end method
21863 .method private updateStartedUserArrayLocked()V
21864     .registers 8
21866     const/4 v6, 0x3
21868     const/4 v5, 0x2
21870     const/4 v1, 0x0
21872     const/4 v0, 0x0
21874     :goto_4
21875     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
21877     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
21879     move-result v3
21881     if-ge v0, v3, :cond_21
21883     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
21885     invoke-virtual {v3, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
21887     move-result-object v2
21889     check-cast v2, Lcom/android/server/am/UserStartedState;
21891     iget v3, v2, Lcom/android/server/am/UserStartedState;->mState:I
21893     if-eq v3, v5, :cond_1e
21895     iget v3, v2, Lcom/android/server/am/UserStartedState;->mState:I
21897     if-eq v3, v6, :cond_1e
21899     add-int/lit8 v1, v1, 0x1
21901     :cond_1e
21902     add-int/lit8 v0, v0, 0x1
21904     goto :goto_4
21906     :cond_21
21907     new-array v3, v1, [I
21909     iput-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUserArray:[I
21911     const/4 v1, 0x0
21913     const/4 v0, 0x0
21915     :goto_27
21916     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
21918     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
21920     move-result v3
21922     if-ge v0, v3, :cond_4e
21924     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
21926     invoke-virtual {v3, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
21928     move-result-object v2
21930     check-cast v2, Lcom/android/server/am/UserStartedState;
21932     iget v3, v2, Lcom/android/server/am/UserStartedState;->mState:I
21934     if-eq v3, v5, :cond_4b
21936     iget v3, v2, Lcom/android/server/am/UserStartedState;->mState:I
21938     if-eq v3, v6, :cond_4b
21940     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUserArray:[I
21942     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
21944     invoke-virtual {v4, v0}, Landroid/util/SparseArray;->keyAt(I)I
21946     move-result v4
21948     aput v4, v3, v1
21950     add-int/lit8 v1, v1, 0x1
21952     :cond_4b
21953     add-int/lit8 v0, v0, 0x1
21955     goto :goto_27
21957     :cond_4e
21958     return-void
21959 .end method
21961 .method private userExists(I)Z
21962     .registers 6
21964     const/4 v1, 0x1
21966     const/4 v2, 0x0
21968     if-nez p1, :cond_5
21970     :cond_4
21971     :goto_4
21972     return v1
21974     :cond_5
21975     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->getUserManagerLocked()Lcom/android/server/pm/UserManagerService;
21977     move-result-object v0
21979     if-eqz v0, :cond_13
21981     invoke-virtual {v0, p1}, Lcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
21983     move-result-object v3
21985     if-nez v3, :cond_4
21987     move v1, v2
21989     goto :goto_4
21991     :cond_13
21992     move v1, v2
21994     goto :goto_4
21995 .end method
21997 .method private static writeLastDonePreBootReceivers(Ljava/util/ArrayList;)V
21998     .registers 10
21999     .annotation system Ldalvik/annotation/Signature;
22000         value = {
22001             "(",
22002             "Ljava/util/ArrayList",
22003             "<",
22004             "Landroid/content/ComponentName;",
22005             ">;)V"
22006         }
22007     .end annotation
22009     invoke-static {}, Lcom/android/server/am/ActivityManagerService;->getCalledPreBootReceiversFile()Ljava/io/File;
22011     move-result-object v3
22013     const/4 v4, 0x0
22015     const/4 v0, 0x0
22017     :try_start_6
22018     const-string v7, "ActivityManager"
22020     const-string v8, "Writing new set of last done pre-boot receivers..."
22022     invoke-static {v7, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
22024     new-instance v5, Ljava/io/FileOutputStream;
22026     invoke-direct {v5, v3}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
22027     :try_end_12
22028     .catchall {:try_start_6 .. :try_end_12} :catchall_81
22029     .catch Ljava/io/IOException; {:try_start_6 .. :try_end_12} :catch_68
22031     :try_start_12
22032     new-instance v1, Ljava/io/DataOutputStream;
22034     new-instance v7, Ljava/io/BufferedOutputStream;
22036     const/16 v8, 0x800
22038     invoke-direct {v7, v5, v8}, Ljava/io/BufferedOutputStream;-><init>(Ljava/io/OutputStream;I)V
22040     invoke-direct {v1, v7}, Ljava/io/DataOutputStream;-><init>(Ljava/io/OutputStream;)V
22041     :try_end_1e
22042     .catchall {:try_start_12 .. :try_end_1e} :catchall_95
22043     .catch Ljava/io/IOException; {:try_start_12 .. :try_end_1e} :catch_9c
22045     const/16 v7, 0x2710
22047     :try_start_20
22048     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeInt(I)V
22050     sget-object v7, Landroid/os/Build$VERSION;->RELEASE:Ljava/lang/String;
22052     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
22054     sget-object v7, Landroid/os/Build$VERSION;->CODENAME:Ljava/lang/String;
22056     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
22058     sget-object v7, Landroid/os/Build$VERSION;->INCREMENTAL:Ljava/lang/String;
22060     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
22062     invoke-virtual {p0}, Ljava/util/ArrayList;->size()I
22064     move-result v7
22066     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeInt(I)V
22068     const/4 v6, 0x0
22070     :goto_3a
22071     invoke-virtual {p0}, Ljava/util/ArrayList;->size()I
22073     move-result v7
22075     if-ge v6, v7, :cond_5d
22077     invoke-virtual {p0, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
22079     move-result-object v7
22081     check-cast v7, Landroid/content/ComponentName;
22083     invoke-virtual {v7}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
22085     move-result-object v7
22087     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
22089     invoke-virtual {p0, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
22091     move-result-object v7
22093     check-cast v7, Landroid/content/ComponentName;
22095     invoke-virtual {v7}, Landroid/content/ComponentName;->getClassName()Ljava/lang/String;
22097     move-result-object v7
22099     invoke-virtual {v1, v7}, Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
22100     :try_end_5a
22101     .catchall {:try_start_20 .. :try_end_5a} :catchall_98
22102     .catch Ljava/io/IOException; {:try_start_20 .. :try_end_5a} :catch_9f
22104     add-int/lit8 v6, v6, 0x1
22106     goto :goto_3a
22108     :cond_5d
22109     invoke-static {v5}, Landroid/os/FileUtils;->sync(Ljava/io/FileOutputStream;)Z
22111     if-eqz v1, :cond_65
22113     :try_start_62
22114     invoke-virtual {v1}, Ljava/io/DataOutputStream;->close()V
22115     :try_end_65
22116     .catch Ljava/io/IOException; {:try_start_62 .. :try_end_65} :catch_90
22118     :cond_65
22119     :goto_65
22120     move-object v0, v1
22122     move-object v4, v5
22124     :cond_67
22125     :goto_67
22126     return-void
22128     :catch_68
22129     move-exception v2
22131     :goto_69
22132     :try_start_69
22133     const-string v7, "ActivityManager"
22135     const-string v8, "Failure writing last done pre-boot receivers"
22137     invoke-static {v7, v8, v2}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
22139     invoke-virtual {v3}, Ljava/io/File;->delete()Z
22140     :try_end_73
22141     .catchall {:try_start_69 .. :try_end_73} :catchall_81
22143     invoke-static {v4}, Landroid/os/FileUtils;->sync(Ljava/io/FileOutputStream;)Z
22145     if-eqz v0, :cond_67
22147     :try_start_78
22148     invoke-virtual {v0}, Ljava/io/DataOutputStream;->close()V
22149     :try_end_7b
22150     .catch Ljava/io/IOException; {:try_start_78 .. :try_end_7b} :catch_7c
22152     goto :goto_67
22154     :catch_7c
22155     move-exception v2
22157     invoke-virtual {v2}, Ljava/io/IOException;->printStackTrace()V
22159     goto :goto_67
22161     :catchall_81
22162     move-exception v7
22164     :goto_82
22165     invoke-static {v4}, Landroid/os/FileUtils;->sync(Ljava/io/FileOutputStream;)Z
22167     if-eqz v0, :cond_8a
22169     :try_start_87
22170     invoke-virtual {v0}, Ljava/io/DataOutputStream;->close()V
22171     :try_end_8a
22172     .catch Ljava/io/IOException; {:try_start_87 .. :try_end_8a} :catch_8b
22174     :cond_8a
22175     :goto_8a
22176     throw v7
22178     :catch_8b
22179     move-exception v2
22181     invoke-virtual {v2}, Ljava/io/IOException;->printStackTrace()V
22183     goto :goto_8a
22185     :catch_90
22186     move-exception v2
22188     invoke-virtual {v2}, Ljava/io/IOException;->printStackTrace()V
22190     goto :goto_65
22192     :catchall_95
22193     move-exception v7
22195     move-object v4, v5
22197     goto :goto_82
22199     :catchall_98
22200     move-exception v7
22202     move-object v0, v1
22204     move-object v4, v5
22206     goto :goto_82
22208     :catch_9c
22209     move-exception v2
22211     move-object v4, v5
22213     goto :goto_69
22215     :catch_9f
22216     move-exception v2
22218     move-object v0, v1
22220     move-object v4, v5
22222     goto :goto_69
22223 .end method
22226 # virtual methods
22227 .method public final activityDestroyed(Landroid/os/IBinder;)V
22228     .registers 3
22230     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
22232     invoke-virtual {v0, p1}, Lcom/android/server/am/ActivityStack;->activityDestroyed(Landroid/os/IBinder;)V
22234     return-void
22235 .end method
22237 .method public final activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
22238     .registers 9
22240     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
22242     move-result-wide v0
22244     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
22246     const/4 v4, 0x0
22248     invoke-virtual {v3, p1, v4, p2}, Lcom/android/server/am/ActivityStack;->activityIdleInternal(Landroid/os/IBinder;ZLandroid/content/res/Configuration;)Lcom/android/server/am/ActivityRecord;
22250     move-result-object v2
22252     if-eqz p3, :cond_21
22254     monitor-enter p0
22256     :try_start_e
22257     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
22259     iget-object v4, v2, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
22261     if-ne v3, v4, :cond_20
22263     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
22264     :try_end_16
22265     .catchall {:try_start_e .. :try_end_16} :catchall_25
22267     if-eqz v3, :cond_20
22269     :try_start_18
22270     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
22272     invoke-virtual {v3}, Landroid/os/ParcelFileDescriptor;->close()V
22273     :try_end_1d
22274     .catchall {:try_start_18 .. :try_end_1d} :catchall_25
22275     .catch Ljava/io/IOException; {:try_start_18 .. :try_end_1d} :catch_28
22277     :goto_1d
22278     :try_start_1d
22279     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->clearProfilerLocked()V
22281     :cond_20
22282     monitor-exit p0
22283     :try_end_21
22284     .catchall {:try_start_1d .. :try_end_21} :catchall_25
22286     :cond_21
22287     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
22289     return-void
22291     :catchall_25
22292     move-exception v3
22294     :try_start_26
22295     monitor-exit p0
22296     :try_end_27
22297     .catchall {:try_start_26 .. :try_end_27} :catchall_25
22299     throw v3
22301     :catch_28
22302     move-exception v3
22304     goto :goto_1d
22305 .end method
22307 .method public final activityPaused(Landroid/os/IBinder;)V
22308     .registers 6
22310     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
22312     move-result-wide v0
22314     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
22316     const/4 v3, 0x0
22318     invoke-virtual {v2, p1, v3}, Lcom/android/server/am/ActivityStack;->activityPaused(Landroid/os/IBinder;Z)V
22320     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
22322     return-void
22323 .end method
22325 .method public final activityResumed(Landroid/os/IBinder;)V
22326     .registers 5
22328     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
22330     move-result-wide v0
22332     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
22334     invoke-virtual {v2, p1}, Lcom/android/server/am/ActivityStack;->activityResumed(Landroid/os/IBinder;)V
22336     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
22338     return-void
22339 .end method
22341 .method public final activitySlept(Landroid/os/IBinder;)V
22342     .registers 6
22344     const/4 v2, 0x0
22346     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
22348     move-result-wide v0
22350     monitor-enter p0
22352     :try_start_6
22353     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
22355     invoke-virtual {v3, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
22357     move-result-object v2
22359     if-eqz v2, :cond_13
22361     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
22363     invoke-virtual {v3, v2}, Lcom/android/server/am/ActivityStack;->activitySleptLocked(Lcom/android/server/am/ActivityRecord;)V
22365     :cond_13
22366     monitor-exit p0
22367     :try_end_14
22368     .catchall {:try_start_6 .. :try_end_14} :catchall_18
22370     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
22372     return-void
22374     :catchall_18
22375     move-exception v3
22377     :try_start_19
22378     monitor-exit p0
22379     :try_end_1a
22380     .catchall {:try_start_19 .. :try_end_1a} :catchall_18
22382     throw v3
22383 .end method
22385 .method public final activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;)V
22386     .registers 13
22388     const/4 v2, 0x0
22390     if-eqz p2, :cond_11
22392     invoke-virtual {p2}, Landroid/os/Bundle;->hasFileDescriptors()Z
22394     move-result v0
22396     if-eqz v0, :cond_11
22398     new-instance v0, Ljava/lang/IllegalArgumentException;
22400     const-string v2, "File descriptors passed in Bundle"
22402     invoke-direct {v0, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
22404     throw v0
22406     :cond_11
22407     const/4 v1, 0x0
22409     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
22411     move-result-wide v6
22413     monitor-enter p0
22415     :try_start_17
22416     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
22418     invoke-virtual {v0, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
22420     move-result-object v1
22422     if-eqz v1, :cond_24
22424     iget-object v0, v1, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
22426     invoke-virtual {v0, v1, p2, p3, p4}, Lcom/android/server/am/ActivityStack;->activityStoppedLocked(Lcom/android/server/am/ActivityRecord;Landroid/os/Bundle;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;)V
22428     :cond_24
22429     monitor-exit p0
22430     :try_end_25
22431     .catchall {:try_start_17 .. :try_end_25} :catchall_35
22433     if-eqz v1, :cond_2e
22435     const/4 v5, 0x0
22437     move-object v0, p0
22439     move-object v3, v2
22441     move-object v4, v2
22443     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->sendPendingThumbnail(Lcom/android/server/am/ActivityRecord;Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;Z)V
22445     :cond_2e
22446     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->trimApplications()V
22448     invoke-static {v6, v7}, Landroid/os/Binder;->restoreCallingIdentity(J)V
22450     return-void
22452     :catchall_35
22453     move-exception v0
22455     :try_start_36
22456     monitor-exit p0
22457     :try_end_37
22458     .catchall {:try_start_36 .. :try_end_37} :catchall_35
22460     throw v0
22461 .end method
22463 .method final addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
22464     .registers 10
22466     const/4 v4, 0x0
22468     const/4 v6, 0x1
22470     if-nez p2, :cond_5e
22472     iget-object v2, p1, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
22474     iget v3, p1, Landroid/content/pm/ApplicationInfo;->uid:I
22476     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
22478     move-result-object v0
22480     :goto_c
22481     if-nez v0, :cond_27
22483     invoke-virtual {p0, v4, p1, v4, p2}, Lcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Lcom/android/server/am/ProcessRecord;
22485     move-result-object v0
22487     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
22489     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
22491     iget v4, v0, Lcom/android/server/am/ProcessRecord;->uid:I
22493     invoke-virtual {v2, v3, v4, v0}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
22495     if-eqz p2, :cond_24
22497     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
22499     iget v3, v0, Lcom/android/server/am/ProcessRecord;->uid:I
22501     invoke-virtual {v2, v3, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
22503     :cond_24
22504     invoke-virtual {p0, v0, v6}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;Z)V
22506     :cond_27
22507     :try_start_27
22508     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
22510     move-result-object v2
22512     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
22514     const/4 v4, 0x0
22516     iget v5, v0, Lcom/android/server/am/ProcessRecord;->uid:I
22518     invoke-static {v5}, Landroid/os/UserHandle;->getUserId(I)I
22520     move-result v5
22522     invoke-interface {v2, v3, v4, v5}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V
22523     :try_end_37
22524     .catch Landroid/os/RemoteException; {:try_start_27 .. :try_end_37} :catch_86
22525     .catch Ljava/lang/IllegalArgumentException; {:try_start_27 .. :try_end_37} :catch_60
22527     :goto_37
22528     iget v2, p1, Landroid/content/pm/ApplicationInfo;->flags:I
22530     and-int/lit8 v2, v2, 0x9
22532     const/16 v3, 0x9
22534     if-ne v2, v3, :cond_45
22536     iput-boolean v6, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
22538     const/16 v2, -0xc
22540     iput v2, v0, Lcom/android/server/am/ProcessRecord;->maxAdj:I
22542     :cond_45
22543     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
22545     if-nez v2, :cond_5d
22547     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
22549     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
22551     move-result v2
22553     if-gez v2, :cond_5d
22555     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
22557     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
22559     const-string v2, "added application"
22561     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
22563     invoke-direct {p0, v0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
22565     :cond_5d
22566     return-object v0
22568     :cond_5e
22569     const/4 v0, 0x0
22571     goto :goto_c
22573     :catch_60
22574     move-exception v1
22576     const-string v2, "ActivityManager"
22578     new-instance v3, Ljava/lang/StringBuilder;
22580     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
22582     const-string v4, "Failed trying to unstop package "
22584     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22586     move-result-object v3
22588     iget-object v4, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
22590     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22592     move-result-object v3
22594     const-string v4, ": "
22596     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22598     move-result-object v3
22600     invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
22602     move-result-object v3
22604     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
22606     move-result-object v3
22608     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
22610     goto :goto_37
22612     :catch_86
22613     move-exception v2
22615     goto :goto_37
22616 .end method
22618 .method public addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V
22619     .registers 19
22621     new-instance v1, Ljava/lang/StringBuilder;
22623     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
22625     invoke-static {p2}, Lcom/android/server/am/ActivityManagerService;->processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
22627     move-result-object v2
22629     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22631     move-result-object v1
22633     const-string v2, "_"
22635     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22637     move-result-object v1
22639     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22641     move-result-object v1
22643     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
22645     move-result-object v7
22647     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
22649     const-string v2, "dropbox"
22651     invoke-virtual {v1, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
22653     move-result-object v8
22655     check-cast v8, Landroid/os/DropBoxManager;
22657     if-eqz v8, :cond_2d
22659     invoke-virtual {v8, v7}, Landroid/os/DropBoxManager;->isTagEnabled(Ljava/lang/String;)Z
22661     move-result v1
22663     if-nez v1, :cond_2e
22665     :cond_2d
22666     :goto_2d
22667     return-void
22669     :cond_2e
22670     new-instance v4, Ljava/lang/StringBuilder;
22672     const/16 v1, 0x400
22674     invoke-direct {v4, v1}, Ljava/lang/StringBuilder;-><init>(I)V
22676     invoke-direct {p0, p2, p3, v4}, Lcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V
22678     if-eqz p4, :cond_4b
22680     const-string v1, "Activity: "
22682     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22684     move-result-object v1
22686     iget-object v2, p4, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
22688     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22690     move-result-object v1
22692     const-string v2, "\n"
22694     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22696     :cond_4b
22697     if-eqz p5, :cond_6c
22699     iget-object v1, p5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
22701     if-eqz v1, :cond_6c
22703     iget-object v1, p5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
22705     iget v1, v1, Lcom/android/server/am/ProcessRecord;->pid:I
22707     iget v2, p2, Lcom/android/server/am/ProcessRecord;->pid:I
22709     if-eq v1, v2, :cond_6c
22711     const-string v1, "Parent-Process: "
22713     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22715     move-result-object v1
22717     iget-object v2, p5, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
22719     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
22721     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22723     move-result-object v1
22725     const-string v2, "\n"
22727     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22729     :cond_6c
22730     if-eqz p5, :cond_81
22732     if-eq p5, p4, :cond_81
22734     const-string v1, "Parent-Activity: "
22736     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22738     move-result-object v1
22740     iget-object v2, p5, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
22742     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22744     move-result-object v1
22746     const-string v2, "\n"
22748     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22750     :cond_81
22751     if-eqz p6, :cond_92
22753     const-string v1, "Subject: "
22755     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22757     move-result-object v1
22759     invoke-virtual {v1, p6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22761     move-result-object v1
22763     const-string v2, "\n"
22765     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22767     :cond_92
22768     const-string v1, "Build: "
22770     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22772     move-result-object v1
22774     sget-object v2, Landroid/os/Build;->FINGERPRINT:Ljava/lang/String;
22776     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22778     move-result-object v1
22780     const-string v2, "\n"
22782     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22784     invoke-static {}, Landroid/os/Debug;->isDebuggerConnected()Z
22786     move-result v1
22788     if-eqz v1, :cond_ae
22790     const-string v1, "Debugger: Connected\n"
22792     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22794     :cond_ae
22795     const-string v1, "\n"
22797     invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22799     new-instance v0, Lcom/android/server/am/ActivityManagerService$13;
22801     new-instance v1, Ljava/lang/StringBuilder;
22803     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
22805     const-string v2, "Error dump: "
22807     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22809     move-result-object v1
22811     invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
22813     move-result-object v1
22815     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
22817     move-result-object v2
22819     move-object v1, p0
22821     move-object/from16 v3, p7
22823     move-object/from16 v5, p8
22825     move-object/from16 v6, p9
22827     invoke-direct/range {v0 .. v8}, Lcom/android/server/am/ActivityManagerService$13;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/String;Landroid/os/DropBoxManager;)V
22829     if-nez p2, :cond_d9
22831     invoke-virtual {v0}, Ljava/lang/Thread;->run()V
22833     goto/16 :goto_2d
22835     :cond_d9
22836     invoke-virtual {v0}, Ljava/lang/Thread;->start()V
22838     goto/16 :goto_2d
22839 .end method
22841 .method final addProcessToGcListLocked(Lcom/android/server/am/ProcessRecord;)V
22842     .registers 8
22844     const/4 v0, 0x0
22846     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
22848     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
22850     move-result v2
22852     add-int/lit8 v1, v2, -0x1
22854     :goto_9
22855     if-ltz v1, :cond_23
22857     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
22859     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
22861     move-result-object v2
22863     check-cast v2, Lcom/android/server/am/ProcessRecord;
22865     iget-wide v2, v2, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
22867     iget-wide v4, p1, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
22869     cmp-long v2, v2, v4
22871     if-gez v2, :cond_2c
22873     const/4 v0, 0x1
22875     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
22877     add-int/lit8 v3, v1, 0x1
22879     invoke-virtual {v2, v3, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
22881     :cond_23
22882     if-nez v0, :cond_2b
22884     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
22886     const/4 v3, 0x0
22888     invoke-virtual {v2, v3, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
22890     :cond_2b
22891     return-void
22893     :cond_2c
22894     add-int/lit8 v1, v1, -0x1
22896     goto :goto_9
22897 .end method
22899 .method final addRecentTaskLocked(Lcom/android/server/am/TaskRecord;)V
22900     .registers 8
22902     const/4 v5, 0x0
22904     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
22906     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
22908     move-result v0
22910     if-lez v0, :cond_12
22912     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
22914     invoke-virtual {v3, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
22916     move-result-object v3
22918     if-ne v3, p1, :cond_12
22920     :goto_11
22921     return-void
22923     :cond_12
22924     const/4 v1, 0x0
22926     :goto_13
22927     if-ge v1, v0, :cond_50
22929     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
22931     invoke-virtual {v3, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
22933     move-result-object v2
22935     check-cast v2, Lcom/android/server/am/TaskRecord;
22937     iget v3, p1, Lcom/android/server/am/TaskRecord;->userId:I
22939     iget v4, v2, Lcom/android/server/am/TaskRecord;->userId:I
22941     if-ne v3, v4, :cond_4d
22943     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
22945     if-eqz v3, :cond_31
22947     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
22949     iget-object v4, v2, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
22951     invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
22953     move-result v3
22955     if-nez v3, :cond_3f
22957     :cond_31
22958     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
22960     if-eqz v3, :cond_4d
22962     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
22964     iget-object v4, v2, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
22966     invoke-virtual {v3, v4}, Landroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
22968     move-result v3
22970     if-eqz v3, :cond_4d
22972     :cond_3f
22973     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
22975     invoke-virtual {v3, v1}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
22977     add-int/lit8 v1, v1, -0x1
22979     add-int/lit8 v0, v0, -0x1
22981     iget-object v3, p1, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
22983     if-nez v3, :cond_4d
22985     move-object p1, v2
22987     :cond_4d
22988     add-int/lit8 v1, v1, 0x1
22990     goto :goto_13
22992     :cond_50
22993     const/16 v3, 0x14
22995     if-lt v0, v3, :cond_5b
22997     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
22999     add-int/lit8 v4, v0, -0x1
23001     invoke-virtual {v3, v4}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
23003     :cond_5b
23004     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
23006     invoke-virtual {v3, v5, p1}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V
23008     goto :goto_11
23009 .end method
23011 .method final appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
23012     .registers 15
23014     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mProcDeaths:[I
23016     const/4 v8, 0x0
23018     aget v9, v7, v8
23020     add-int/lit8 v9, v9, 0x1
23022     aput v9, v7, v8
23024     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
23026     invoke-virtual {v7}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
23028     move-result-object v6
23030     monitor-enter v6
23032     :try_start_10
23033     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
23035     iget v7, v7, Landroid/content/pm/ApplicationInfo;->uid:I
23037     invoke-virtual {v6, v7, p2}, Lcom/android/internal/os/BatteryStatsImpl;->noteProcessDiedLocked(II)V
23039     monitor-exit v6
23040     :try_end_18
23041     .catchall {:try_start_10 .. :try_end_18} :catchall_ef
23043     iget v7, p1, Lcom/android/server/am/ProcessRecord;->pid:I
23045     if-ne v7, p2, :cond_107
23047     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
23049     if-eqz v7, :cond_107
23051     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
23053     invoke-interface {v7}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
23055     move-result-object v7
23057     invoke-interface {p3}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
23059     move-result-object v8
23061     if-ne v7, v8, :cond_107
23063     iget-boolean v7, p1, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
23065     if-nez v7, :cond_5a
23067     const-string v7, "ActivityManager"
23069     new-instance v8, Ljava/lang/StringBuilder;
23071     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
23073     const-string v9, "Process "
23075     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23077     move-result-object v8
23079     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23081     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23083     move-result-object v8
23085     const-string v9, " (pid "
23087     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23089     move-result-object v8
23091     invoke-virtual {v8, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
23093     move-result-object v8
23095     const-string v9, ") has died."
23097     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23099     move-result-object v8
23101     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
23103     move-result-object v8
23105     invoke-static {v7, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
23107     :cond_5a
23108     const/16 v7, 0x753b
23110     const/4 v8, 0x3
23112     new-array v8, v8, [Ljava/lang/Object;
23114     const/4 v9, 0x0
23116     iget v10, p1, Lcom/android/server/am/ProcessRecord;->userId:I
23118     invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23120     move-result-object v10
23122     aput-object v10, v8, v9
23124     const/4 v9, 0x1
23126     iget v10, p1, Lcom/android/server/am/ProcessRecord;->pid:I
23128     invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23130     move-result-object v10
23132     aput-object v10, v8, v9
23134     const/4 v9, 0x2
23136     iget-object v10, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23138     aput-object v10, v8, v9
23140     invoke-static {v7, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
23142     iget-object v7, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
23144     if-nez v7, :cond_f2
23146     const/4 v0, 0x1
23148     :goto_7e
23149     const/4 v7, 0x0
23151     const/4 v8, 0x1
23153     invoke-direct {p0, p1, v7, v8}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
23155     if-eqz v0, :cond_106
23157     const/4 v1, 0x0
23159     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23161     invoke-virtual {v7}, Ljava/util/ArrayList;->size()I
23163     move-result v7
23165     add-int/lit8 v2, v7, -0x1
23167     :goto_8e
23168     if-ltz v2, :cond_a3
23170     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23172     invoke-virtual {v7, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
23174     move-result-object v5
23176     check-cast v5, Lcom/android/server/am/ProcessRecord;
23178     iget-object v7, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
23180     if-eqz v7, :cond_f4
23182     iget v7, v5, Lcom/android/server/am/ProcessRecord;->setAdj:I
23184     sget v8, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
23186     if-lt v7, v8, :cond_f4
23188     const/4 v1, 0x1
23190     :cond_a3
23191     if-nez v1, :cond_106
23193     const/16 v7, 0x7541
23195     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23197     invoke-virtual {v8}, Ljava/util/ArrayList;->size()I
23199     move-result v8
23201     invoke-static {v7, v8}, Landroid/util/EventLog;->writeEvent(II)I
23203     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
23205     move-result-wide v3
23207     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23209     invoke-virtual {v7}, Ljava/util/ArrayList;->size()I
23211     move-result v7
23213     add-int/lit8 v2, v7, -0x1
23215     :goto_bc
23216     if-ltz v2, :cond_fc
23218     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23220     invoke-virtual {v7, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
23222     move-result-object v5
23224     check-cast v5, Lcom/android/server/am/ProcessRecord;
23226     if-eq v5, p1, :cond_ec
23228     iget-object v7, v5, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
23230     if-eqz v7, :cond_ec
23232     iget-wide v7, v5, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
23234     const-wide/32 v9, 0xea60
23236     add-long/2addr v7, v9
23238     cmp-long v7, v7, v3
23240     if-gtz v7, :cond_ec
23242     iget v7, v5, Lcom/android/server/am/ProcessRecord;->setAdj:I
23244     const/4 v8, 0x3
23246     if-gt v7, v8, :cond_f7
23248     const-wide/16 v7, 0x0
23250     iput-wide v7, v5, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
23252     :goto_df
23253     const/4 v7, 0x1
23255     iput-boolean v7, v5, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
23257     iput-wide v3, v5, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
23259     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
23261     invoke-virtual {v7, v5}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
23263     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->addProcessToGcListLocked(Lcom/android/server/am/ProcessRecord;)V
23265     :cond_ec
23266     add-int/lit8 v2, v2, -0x1
23268     goto :goto_bc
23270     :catchall_ef
23271     move-exception v7
23273     :try_start_f0
23274     monitor-exit v6
23275     :try_end_f1
23276     .catchall {:try_start_f0 .. :try_end_f1} :catchall_ef
23278     throw v7
23280     :cond_f2
23281     const/4 v0, 0x0
23283     goto :goto_7e
23285     :cond_f4
23286     add-int/lit8 v2, v2, -0x1
23288     goto :goto_8e
23290     :cond_f7
23291     iget-wide v7, v5, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
23293     iput-wide v7, v5, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
23295     goto :goto_df
23297     :cond_fc
23298     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
23300     const/16 v8, 0x21
23302     invoke-virtual {v7, v8}, Landroid/os/Handler;->sendEmptyMessage(I)Z
23304     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
23306     :cond_106
23307     :goto_106
23308     return-void
23310     :cond_107
23311     iget v7, p1, Lcom/android/server/am/ProcessRecord;->pid:I
23313     if-eq v7, p2, :cond_106
23315     const-string v7, "ActivityManager"
23317     new-instance v8, Ljava/lang/StringBuilder;
23319     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
23321     const-string v9, "Process "
23323     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23325     move-result-object v8
23327     iget-object v9, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23329     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23331     move-result-object v8
23333     const-string v9, " (pid "
23335     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23337     move-result-object v8
23339     invoke-virtual {v8, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
23341     move-result-object v8
23343     const-string v9, ") has died and restarted (pid "
23345     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23347     move-result-object v8
23349     iget v9, p1, Lcom/android/server/am/ProcessRecord;->pid:I
23351     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
23353     move-result-object v8
23355     const-string v9, ")."
23357     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23359     move-result-object v8
23361     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
23363     move-result-object v8
23365     invoke-static {v7, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
23367     const/16 v7, 0x753b
23369     const/4 v8, 0x3
23371     new-array v8, v8, [Ljava/lang/Object;
23373     const/4 v9, 0x0
23375     iget v10, p1, Lcom/android/server/am/ProcessRecord;->userId:I
23377     invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23379     move-result-object v10
23381     aput-object v10, v8, v9
23383     const/4 v9, 0x1
23385     iget v10, p1, Lcom/android/server/am/ProcessRecord;->pid:I
23387     invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23389     move-result-object v10
23391     aput-object v10, v8, v9
23393     const/4 v9, 0x2
23395     iget-object v10, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23397     aput-object v10, v8, v9
23399     invoke-static {v7, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
23401     goto :goto_106
23402 .end method
23404 .method final appNotResponding(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;ZLjava/lang/String;)V
23405     .registers 33
23407     new-instance v15, Ljava/util/ArrayList;
23409     const/4 v2, 0x5
23411     invoke-direct {v15, v2}, Ljava/util/ArrayList;-><init>(I)V
23413     new-instance v18, Landroid/util/SparseArray;
23415     const/16 v2, 0x14
23417     move-object/from16 v0, v18
23419     invoke-direct {v0, v2}, Landroid/util/SparseArray;-><init>(I)V
23421     move-object/from16 v0, p0
23423     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
23425     if-eqz v2, :cond_38
23427     :try_start_15
23428     move-object/from16 v0, p0
23430     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
23432     move-object/from16 v0, p1
23434     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23436     move-object/from16 v0, p1
23438     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23440     move-object/from16 v0, p5
23442     invoke-interface {v2, v3, v4, v0}, Landroid/app/IActivityController;->appEarlyNotResponding(Ljava/lang/String;ILjava/lang/String;)I
23444     move-result v25
23446     if-gez v25, :cond_38
23448     move-object/from16 v0, p1
23450     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23452     sget v3, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
23454     if-eq v2, v3, :cond_38
23456     move-object/from16 v0, p1
23458     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23460     invoke-static {v2}, Landroid/os/Process;->killProcess(I)V
23461     :try_end_38
23462     .catch Landroid/os/RemoteException; {:try_start_15 .. :try_end_38} :catch_6e
23464     :cond_38
23465     :goto_38
23466     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
23468     move-result-wide v12
23470     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
23472     monitor-enter p0
23474     :try_start_40
23475     move-object/from16 v0, p0
23477     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
23479     if-eqz v2, :cond_75
23481     const-string v2, "ActivityManager"
23483     new-instance v3, Ljava/lang/StringBuilder;
23485     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
23487     const-string v4, "During shutdown skipping ANR: "
23489     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23491     move-result-object v3
23493     move-object/from16 v0, p1
23495     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
23497     move-result-object v3
23499     const-string v4, " "
23501     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23503     move-result-object v3
23505     move-object/from16 v0, p5
23507     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23509     move-result-object v3
23511     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
23513     move-result-object v3
23515     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
23517     monitor-exit p0
23518     :try_end_6d
23519     .catchall {:try_start_40 .. :try_end_6d} :catchall_a3
23521     :cond_6d
23522     :goto_6d
23523     return-void
23525     :catch_6e
23526     move-exception v14
23528     const/4 v2, 0x0
23530     move-object/from16 v0, p0
23532     iput-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
23534     goto :goto_38
23536     :cond_75
23537     :try_start_75
23538     move-object/from16 v0, p1
23540     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
23542     if-eqz v2, :cond_a6
23544     const-string v2, "ActivityManager"
23546     new-instance v3, Ljava/lang/StringBuilder;
23548     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
23550     const-string v4, "Skipping duplicate ANR: "
23552     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23554     move-result-object v3
23556     move-object/from16 v0, p1
23558     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
23560     move-result-object v3
23562     const-string v4, " "
23564     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23566     move-result-object v3
23568     move-object/from16 v0, p5
23570     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23572     move-result-object v3
23574     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
23576     move-result-object v3
23578     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
23580     monitor-exit p0
23582     goto :goto_6d
23584     :catchall_a3
23585     move-exception v2
23587     monitor-exit p0
23588     :try_end_a5
23589     .catchall {:try_start_75 .. :try_end_a5} :catchall_a3
23591     throw v2
23593     :cond_a6
23594     :try_start_a6
23595     move-object/from16 v0, p1
23597     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->crashing:Z
23599     if-eqz v2, :cond_d4
23601     const-string v2, "ActivityManager"
23603     new-instance v3, Ljava/lang/StringBuilder;
23605     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
23607     const-string v4, "Crashing app skipping ANR: "
23609     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23611     move-result-object v3
23613     move-object/from16 v0, p1
23615     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
23617     move-result-object v3
23619     const-string v4, " "
23621     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23623     move-result-object v3
23625     move-object/from16 v0, p5
23627     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23629     move-result-object v3
23631     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
23633     move-result-object v3
23635     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
23637     monitor-exit p0
23639     goto :goto_6d
23641     :cond_d4
23642     const/4 v2, 0x1
23644     move-object/from16 v0, p1
23646     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->notResponding:Z
23648     const/16 v2, 0x7538
23650     const/4 v3, 0x5
23652     new-array v3, v3, [Ljava/lang/Object;
23654     const/4 v4, 0x0
23656     move-object/from16 v0, p1
23658     iget v5, v0, Lcom/android/server/am/ProcessRecord;->userId:I
23660     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23662     move-result-object v5
23664     aput-object v5, v3, v4
23666     const/4 v4, 0x1
23668     move-object/from16 v0, p1
23670     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23672     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23674     move-result-object v5
23676     aput-object v5, v3, v4
23678     const/4 v4, 0x2
23680     move-object/from16 v0, p1
23682     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23684     aput-object v5, v3, v4
23686     const/4 v4, 0x3
23688     move-object/from16 v0, p1
23690     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
23692     iget v5, v5, Landroid/content/pm/ApplicationInfo;->flags:I
23694     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23696     move-result-object v5
23698     aput-object v5, v3, v4
23700     const/4 v4, 0x4
23702     aput-object p5, v3, v4
23704     invoke-static {v2, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
23706     move-object/from16 v0, p1
23708     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23710     invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23712     move-result-object v2
23714     invoke-virtual {v15, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
23716     move-object/from16 v0, p1
23718     iget v0, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23720     move/from16 v21, v0
23722     if-eqz p3, :cond_137
23724     move-object/from16 v0, p3
23726     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
23728     if-eqz v2, :cond_137
23730     move-object/from16 v0, p3
23732     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
23734     iget v2, v2, Lcom/android/server/am/ProcessRecord;->pid:I
23736     if-lez v2, :cond_137
23738     move-object/from16 v0, p3
23740     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
23742     iget v0, v2, Lcom/android/server/am/ProcessRecord;->pid:I
23744     move/from16 v21, v0
23746     :cond_137
23747     move-object/from16 v0, p1
23749     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23751     move/from16 v0, v21
23753     if-eq v0, v2, :cond_146
23755     invoke-static/range {v21 .. v21}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23757     move-result-object v2
23759     invoke-virtual {v15, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
23761     :cond_146
23762     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
23764     move-object/from16 v0, p1
23766     iget v3, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23768     if-eq v2, v3, :cond_15d
23770     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
23772     move/from16 v0, v21
23774     if-eq v2, v0, :cond_15d
23776     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
23778     invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23780     move-result-object v2
23782     invoke-virtual {v15, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
23784     :cond_15d
23785     move-object/from16 v0, p0
23787     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23789     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
23791     move-result v2
23793     add-int/lit8 v16, v2, -0x1
23795     :goto_167
23796     if-ltz v16, :cond_1b3
23798     move-object/from16 v0, p0
23800     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
23802     move/from16 v0, v16
23804     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
23806     move-result-object v24
23808     check-cast v24, Lcom/android/server/am/ProcessRecord;
23810     if-eqz v24, :cond_1a6
23812     move-object/from16 v0, v24
23814     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
23816     if-eqz v2, :cond_1a6
23818     move-object/from16 v0, v24
23820     iget v0, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23822     move/from16 v22, v0
23824     if-lez v22, :cond_1a6
23826     move-object/from16 v0, p1
23828     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
23830     move/from16 v0, v22
23832     if-eq v0, v2, :cond_1a6
23834     move/from16 v0, v22
23836     move/from16 v1, v21
23838     if-eq v0, v1, :cond_1a6
23840     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
23842     move/from16 v0, v22
23844     if-eq v0, v2, :cond_1a6
23846     move-object/from16 v0, v24
23848     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
23850     if-eqz v2, :cond_1a9
23852     invoke-static/range {v22 .. v22}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
23854     move-result-object v2
23856     invoke-virtual {v15, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
23858     :cond_1a6
23859     :goto_1a6
23860     add-int/lit8 v16, v16, -0x1
23862     goto :goto_167
23864     :cond_1a9
23865     sget-object v2, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean;
23867     move-object/from16 v0, v18
23869     move/from16 v1, v22
23871     invoke-virtual {v0, v1, v2}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
23873     goto :goto_1a6
23875     :cond_1b3
23876     monitor-exit p0
23877     :try_end_1b4
23878     .catchall {:try_start_a6 .. :try_end_1b4} :catchall_a3
23880     new-instance v17, Ljava/lang/StringBuilder;
23882     invoke-direct/range {v17 .. v17}, Ljava/lang/StringBuilder;-><init>()V
23884     const/4 v2, 0x0
23886     move-object/from16 v0, v17
23888     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->setLength(I)V
23890     const-string v2, "ANR in "
23892     move-object/from16 v0, v17
23894     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23896     move-result-object v2
23898     move-object/from16 v0, p1
23900     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
23902     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23904     if-eqz p2, :cond_1eb
23906     move-object/from16 v0, p2
23908     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
23910     if-eqz v2, :cond_1eb
23912     const-string v2, " ("
23914     move-object/from16 v0, v17
23916     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23918     move-result-object v2
23920     move-object/from16 v0, p2
23922     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
23924     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23926     move-result-object v2
23928     const-string v3, ")"
23930     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23932     :cond_1eb
23933     const-string v2, "\n"
23935     move-object/from16 v0, v17
23937     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23939     if-eqz p5, :cond_207
23941     const-string v2, "Reason: "
23943     move-object/from16 v0, v17
23945     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23947     move-result-object v2
23949     move-object/from16 v0, p5
23951     invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23953     move-result-object v2
23955     const-string v3, "\n"
23957     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23959     :cond_207
23960     if-eqz p3, :cond_224
23962     move-object/from16 v0, p3
23964     move-object/from16 v1, p2
23966     if-eq v0, v1, :cond_224
23968     const-string v2, "Parent: "
23970     move-object/from16 v0, v17
23972     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23974     move-result-object v2
23976     move-object/from16 v0, p3
23978     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
23980     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23982     move-result-object v2
23984     const-string v3, "\n"
23986     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
23988     :cond_224
23989     new-instance v23, Lcom/android/internal/os/ProcessStats;
23991     const/4 v2, 0x1
23993     move-object/from16 v0, v23
23995     invoke-direct {v0, v2}, Lcom/android/internal/os/ProcessStats;-><init>(Z)V
23997     const/4 v2, 0x1
23999     const/4 v3, 0x0
24001     move-object/from16 v0, v23
24003     move-object/from16 v1, v18
24005     invoke-static {v2, v15, v0, v1, v3}, Lcom/android/server/am/ActivityManagerService;->dumpStackTraces(ZLjava/util/ArrayList;Lcom/android/internal/os/ProcessStats;Landroid/util/SparseArray;[Ljava/lang/String;)Ljava/io/File;
24007     move-result-object v10
24009     const/4 v9, 0x0
24011     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
24013     move-object/from16 v0, p0
24015     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
24017     monitor-enter v3
24019     :try_start_23f
24020     move-object/from16 v0, p0
24022     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
24024     invoke-virtual {v2, v12, v13}, Lcom/android/internal/os/ProcessStats;->printCurrentState(J)Ljava/lang/String;
24026     move-result-object v9
24028     monitor-exit v3
24029     :try_end_248
24030     .catchall {:try_start_23f .. :try_end_248} :catchall_343
24032     invoke-virtual/range {v23 .. v23}, Lcom/android/internal/os/ProcessStats;->printCurrentLoad()Ljava/lang/String;
24034     move-result-object v2
24036     move-object/from16 v0, v17
24038     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24040     move-object/from16 v0, v17
24042     invoke-virtual {v0, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24044     move-object/from16 v0, v23
24046     invoke-virtual {v0, v12, v13}, Lcom/android/internal/os/ProcessStats;->printCurrentState(J)Ljava/lang/String;
24048     move-result-object v2
24050     move-object/from16 v0, v17
24052     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24054     const-string v2, "ActivityManager"
24056     invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24058     move-result-object v3
24060     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
24062     if-nez v10, :cond_274
24064     move-object/from16 v0, p1
24066     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
24068     const/4 v3, 0x3
24070     invoke-static {v2, v3}, Landroid/os/Process;->sendSignal(II)V
24072     :cond_274
24073     const-string v3, "anr"
24075     move-object/from16 v0, p1
24077     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
24079     const/4 v11, 0x0
24081     move-object/from16 v2, p0
24083     move-object/from16 v4, p1
24085     move-object/from16 v6, p2
24087     move-object/from16 v7, p3
24089     move-object/from16 v8, p5
24091     invoke-virtual/range {v2 .. v11}, Lcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V
24093     move-object/from16 v0, p0
24095     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
24097     if-eqz v2, :cond_2bd
24099     :try_start_28e
24100     move-object/from16 v0, p0
24102     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
24104     move-object/from16 v0, p1
24106     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
24108     move-object/from16 v0, p1
24110     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
24112     invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24114     move-result-object v5
24116     invoke-interface {v2, v3, v4, v5}, Landroid/app/IActivityController;->appNotResponding(Ljava/lang/String;ILjava/lang/String;)I
24118     move-result v25
24120     if-eqz v25, :cond_2bd
24122     if-gez v25, :cond_6d
24124     move-object/from16 v0, p1
24126     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
24128     sget v3, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
24130     if-eq v2, v3, :cond_6d
24132     move-object/from16 v0, p1
24134     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
24136     invoke-static {v2}, Landroid/os/Process;->killProcess(I)V
24137     :try_end_2b5
24138     .catch Landroid/os/RemoteException; {:try_start_28e .. :try_end_2b5} :catch_2b7
24140     goto/16 :goto_6d
24142     :catch_2b7
24143     move-exception v14
24145     const/4 v2, 0x0
24147     move-object/from16 v0, p0
24149     iput-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
24151     :cond_2bd
24152     move-object/from16 v0, p0
24154     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
24156     invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
24158     move-result-object v2
24160     const-string v3, "anr_show_background"
24162     const/4 v4, 0x0
24164     invoke-static {v2, v3, v4}, Landroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
24166     move-result v2
24168     if-eqz v2, :cond_346
24170     const/16 v26, 0x1
24172     :goto_2d0
24173     monitor-enter p0
24175     if-nez v26, :cond_349
24177     :try_start_2d3
24178     invoke-virtual/range {p1 .. p1}, Lcom/android/server/am/ProcessRecord;->isInterestingToUserLocked()Z
24180     move-result v2
24182     if-nez v2, :cond_349
24184     move-object/from16 v0, p1
24186     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
24188     sget v3, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
24190     if-eq v2, v3, :cond_349
24192     const-string v2, "ActivityManager"
24194     new-instance v3, Ljava/lang/StringBuilder;
24196     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
24198     const-string v4, "Killing "
24200     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24202     move-result-object v3
24204     move-object/from16 v0, p1
24206     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
24208     move-result-object v3
24210     const-string v4, ": background ANR"
24212     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24214     move-result-object v3
24216     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24218     move-result-object v3
24220     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
24222     const/16 v2, 0x7547
24224     const/4 v3, 0x5
24226     new-array v3, v3, [Ljava/lang/Object;
24228     const/4 v4, 0x0
24230     move-object/from16 v0, p1
24232     iget v5, v0, Lcom/android/server/am/ProcessRecord;->userId:I
24234     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
24236     move-result-object v5
24238     aput-object v5, v3, v4
24240     const/4 v4, 0x1
24242     move-object/from16 v0, p1
24244     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
24246     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
24248     move-result-object v5
24250     aput-object v5, v3, v4
24252     const/4 v4, 0x2
24254     move-object/from16 v0, p1
24256     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
24258     aput-object v5, v3, v4
24260     const/4 v4, 0x3
24262     move-object/from16 v0, p1
24264     iget v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
24266     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
24268     move-result-object v5
24270     aput-object v5, v3, v4
24272     const/4 v4, 0x4
24274     const-string v5, "background ANR"
24276     aput-object v5, v3, v4
24278     invoke-static {v2, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
24280     move-object/from16 v0, p1
24282     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
24284     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
24286     monitor-exit p0
24288     goto/16 :goto_6d
24290     :catchall_340
24291     move-exception v2
24293     monitor-exit p0
24294     :try_end_342
24295     .catchall {:try_start_2d3 .. :try_end_342} :catchall_340
24297     throw v2
24299     :catchall_343
24300     move-exception v2
24302     :try_start_344
24303     monitor-exit v3
24304     :try_end_345
24305     .catchall {:try_start_344 .. :try_end_345} :catchall_343
24307     throw v2
24309     :cond_346
24310     const/16 v26, 0x0
24312     goto :goto_2d0
24314     :cond_349
24315     if-eqz p2, :cond_3ad
24317     :try_start_34b
24318     move-object/from16 v0, p2
24320     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->shortComponentName:Ljava/lang/String;
24322     move-object v3, v2
24324     :goto_350
24325     if-eqz p5, :cond_3b0
24327     new-instance v2, Ljava/lang/StringBuilder;
24329     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
24331     const-string v4, "ANR "
24333     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24335     move-result-object v2
24337     move-object/from16 v0, p5
24339     invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24341     move-result-object v2
24343     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24345     move-result-object v2
24347     :goto_367
24348     invoke-virtual/range {v17 .. v17}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24350     move-result-object v4
24352     move-object/from16 v0, p0
24354     move-object/from16 v1, p1
24356     invoke-direct {v0, v1, v3, v2, v4}, Lcom/android/server/am/ActivityManagerService;->makeAppNotRespondingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
24358     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
24360     move-result-object v20
24362     new-instance v19, Ljava/util/HashMap;
24364     invoke-direct/range {v19 .. v19}, Ljava/util/HashMap;-><init>()V
24366     const/4 v2, 0x2
24368     move-object/from16 v0, v20
24370     iput v2, v0, Landroid/os/Message;->what:I
24372     move-object/from16 v0, v19
24374     move-object/from16 v1, v20
24376     iput-object v0, v1, Landroid/os/Message;->obj:Ljava/lang/Object;
24378     if-eqz p4, :cond_3b3
24380     const/4 v2, 0x1
24382     :goto_389
24383     move-object/from16 v0, v20
24385     iput v2, v0, Landroid/os/Message;->arg1:I
24387     const-string v2, "app"
24389     move-object/from16 v0, v19
24391     move-object/from16 v1, p1
24393     invoke-virtual {v0, v2, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
24395     if-eqz p2, :cond_3a1
24397     const-string v2, "activity"
24399     move-object/from16 v0, v19
24401     move-object/from16 v1, p2
24403     invoke-virtual {v0, v2, v1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
24405     :cond_3a1
24406     move-object/from16 v0, p0
24408     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
24410     move-object/from16 v0, v20
24412     invoke-virtual {v2, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
24414     monitor-exit p0
24416     goto/16 :goto_6d
24418     :cond_3ad
24419     const/4 v2, 0x0
24421     move-object v3, v2
24423     goto :goto_350
24425     :cond_3b0
24426     const-string v2, "ANR"
24427     :try_end_3b2
24428     .catchall {:try_start_34b .. :try_end_3b2} :catchall_340
24430     goto :goto_367
24432     :cond_3b3
24433     const/4 v2, 0x0
24435     goto :goto_389
24436 .end method
24438 .method public final attachApplication(Landroid/app/IApplicationThread;)V
24439     .registers 6
24441     monitor-enter p0
24443     :try_start_1
24444     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
24446     move-result v0
24448     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
24450     move-result-wide v1
24452     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;I)Z
24454     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
24456     monitor-exit p0
24458     return-void
24460     :catchall_11
24461     move-exception v3
24463     monitor-exit p0
24464     :try_end_13
24465     .catchall {:try_start_1 .. :try_end_13} :catchall_11
24467     throw v3
24468 .end method
24470 .method public backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;)V
24471     .registers 10
24473     monitor-enter p0
24475     :try_start_1
24476     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
24478     invoke-virtual {p1, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
24480     move-result v4
24482     if-nez v4, :cond_29
24484     const-string v4, "ActivityManager"
24486     new-instance v5, Ljava/lang/StringBuilder;
24488     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
24490     const-string v6, "Backup agent created for "
24492     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24494     move-result-object v5
24496     invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24498     move-result-object v5
24500     const-string v6, " but not requested!"
24502     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24504     move-result-object v5
24506     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24508     move-result-object v5
24510     invoke-static {v4, v5}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
24512     monitor-exit p0
24514     :goto_28
24515     return-void
24517     :cond_29
24518     monitor-exit p0
24519     :try_end_2a
24520     .catchall {:try_start_1 .. :try_end_2a} :catchall_3f
24522     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
24524     move-result-wide v2
24526     :try_start_2e
24527     const-string v4, "backup"
24529     invoke-static {v4}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
24531     move-result-object v4
24533     invoke-static {v4}, Landroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager;
24535     move-result-object v0
24537     invoke-interface {v0, p1, p2}, Landroid/app/backup/IBackupManager;->agentConnected(Ljava/lang/String;Landroid/os/IBinder;)V
24538     :try_end_3b
24539     .catchall {:try_start_2e .. :try_end_3b} :catchall_4e
24540     .catch Landroid/os/RemoteException; {:try_start_2e .. :try_end_3b} :catch_53
24541     .catch Ljava/lang/Exception; {:try_start_2e .. :try_end_3b} :catch_42
24543     :goto_3b
24544     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
24546     goto :goto_28
24548     :catchall_3f
24549     move-exception v4
24551     :try_start_40
24552     monitor-exit p0
24553     :try_end_41
24554     .catchall {:try_start_40 .. :try_end_41} :catchall_3f
24556     throw v4
24558     :catch_42
24559     move-exception v1
24561     :try_start_43
24562     const-string v4, "ActivityManager"
24564     const-string v5, "Exception trying to deliver BackupAgent binding: "
24566     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
24568     invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
24569     :try_end_4d
24570     .catchall {:try_start_43 .. :try_end_4d} :catchall_4e
24572     goto :goto_3b
24574     :catchall_4e
24575     move-exception v4
24577     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
24579     throw v4
24581     :catch_53
24582     move-exception v4
24584     goto :goto_3b
24585 .end method
24587 .method public batteryNeedsCpuUpdate()V
24588     .registers 1
24590     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
24592     return-void
24593 .end method
24595 .method public batteryPowerChanged(Z)V
24596     .registers 4
24598     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
24600     monitor-enter p0
24602     :try_start_4
24603     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
24605     monitor-enter v1
24606     :try_end_7
24607     .catchall {:try_start_4 .. :try_end_7} :catchall_f
24609     :try_start_7
24610     iput-boolean p1, p0, Lcom/android/server/am/ActivityManagerService;->mOnBattery:Z
24612     monitor-exit v1
24613     :try_end_a
24614     .catchall {:try_start_7 .. :try_end_a} :catchall_c
24616     :try_start_a
24617     monitor-exit p0
24618     :try_end_b
24619     .catchall {:try_start_a .. :try_end_b} :catchall_f
24621     return-void
24623     :catchall_c
24624     move-exception v0
24626     :try_start_d
24627     monitor-exit v1
24628     :try_end_e
24629     .catchall {:try_start_d .. :try_end_e} :catchall_c
24631     :try_start_e
24632     throw v0
24634     :catchall_f
24635     move-exception v0
24637     monitor-exit p0
24638     :try_end_11
24639     .catchall {:try_start_e .. :try_end_11} :catchall_f
24641     throw v0
24642 .end method
24644 .method public bindBackupAgent(Landroid/content/pm/ApplicationInfo;I)Z
24645     .registers 19
24647     const-string v2, "android.permission.BACKUP"
24649     const-string v3, "bindBackupAgent"
24651     move-object/from16 v0, p0
24653     invoke-virtual {v0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
24655     monitor-enter p0
24657     const/4 v14, 0x0
24659     :try_start_b
24660     move-object/from16 v0, p0
24662     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
24664     invoke-virtual {v2}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
24666     move-result-object v15
24668     monitor-enter v15
24669     :try_end_14
24670     .catchall {:try_start_b .. :try_end_14} :catchall_83
24672     :try_start_14
24673     move-object/from16 v0, p1
24675     iget v2, v0, Landroid/content/pm/ApplicationInfo;->uid:I
24677     move-object/from16 v0, p1
24679     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
24681     move-object/from16 v0, p1
24683     iget-object v4, v0, Landroid/content/pm/ApplicationInfo;->name:Ljava/lang/String;
24685     invoke-virtual {v15, v2, v3, v4}, Lcom/android/internal/os/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
24687     move-result-object v14
24689     monitor-exit v15
24690     :try_end_25
24691     .catchall {:try_start_14 .. :try_end_25} :catchall_80
24693     :try_start_25
24694     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
24696     move-result-object v2
24698     move-object/from16 v0, p1
24700     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
24702     const/4 v4, 0x0
24704     move-object/from16 v0, p1
24706     iget v5, v0, Landroid/content/pm/ApplicationInfo;->uid:I
24708     invoke-static {v5}, Landroid/os/UserHandle;->getUserId(I)I
24710     move-result v5
24712     invoke-interface {v2, v3, v4, v5}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V
24713     :try_end_39
24714     .catchall {:try_start_25 .. :try_end_39} :catchall_83
24715     .catch Landroid/os/RemoteException; {:try_start_25 .. :try_end_39} :catch_e1
24716     .catch Ljava/lang/IllegalArgumentException; {:try_start_25 .. :try_end_39} :catch_86
24718     :goto_39
24719     :try_start_39
24720     new-instance v13, Lcom/android/server/am/BackupRecord;
24722     move-object/from16 v0, p1
24724     move/from16 v1, p2
24726     invoke-direct {v13, v14, v0, v1}, Lcom/android/server/am/BackupRecord;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;Landroid/content/pm/ApplicationInfo;I)V
24728     if-nez p2, :cond_ae
24730     new-instance v8, Landroid/content/ComponentName;
24732     move-object/from16 v0, p1
24734     iget-object v2, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
24736     move-object/from16 v0, p1
24738     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->backupAgentName:Ljava/lang/String;
24740     invoke-direct {v8, v2, v3}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
24742     :goto_51
24743     move-object/from16 v0, p1
24745     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
24747     const/4 v5, 0x0
24749     const/4 v6, 0x0
24751     const-string v7, "backup"
24753     const/4 v9, 0x0
24755     const/4 v10, 0x0
24757     move-object/from16 v2, p0
24759     move-object/from16 v4, p1
24761     invoke-virtual/range {v2 .. v10}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZ)Lcom/android/server/am/ProcessRecord;
24763     move-result-object v12
24765     if-nez v12, :cond_b8
24767     const-string v2, "ActivityManager"
24769     new-instance v3, Ljava/lang/StringBuilder;
24771     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
24773     const-string v4, "Unable to start backup agent process "
24775     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24777     move-result-object v3
24779     invoke-virtual {v3, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
24781     move-result-object v3
24783     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24785     move-result-object v3
24787     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
24789     const/4 v2, 0x0
24791     monitor-exit p0
24792     :try_end_7f
24793     .catchall {:try_start_39 .. :try_end_7f} :catchall_83
24795     :goto_7f
24796     return v2
24798     :catchall_80
24799     move-exception v2
24801     :try_start_81
24802     monitor-exit v15
24803     :try_end_82
24804     .catchall {:try_start_81 .. :try_end_82} :catchall_80
24806     :try_start_82
24807     throw v2
24809     :catchall_83
24810     move-exception v2
24812     monitor-exit p0
24813     :try_end_85
24814     .catchall {:try_start_82 .. :try_end_85} :catchall_83
24816     throw v2
24818     :catch_86
24819     move-exception v11
24821     :try_start_87
24822     const-string v2, "ActivityManager"
24824     new-instance v3, Ljava/lang/StringBuilder;
24826     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
24828     const-string v4, "Failed trying to unstop package "
24830     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24832     move-result-object v3
24834     move-object/from16 v0, p1
24836     iget-object v4, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
24838     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24840     move-result-object v3
24842     const-string v4, ": "
24844     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
24846     move-result-object v3
24848     invoke-virtual {v3, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
24850     move-result-object v3
24852     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
24854     move-result-object v3
24856     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
24858     goto :goto_39
24860     :cond_ae
24861     new-instance v8, Landroid/content/ComponentName;
24863     const-string v2, "android"
24865     const-string v3, "FullBackupAgent"
24867     invoke-direct {v8, v2, v3}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
24869     goto :goto_51
24871     :cond_b8
24872     iput-object v12, v13, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
24874     move-object/from16 v0, p0
24876     iput-object v13, v0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
24878     move-object/from16 v0, p1
24880     iget-object v2, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
24882     move-object/from16 v0, p0
24884     iput-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
24886     move-object/from16 v0, p0
24888     invoke-virtual {v0, v12}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
24890     iget-object v2, v12, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
24891     :try_end_cd
24892     .catchall {:try_start_87 .. :try_end_cd} :catchall_83
24894     if-eqz v2, :cond_dc
24896     :try_start_cf
24897     iget-object v2, v12, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
24899     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
24901     move-result-object v3
24903     move-object/from16 v0, p1
24905     move/from16 v1, p2
24907     invoke-interface {v2, v0, v3, v1}, Landroid/app/IApplicationThread;->scheduleCreateBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)V
24908     :try_end_dc
24909     .catchall {:try_start_cf .. :try_end_dc} :catchall_83
24910     .catch Landroid/os/RemoteException; {:try_start_cf .. :try_end_dc} :catch_df
24912     :cond_dc
24913     :goto_dc
24914     :try_start_dc
24915     monitor-exit p0
24916     :try_end_dd
24917     .catchall {:try_start_dc .. :try_end_dd} :catchall_83
24919     const/4 v2, 0x1
24921     goto :goto_7f
24923     :catch_df
24924     move-exception v2
24926     goto :goto_dc
24928     :catch_e1
24929     move-exception v2
24931     goto/16 :goto_39
24932 .end method
24934 .method public bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;II)I
24935     .registers 16
24937     const-string v0, "bindService"
24939     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
24941     if-eqz p3, :cond_16
24943     invoke-virtual {p3}, Landroid/content/Intent;->hasFileDescriptors()Z
24945     move-result v0
24947     const/4 v1, 0x1
24949     if-ne v0, v1, :cond_16
24951     new-instance v0, Ljava/lang/IllegalArgumentException;
24953     const-string v1, "File descriptors passed in Intent"
24955     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
24957     throw v0
24959     :cond_16
24960     monitor-enter p0
24962     :try_start_17
24963     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
24965     move-object v1, p1
24967     move-object v2, p2
24969     move-object v3, p3
24971     move-object v4, p4
24973     move-object v5, p5
24975     move v6, p6
24977     move v7, p7
24979     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;II)I
24981     move-result v0
24983     monitor-exit p0
24985     return v0
24987     :catchall_26
24988     move-exception v0
24990     monitor-exit p0
24991     :try_end_28
24992     .catchall {:try_start_17 .. :try_end_28} :catchall_26
24994     throw v0
24995 .end method
24997 .method public final broadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZI)I
24998     .registers 32
25000     const-string v2, "broadcastIntent"
25002     move-object/from16 v0, p0
25004     invoke-virtual {v0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
25006     monitor-enter p0
25008     :try_start_8
25009     move-object/from16 v0, p0
25011     move-object/from16 v1, p2
25013     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
25015     move-result-object p2
25017     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
25019     move-result-object v3
25021     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
25023     move-result v14
25025     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
25027     move-result v15
25029     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
25031     move-result-wide v17
25033     if-eqz v3, :cond_45
25035     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
25037     iget-object v4, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
25039     :goto_26
25040     move-object/from16 v2, p0
25042     move-object/from16 v5, p2
25044     move-object/from16 v6, p3
25046     move-object/from16 v7, p4
25048     move/from16 v8, p5
25050     move-object/from16 v9, p6
25052     move-object/from16 v10, p7
25054     move-object/from16 v11, p8
25056     move/from16 v12, p9
25058     move/from16 v13, p10
25060     move/from16 v16, p11
25062     invoke-direct/range {v2 .. v16}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
25064     move-result v19
25066     invoke-static/range {v17 .. v18}, Landroid/os/Binder;->restoreCallingIdentity(J)V
25068     monitor-exit p0
25070     return v19
25072     :cond_45
25073     const/4 v4, 0x0
25075     goto :goto_26
25077     :catchall_47
25078     move-exception v2
25080     monitor-exit p0
25081     :try_end_49
25082     .catchall {:try_start_8 .. :try_end_49} :catchall_47
25084     throw v2
25085 .end method
25087 .method broadcastIntentInPackage(Ljava/lang/String;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZI)I
25088     .registers 33
25090     monitor-enter p0
25092     :try_start_1
25093     move-object/from16 v0, p0
25095     move-object/from16 v1, p3
25097     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
25099     move-result-object p3
25101     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
25103     move-result-wide v17
25105     const/4 v3, 0x0
25107     const/4 v14, -0x1
25109     move-object/from16 v2, p0
25111     move-object/from16 v4, p1
25113     move-object/from16 v5, p3
25115     move-object/from16 v6, p4
25117     move-object/from16 v7, p5
25119     move/from16 v8, p6
25121     move-object/from16 v9, p7
25123     move-object/from16 v10, p8
25125     move-object/from16 v11, p9
25127     move/from16 v12, p10
25129     move/from16 v13, p11
25131     move/from16 v15, p2
25133     move/from16 v16, p12
25135     invoke-direct/range {v2 .. v16}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
25137     move-result v19
25139     invoke-static/range {v17 .. v18}, Landroid/os/Binder;->restoreCallingIdentity(J)V
25141     monitor-exit p0
25143     return v19
25145     :catchall_32
25146     move-exception v2
25148     monitor-exit p0
25149     :try_end_34
25150     .catchall {:try_start_1 .. :try_end_34} :catchall_32
25152     throw v2
25153 .end method
25155 .method broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
25156     .registers 5
25158     invoke-virtual {p1}, Landroid/content/Intent;->getFlags()I
25160     move-result v1
25162     const/high16 v2, 0x1000
25164     and-int/2addr v1, v2
25166     if-eqz v1, :cond_f
25168     const/4 v0, 0x1
25170     :goto_a
25171     if-eqz v0, :cond_11
25173     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
25175     :goto_e
25176     return-object v1
25178     :cond_f
25179     const/4 v0, 0x0
25181     goto :goto_a
25183     :cond_11
25184     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
25186     goto :goto_e
25187 .end method
25189 .method broadcastRecordForReceiverLocked(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
25190     .registers 7
25192     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
25194     array-length v2, v0
25196     const/4 v1, 0x0
25198     :goto_4
25199     if-ge v1, v2, :cond_12
25201     aget-object v3, v0, v1
25203     invoke-virtual {v3, p1}, Lcom/android/server/am/BroadcastQueue;->getMatchingOrderedReceiver(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
25205     move-result-object v4
25207     if-eqz v4, :cond_f
25209     :goto_e
25210     return-object v4
25212     :cond_f
25213     add-int/lit8 v1, v1, 0x1
25215     goto :goto_4
25217     :cond_12
25218     const/4 v4, 0x0
25220     goto :goto_e
25221 .end method
25223 .method public cancelIntentSender(Landroid/content/IIntentSender;)V
25224     .registers 10
25226     instance-of v5, p1, Lcom/android/server/am/PendingIntentRecord;
25228     if-nez v5, :cond_5
25230     :goto_4
25231     return-void
25233     :cond_5
25234     monitor-enter p0
25236     :try_start_6
25237     move-object v0, p1
25239     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
25241     move-object v3, v0
25242     :try_end_a
25243     .catchall {:try_start_6 .. :try_end_a} :catchall_69
25245     :try_start_a
25246     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
25248     move-result-object v5
25250     iget-object v6, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
25252     iget-object v6, v6, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
25254     invoke-static {}, Landroid/os/UserHandle;->getCallingUserId()I
25256     move-result v7
25258     invoke-interface {v5, v6, v7}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
25260     move-result v4
25262     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
25264     move-result v5
25266     invoke-static {v4, v5}, Landroid/os/UserHandle;->isSameApp(II)Z
25268     move-result v5
25270     if-nez v5, :cond_6c
25272     new-instance v5, Ljava/lang/StringBuilder;
25274     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
25276     const-string v6, "Permission Denial: cancelIntentSender() from pid="
25278     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25280     move-result-object v5
25282     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
25284     move-result v6
25286     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
25288     move-result-object v5
25290     const-string v6, ", uid="
25292     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25294     move-result-object v5
25296     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
25298     move-result v6
25300     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
25302     move-result-object v5
25304     const-string v6, " is not allowed to cancel packges "
25306     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25308     move-result-object v5
25310     iget-object v6, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
25312     iget-object v6, v6, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
25314     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25316     move-result-object v5
25318     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25320     move-result-object v2
25322     const-string v5, "ActivityManager"
25324     invoke-static {v5, v2}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
25326     new-instance v5, Ljava/lang/SecurityException;
25328     invoke-direct {v5, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
25330     throw v5
25331     :try_end_62
25332     .catchall {:try_start_a .. :try_end_62} :catchall_69
25333     .catch Landroid/os/RemoteException; {:try_start_a .. :try_end_62} :catch_62
25335     :catch_62
25336     move-exception v1
25338     :try_start_63
25339     new-instance v5, Ljava/lang/SecurityException;
25341     invoke-direct {v5, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/Throwable;)V
25343     throw v5
25345     :catchall_69
25346     move-exception v5
25348     monitor-exit p0
25349     :try_end_6b
25350     .catchall {:try_start_63 .. :try_end_6b} :catchall_69
25352     throw v5
25354     :cond_6c
25355     const/4 v5, 0x1
25357     :try_start_6d
25358     invoke-virtual {p0, v3, v5}, Lcom/android/server/am/ActivityManagerService;->cancelIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Z)V
25360     monitor-exit p0
25361     :try_end_71
25362     .catchall {:try_start_6d .. :try_end_71} :catchall_69
25364     goto :goto_4
25365 .end method
25367 .method cancelIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Z)V
25368     .registers 5
25370     const/4 v0, 0x1
25372     iput-boolean v0, p1, Lcom/android/server/am/PendingIntentRecord;->canceled:Z
25374     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
25376     iget-object v1, p1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
25378     invoke-virtual {v0, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
25380     if-eqz p2, :cond_1d
25382     iget-object v0, p1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
25384     iget-object v0, v0, Lcom/android/server/am/PendingIntentRecord$Key;->activity:Lcom/android/server/am/ActivityRecord;
25386     if-eqz v0, :cond_1d
25388     iget-object v0, p1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
25390     iget-object v0, v0, Lcom/android/server/am/PendingIntentRecord$Key;->activity:Lcom/android/server/am/ActivityRecord;
25392     iget-object v0, v0, Lcom/android/server/am/ActivityRecord;->pendingResults:Ljava/util/HashSet;
25394     iget-object v1, p1, Lcom/android/server/am/PendingIntentRecord;->ref:Ljava/lang/ref/WeakReference;
25396     invoke-virtual {v0, v1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
25398     :cond_1d
25399     return-void
25400 .end method
25402 .method checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
25403     .registers 8
25405     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
25407     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
25409     move-result v0
25411     const/4 v3, 0x0
25413     const/4 v2, 0x0
25415     :goto_8
25416     if-ge v2, v0, :cond_2d
25418     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
25420     invoke-virtual {v4, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
25422     move-result-object v1
25424     check-cast v1, Lcom/android/server/am/ContentProviderRecord;
25426     iget-object v4, v1, Lcom/android/server/am/ContentProviderRecord;->launchingApp:Lcom/android/server/am/ProcessRecord;
25428     if-ne v4, p1, :cond_1d
25430     if-nez p2, :cond_20
25432     iget-boolean v4, p1, Lcom/android/server/am/ProcessRecord;->bad:Z
25434     if-nez v4, :cond_20
25436     const/4 v3, 0x1
25438     :cond_1d
25439     :goto_1d
25440     add-int/lit8 v2, v2, 0x1
25442     goto :goto_8
25444     :cond_20
25445     const/4 v4, 0x1
25447     invoke-direct {p0, p1, v1, v4}, Lcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
25449     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
25451     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
25453     move-result v0
25455     add-int/lit8 v2, v2, -0x1
25457     goto :goto_1d
25459     :cond_2d
25460     return v3
25461 .end method
25463 .method checkAppSwitchAllowedLocked(IILjava/lang/String;)Z
25464     .registers 11
25466     const/4 v5, 0x1
25468     iget-wide v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppSwitchesAllowedTime:J
25470     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
25472     move-result-wide v2
25474     cmp-long v0, v0, v2
25476     if-gez v0, :cond_c
25478     :cond_b
25479     :goto_b
25480     return v5
25482     :cond_c
25483     const-string v1, "android.permission.STOP_APP_SWITCHES"
25485     const/4 v4, -0x1
25487     move-object v0, p0
25489     move v2, p1
25491     move v3, p2
25493     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
25495     move-result v6
25497     if-eqz v6, :cond_b
25499     const-string v0, "ActivityManager"
25501     new-instance v1, Ljava/lang/StringBuilder;
25503     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
25505     invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25507     move-result-object v1
25509     const-string v2, " request from "
25511     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25513     move-result-object v1
25515     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
25517     move-result-object v1
25519     const-string v2, " stopped"
25521     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25523     move-result-object v1
25525     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25527     move-result-object v1
25529     invoke-static {v0, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
25531     const/4 v5, 0x0
25533     goto :goto_b
25534 .end method
25536 .method checkCallingPermission(Ljava/lang/String;)I
25537     .registers 4
25539     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
25541     move-result v0
25543     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
25545     move-result v1
25547     invoke-static {v1}, Landroid/os/UserHandle;->getAppId(I)I
25549     move-result v1
25551     invoke-virtual {p0, p1, v0, v1}, Lcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I
25553     move-result v0
25555     return v0
25556 .end method
25558 .method checkComponentPermission(Ljava/lang/String;IIIZ)I
25559     .registers 10
25561     sget-object v1, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
25563     invoke-virtual {v1}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object;
25565     move-result-object v0
25567     check-cast v0, Lcom/android/server/am/ActivityManagerService$Identity;
25569     if-eqz v0, :cond_3a
25571     const-string v1, "ActivityManager"
25573     new-instance v2, Ljava/lang/StringBuilder;
25575     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
25577     const-string v3, "checkComponentPermission() adjusting {pid,uid} to {"
25579     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25581     move-result-object v2
25583     iget v3, v0, Lcom/android/server/am/ActivityManagerService$Identity;->pid:I
25585     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
25587     move-result-object v2
25589     const-string v3, ","
25591     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25593     move-result-object v2
25595     iget v3, v0, Lcom/android/server/am/ActivityManagerService$Identity;->uid:I
25597     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
25599     move-result-object v2
25601     const-string v3, "}"
25603     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25605     move-result-object v2
25607     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25609     move-result-object v2
25611     invoke-static {v1, v2}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
25613     iget p3, v0, Lcom/android/server/am/ActivityManagerService$Identity;->uid:I
25615     iget p2, v0, Lcom/android/server/am/ActivityManagerService$Identity;->pid:I
25617     :cond_3a
25618     sget v1, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
25620     if-ne p2, v1, :cond_40
25622     const/4 v1, 0x0
25624     :goto_3f
25625     return v1
25627     :cond_40
25628     invoke-static {p1, p3, p4, p5}, Landroid/app/ActivityManager;->checkComponentPermission(Ljava/lang/String;IIZ)I
25630     move-result v1
25632     goto :goto_3f
25633 .end method
25635 .method final checkExcessivePowerUsageLocked(Z)V
25636     .registers 29
25638     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
25640     move-object/from16 v0, p0
25642     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
25644     invoke-virtual {v4}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
25646     move-result-object v3
25648     move/from16 v23, p1
25650     move/from16 v22, p1
25652     move-object/from16 v0, p0
25654     iget-wide v4, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
25656     const-wide/16 v10, 0x0
25658     cmp-long v4, v4, v10
25660     if-nez v4, :cond_1b
25662     const/16 v23, 0x0
25664     :cond_1b
25665     move-object/from16 v0, p0
25667     iget-wide v4, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
25669     const-wide/16 v10, 0x0
25671     cmp-long v4, v4, v10
25673     if-nez v4, :cond_27
25675     const/16 v22, 0x0
25677     :cond_27
25678     invoke-virtual {v3}, Lcom/android/internal/os/BatteryStatsImpl;->isScreenOn()Z
25680     move-result v4
25682     if-eqz v4, :cond_2f
25684     const/16 v23, 0x0
25686     :cond_2f
25687     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
25689     move-result-wide v18
25691     move-object/from16 v0, p0
25693     iget-wide v4, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
25695     sub-long v6, v18, v4
25697     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
25699     move-result-wide v20
25701     move-object/from16 v0, p0
25703     iget-wide v4, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
25705     sub-long v13, v20, v4
25707     move-wide/from16 v0, v18
25709     move-object/from16 v2, p0
25711     iput-wide v0, v2, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
25713     move-wide/from16 v0, v20
25715     move-object/from16 v2, p0
25717     iput-wide v0, v2, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
25719     const-wide/32 v4, 0x493e0
25721     cmp-long v4, v6, v4
25723     if-gez v4, :cond_58
25725     const/16 v23, 0x0
25727     :cond_58
25728     const-wide/32 v4, 0x493e0
25730     cmp-long v4, v13, v4
25732     if-gez v4, :cond_61
25734     const/16 v22, 0x0
25736     :cond_61
25737     move-object/from16 v0, p0
25739     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
25741     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
25743     move-result v24
25745     :cond_69
25746     :goto_69
25747     if-lez v24, :cond_1f6
25749     add-int/lit8 v24, v24, -0x1
25751     move-object/from16 v0, p0
25753     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
25755     move/from16 v0, v24
25757     invoke-virtual {v4, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
25759     move-result-object v17
25761     check-cast v17, Lcom/android/server/am/ProcessRecord;
25763     move-object/from16 v0, v17
25765     iget-boolean v4, v0, Lcom/android/server/am/ProcessRecord;->keeping:Z
25767     if-nez v4, :cond_69
25769     monitor-enter v3
25771     :try_start_80
25772     move-object/from16 v0, v17
25774     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
25776     iget v4, v4, Landroid/content/pm/ApplicationInfo;->uid:I
25778     move-object/from16 v0, v17
25780     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
25782     move-wide/from16 v0, v18
25784     invoke-virtual {v3, v4, v5, v0, v1}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessWakeTime(IIJ)J
25786     move-result-wide v25
25788     monitor-exit v3
25789     :try_end_91
25790     .catchall {:try_start_80 .. :try_end_91} :catchall_13e
25792     move-object/from16 v0, v17
25794     iget-wide v4, v0, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
25796     sub-long v8, v25, v4
25798     move-object/from16 v0, v17
25800     iget-wide v4, v0, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
25802     move-object/from16 v0, v17
25804     iget-wide v10, v0, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
25806     sub-long v15, v4, v10
25808     if-eqz v23, :cond_144
25810     const-wide/16 v4, 0x0
25812     cmp-long v4, v6, v4
25814     if-lez v4, :cond_144
25816     const-wide/16 v4, 0x64
25818     mul-long/2addr v4, v8
25820     div-long/2addr v4, v6
25822     const-wide/16 v10, 0x32
25824     cmp-long v4, v4, v10
25826     if-ltz v4, :cond_144
25828     monitor-enter v3
25830     :try_start_b4
25831     move-object/from16 v0, v17
25833     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
25835     iget v4, v4, Landroid/content/pm/ApplicationInfo;->uid:I
25837     move-object/from16 v0, v17
25839     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
25841     invoke-virtual/range {v3 .. v9}, Lcom/android/internal/os/BatteryStatsImpl;->reportExcessiveWakeLocked(ILjava/lang/String;JJ)V
25843     monitor-exit v3
25844     :try_end_c2
25845     .catchall {:try_start_b4 .. :try_end_c2} :catchall_141
25847     const-string v4, "ActivityManager"
25849     new-instance v5, Ljava/lang/StringBuilder;
25851     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
25853     const-string v10, "Excessive wake lock in "
25855     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25857     move-result-object v5
25859     move-object/from16 v0, v17
25861     iget-object v10, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
25863     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25865     move-result-object v5
25867     const-string v10, " (pid "
25869     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25871     move-result-object v5
25873     move-object/from16 v0, v17
25875     iget v10, v0, Lcom/android/server/am/ProcessRecord;->pid:I
25877     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
25879     move-result-object v5
25881     const-string v10, "): held "
25883     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25885     move-result-object v5
25887     invoke-virtual {v5, v8, v9}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
25889     move-result-object v5
25891     const-string v10, " during "
25893     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
25895     move-result-object v5
25897     invoke-virtual {v5, v6, v7}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
25899     move-result-object v5
25901     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
25903     move-result-object v5
25905     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
25907     const/16 v4, 0x7547
25909     const/4 v5, 0x5
25911     new-array v5, v5, [Ljava/lang/Object;
25913     const/4 v10, 0x0
25915     move-object/from16 v0, v17
25917     iget v11, v0, Lcom/android/server/am/ProcessRecord;->userId:I
25919     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
25921     move-result-object v11
25923     aput-object v11, v5, v10
25925     const/4 v10, 0x1
25927     move-object/from16 v0, v17
25929     iget v11, v0, Lcom/android/server/am/ProcessRecord;->pid:I
25931     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
25933     move-result-object v11
25935     aput-object v11, v5, v10
25937     const/4 v10, 0x2
25939     move-object/from16 v0, v17
25941     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
25943     aput-object v11, v5, v10
25945     const/4 v10, 0x3
25947     move-object/from16 v0, v17
25949     iget v11, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
25951     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
25953     move-result-object v11
25955     aput-object v11, v5, v10
25957     const/4 v10, 0x4
25959     const-string v11, "excessive wake lock"
25961     aput-object v11, v5, v10
25963     invoke-static {v4, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
25965     move-object/from16 v0, v17
25967     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
25969     invoke-static {v4}, Landroid/os/Process;->killProcessQuiet(I)V
25971     goto/16 :goto_69
25973     :catchall_13e
25974     move-exception v4
25976     :try_start_13f
25977     monitor-exit v3
25978     :try_end_140
25979     .catchall {:try_start_13f .. :try_end_140} :catchall_13e
25981     throw v4
25983     :catchall_141
25984     move-exception v4
25986     :try_start_142
25987     monitor-exit v3
25988     :try_end_143
25989     .catchall {:try_start_142 .. :try_end_143} :catchall_141
25991     throw v4
25993     :cond_144
25994     if-eqz v22, :cond_1e6
25996     const-wide/16 v4, 0x0
25998     cmp-long v4, v13, v4
26000     if-lez v4, :cond_1e6
26002     const-wide/16 v4, 0x64
26004     mul-long/2addr v4, v15
26006     div-long/2addr v4, v13
26008     const-wide/16 v10, 0x32
26010     cmp-long v4, v4, v10
26012     if-ltz v4, :cond_1e6
26014     monitor-enter v3
26016     :try_start_157
26017     move-object/from16 v0, v17
26019     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
26021     iget v11, v4, Landroid/content/pm/ApplicationInfo;->uid:I
26023     move-object/from16 v0, v17
26025     iget-object v12, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
26027     move-object v10, v3
26029     invoke-virtual/range {v10 .. v16}, Lcom/android/internal/os/BatteryStatsImpl;->reportExcessiveCpuLocked(ILjava/lang/String;JJ)V
26031     monitor-exit v3
26032     :try_end_166
26033     .catchall {:try_start_157 .. :try_end_166} :catchall_1e3
26035     const-string v4, "ActivityManager"
26037     new-instance v5, Ljava/lang/StringBuilder;
26039     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
26041     const-string v10, "Excessive CPU in "
26043     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26045     move-result-object v5
26047     move-object/from16 v0, v17
26049     iget-object v10, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
26051     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26053     move-result-object v5
26055     const-string v10, " (pid "
26057     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26059     move-result-object v5
26061     move-object/from16 v0, v17
26063     iget v10, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26065     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
26067     move-result-object v5
26069     const-string v10, "): used "
26071     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26073     move-result-object v5
26075     move-wide v0, v15
26077     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
26079     move-result-object v5
26081     const-string v10, " during "
26083     invoke-virtual {v5, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26085     move-result-object v5
26087     invoke-virtual {v5, v13, v14}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
26089     move-result-object v5
26091     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26093     move-result-object v5
26095     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
26097     const/16 v4, 0x7547
26099     const/4 v5, 0x5
26101     new-array v5, v5, [Ljava/lang/Object;
26103     const/4 v10, 0x0
26105     move-object/from16 v0, v17
26107     iget v11, v0, Lcom/android/server/am/ProcessRecord;->userId:I
26109     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26111     move-result-object v11
26113     aput-object v11, v5, v10
26115     const/4 v10, 0x1
26117     move-object/from16 v0, v17
26119     iget v11, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26121     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26123     move-result-object v11
26125     aput-object v11, v5, v10
26127     const/4 v10, 0x2
26129     move-object/from16 v0, v17
26131     iget-object v11, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
26133     aput-object v11, v5, v10
26135     const/4 v10, 0x3
26137     move-object/from16 v0, v17
26139     iget v11, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
26141     invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
26143     move-result-object v11
26145     aput-object v11, v5, v10
26147     const/4 v10, 0x4
26149     const-string v11, "excessive cpu"
26151     aput-object v11, v5, v10
26153     invoke-static {v4, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
26155     move-object/from16 v0, v17
26157     iget v4, v0, Lcom/android/server/am/ProcessRecord;->pid:I
26159     invoke-static {v4}, Landroid/os/Process;->killProcessQuiet(I)V
26161     goto/16 :goto_69
26163     :catchall_1e3
26164     move-exception v4
26166     :try_start_1e4
26167     monitor-exit v3
26168     :try_end_1e5
26169     .catchall {:try_start_1e4 .. :try_end_1e5} :catchall_1e3
26171     throw v4
26173     :cond_1e6
26174     move-wide/from16 v0, v25
26176     move-object/from16 v2, v17
26178     iput-wide v0, v2, Lcom/android/server/am/ProcessRecord;->lastWakeTime:J
26180     move-object/from16 v0, v17
26182     iget-wide v4, v0, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
26184     move-object/from16 v0, v17
26186     iput-wide v4, v0, Lcom/android/server/am/ProcessRecord;->lastCpuTime:J
26188     goto/16 :goto_69
26190     :cond_1f6
26191     return-void
26192 .end method
26194 .method public checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;I)I
26195     .registers 11
26197     const-string v0, "checkGrantUriPermission"
26199     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
26201     monitor-enter p0
26203     const/4 v5, -0x1
26205     move-object v0, p0
26207     move v1, p1
26209     move-object v2, p2
26211     move-object v3, p3
26213     move v4, p4
26215     :try_start_c
26216     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
26218     move-result v0
26220     monitor-exit p0
26222     return v0
26224     :catchall_12
26225     move-exception v0
26227     monitor-exit p0
26228     :try_end_14
26229     .catchall {:try_start_c .. :try_end_14} :catchall_12
26231     throw v0
26232 .end method
26234 .method checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;)Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
26235     .registers 28
26237     if-nez p2, :cond_a
26239     new-instance v4, Ljava/lang/NullPointerException;
26241     const-string v5, "targetPkg"
26243     invoke-direct {v4, v5}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
26245     throw v4
26247     :cond_a
26248     if-nez p3, :cond_e
26250     const/4 v4, 0x0
26252     :goto_d
26253     return-object v4
26255     :cond_e
26256     invoke-virtual/range {p3 .. p3}, Landroid/content/Intent;->getData()Landroid/net/Uri;
26258     move-result-object v7
26260     invoke-virtual/range {p3 .. p3}, Landroid/content/Intent;->getClipData()Landroid/content/ClipData;
26262     move-result-object v18
26264     if-nez v7, :cond_1c
26266     if-nez v18, :cond_1c
26268     const/4 v4, 0x0
26270     goto :goto_d
26272     :cond_1c
26273     if-eqz v7, :cond_46
26275     if-eqz p5, :cond_89
26277     move-object/from16 v0, p5
26279     iget v9, v0, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->targetUid:I
26281     :goto_24
26282     move-object/from16 v4, p0
26284     move/from16 v5, p1
26286     move-object/from16 v6, p2
26288     move/from16 v8, p4
26290     invoke-virtual/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
26292     move-result v21
26294     if-lez v21, :cond_46
26296     if-nez p5, :cond_41
26298     new-instance p5, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
26300     move-object/from16 v0, p5
26302     move-object/from16 v1, p2
26304     move/from16 v2, v21
26306     move/from16 v3, p4
26308     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;-><init>(Ljava/lang/String;II)V
26310     :cond_41
26311     move-object/from16 v0, p5
26313     invoke-virtual {v0, v7}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->add(Ljava/lang/Object;)Z
26315     :cond_46
26316     if-eqz v18, :cond_aa
26318     const/16 v19, 0x0
26320     :goto_4a
26321     invoke-virtual/range {v18 .. v18}, Landroid/content/ClipData;->getItemCount()I
26323     move-result v4
26325     move/from16 v0, v19
26327     if-ge v0, v4, :cond_aa
26329     invoke-virtual/range {v18 .. v19}, Landroid/content/ClipData;->getItemAt(I)Landroid/content/ClipData$Item;
26331     move-result-object v4
26333     invoke-virtual {v4}, Landroid/content/ClipData$Item;->getUri()Landroid/net/Uri;
26335     move-result-object v11
26337     if-eqz v11, :cond_8d
26339     const/16 v21, -0x1
26341     if-eqz p5, :cond_8b
26343     move-object/from16 v0, p5
26345     iget v13, v0, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->targetUid:I
26347     :goto_64
26348     move-object/from16 v8, p0
26350     move/from16 v9, p1
26352     move-object/from16 v10, p2
26354     move/from16 v12, p4
26356     invoke-virtual/range {v8 .. v13}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
26358     move-result v21
26360     if-lez v21, :cond_86
26362     if-nez p5, :cond_81
26364     new-instance p5, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
26366     move-object/from16 v0, p5
26368     move-object/from16 v1, p2
26370     move/from16 v2, v21
26372     move/from16 v3, p4
26374     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;-><init>(Ljava/lang/String;II)V
26376     :cond_81
26377     move-object/from16 v0, p5
26379     invoke-virtual {v0, v11}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->add(Ljava/lang/Object;)Z
26381     :cond_86
26382     :goto_86
26383     add-int/lit8 v19, v19, 0x1
26385     goto :goto_4a
26387     :cond_89
26388     const/4 v9, -0x1
26390     goto :goto_24
26392     :cond_8b
26393     const/4 v13, -0x1
26395     goto :goto_64
26397     :cond_8d
26398     invoke-virtual/range {v18 .. v19}, Landroid/content/ClipData;->getItemAt(I)Landroid/content/ClipData$Item;
26400     move-result-object v4
26402     invoke-virtual {v4}, Landroid/content/ClipData$Item;->getIntent()Landroid/content/Intent;
26404     move-result-object v15
26406     if-eqz v15, :cond_86
26408     move-object/from16 v12, p0
26410     move/from16 v13, p1
26412     move-object/from16 v14, p2
26414     move/from16 v16, p4
26416     move-object/from16 v17, p5
26418     invoke-virtual/range {v12 .. v17}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;)Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
26420     move-result-object v20
26422     if-eqz v20, :cond_86
26424     move-object/from16 p5, v20
26426     goto :goto_86
26428     :cond_aa
26429     move-object/from16 v4, p5
26431     goto/16 :goto_d
26432 .end method
26434 .method checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
26435     .registers 27
26437     and-int/lit8 p4, p4, 0x3
26439     if-nez p4, :cond_6
26441     const/4 v8, -0x1
26443     :cond_5
26444     :goto_5
26445     return v8
26447     :cond_6
26448     if-eqz p2, :cond_8
26450     :cond_8
26451     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
26453     move-result-object v5
26455     const-string v4, "content"
26457     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->getScheme()Ljava/lang/String;
26459     move-result-object v7
26461     invoke-virtual {v4, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
26463     move-result v4
26465     if-nez v4, :cond_1a
26467     const/4 v8, -0x1
26469     goto :goto_5
26471     :cond_1a
26472     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
26474     move-result-object v20
26476     const/4 v6, 0x0
26478     move-object/from16 v0, p0
26480     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
26482     invoke-static/range {p1 .. p1}, Landroid/os/UserHandle;->getUserId(I)I
26484     move-result v7
26486     move-object/from16 v0, v20
26488     invoke-virtual {v4, v0, v7}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
26490     move-result-object v17
26492     if-eqz v17, :cond_53
26494     move-object/from16 v0, v17
26496     iget-object v6, v0, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
26498     :goto_33
26499     if-nez v6, :cond_60
26501     const-string v4, "ActivityManager"
26503     new-instance v7, Ljava/lang/StringBuilder;
26505     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
26507     const-string v9, "No content provider found for permission check: "
26509     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26511     move-result-object v7
26513     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->toSafeString()Ljava/lang/String;
26515     move-result-object v9
26517     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26519     move-result-object v7
26521     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26523     move-result-object v7
26525     invoke-static {v4, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
26527     const/4 v8, -0x1
26529     goto :goto_5
26531     :cond_53
26532     const/16 v4, 0x800
26534     :try_start_55
26535     invoke-static/range {p1 .. p1}, Landroid/os/UserHandle;->getUserId(I)I
26537     move-result v7
26539     move-object/from16 v0, v20
26541     invoke-interface {v5, v0, v4, v7}, Landroid/content/pm/IPackageManager;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
26542     :try_end_5e
26543     .catch Landroid/os/RemoteException; {:try_start_55 .. :try_end_5e} :catch_18c
26545     move-result-object v6
26547     goto :goto_33
26549     :cond_60
26550     move/from16 v8, p5
26552     if-gez v8, :cond_77
26554     if-eqz p2, :cond_77
26556     :try_start_66
26557     invoke-static/range {p1 .. p1}, Landroid/os/UserHandle;->getUserId(I)I
26559     move-result v4
26561     move-object/from16 v0, p2
26563     invoke-interface {v5, v0, v4}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
26564     :try_end_6f
26565     .catch Landroid/os/RemoteException; {:try_start_66 .. :try_end_6f} :catch_74
26567     move-result v8
26569     if-gez v8, :cond_77
26571     const/4 v8, -0x1
26573     goto :goto_5
26575     :catch_74
26576     move-exception v18
26578     const/4 v8, -0x1
26580     goto :goto_5
26582     :cond_77
26583     if-ltz v8, :cond_88
26585     move-object/from16 v4, p0
26587     move-object/from16 v7, p3
26589     move/from16 v9, p4
26591     invoke-direct/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Landroid/net/Uri;II)Z
26593     move-result v4
26595     if-eqz v4, :cond_a5
26597     const/4 v8, -0x1
26599     goto/16 :goto_5
26601     :cond_88
26602     iget-boolean v0, v6, Landroid/content/pm/ProviderInfo;->exported:Z
26604     move/from16 v16, v0
26606     and-int/lit8 v4, p4, 0x1
26608     if-eqz v4, :cond_96
26610     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->readPermission:Ljava/lang/String;
26612     if-eqz v4, :cond_96
26614     const/16 v16, 0x0
26616     :cond_96
26617     and-int/lit8 v4, p4, 0x2
26619     if-eqz v4, :cond_a0
26621     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->writePermission:Ljava/lang/String;
26623     if-eqz v4, :cond_a0
26625     const/16 v16, 0x0
26627     :cond_a0
26628     if-eqz v16, :cond_a5
26630     const/4 v8, -0x1
26632     goto/16 :goto_5
26634     :cond_a5
26635     iget-boolean v4, v6, Landroid/content/pm/ProviderInfo;->grantUriPermissions:Z
26637     if-nez v4, :cond_e2
26639     new-instance v4, Ljava/lang/SecurityException;
26641     new-instance v7, Ljava/lang/StringBuilder;
26643     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
26645     const-string v9, "Provider "
26647     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26649     move-result-object v7
26651     iget-object v9, v6, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
26653     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26655     move-result-object v7
26657     const-string v9, "/"
26659     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26661     move-result-object v7
26663     iget-object v9, v6, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
26665     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26667     move-result-object v7
26669     const-string v9, " does not allow granting of Uri permissions (uri "
26671     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26673     move-result-object v7
26675     move-object/from16 v0, p3
26677     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
26679     move-result-object v7
26681     const-string v9, ")"
26683     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26685     move-result-object v7
26687     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26689     move-result-object v7
26691     invoke-direct {v4, v7}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
26693     throw v4
26695     :cond_e2
26696     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->uriPermissionPatterns:[Landroid/os/PatternMatcher;
26698     if-eqz v4, :cond_13f
26700     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->uriPermissionPatterns:[Landroid/os/PatternMatcher;
26702     array-length v15, v4
26704     const/16 v16, 0x0
26706     const/16 v19, 0x0
26708     :goto_ed
26709     move/from16 v0, v19
26711     if-ge v0, v15, :cond_107
26713     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->uriPermissionPatterns:[Landroid/os/PatternMatcher;
26715     aget-object v4, v4, v19
26717     if-eqz v4, :cond_13c
26719     iget-object v4, v6, Landroid/content/pm/ProviderInfo;->uriPermissionPatterns:[Landroid/os/PatternMatcher;
26721     aget-object v4, v4, v19
26723     invoke-virtual/range {p3 .. p3}, Landroid/net/Uri;->getPath()Ljava/lang/String;
26725     move-result-object v7
26727     invoke-virtual {v4, v7}, Landroid/os/PatternMatcher;->match(Ljava/lang/String;)Z
26729     move-result v4
26731     if-eqz v4, :cond_13c
26733     const/16 v16, 0x1
26735     :cond_107
26736     if-nez v16, :cond_13f
26738     new-instance v4, Ljava/lang/SecurityException;
26740     new-instance v7, Ljava/lang/StringBuilder;
26742     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
26744     const-string v9, "Provider "
26746     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26748     move-result-object v7
26750     iget-object v9, v6, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
26752     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26754     move-result-object v7
26756     const-string v9, "/"
26758     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26760     move-result-object v7
26762     iget-object v9, v6, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
26764     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26766     move-result-object v7
26768     const-string v9, " does not allow granting of permission to path of Uri "
26770     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26772     move-result-object v7
26774     move-object/from16 v0, p3
26776     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
26778     move-result-object v7
26780     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26782     move-result-object v7
26784     invoke-direct {v4, v7}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
26786     throw v4
26788     :cond_13c
26789     add-int/lit8 v19, v19, 0x1
26791     goto :goto_ed
26793     :cond_13f
26794     invoke-static {}, Landroid/os/Process;->myUid()I
26796     move-result v4
26798     move/from16 v0, p1
26800     if-eq v0, v4, :cond_5
26802     move-object/from16 v9, p0
26804     move-object v10, v5
26806     move-object v11, v6
26808     move-object/from16 v12, p3
26810     move/from16 v13, p1
26812     move/from16 v14, p4
26814     invoke-direct/range {v9 .. v14}, Lcom/android/server/am/ActivityManagerService;->checkHoldingPermissionsLocked(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Landroid/net/Uri;II)Z
26816     move-result v4
26818     if-nez v4, :cond_5
26820     move-object/from16 v0, p0
26822     move-object/from16 v1, p3
26824     move/from16 v2, p1
26826     move/from16 v3, p4
26828     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->checkUriPermissionLocked(Landroid/net/Uri;II)Z
26830     move-result v4
26832     if-nez v4, :cond_5
26834     new-instance v4, Ljava/lang/SecurityException;
26836     new-instance v7, Ljava/lang/StringBuilder;
26838     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
26840     const-string v9, "Uid "
26842     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26844     move-result-object v7
26846     move/from16 v0, p1
26848     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
26850     move-result-object v7
26852     const-string v9, " does not have permission to uri "
26854     invoke-virtual {v7, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
26856     move-result-object v7
26858     move-object/from16 v0, p3
26860     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
26862     move-result-object v7
26864     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
26866     move-result-object v7
26868     invoke-direct {v4, v7}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
26870     throw v4
26872     :catch_18c
26873     move-exception v4
26875     goto/16 :goto_33
26876 .end method
26878 .method public checkPermission(Ljava/lang/String;II)I
26879     .registers 10
26881     const/4 v4, -0x1
26883     if-nez p1, :cond_4
26885     :goto_3
26886     return v4
26888     :cond_4
26889     invoke-static {p3}, Landroid/os/UserHandle;->getAppId(I)I
26891     move-result v3
26893     const/4 v5, 0x1
26895     move-object v0, p0
26897     move-object v1, p1
26899     move v2, p2
26901     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
26903     move-result v4
26905     goto :goto_3
26906 .end method
26908 .method public checkUriPermission(Landroid/net/Uri;III)I
26909     .registers 8
26911     const/4 v1, 0x0
26913     const-string v2, "checkUriPermission"
26915     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
26917     sget-object v2, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
26919     invoke-virtual {v2}, Ljava/lang/ThreadLocal;->get()Ljava/lang/Object;
26921     move-result-object v0
26923     check-cast v0, Lcom/android/server/am/ActivityManagerService$Identity;
26925     if-eqz v0, :cond_14
26927     iget p3, v0, Lcom/android/server/am/ActivityManagerService$Identity;->uid:I
26929     iget p2, v0, Lcom/android/server/am/ActivityManagerService$Identity;->pid:I
26931     :cond_14
26932     sget v2, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
26934     if-ne p2, v2, :cond_19
26936     :goto_18
26937     return v1
26939     :cond_19
26940     monitor-enter p0
26942     :try_start_1a
26943     invoke-direct {p0, p1, p3, p4}, Lcom/android/server/am/ActivityManagerService;->checkUriPermissionLocked(Landroid/net/Uri;II)Z
26945     move-result v2
26947     if-eqz v2, :cond_25
26949     :goto_20
26950     monitor-exit p0
26952     goto :goto_18
26954     :catchall_22
26955     move-exception v1
26957     monitor-exit p0
26958     :try_end_24
26959     .catchall {:try_start_1a .. :try_end_24} :catchall_22
26961     throw v1
26963     :cond_25
26964     const/4 v1, -0x1
26966     goto :goto_20
26967 .end method
26969 .method public clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;I)Z
26970     .registers 28
26972     const-string v4, "clearApplicationUserData"
26974     move-object/from16 v0, p0
26976     invoke-virtual {v0, v4}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
26978     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
26980     move-result v6
26982     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
26984     move-result v5
26986     const/4 v8, 0x0
26988     const/4 v9, 0x1
26990     const-string v10, "clearApplicationUserData"
26992     const/4 v11, 0x0
26994     move-object/from16 v4, p0
26996     move/from16 v7, p3
26998     invoke-virtual/range {v4 .. v11}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
27000     move-result p3
27002     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
27004     move-result-wide v20
27006     :try_start_20
27007     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
27009     move-result-object v23
27011     const/16 v22, -0x1
27013     monitor-enter p0
27014     :try_end_27
27015     .catchall {:try_start_20 .. :try_end_27} :catchall_e3
27017     :try_start_27
27018     move-object/from16 v0, v23
27020     move-object/from16 v1, p1
27022     move/from16 v2, p3
27024     invoke-interface {v0, v1, v2}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
27025     :try_end_30
27026     .catchall {:try_start_27 .. :try_end_30} :catchall_e0
27027     .catch Landroid/os/RemoteException; {:try_start_27 .. :try_end_30} :catch_e8
27029     move-result v22
27031     :goto_31
27032     const/4 v4, -0x1
27034     move/from16 v0, v22
27036     if-ne v0, v4, :cond_56
27038     :try_start_36
27039     const-string v4, "ActivityManager"
27041     new-instance v7, Ljava/lang/StringBuilder;
27043     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
27045     const-string v8, "Invalid packageName:"
27047     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27049     move-result-object v7
27051     move-object/from16 v0, p1
27053     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27055     move-result-object v7
27057     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27059     move-result-object v7
27061     invoke-static {v4, v7}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
27063     const/4 v4, 0x0
27065     monitor-exit p0
27066     :try_end_52
27067     .catchall {:try_start_36 .. :try_end_52} :catchall_e0
27069     invoke-static/range {v20 .. v21}, Landroid/os/Binder;->restoreCallingIdentity(J)V
27071     :goto_55
27072     return v4
27074     :cond_56
27075     move/from16 v0, v22
27077     if-eq v6, v0, :cond_68
27079     :try_start_5a
27080     const-string v8, "android.permission.CLEAR_APP_USER_DATA"
27082     const/4 v11, -0x1
27084     const/4 v12, 0x1
27086     move-object/from16 v7, p0
27088     move v9, v5
27090     move v10, v6
27092     invoke-virtual/range {v7 .. v12}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
27094     move-result v4
27096     if-nez v4, :cond_af
27098     :cond_68
27099     move-object/from16 v0, p0
27101     move-object/from16 v1, p1
27103     move/from16 v2, v22
27105     invoke-direct {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;I)V
27107     monitor-exit p0
27108     :try_end_72
27109     .catchall {:try_start_5a .. :try_end_72} :catchall_e0
27111     :try_start_72
27112     move-object/from16 v0, v23
27114     move-object/from16 v1, p1
27116     move-object/from16 v2, p2
27118     move/from16 v3, p3
27120     invoke-interface {v0, v1, v2, v3}, Landroid/content/pm/IPackageManager;->clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;I)V
27122     new-instance v10, Landroid/content/Intent;
27124     const-string v4, "android.intent.action.PACKAGE_DATA_CLEARED"
27126     const-string v7, "package"
27128     const/4 v8, 0x0
27130     move-object/from16 v0, p1
27132     invoke-static {v7, v0, v8}, Landroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
27134     move-result-object v7
27136     invoke-direct {v10, v4, v7}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
27138     const-string v4, "android.intent.extra.UID"
27140     move/from16 v0, v22
27142     invoke-virtual {v10, v4, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
27144     const-string v8, "android"
27146     const/16 v9, 0x3e8
27148     const/4 v11, 0x0
27150     const/4 v12, 0x0
27152     const/4 v13, 0x0
27154     const/4 v14, 0x0
27156     const/4 v15, 0x0
27158     const/16 v16, 0x0
27160     const/16 v17, 0x0
27162     const/16 v18, 0x0
27164     move-object/from16 v7, p0
27166     move/from16 v19, p3
27168     invoke-virtual/range {v7 .. v19}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZI)I
27169     :try_end_aa
27170     .catchall {:try_start_72 .. :try_end_aa} :catchall_e3
27171     .catch Landroid/os/RemoteException; {:try_start_72 .. :try_end_aa} :catch_eb
27173     :goto_aa
27174     invoke-static/range {v20 .. v21}, Landroid/os/Binder;->restoreCallingIdentity(J)V
27176     const/4 v4, 0x1
27178     goto :goto_55
27180     :cond_af
27181     :try_start_af
27182     new-instance v4, Ljava/lang/SecurityException;
27184     new-instance v7, Ljava/lang/StringBuilder;
27186     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
27188     invoke-virtual {v7, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
27190     move-result-object v7
27192     const-string v8, " does not have permission:"
27194     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27196     move-result-object v7
27198     const-string v8, "android.permission.CLEAR_APP_USER_DATA"
27200     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27202     move-result-object v7
27204     const-string v8, " to clear data"
27206     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27208     move-result-object v7
27210     const-string v8, "for process:"
27212     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27214     move-result-object v7
27216     move-object/from16 v0, p1
27218     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27220     move-result-object v7
27222     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27224     move-result-object v7
27226     invoke-direct {v4, v7}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
27228     throw v4
27230     :catchall_e0
27231     move-exception v4
27233     monitor-exit p0
27234     :try_end_e2
27235     .catchall {:try_start_af .. :try_end_e2} :catchall_e0
27237     :try_start_e2
27238     throw v4
27239     :try_end_e3
27240     .catchall {:try_start_e2 .. :try_end_e3} :catchall_e3
27242     :catchall_e3
27243     move-exception v4
27245     invoke-static/range {v20 .. v21}, Landroid/os/Binder;->restoreCallingIdentity(J)V
27247     throw v4
27249     :catch_e8
27250     move-exception v4
27252     goto/16 :goto_31
27254     :catch_eb
27255     move-exception v4
27257     goto :goto_aa
27258 .end method
27260 .method public clearPendingBackup()V
27261     .registers 3
27263     const-string v0, "android.permission.BACKUP"
27265     const-string v1, "clearPendingBackup"
27267     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
27269     monitor-enter p0
27271     const/4 v0, 0x0
27273     :try_start_9
27274     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
27276     const/4 v0, 0x0
27278     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
27280     monitor-exit p0
27282     return-void
27284     :catchall_10
27285     move-exception v0
27287     monitor-exit p0
27288     :try_end_12
27289     .catchall {:try_start_9 .. :try_end_12} :catchall_10
27291     throw v0
27292 .end method
27294 .method public closeSystemDialogs(Ljava/lang/String;)V
27295     .registers 10
27297     const-string v5, "closeSystemDialogs"
27299     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
27301     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
27303     move-result v2
27305     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
27307     move-result v4
27309     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
27311     move-result-wide v0
27313     :try_start_11
27314     monitor-enter p0
27315     :try_end_12
27316     .catchall {:try_start_11 .. :try_end_12} :catchall_54
27318     const/16 v5, 0x2710
27320     if-lt v4, v5, :cond_59
27322     :try_start_16
27323     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
27325     monitor-enter v6
27326     :try_end_19
27327     .catchall {:try_start_16 .. :try_end_19} :catchall_51
27329     :try_start_19
27330     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
27332     invoke-virtual {v5, v2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
27334     move-result-object v3
27336     check-cast v3, Lcom/android/server/am/ProcessRecord;
27338     monitor-exit v6
27339     :try_end_22
27340     .catchall {:try_start_19 .. :try_end_22} :catchall_4e
27342     :try_start_22
27343     iget v5, v3, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
27345     const/4 v6, 0x2
27347     if-le v5, v6, :cond_59
27349     const-string v5, "ActivityManager"
27351     new-instance v6, Ljava/lang/StringBuilder;
27353     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
27355     const-string v7, "Ignoring closeSystemDialogs "
27357     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27359     move-result-object v6
27361     invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27363     move-result-object v6
27365     const-string v7, " from background process "
27367     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27369     move-result-object v6
27371     invoke-virtual {v6, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
27373     move-result-object v6
27375     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27377     move-result-object v6
27379     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
27381     monitor-exit p0
27382     :try_end_4a
27383     .catchall {:try_start_22 .. :try_end_4a} :catchall_51
27385     :goto_4a
27386     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
27388     return-void
27390     :catchall_4e
27391     move-exception v5
27393     :try_start_4f
27394     monitor-exit v6
27395     :try_end_50
27396     .catchall {:try_start_4f .. :try_end_50} :catchall_4e
27398     :try_start_50
27399     throw v5
27401     :catchall_51
27402     move-exception v5
27404     monitor-exit p0
27405     :try_end_53
27406     .catchall {:try_start_50 .. :try_end_53} :catchall_51
27408     :try_start_53
27409     throw v5
27410     :try_end_54
27411     .catchall {:try_start_53 .. :try_end_54} :catchall_54
27413     :catchall_54
27414     move-exception v5
27416     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
27418     throw v5
27420     :cond_59
27421     :try_start_59
27422     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->closeSystemDialogsLocked(Ljava/lang/String;)V
27424     monitor-exit p0
27425     :try_end_5d
27426     .catchall {:try_start_59 .. :try_end_5d} :catchall_51
27428     goto :goto_4a
27429 .end method
27431 .method closeSystemDialogsLocked(Ljava/lang/String;)V
27432     .registers 23
27434     new-instance v20, Landroid/content/Intent;
27436     const-string v2, "android.intent.action.CLOSE_SYSTEM_DIALOGS"
27438     move-object/from16 v0, v20
27440     invoke-direct {v0, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
27442     const/high16 v2, 0x5000
27444     move-object/from16 v0, v20
27446     invoke-virtual {v0, v2}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
27448     if-eqz p1, :cond_1b
27450     const-string v2, "reason"
27452     move-object/from16 v0, v20
27454     move-object/from16 v1, p1
27456     invoke-virtual {v0, v2, v1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
27458     :cond_1b
27459     move-object/from16 v0, p0
27461     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
27463     move-object/from16 v0, p1
27465     invoke-virtual {v2, v0}, Lcom/android/server/wm/WindowManagerService;->closeSystemDialogs(Ljava/lang/String;)V
27467     move-object/from16 v0, p0
27469     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
27471     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
27473     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
27475     move-result v2
27477     add-int/lit8 v4, v2, -0x1
27479     :goto_30
27480     if-ltz v4, :cond_53
27482     move-object/from16 v0, p0
27484     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
27486     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
27488     invoke-virtual {v2, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
27490     move-result-object v3
27492     check-cast v3, Lcom/android/server/am/ActivityRecord;
27494     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
27496     iget v2, v2, Landroid/content/pm/ActivityInfo;->flags:I
27498     and-int/lit16 v2, v2, 0x100
27500     if-eqz v2, :cond_50
27502     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
27504     const/4 v5, 0x0
27506     const/4 v6, 0x0
27508     const-string v7, "close-sys"
27510     const/4 v8, 0x1
27512     invoke-virtual/range {v2 .. v8}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;Z)Z
27514     :cond_50
27515     add-int/lit8 v4, v4, -0x1
27517     goto :goto_30
27519     :cond_53
27520     const/4 v6, 0x0
27522     const/4 v7, 0x0
27524     const/4 v9, 0x0
27526     const/4 v10, 0x0
27528     const/4 v11, 0x0
27530     const/4 v12, 0x0
27532     const/4 v13, 0x0
27534     const/4 v14, 0x0
27536     const/4 v15, 0x0
27538     const/16 v16, 0x0
27540     const/16 v17, -0x1
27542     const/16 v18, 0x3e8
27544     const/16 v19, -0x1
27546     move-object/from16 v5, p0
27548     move-object/from16 v8, v20
27550     invoke-direct/range {v5 .. v19}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
27552     return-void
27553 .end method
27555 .method collectProcesses(Ljava/io/PrintWriter;I[Ljava/lang/String;)Ljava/util/ArrayList;
27556     .registers 10
27557     .annotation system Ldalvik/annotation/Signature;
27558         value = {
27559             "(",
27560             "Ljava/io/PrintWriter;",
27561             "I[",
27562             "Ljava/lang/String;",
27563             ")",
27564             "Ljava/util/ArrayList",
27565             "<",
27566             "Lcom/android/server/am/ProcessRecord;",
27567             ">;"
27568         }
27569     .end annotation
27571     monitor-enter p0
27573     if-eqz p3, :cond_6b
27575     :try_start_3
27576     array-length v4, p3
27578     if-le v4, p2, :cond_6b
27580     aget-object v4, p3, p2
27582     const/4 v5, 0x0
27584     invoke-virtual {v4, v5}, Ljava/lang/String;->charAt(I)C
27586     move-result v4
27588     const/16 v5, 0x2d
27590     if-eq v4, v5, :cond_6b
27592     new-instance v3, Ljava/util/ArrayList;
27594     invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V
27595     :try_end_16
27596     .catchall {:try_start_3 .. :try_end_16} :catchall_47
27598     const/4 v1, -0x1
27600     :try_start_17
27601     aget-object v4, p3, p2
27603     invoke-static {v4}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I
27604     :try_end_1c
27605     .catchall {:try_start_17 .. :try_end_1c} :catchall_47
27606     .catch Ljava/lang/NumberFormatException; {:try_start_17 .. :try_end_1c} :catch_75
27608     move-result v1
27610     :goto_1d
27611     :try_start_1d
27612     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
27614     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
27616     move-result v4
27618     add-int/lit8 v0, v4, -0x1
27620     :goto_25
27621     if-ltz v0, :cond_4a
27623     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
27625     invoke-virtual {v4, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
27627     move-result-object v2
27629     check-cast v2, Lcom/android/server/am/ProcessRecord;
27631     iget v4, v2, Lcom/android/server/am/ProcessRecord;->pid:I
27633     if-ne v4, v1, :cond_39
27635     invoke-virtual {v3, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
27637     :cond_36
27638     :goto_36
27639     add-int/lit8 v0, v0, -0x1
27641     goto :goto_25
27643     :cond_39
27644     iget-object v4, v2, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
27646     aget-object v5, p3, p2
27648     invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
27650     move-result v4
27652     if-eqz v4, :cond_36
27654     invoke-virtual {v3, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
27656     goto :goto_36
27658     :catchall_47
27659     move-exception v4
27661     monitor-exit p0
27662     :try_end_49
27663     .catchall {:try_start_1d .. :try_end_49} :catchall_47
27665     throw v4
27667     :cond_4a
27668     :try_start_4a
27669     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
27671     move-result v4
27673     if-gtz v4, :cond_72
27675     new-instance v4, Ljava/lang/StringBuilder;
27677     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
27679     const-string v5, "No process found for: "
27681     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27683     move-result-object v4
27685     aget-object v5, p3, p2
27687     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27689     move-result-object v4
27691     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27693     move-result-object v4
27695     invoke-virtual {p1, v4}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
27697     const/4 v4, 0x0
27699     monitor-exit p0
27701     :goto_6a
27702     return-object v4
27704     :cond_6b
27705     new-instance v3, Ljava/util/ArrayList;
27707     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
27709     invoke-direct {v3, v4}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
27711     :cond_72
27712     monitor-exit p0
27713     :try_end_73
27714     .catchall {:try_start_4a .. :try_end_73} :catchall_47
27716     move-object v4, v3
27718     goto :goto_6a
27720     :catch_75
27721     move-exception v4
27723     goto :goto_1d
27724 .end method
27726 .method compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
27727     .registers 3
27729     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
27731     invoke-virtual {v0, p1}, Lcom/android/server/am/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
27733     move-result-object v0
27735     return-object v0
27736 .end method
27738 .method completeSwitchAndInitalizeLocked(Lcom/android/server/am/UserStartedState;)V
27739     .registers 3
27741     iget-boolean v0, p1, Lcom/android/server/am/UserStartedState;->switching:Z
27743     if-nez v0, :cond_d
27745     iget-boolean v0, p1, Lcom/android/server/am/UserStartedState;->initializing:Z
27747     if-nez v0, :cond_d
27749     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
27751     invoke-virtual {v0}, Lcom/android/server/wm/WindowManagerService;->stopFreezingScreen()V
27753     :cond_d
27754     return-void
27755 .end method
27757 .method continueUserSwitch(Lcom/android/server/am/UserStartedState;II)V
27758     .registers 7
27760     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mUserSwitchObservers:Landroid/os/RemoteCallbackList;
27762     invoke-virtual {v2}, Landroid/os/RemoteCallbackList;->beginBroadcast()I
27764     move-result v0
27766     const/4 v1, 0x0
27768     :goto_7
27769     if-ge v1, v0, :cond_17
27771     :try_start_9
27772     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mUserSwitchObservers:Landroid/os/RemoteCallbackList;
27774     invoke-virtual {v2, v1}, Landroid/os/RemoteCallbackList;->getBroadcastItem(I)Landroid/os/IInterface;
27776     move-result-object v2
27778     check-cast v2, Landroid/app/IUserSwitchObserver;
27780     invoke-interface {v2, p3}, Landroid/app/IUserSwitchObserver;->onUserSwitchComplete(I)V
27781     :try_end_14
27782     .catch Landroid/os/RemoteException; {:try_start_9 .. :try_end_14} :catch_28
27784     :goto_14
27785     add-int/lit8 v1, v1, 0x1
27787     goto :goto_7
27789     :cond_17
27790     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mUserSwitchObservers:Landroid/os/RemoteCallbackList;
27792     invoke-virtual {v2}, Landroid/os/RemoteCallbackList;->finishBroadcast()V
27794     monitor-enter p0
27796     const/4 v2, 0x0
27798     :try_start_1e
27799     iput-boolean v2, p1, Lcom/android/server/am/UserStartedState;->switching:Z
27801     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->completeSwitchAndInitalizeLocked(Lcom/android/server/am/UserStartedState;)V
27803     monitor-exit p0
27805     return-void
27807     :catchall_25
27808     move-exception v2
27810     monitor-exit p0
27811     :try_end_27
27812     .catchall {:try_start_1e .. :try_end_27} :catchall_25
27814     throw v2
27816     :catch_28
27817     move-exception v2
27819     goto :goto_14
27820 .end method
27822 .method public crashApplication(IILjava/lang/String;Ljava/lang/String;)V
27823     .registers 16
27825     const-string v8, "android.permission.FORCE_STOP_PACKAGES"
27827     invoke-virtual {p0, v8}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
27829     move-result v8
27831     if-eqz v8, :cond_44
27833     new-instance v8, Ljava/lang/StringBuilder;
27835     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
27837     const-string v9, "Permission Denial: crashApplication() from pid="
27839     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27841     move-result-object v8
27843     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
27845     move-result v9
27847     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
27849     move-result-object v8
27851     const-string v9, ", uid="
27853     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27855     move-result-object v8
27857     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
27859     move-result v9
27861     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
27863     move-result-object v8
27865     const-string v9, " requires "
27867     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27869     move-result-object v8
27871     const-string v9, "android.permission.FORCE_STOP_PACKAGES"
27873     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27875     move-result-object v8
27877     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27879     move-result-object v4
27881     const-string v8, "ActivityManager"
27883     invoke-static {v8, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
27885     new-instance v8, Ljava/lang/SecurityException;
27887     invoke-direct {v8, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
27889     throw v8
27891     :cond_44
27892     monitor-enter p0
27894     const/4 v6, 0x0
27896     :try_start_46
27897     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
27899     monitor-enter v9
27900     :try_end_49
27901     .catchall {:try_start_46 .. :try_end_49} :catchall_b4
27903     const/4 v0, 0x0
27905     :goto_4a
27906     :try_start_4a
27907     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
27909     invoke-virtual {v8}, Landroid/util/SparseArray;->size()I
27911     move-result v8
27913     if-ge v0, v8, :cond_66
27915     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
27917     invoke-virtual {v8, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
27919     move-result-object v5
27921     check-cast v5, Lcom/android/server/am/ProcessRecord;
27923     iget v8, v5, Lcom/android/server/am/ProcessRecord;->uid:I
27925     if-eq v8, p1, :cond_61
27927     :cond_5e
27928     add-int/lit8 v0, v0, 0x1
27930     goto :goto_4a
27932     :cond_61
27933     iget v8, v5, Lcom/android/server/am/ProcessRecord;->pid:I
27935     if-ne v8, p2, :cond_97
27937     move-object v6, v5
27939     :cond_66
27940     monitor-exit v9
27941     :try_end_67
27942     .catchall {:try_start_4a .. :try_end_67} :catchall_b1
27944     if-nez v6, :cond_b7
27946     :try_start_69
27947     const-string v8, "ActivityManager"
27949     new-instance v9, Ljava/lang/StringBuilder;
27951     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
27953     const-string v10, "crashApplication: nothing for uid="
27955     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27957     move-result-object v9
27959     invoke-virtual {v9, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
27961     move-result-object v9
27963     const-string v10, " initialPid="
27965     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27967     move-result-object v9
27969     invoke-virtual {v9, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
27971     move-result-object v9
27973     const-string v10, " packageName="
27975     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27977     move-result-object v9
27979     invoke-virtual {v9, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
27981     move-result-object v9
27983     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
27985     move-result-object v9
27987     invoke-static {v8, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
27989     monitor-exit p0
27990     :try_end_96
27991     .catchall {:try_start_69 .. :try_end_96} :catchall_b4
27993     :goto_96
27994     return-void
27996     :cond_97
27997     :try_start_97
27998     iget-object v8, v5, Lcom/android/server/am/ProcessRecord;->pkgList:Ljava/util/HashSet;
28000     invoke-virtual {v8}, Ljava/util/HashSet;->iterator()Ljava/util/Iterator;
28002     move-result-object v1
28004     :cond_9d
28005     :goto_9d
28006     invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
28008     move-result v8
28010     if-eqz v8, :cond_5e
28012     invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
28014     move-result-object v7
28016     check-cast v7, Ljava/lang/String;
28018     invoke-virtual {v7, p3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28020     move-result v8
28022     if-eqz v8, :cond_9d
28024     move-object v6, v5
28026     goto :goto_9d
28028     :catchall_b1
28029     move-exception v8
28031     monitor-exit v9
28032     :try_end_b3
28033     .catchall {:try_start_97 .. :try_end_b3} :catchall_b1
28035     :try_start_b3
28036     throw v8
28038     :catchall_b4
28039     move-exception v8
28041     monitor-exit p0
28042     :try_end_b6
28043     .catchall {:try_start_b3 .. :try_end_b6} :catchall_b4
28045     throw v8
28047     :cond_b7
28048     :try_start_b7
28049     iget-object v8, v6, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
28051     if-eqz v8, :cond_d8
28053     iget v8, v6, Lcom/android/server/am/ProcessRecord;->pid:I
28055     invoke-static {}, Landroid/os/Process;->myPid()I
28057     move-result v9
28059     if-ne v8, v9, :cond_cc
28061     const-string v8, "ActivityManager"
28063     const-string v9, "crashApplication: trying to crash self!"
28065     invoke-static {v8, v9}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
28067     monitor-exit p0
28069     goto :goto_96
28071     :cond_cc
28072     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
28073     :try_end_cf
28074     .catchall {:try_start_b7 .. :try_end_cf} :catchall_b4
28076     move-result-wide v2
28078     :try_start_d0
28079     iget-object v8, v6, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
28081     invoke-interface {v8, p4}, Landroid/app/IApplicationThread;->scheduleCrash(Ljava/lang/String;)V
28082     :try_end_d5
28083     .catchall {:try_start_d0 .. :try_end_d5} :catchall_b4
28084     .catch Landroid/os/RemoteException; {:try_start_d0 .. :try_end_d5} :catch_da
28086     :goto_d5
28087     :try_start_d5
28088     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
28090     :cond_d8
28091     monitor-exit p0
28092     :try_end_d9
28093     .catchall {:try_start_d5 .. :try_end_d9} :catchall_b4
28095     goto :goto_96
28097     :catch_da
28098     move-exception v8
28100     goto :goto_d5
28101 .end method
28103 .method createAppErrorIntentLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/content/Intent;
28104     .registers 8
28106     invoke-direct {p0, p1, p2, p3, p4}, Lcom/android/server/am/ActivityManagerService;->createAppErrorReportLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/app/ApplicationErrorReport;
28108     move-result-object v0
28110     if-nez v0, :cond_8
28112     const/4 v1, 0x0
28114     :goto_7
28115     return-object v1
28117     :cond_8
28118     new-instance v1, Landroid/content/Intent;
28120     const-string v2, "android.intent.action.APP_ERROR"
28122     invoke-direct {v1, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
28124     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->errorReportReceiver:Landroid/content/ComponentName;
28126     invoke-virtual {v1, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
28128     const-string v2, "android.intent.extra.BUG_REPORT"
28130     invoke-virtual {v1, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
28132     const/high16 v2, 0x1000
28134     invoke-virtual {v1, v2}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
28136     goto :goto_7
28137 .end method
28139 .method decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z
28140     .registers 7
28142     const/4 v0, 0x0
28144     if-eqz p1, :cond_2a
28146     iget-object p2, p1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
28148     if-eqz p4, :cond_23
28150     iget v1, p1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
28152     add-int/lit8 v1, v1, -0x1
28154     iput v1, p1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
28156     :goto_d
28157     iget v1, p1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
28159     if-nez v1, :cond_22
28161     iget v1, p1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
28163     if-nez v1, :cond_22
28165     iget-object v0, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
28167     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
28169     iget-object v0, p1, Lcom/android/server/am/ContentProviderConnection;->client:Lcom/android/server/am/ProcessRecord;
28171     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
28173     invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
28175     const/4 v0, 0x1
28177     :cond_22
28178     :goto_22
28179     return v0
28181     :cond_23
28182     iget v1, p1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
28184     add-int/lit8 v1, v1, -0x1
28186     iput v1, p1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
28188     goto :goto_d
28190     :cond_2a
28191     invoke-virtual {p2, p3}, Lcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleLocked(Landroid/os/IBinder;)Z
28193     goto :goto_22
28194 .end method
28196 .method public dismissKeyguardOnNextActivity()V
28197     .registers 4
28199     const-string v2, "dismissKeyguardOnNextActivity"
28201     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
28203     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
28205     move-result-wide v0
28207     :try_start_9
28208     monitor-enter p0
28209     :try_end_a
28210     .catchall {:try_start_9 .. :try_end_a} :catchall_21
28212     :try_start_a
28213     iget-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
28215     if-eqz v2, :cond_14
28217     const/4 v2, 0x0
28219     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
28221     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->comeOutOfSleepIfNeededLocked()V
28223     :cond_14
28224     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
28226     invoke-virtual {v2}, Lcom/android/server/am/ActivityStack;->dismissKeyguardOnNextActivityLocked()V
28228     monitor-exit p0
28229     :try_end_1a
28230     .catchall {:try_start_a .. :try_end_1a} :catchall_1e
28232     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
28234     return-void
28236     :catchall_1e
28237     move-exception v2
28239     :try_start_1f
28240     monitor-exit p0
28241     :try_end_20
28242     .catchall {:try_start_1f .. :try_end_20} :catchall_1e
28244     :try_start_20
28245     throw v2
28246     :try_end_21
28247     .catchall {:try_start_20 .. :try_end_21} :catchall_21
28249     :catchall_21
28250     move-exception v2
28252     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
28254     throw v2
28255 .end method
28257 .method dispatchUserSwitch(Lcom/android/server/am/UserStartedState;II)V
28258     .registers 11
28260     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mUserSwitchObservers:Landroid/os/RemoteCallbackList;
28262     invoke-virtual {v1}, Landroid/os/RemoteCallbackList;->beginBroadcast()I
28264     move-result v2
28266     if-lez v2, :cond_2c
28268     new-instance v0, Lcom/android/server/am/ActivityManagerService$18;
28270     move-object v1, p0
28272     move-object v3, p1
28274     move v4, p2
28276     move v5, p3
28278     invoke-direct/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService$18;-><init>(Lcom/android/server/am/ActivityManagerService;ILcom/android/server/am/UserStartedState;II)V
28280     monitor-enter p0
28282     const/4 v1, 0x1
28284     :try_start_13
28285     iput-boolean v1, p1, Lcom/android/server/am/UserStartedState;->switching:Z
28287     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCurUserSwitchCallback:Ljava/lang/Object;
28289     monitor-exit p0
28290     :try_end_18
28291     .catchall {:try_start_13 .. :try_end_18} :catchall_29
28293     const/4 v6, 0x0
28295     :goto_19
28296     if-ge v6, v2, :cond_31
28298     :try_start_1b
28299     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mUserSwitchObservers:Landroid/os/RemoteCallbackList;
28301     invoke-virtual {v1, v6}, Landroid/os/RemoteCallbackList;->getBroadcastItem(I)Landroid/os/IInterface;
28303     move-result-object v1
28305     check-cast v1, Landroid/app/IUserSwitchObserver;
28307     invoke-interface {v1, p3, v0}, Landroid/app/IUserSwitchObserver;->onUserSwitching(ILandroid/os/IRemoteCallback;)V
28308     :try_end_26
28309     .catch Landroid/os/RemoteException; {:try_start_1b .. :try_end_26} :catch_3a
28311     :goto_26
28312     add-int/lit8 v6, v6, 0x1
28314     goto :goto_19
28316     :catchall_29
28317     move-exception v1
28319     :try_start_2a
28320     monitor-exit p0
28321     :try_end_2b
28322     .catchall {:try_start_2a .. :try_end_2b} :catchall_29
28324     throw v1
28326     :cond_2c
28327     monitor-enter p0
28329     :try_start_2d
28330     invoke-virtual {p0, p1, p2, p3}, Lcom/android/server/am/ActivityManagerService;->sendContinueUserSwitchLocked(Lcom/android/server/am/UserStartedState;II)V
28332     monitor-exit p0
28333     :try_end_31
28334     .catchall {:try_start_2d .. :try_end_31} :catchall_37
28336     :cond_31
28337     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mUserSwitchObservers:Landroid/os/RemoteCallbackList;
28339     invoke-virtual {v1}, Landroid/os/RemoteCallbackList;->finishBroadcast()V
28341     return-void
28343     :catchall_37
28344     move-exception v1
28346     :try_start_38
28347     monitor-exit p0
28348     :try_end_39
28349     .catchall {:try_start_38 .. :try_end_39} :catchall_37
28351     throw v1
28353     :catch_3a
28354     move-exception v1
28356     goto :goto_26
28357 .end method
28359 .method final doPendingActivityLaunchesLocked(Z)V
28360     .registers 11
28362     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mPendingActivityLaunches:Ljava/util/ArrayList;
28364     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
28366     move-result v6
28368     if-gtz v6, :cond_9
28370     :goto_8
28371     return-void
28373     :cond_9
28374     const/4 v7, 0x0
28376     :goto_a
28377     if-ge v7, v6, :cond_2c
28379     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mPendingActivityLaunches:Ljava/util/ArrayList;
28381     invoke-virtual {v0, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
28383     move-result-object v8
28385     check-cast v8, Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;
28387     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
28389     iget-object v1, v8, Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;->r:Lcom/android/server/am/ActivityRecord;
28391     iget-object v2, v8, Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;->sourceRecord:Lcom/android/server/am/ActivityRecord;
28393     iget v3, v8, Lcom/android/server/am/ActivityManagerService$PendingActivityLaunch;->startFlags:I
28395     if-eqz p1, :cond_2a
28397     add-int/lit8 v4, v6, -0x1
28399     if-ne v7, v4, :cond_2a
28401     const/4 v4, 0x1
28403     :goto_23
28404     const/4 v5, 0x0
28406     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityStack;->startActivityUncheckedLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;IZLandroid/os/Bundle;)I
28408     add-int/lit8 v7, v7, 0x1
28410     goto :goto_a
28412     :cond_2a
28413     const/4 v4, 0x0
28415     goto :goto_23
28417     :cond_2c
28418     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mPendingActivityLaunches:Ljava/util/ArrayList;
28420     invoke-virtual {v0}, Ljava/util/ArrayList;->clear()V
28422     goto :goto_8
28423 .end method
28425 .method protected dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
28426     .registers 38
28428     const-string v1, "android.permission.DUMP"
28430     move-object/from16 v0, p0
28432     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
28434     move-result v1
28436     if-eqz v1, :cond_41
28438     new-instance v1, Ljava/lang/StringBuilder;
28440     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
28442     const-string v2, "Permission Denial: can\'t dump ActivityManager from from pid="
28444     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28446     move-result-object v1
28448     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
28450     move-result v2
28452     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
28454     move-result-object v1
28456     const-string v2, ", uid="
28458     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28460     move-result-object v1
28462     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
28464     move-result v2
28466     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
28468     move-result-object v1
28470     const-string v2, " without permission "
28472     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28474     move-result-object v1
28476     const-string v2, "android.permission.DUMP"
28478     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28480     move-result-object v1
28482     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
28484     move-result-object v1
28486     move-object/from16 v0, p2
28488     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28490     :goto_40
28491     return-void
28493     :cond_41
28494     const/16 v17, 0x0
28496     const/4 v7, 0x0
28498     const/16 v28, 0x0
28500     const/4 v5, 0x0
28502     :goto_47
28503     move-object/from16 v0, p3
28505     array-length v1, v0
28507     if-ge v5, v1, :cond_61
28509     aget-object v31, p3, v5
28511     if-eqz v31, :cond_61
28513     invoke-virtual/range {v31 .. v31}, Ljava/lang/String;->length()I
28515     move-result v1
28517     if-lez v1, :cond_61
28519     const/4 v1, 0x0
28521     move-object/from16 v0, v31
28523     invoke-virtual {v0, v1}, Ljava/lang/String;->charAt(I)C
28525     move-result v1
28527     const/16 v2, 0x2d
28529     if-eq v1, v2, :cond_99
28531     :cond_61
28532     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
28534     move-result-wide v32
28536     const/16 v29, 0x0
28538     move-object/from16 v0, p3
28540     array-length v1, v0
28542     if-ge v5, v1, :cond_405
28544     aget-object v21, p3, v5
28546     add-int/lit8 v5, v5, 0x1
28548     const-string v1, "activities"
28550     move-object/from16 v0, v21
28552     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28554     move-result v1
28556     if-nez v1, :cond_84
28558     const-string v1, "a"
28560     move-object/from16 v0, v21
28562     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28564     move-result v1
28566     if-eqz v1, :cond_178
28568     :cond_84
28569     monitor-enter p0
28571     const/4 v6, 0x1
28573     const/4 v8, 0x0
28575     move-object/from16 v1, p0
28577     move-object/from16 v2, p1
28579     move-object/from16 v3, p2
28581     move-object/from16 v4, p3
28583     :try_start_8f
28584     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
28586     monitor-exit p0
28587     :try_end_93
28588     .catchall {:try_start_8f .. :try_end_93} :catchall_175
28590     :cond_93
28591     :goto_93
28592     if-nez v29, :cond_405
28594     invoke-static/range {v32 .. v33}, Landroid/os/Binder;->restoreCallingIdentity(J)V
28596     goto :goto_40
28598     :cond_99
28599     add-int/lit8 v5, v5, 0x1
28601     const-string v1, "-a"
28603     move-object/from16 v0, v31
28605     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28607     move-result v1
28609     if-eqz v1, :cond_a8
28611     const/16 v17, 0x1
28613     goto :goto_47
28615     :cond_a8
28616     const-string v1, "-c"
28618     move-object/from16 v0, v31
28620     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28622     move-result v1
28624     if-eqz v1, :cond_b4
28626     const/4 v7, 0x1
28628     goto :goto_47
28630     :cond_b4
28631     const-string v1, "-h"
28633     move-object/from16 v0, v31
28635     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28637     move-result v1
28639     if-eqz v1, :cond_153
28641     const-string v1, "Activity manager dump options:"
28643     move-object/from16 v0, p2
28645     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28647     const-string v1, "  [-a] [-c] [-h] [cmd] ..."
28649     move-object/from16 v0, p2
28651     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28653     const-string v1, "  cmd may be one of:"
28655     move-object/from16 v0, p2
28657     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28659     const-string v1, "    a[ctivities]: activity stack state"
28661     move-object/from16 v0, p2
28663     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28665     const-string v1, "    b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state"
28667     move-object/from16 v0, p2
28669     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28671     const-string v1, "    i[ntents] [PACKAGE_NAME]: pending intent state"
28673     move-object/from16 v0, p2
28675     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28677     const-string v1, "    p[rocesses] [PACKAGE_NAME]: process state"
28679     move-object/from16 v0, p2
28681     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28683     const-string v1, "    o[om]: out of memory management"
28685     move-object/from16 v0, p2
28687     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28689     const-string v1, "    prov[iders] [COMP_SPEC ...]: content provider state"
28691     move-object/from16 v0, p2
28693     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28695     const-string v1, "    provider [COMP_SPEC]: provider client-side state"
28697     move-object/from16 v0, p2
28699     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28701     const-string v1, "    s[ervices] [COMP_SPEC ...]: service state"
28703     move-object/from16 v0, p2
28705     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28707     const-string v1, "    service [COMP_SPEC]: service client-side state"
28709     move-object/from16 v0, p2
28711     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28713     const-string v1, "    package [PACKAGE_NAME]: all state related to given package"
28715     move-object/from16 v0, p2
28717     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28719     const-string v1, "    all: dump all activities"
28721     move-object/from16 v0, p2
28723     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28725     const-string v1, "    top: dump the top activity"
28727     move-object/from16 v0, p2
28729     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28731     const-string v1, "  cmd may also be a COMP_SPEC to dump activities."
28733     move-object/from16 v0, p2
28735     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28737     const-string v1, "  COMP_SPEC may be a component name (com.foo/.myApp),"
28739     move-object/from16 v0, p2
28741     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28743     const-string v1, "    a partial substring in a component name, a"
28745     move-object/from16 v0, p2
28747     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28749     const-string v1, "    hex object identifier."
28751     move-object/from16 v0, p2
28753     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28755     const-string v1, "  -a: include all available server state."
28757     move-object/from16 v0, p2
28759     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28761     const-string v1, "  -c: include client state."
28763     move-object/from16 v0, p2
28765     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28767     goto/16 :goto_40
28769     :cond_153
28770     new-instance v1, Ljava/lang/StringBuilder;
28772     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
28774     const-string v2, "Unknown argument: "
28776     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28778     move-result-object v1
28780     move-object/from16 v0, v31
28782     invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28784     move-result-object v1
28786     const-string v2, "; use -h for help"
28788     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
28790     move-result-object v1
28792     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
28794     move-result-object v1
28796     move-object/from16 v0, p2
28798     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
28800     goto/16 :goto_47
28802     :catchall_175
28803     move-exception v1
28805     :try_start_176
28806     monitor-exit p0
28807     :try_end_177
28808     .catchall {:try_start_176 .. :try_end_177} :catchall_175
28810     throw v1
28812     :cond_178
28813     const-string v1, "broadcasts"
28815     move-object/from16 v0, v21
28817     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28819     move-result v1
28821     if-nez v1, :cond_18c
28823     const-string v1, "b"
28825     move-object/from16 v0, v21
28827     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28829     move-result v1
28831     if-eqz v1, :cond_1c3
28833     :cond_18c
28834     move-object/from16 v0, p3
28836     array-length v1, v0
28838     if-lt v5, v1, :cond_1a8
28840     const/4 v14, 0x0
28842     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
28844     :cond_194
28845     :goto_194
28846     monitor-enter p0
28848     const/4 v13, 0x1
28850     move-object/from16 v8, p0
28852     move-object/from16 v9, p1
28854     move-object/from16 v10, p2
28856     move-object/from16 v11, p3
28858     move v12, v5
28860     :try_start_19f
28861     invoke-virtual/range {v8 .. v14}, Lcom/android/server/am/ActivityManagerService;->dumpBroadcastsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
28863     monitor-exit p0
28865     goto/16 :goto_93
28867     :catchall_1a5
28868     move-exception v1
28870     monitor-exit p0
28871     :try_end_1a7
28872     .catchall {:try_start_19f .. :try_end_1a7} :catchall_1a5
28874     throw v1
28876     :cond_1a8
28877     aget-object v14, p3, v5
28879     add-int/lit8 v5, v5, 0x1
28881     move-object/from16 v0, p3
28883     array-length v1, v0
28885     sub-int/2addr v1, v5
28887     new-array v15, v1, [Ljava/lang/String;
28889     move-object/from16 v0, p3
28891     array-length v1, v0
28893     const/4 v2, 0x2
28895     if-le v1, v2, :cond_194
28897     const/4 v1, 0x0
28899     move-object/from16 v0, p3
28901     array-length v2, v0
28903     sub-int/2addr v2, v5
28905     move-object/from16 v0, p3
28907     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
28909     goto :goto_194
28911     :cond_1c3
28912     const-string v1, "intents"
28914     move-object/from16 v0, v21
28916     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28918     move-result v1
28920     if-nez v1, :cond_1d7
28922     const-string v1, "i"
28924     move-object/from16 v0, v21
28926     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
28928     move-result v1
28930     if-eqz v1, :cond_20e
28932     :cond_1d7
28933     move-object/from16 v0, p3
28935     array-length v1, v0
28937     if-lt v5, v1, :cond_1f3
28939     const/4 v14, 0x0
28941     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
28943     :cond_1df
28944     :goto_1df
28945     monitor-enter p0
28947     const/4 v13, 0x1
28949     move-object/from16 v8, p0
28951     move-object/from16 v9, p1
28953     move-object/from16 v10, p2
28955     move-object/from16 v11, p3
28957     move v12, v5
28959     :try_start_1ea
28960     invoke-virtual/range {v8 .. v14}, Lcom/android/server/am/ActivityManagerService;->dumpPendingIntentsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
28962     monitor-exit p0
28964     goto/16 :goto_93
28966     :catchall_1f0
28967     move-exception v1
28969     monitor-exit p0
28970     :try_end_1f2
28971     .catchall {:try_start_1ea .. :try_end_1f2} :catchall_1f0
28973     throw v1
28975     :cond_1f3
28976     aget-object v14, p3, v5
28978     add-int/lit8 v5, v5, 0x1
28980     move-object/from16 v0, p3
28982     array-length v1, v0
28984     sub-int/2addr v1, v5
28986     new-array v15, v1, [Ljava/lang/String;
28988     move-object/from16 v0, p3
28990     array-length v1, v0
28992     const/4 v2, 0x2
28994     if-le v1, v2, :cond_1df
28996     const/4 v1, 0x0
28998     move-object/from16 v0, p3
29000     array-length v2, v0
29002     sub-int/2addr v2, v5
29004     move-object/from16 v0, p3
29006     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
29008     goto :goto_1df
29010     :cond_20e
29011     const-string v1, "processes"
29013     move-object/from16 v0, v21
29015     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29017     move-result v1
29019     if-nez v1, :cond_222
29021     const-string v1, "p"
29023     move-object/from16 v0, v21
29025     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29027     move-result v1
29029     if-eqz v1, :cond_259
29031     :cond_222
29032     move-object/from16 v0, p3
29034     array-length v1, v0
29036     if-lt v5, v1, :cond_23e
29038     const/4 v14, 0x0
29040     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
29042     :cond_22a
29043     :goto_22a
29044     monitor-enter p0
29046     const/4 v13, 0x1
29048     move-object/from16 v8, p0
29050     move-object/from16 v9, p1
29052     move-object/from16 v10, p2
29054     move-object/from16 v11, p3
29056     move v12, v5
29058     :try_start_235
29059     invoke-virtual/range {v8 .. v14}, Lcom/android/server/am/ActivityManagerService;->dumpProcessesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
29061     monitor-exit p0
29063     goto/16 :goto_93
29065     :catchall_23b
29066     move-exception v1
29068     monitor-exit p0
29069     :try_end_23d
29070     .catchall {:try_start_235 .. :try_end_23d} :catchall_23b
29072     throw v1
29074     :cond_23e
29075     aget-object v14, p3, v5
29077     add-int/lit8 v5, v5, 0x1
29079     move-object/from16 v0, p3
29081     array-length v1, v0
29083     sub-int/2addr v1, v5
29085     new-array v15, v1, [Ljava/lang/String;
29087     move-object/from16 v0, p3
29089     array-length v1, v0
29091     const/4 v2, 0x2
29093     if-le v1, v2, :cond_22a
29095     const/4 v1, 0x0
29097     move-object/from16 v0, p3
29099     array-length v2, v0
29101     sub-int/2addr v2, v5
29103     move-object/from16 v0, p3
29105     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
29107     goto :goto_22a
29109     :cond_259
29110     const-string v1, "oom"
29112     move-object/from16 v0, v21
29114     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29116     move-result v1
29118     if-nez v1, :cond_26d
29120     const-string v1, "o"
29122     move-object/from16 v0, v21
29124     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29126     move-result v1
29128     if-eqz v1, :cond_280
29130     :cond_26d
29131     monitor-enter p0
29133     const/4 v6, 0x1
29135     move-object/from16 v1, p0
29137     move-object/from16 v2, p1
29139     move-object/from16 v3, p2
29141     move-object/from16 v4, p3
29143     :try_start_277
29144     invoke-virtual/range {v1 .. v6}, Lcom/android/server/am/ActivityManagerService;->dumpOomLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZ)Z
29146     monitor-exit p0
29148     goto/16 :goto_93
29150     :catchall_27d
29151     move-exception v1
29153     monitor-exit p0
29154     :try_end_27f
29155     .catchall {:try_start_277 .. :try_end_27f} :catchall_27d
29157     throw v1
29159     :cond_280
29160     const-string v1, "provider"
29162     move-object/from16 v0, v21
29164     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29166     move-result v1
29168     if-eqz v1, :cond_2dc
29170     move-object/from16 v0, p3
29172     array-length v1, v0
29174     if-lt v5, v1, :cond_2c1
29176     const/4 v14, 0x0
29178     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
29180     :cond_292
29181     :goto_292
29182     const/16 v16, 0x0
29184     move-object/from16 v11, p0
29186     move-object/from16 v12, p1
29188     move-object/from16 v13, p2
29190     invoke-virtual/range {v11 .. v17}, Lcom/android/server/am/ActivityManagerService;->dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
29192     move-result v1
29194     if-nez v1, :cond_93
29196     new-instance v1, Ljava/lang/StringBuilder;
29198     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
29200     const-string v2, "No providers match: "
29202     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29204     move-result-object v1
29206     invoke-virtual {v1, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29208     move-result-object v1
29210     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
29212     move-result-object v1
29214     move-object/from16 v0, p2
29216     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29218     const-string v1, "Use -h for help."
29220     move-object/from16 v0, p2
29222     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29224     goto/16 :goto_93
29226     :cond_2c1
29227     aget-object v14, p3, v5
29229     add-int/lit8 v5, v5, 0x1
29231     move-object/from16 v0, p3
29233     array-length v1, v0
29235     sub-int/2addr v1, v5
29237     new-array v15, v1, [Ljava/lang/String;
29239     move-object/from16 v0, p3
29241     array-length v1, v0
29243     const/4 v2, 0x2
29245     if-le v1, v2, :cond_292
29247     const/4 v1, 0x0
29249     move-object/from16 v0, p3
29251     array-length v2, v0
29253     sub-int/2addr v2, v5
29255     move-object/from16 v0, p3
29257     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
29259     goto :goto_292
29261     :cond_2dc
29262     const-string v1, "providers"
29264     move-object/from16 v0, v21
29266     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29268     move-result v1
29270     if-nez v1, :cond_2f0
29272     const-string v1, "prov"
29274     move-object/from16 v0, v21
29276     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29278     move-result v1
29280     if-eqz v1, :cond_308
29282     :cond_2f0
29283     monitor-enter p0
29285     const/16 v23, 0x1
29287     const/16 v24, 0x0
29289     move-object/from16 v18, p0
29291     move-object/from16 v19, p1
29293     move-object/from16 v20, p2
29295     move-object/from16 v21, p3
29297     move/from16 v22, v5
29299     :try_start_2ff
29300     invoke-virtual/range {v18 .. v24}, Lcom/android/server/am/ActivityManagerService;->dumpProvidersLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
29302     monitor-exit p0
29304     goto/16 :goto_93
29306     :catchall_305
29307     move-exception v1
29309     monitor-exit p0
29310     :try_end_307
29311     .catchall {:try_start_2ff .. :try_end_307} :catchall_305
29313     throw v1
29315     :cond_308
29316     const-string v1, "service"
29318     move-object/from16 v0, v21
29320     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29322     move-result v1
29324     if-eqz v1, :cond_366
29326     move-object/from16 v0, p3
29328     array-length v1, v0
29330     if-lt v5, v1, :cond_34b
29332     const/4 v14, 0x0
29334     sget-object v15, Lcom/android/server/am/ActivityManagerService;->EMPTY_STRING_ARRAY:[Ljava/lang/String;
29336     :cond_31a
29337     :goto_31a
29338     move-object/from16 v0, p0
29340     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
29342     const/16 v16, 0x0
29344     move-object/from16 v12, p1
29346     move-object/from16 v13, p2
29348     invoke-virtual/range {v11 .. v17}, Lcom/android/server/am/ActiveServices;->dumpService(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
29350     move-result v1
29352     if-nez v1, :cond_93
29354     new-instance v1, Ljava/lang/StringBuilder;
29356     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
29358     const-string v2, "No services match: "
29360     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29362     move-result-object v1
29364     invoke-virtual {v1, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29366     move-result-object v1
29368     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
29370     move-result-object v1
29372     move-object/from16 v0, p2
29374     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29376     const-string v1, "Use -h for help."
29378     move-object/from16 v0, p2
29380     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29382     goto/16 :goto_93
29384     :cond_34b
29385     aget-object v14, p3, v5
29387     add-int/lit8 v5, v5, 0x1
29389     move-object/from16 v0, p3
29391     array-length v1, v0
29393     sub-int/2addr v1, v5
29395     new-array v15, v1, [Ljava/lang/String;
29397     move-object/from16 v0, p3
29399     array-length v1, v0
29401     const/4 v2, 0x2
29403     if-le v1, v2, :cond_31a
29405     const/4 v1, 0x0
29407     move-object/from16 v0, p3
29409     array-length v2, v0
29411     sub-int/2addr v2, v5
29413     move-object/from16 v0, p3
29415     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
29417     goto :goto_31a
29419     :cond_366
29420     const-string v1, "package"
29422     move-object/from16 v0, v21
29424     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29426     move-result v1
29428     if-eqz v1, :cond_3a6
29430     move-object/from16 v0, p3
29432     array-length v1, v0
29434     if-lt v5, v1, :cond_385
29436     const-string v1, "package: no package name specified"
29438     move-object/from16 v0, p2
29440     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29442     const-string v1, "Use -h for help."
29444     move-object/from16 v0, p2
29446     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29448     goto/16 :goto_93
29450     :cond_385
29451     aget-object v28, p3, v5
29453     add-int/lit8 v5, v5, 0x1
29455     move-object/from16 v0, p3
29457     array-length v1, v0
29459     sub-int/2addr v1, v5
29461     new-array v15, v1, [Ljava/lang/String;
29463     move-object/from16 v0, p3
29465     array-length v1, v0
29467     const/4 v2, 0x2
29469     if-le v1, v2, :cond_39f
29471     const/4 v1, 0x0
29473     move-object/from16 v0, p3
29475     array-length v2, v0
29477     sub-int/2addr v2, v5
29479     move-object/from16 v0, p3
29481     invoke-static {v0, v5, v15, v1, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
29483     :cond_39f
29484     move-object/from16 p3, v15
29486     const/4 v5, 0x0
29488     const/16 v29, 0x1
29490     goto/16 :goto_93
29492     :cond_3a6
29493     const-string v1, "services"
29495     move-object/from16 v0, v21
29497     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29499     move-result v1
29501     if-nez v1, :cond_3ba
29503     const-string v1, "s"
29505     move-object/from16 v0, v21
29507     invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
29509     move-result v1
29511     if-eqz v1, :cond_3d0
29513     :cond_3ba
29514     monitor-enter p0
29516     :try_start_3bb
29517     move-object/from16 v0, p0
29519     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
29521     const/4 v6, 0x1
29523     const/4 v8, 0x0
29525     move-object/from16 v2, p1
29527     move-object/from16 v3, p2
29529     move-object/from16 v4, p3
29531     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActiveServices;->dumpServicesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
29533     monitor-exit p0
29535     goto/16 :goto_93
29537     :catchall_3cd
29538     move-exception v1
29540     monitor-exit p0
29541     :try_end_3cf
29542     .catchall {:try_start_3bb .. :try_end_3cf} :catchall_3cd
29544     throw v1
29546     :cond_3d0
29547     move-object/from16 v18, p0
29549     move-object/from16 v19, p1
29551     move-object/from16 v20, p2
29553     move-object/from16 v22, p3
29555     move/from16 v23, v5
29557     move/from16 v24, v17
29559     invoke-virtual/range {v18 .. v24}, Lcom/android/server/am/ActivityManagerService;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
29561     move-result v1
29563     if-nez v1, :cond_93
29565     new-instance v1, Ljava/lang/StringBuilder;
29567     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
29569     const-string v2, "Bad activity command, or no activities match: "
29571     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29573     move-result-object v1
29575     move-object/from16 v0, v21
29577     invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
29579     move-result-object v1
29581     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
29583     move-result-object v1
29585     move-object/from16 v0, p2
29587     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29589     const-string v1, "Use -h for help."
29591     move-object/from16 v0, p2
29593     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29595     goto/16 :goto_93
29597     :cond_405
29598     monitor-enter p0
29600     move-object/from16 v22, p0
29602     move-object/from16 v23, p1
29604     move-object/from16 v24, p2
29606     move-object/from16 v25, p3
29608     move/from16 v26, v5
29610     move/from16 v27, v17
29612     :try_start_412
29613     invoke-virtual/range {v22 .. v28}, Lcom/android/server/am/ActivityManagerService;->dumpPendingIntentsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
29615     move-result v30
29617     if-eqz v30, :cond_41f
29619     const-string v1, " "
29621     move-object/from16 v0, p2
29623     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29625     :cond_41f
29626     if-eqz v17, :cond_428
29628     const-string v1, "-------------------------------------------------------------------------------"
29630     move-object/from16 v0, p2
29632     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29634     :cond_428
29635     move-object/from16 v22, p0
29637     move-object/from16 v23, p1
29639     move-object/from16 v24, p2
29641     move-object/from16 v25, p3
29643     move/from16 v26, v5
29645     move/from16 v27, v17
29647     invoke-virtual/range {v22 .. v28}, Lcom/android/server/am/ActivityManagerService;->dumpBroadcastsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
29649     move-result v30
29651     if-eqz v30, :cond_441
29653     const-string v1, " "
29655     move-object/from16 v0, p2
29657     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29659     :cond_441
29660     if-eqz v17, :cond_44a
29662     const-string v1, "-------------------------------------------------------------------------------"
29664     move-object/from16 v0, p2
29666     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29668     :cond_44a
29669     move-object/from16 v22, p0
29671     move-object/from16 v23, p1
29673     move-object/from16 v24, p2
29675     move-object/from16 v25, p3
29677     move/from16 v26, v5
29679     move/from16 v27, v17
29681     invoke-virtual/range {v22 .. v28}, Lcom/android/server/am/ActivityManagerService;->dumpProvidersLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
29683     move-result v30
29685     if-eqz v30, :cond_463
29687     const-string v1, " "
29689     move-object/from16 v0, p2
29691     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29693     :cond_463
29694     if-eqz v17, :cond_46c
29696     const-string v1, "-------------------------------------------------------------------------------"
29698     move-object/from16 v0, p2
29700     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29702     :cond_46c
29703     move-object/from16 v0, p0
29705     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
29707     move-object/from16 v2, p1
29709     move-object/from16 v3, p2
29711     move-object/from16 v4, p3
29713     move/from16 v6, v17
29715     move-object/from16 v8, v28
29717     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActiveServices;->dumpServicesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
29719     move-result v30
29721     if-eqz v30, :cond_487
29723     const-string v1, " "
29725     move-object/from16 v0, p2
29727     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29729     :cond_487
29730     if-eqz v17, :cond_490
29732     const-string v1, "-------------------------------------------------------------------------------"
29734     move-object/from16 v0, p2
29736     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29738     :cond_490
29739     move-object/from16 v1, p0
29741     move-object/from16 v2, p1
29743     move-object/from16 v3, p2
29745     move-object/from16 v4, p3
29747     move/from16 v6, v17
29749     move-object/from16 v8, v28
29751     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
29753     move-result v30
29755     if-eqz v30, :cond_4a9
29757     const-string v1, " "
29759     move-object/from16 v0, p2
29761     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29763     :cond_4a9
29764     if-eqz v17, :cond_4b2
29766     const-string v1, "-------------------------------------------------------------------------------"
29768     move-object/from16 v0, p2
29770     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29772     :cond_4b2
29773     move-object/from16 v22, p0
29775     move-object/from16 v23, p1
29777     move-object/from16 v24, p2
29779     move-object/from16 v25, p3
29781     move/from16 v26, v5
29783     move/from16 v27, v17
29785     invoke-virtual/range {v22 .. v28}, Lcom/android/server/am/ActivityManagerService;->dumpProcessesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
29787     monitor-exit p0
29788     :try_end_4c2
29789     .catchall {:try_start_412 .. :try_end_4c2} :catchall_4c7
29791     invoke-static/range {v32 .. v33}, Landroid/os/Binder;->restoreCallingIdentity(J)V
29793     goto/16 :goto_40
29795     :catchall_4c7
29796     move-exception v1
29798     :try_start_4c8
29799     monitor-exit p0
29800     :try_end_4c9
29801     .catchall {:try_start_4c8 .. :try_end_4c9} :catchall_4c7
29803     throw v1
29804 .end method
29806 .method dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
29807     .registers 21
29809     const-string v1, "ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities)"
29811     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29813     const-string v1, "  Main stack:"
29815     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29817     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
29819     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
29821     const-string v4, "  "
29823     const-string v5, "Hist"
29825     const/4 v6, 0x1
29827     if-nez p5, :cond_1bc
29829     const/4 v7, 0x1
29831     :goto_16
29832     move-object v1, p1
29834     move-object v2, p2
29836     move/from16 v8, p6
29838     move-object/from16 v9, p7
29840     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
29842     const-string v1, " "
29844     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29846     const-string v1, "  Running activities (most recent first):"
29848     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29850     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
29852     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mLRUActivities:Ljava/util/ArrayList;
29854     const-string v4, "  "
29856     const-string v5, "Run"
29858     const/4 v6, 0x0
29860     if-nez p5, :cond_1bf
29862     const/4 v7, 0x1
29864     :goto_35
29865     const/4 v8, 0x0
29867     move-object v1, p1
29869     move-object v2, p2
29871     move-object/from16 v9, p7
29873     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
29875     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
29877     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mWaitingVisibleActivities:Ljava/util/ArrayList;
29879     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
29881     move-result v1
29883     if-lez v1, :cond_65
29885     const-string v1, " "
29887     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29889     const-string v1, "  Activities waiting for another to become visible:"
29891     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29893     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
29895     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mWaitingVisibleActivities:Ljava/util/ArrayList;
29897     const-string v4, "  "
29899     const-string v5, "Wait"
29901     const/4 v6, 0x0
29903     if-nez p5, :cond_1c2
29905     const/4 v7, 0x1
29907     :goto_5d
29908     const/4 v8, 0x0
29910     move-object v1, p1
29912     move-object v2, p2
29914     move-object/from16 v9, p7
29916     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
29918     :cond_65
29919     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
29921     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mStoppingActivities:Ljava/util/ArrayList;
29923     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
29925     move-result v1
29927     if-lez v1, :cond_8d
29929     const-string v1, " "
29931     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29933     const-string v1, "  Activities waiting to stop:"
29935     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29937     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
29939     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mStoppingActivities:Ljava/util/ArrayList;
29941     const-string v4, "  "
29943     const-string v5, "Stop"
29945     const/4 v6, 0x0
29947     if-nez p5, :cond_1c5
29949     const/4 v7, 0x1
29951     :goto_85
29952     const/4 v8, 0x0
29954     move-object v1, p1
29956     move-object v2, p2
29958     move-object/from16 v9, p7
29960     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
29962     :cond_8d
29963     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
29965     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mGoingToSleepActivities:Ljava/util/ArrayList;
29967     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
29969     move-result v1
29971     if-lez v1, :cond_b5
29973     const-string v1, " "
29975     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29977     const-string v1, "  Activities waiting to sleep:"
29979     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
29981     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
29983     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mGoingToSleepActivities:Ljava/util/ArrayList;
29985     const-string v4, "  "
29987     const-string v5, "Sleep"
29989     const/4 v6, 0x0
29991     if-nez p5, :cond_1c8
29993     const/4 v7, 0x1
29995     :goto_ad
29996     const/4 v8, 0x0
29998     move-object v1, p1
30000     move-object v2, p2
30002     move-object/from16 v9, p7
30004     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
30006     :cond_b5
30007     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30009     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mFinishingActivities:Ljava/util/ArrayList;
30011     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
30013     move-result v1
30015     if-lez v1, :cond_dd
30017     const-string v1, " "
30019     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30021     const-string v1, "  Activities waiting to finish:"
30023     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30025     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30027     iget-object v3, v1, Lcom/android/server/am/ActivityStack;->mFinishingActivities:Ljava/util/ArrayList;
30029     const-string v4, "  "
30031     const-string v5, "Fin"
30033     const/4 v6, 0x0
30035     if-nez p5, :cond_1cb
30037     const/4 v7, 0x1
30039     :goto_d5
30040     const/4 v8, 0x0
30042     move-object v1, p1
30044     move-object v2, p2
30046     move-object/from16 v9, p7
30048     invoke-static/range {v1 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;)V
30050     :cond_dd
30051     const-string v1, " "
30053     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30055     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30057     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
30059     if-eqz v1, :cond_102
30061     new-instance v1, Ljava/lang/StringBuilder;
30063     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
30065     const-string v2, "  mPausingActivity: "
30067     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30069     move-result-object v1
30071     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30073     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
30075     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
30077     move-result-object v1
30079     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30081     move-result-object v1
30083     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30085     :cond_102
30086     new-instance v1, Ljava/lang/StringBuilder;
30088     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
30090     const-string v2, "  mResumedActivity: "
30092     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30094     move-result-object v1
30096     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30098     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
30100     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
30102     move-result-object v1
30104     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30106     move-result-object v1
30108     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30110     new-instance v1, Ljava/lang/StringBuilder;
30112     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
30114     const-string v2, "  mFocusedActivity: "
30116     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30118     move-result-object v1
30120     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mFocusedActivity:Lcom/android/server/am/ActivityRecord;
30122     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
30124     move-result-object v1
30126     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30128     move-result-object v1
30130     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30132     if-eqz p5, :cond_184
30134     new-instance v1, Ljava/lang/StringBuilder;
30136     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
30138     const-string v2, "  mLastPausedActivity: "
30140     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30142     move-result-object v1
30144     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30146     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mLastPausedActivity:Lcom/android/server/am/ActivityRecord;
30148     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
30150     move-result-object v1
30152     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30154     move-result-object v1
30156     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30158     new-instance v1, Ljava/lang/StringBuilder;
30160     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
30162     const-string v2, "  mSleepTimeout: "
30164     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30166     move-result-object v1
30168     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30170     iget-boolean v2, v2, Lcom/android/server/am/ActivityStack;->mSleepTimeout:Z
30172     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
30174     move-result-object v1
30176     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30178     move-result-object v1
30180     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30182     new-instance v1, Ljava/lang/StringBuilder;
30184     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
30186     const-string v2, "  mDismissKeyguardOnNextActivity: "
30188     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30190     move-result-object v1
30192     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30194     iget-boolean v2, v2, Lcom/android/server/am/ActivityStack;->mDismissKeyguardOnNextActivity:Z
30196     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
30198     move-result-object v1
30200     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30202     move-result-object v1
30204     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30206     :cond_184
30207     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
30209     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
30211     move-result v1
30213     if-lez v1, :cond_1ee
30215     invoke-virtual {p2}, Ljava/io/PrintWriter;->println()V
30217     const-string v1, "  Recent tasks:"
30219     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30221     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
30223     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
30225     move-result v10
30227     const/4 v11, 0x0
30229     :goto_19b
30230     if-ge v11, v10, :cond_1ee
30232     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
30234     invoke-virtual {v1, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
30236     move-result-object v12
30238     check-cast v12, Lcom/android/server/am/TaskRecord;
30240     if-eqz p7, :cond_1ce
30242     iget-object v1, v12, Lcom/android/server/am/TaskRecord;->realActivity:Landroid/content/ComponentName;
30244     if-eqz v1, :cond_1b9
30246     iget-object v1, v12, Lcom/android/server/am/TaskRecord;->realActivity:Landroid/content/ComponentName;
30248     invoke-virtual {v1}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
30250     move-result-object v1
30252     move-object/from16 v0, p7
30254     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
30256     move-result v1
30258     if-nez v1, :cond_1ce
30260     :cond_1b9
30261     :goto_1b9
30262     add-int/lit8 v11, v11, 0x1
30264     goto :goto_19b
30266     :cond_1bc
30267     const/4 v7, 0x0
30269     goto/16 :goto_16
30271     :cond_1bf
30272     const/4 v7, 0x0
30274     goto/16 :goto_35
30276     :cond_1c2
30277     const/4 v7, 0x0
30279     goto/16 :goto_5d
30281     :cond_1c5
30282     const/4 v7, 0x0
30284     goto/16 :goto_85
30286     :cond_1c8
30287     const/4 v7, 0x0
30289     goto/16 :goto_ad
30291     :cond_1cb
30292     const/4 v7, 0x0
30294     goto/16 :goto_d5
30296     :cond_1ce
30297     const-string v1, "  * Recent #"
30299     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
30301     invoke-virtual {p2, v11}, Ljava/io/PrintWriter;->print(I)V
30303     const-string v1, ": "
30305     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
30307     invoke-virtual {p2, v12}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
30309     if-eqz p5, :cond_1b9
30311     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
30313     invoke-virtual {v1, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
30315     move-result-object v1
30317     check-cast v1, Lcom/android/server/am/TaskRecord;
30319     const-string v2, "    "
30321     invoke-virtual {v1, p2, v2}, Lcom/android/server/am/TaskRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
30323     goto :goto_1b9
30325     :cond_1ee
30326     if-eqz p5, :cond_20d
30328     const-string v1, " "
30330     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30332     new-instance v1, Ljava/lang/StringBuilder;
30334     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
30336     const-string v2, "  mCurTask: "
30338     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30340     move-result-object v1
30342     iget v2, p0, Lcom/android/server/am/ActivityManagerService;->mCurTask:I
30344     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
30346     move-result-object v1
30348     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30350     move-result-object v1
30352     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30354     :cond_20d
30355     const/4 v1, 0x1
30357     return v1
30358 .end method
30360 .method protected dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
30361     .registers 25
30363     new-instance v10, Ljava/util/ArrayList;
30365     invoke-direct {v10}, Ljava/util/ArrayList;-><init>()V
30367     const-string v2, "all"
30369     move-object/from16 v0, p3
30371     invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
30373     move-result v2
30375     if-eqz v2, :cond_38
30377     monitor-enter p0
30379     :try_start_10
30380     move-object/from16 v0, p0
30382     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30384     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
30386     invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
30388     move-result-object v12
30390     :goto_1a
30391     invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z
30393     move-result v2
30395     if-eqz v2, :cond_2f
30397     invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object;
30399     move-result-object v17
30401     check-cast v17, Lcom/android/server/am/ActivityRecord;
30403     move-object/from16 v0, v17
30405     invoke-virtual {v10, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
30407     goto :goto_1a
30409     :catchall_2c
30410     move-exception v2
30412     monitor-exit p0
30413     :try_end_2e
30414     .catchall {:try_start_10 .. :try_end_2e} :catchall_2c
30416     throw v2
30418     :cond_2f
30419     :try_start_2f
30420     monitor-exit p0
30421     :try_end_30
30422     .catchall {:try_start_2f .. :try_end_30} :catchall_2c
30424     :goto_30
30425     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
30427     move-result v2
30429     if-gtz v2, :cond_a1
30431     const/4 v2, 0x0
30433     :goto_37
30434     return v2
30436     :cond_38
30437     const-string v2, "top"
30439     move-object/from16 v0, p3
30441     invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
30443     move-result v2
30445     if-eqz v2, :cond_65
30447     monitor-enter p0
30449     :try_start_43
30450     move-object/from16 v0, p0
30452     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30454     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
30456     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
30458     move-result v9
30460     if-lez v9, :cond_60
30462     move-object/from16 v0, p0
30464     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30466     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
30468     add-int/lit8 v3, v9, -0x1
30470     invoke-virtual {v2, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
30472     move-result-object v2
30474     check-cast v2, Lcom/android/server/am/ActivityRecord;
30476     invoke-virtual {v10, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
30478     :cond_60
30479     monitor-exit p0
30481     goto :goto_30
30483     :catchall_62
30484     move-exception v2
30486     monitor-exit p0
30487     :try_end_64
30488     .catchall {:try_start_43 .. :try_end_64} :catchall_62
30490     throw v2
30492     :cond_65
30493     new-instance v14, Lcom/android/server/am/ActivityManagerService$ItemMatcher;
30495     invoke-direct {v14}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;-><init>()V
30497     move-object/from16 v0, p3
30499     invoke-virtual {v14, v0}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->build(Ljava/lang/String;)V
30501     monitor-enter p0
30503     :try_start_70
30504     move-object/from16 v0, p0
30506     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
30508     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
30510     invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
30512     move-result-object v12
30514     :cond_7a
30515     :goto_7a
30516     invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z
30518     move-result v2
30520     if-eqz v2, :cond_9f
30522     invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object;
30524     move-result-object v17
30526     check-cast v17, Lcom/android/server/am/ActivityRecord;
30528     move-object/from16 v0, v17
30530     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
30532     invoke-virtual {v2}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
30534     move-result-object v2
30536     move-object/from16 v0, v17
30538     invoke-virtual {v14, v0, v2}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Ljava/lang/Object;Landroid/content/ComponentName;)Z
30540     move-result v2
30542     if-eqz v2, :cond_7a
30544     move-object/from16 v0, v17
30546     invoke-virtual {v10, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
30548     goto :goto_7a
30550     :catchall_9c
30551     move-exception v2
30553     monitor-exit p0
30554     :try_end_9e
30555     .catchall {:try_start_70 .. :try_end_9e} :catchall_9c
30557     throw v2
30559     :cond_9f
30560     :try_start_9f
30561     monitor-exit p0
30562     :try_end_a0
30563     .catchall {:try_start_9f .. :try_end_a0} :catchall_9c
30565     goto :goto_30
30567     :cond_a1
30568     move-object/from16 v0, p4
30570     array-length v2, v0
30572     sub-int v2, v2, p5
30574     new-array v7, v2, [Ljava/lang/String;
30576     move-object/from16 v0, p4
30578     array-length v2, v0
30580     const/4 v3, 0x2
30582     if-le v2, v3, :cond_bb
30584     const/4 v2, 0x0
30586     move-object/from16 v0, p4
30588     array-length v3, v0
30590     sub-int v3, v3, p5
30592     move-object/from16 v0, p4
30594     move/from16 v1, p5
30596     invoke-static {v0, v1, v7, v2, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
30598     :cond_bb
30599     const/4 v13, 0x0
30601     const/4 v15, 0x0
30603     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
30605     move-result v2
30607     add-int/lit8 v11, v2, -0x1
30609     :goto_c3
30610     if-ltz v11, :cond_11b
30612     invoke-virtual {v10, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
30614     move-result-object v16
30616     check-cast v16, Lcom/android/server/am/ActivityRecord;
30618     if-eqz v15, :cond_d0
30620     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
30622     :cond_d0
30623     const/4 v15, 0x1
30625     monitor-enter p0
30627     :try_start_d2
30628     move-object/from16 v0, v16
30630     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
30632     if-eq v13, v2, :cond_101
30634     move-object/from16 v0, v16
30636     iget-object v13, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
30638     const-string v2, "TASK "
30640     move-object/from16 v0, p2
30642     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
30644     iget-object v2, v13, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
30646     move-object/from16 v0, p2
30648     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
30650     const-string v2, " id="
30652     move-object/from16 v0, p2
30654     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
30656     iget v2, v13, Lcom/android/server/am/TaskRecord;->taskId:I
30658     move-object/from16 v0, p2
30660     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(I)V
30662     if-eqz p6, :cond_101
30664     const-string v2, "  "
30666     move-object/from16 v0, p2
30668     invoke-virtual {v13, v0, v2}, Lcom/android/server/am/TaskRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
30670     :cond_101
30671     monitor-exit p0
30672     :try_end_102
30673     .catchall {:try_start_d2 .. :try_end_102} :catchall_118
30675     const-string v3, "  "
30677     invoke-virtual {v10, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
30679     move-result-object v6
30681     check-cast v6, Lcom/android/server/am/ActivityRecord;
30683     move-object/from16 v2, p0
30685     move-object/from16 v4, p1
30687     move-object/from16 v5, p2
30689     move/from16 v8, p6
30691     invoke-direct/range {v2 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpActivity(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ActivityRecord;[Ljava/lang/String;Z)V
30693     add-int/lit8 v11, v11, -0x1
30695     goto :goto_c3
30697     :catchall_118
30698     move-exception v2
30700     :try_start_119
30701     monitor-exit p0
30702     :try_end_11a
30703     .catchall {:try_start_119 .. :try_end_11a} :catchall_118
30705     throw v2
30707     :cond_11b
30708     const/4 v2, 0x1
30710     goto/16 :goto_37
30711 .end method
30713 .method final dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;ZLjava/io/PrintWriter;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)V
30714     .registers 85
30716     const/16 v38, 0x0
30718     const/16 v53, 0x0
30720     const/16 v57, 0x0
30722     :goto_6
30723     move-object/from16 v0, p4
30725     array-length v5, v0
30727     move/from16 v0, v57
30729     if-ge v0, v5, :cond_22
30731     aget-object v56, p4, v57
30733     if-eqz v56, :cond_22
30735     invoke-virtual/range {v56 .. v56}, Ljava/lang/String;->length()I
30737     move-result v5
30739     if-lez v5, :cond_22
30741     const/4 v5, 0x0
30743     move-object/from16 v0, v56
30745     invoke-virtual {v0, v5}, Ljava/lang/String;->charAt(I)C
30747     move-result v5
30749     const/16 v6, 0x2d
30751     if-eq v5, v6, :cond_31
30753     :cond_22
30754     move-object/from16 v0, p0
30756     move-object/from16 v1, p2
30758     move/from16 v2, v57
30760     move-object/from16 v3, p4
30762     invoke-virtual {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;I[Ljava/lang/String;)Ljava/util/ArrayList;
30764     move-result-object v60
30766     if-nez v60, :cond_9d
30768     :cond_30
30769     :goto_30
30770     return-void
30772     :cond_31
30773     add-int/lit8 v57, v57, 0x1
30775     const-string v5, "-a"
30777     move-object/from16 v0, v56
30779     invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
30781     move-result v5
30783     if-eqz v5, :cond_40
30785     const/16 v38, 0x1
30787     goto :goto_6
30789     :cond_40
30790     const-string v5, "--oom"
30792     move-object/from16 v0, v56
30794     invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
30796     move-result v5
30798     if-eqz v5, :cond_4d
30800     const/16 v53, 0x1
30802     goto :goto_6
30804     :cond_4d
30805     const-string v5, "-h"
30807     move-object/from16 v0, v56
30809     invoke-virtual {v5, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
30811     move-result v5
30813     if-eqz v5, :cond_7b
30815     const-string v5, "meminfo dump options: [-a] [--oom] [process]"
30817     move-object/from16 v0, p2
30819     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30821     const-string v5, "  -a: include all available information for each process."
30823     move-object/from16 v0, p2
30825     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30827     const-string v5, "  --oom: only show processes organized by oom adj."
30829     move-object/from16 v0, p2
30831     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30833     const-string v5, "If [process] is specified it can be the name or "
30835     move-object/from16 v0, p2
30837     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30839     const-string v5, "pid of a specific process to dump."
30841     move-object/from16 v0, p2
30843     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30845     goto :goto_30
30847     :cond_7b
30848     new-instance v5, Ljava/lang/StringBuilder;
30850     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
30852     const-string v6, "Unknown argument: "
30854     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30856     move-result-object v5
30858     move-object/from16 v0, v56
30860     invoke-virtual {v5, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30862     move-result-object v5
30864     const-string v6, "; use -h for help"
30866     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30868     move-result-object v5
30870     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30872     move-result-object v5
30874     move-object/from16 v0, p2
30876     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30878     goto/16 :goto_6
30880     :cond_9d
30881     const-string v5, "--checkin"
30883     move-object/from16 v0, p4
30885     invoke-static {v0, v5}, Lcom/android/server/am/ActivityManagerService;->scanArgs([Ljava/lang/String;Ljava/lang/String;)Z
30887     move-result v43
30889     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
30891     move-result-wide v72
30893     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
30895     move-result-wide v62
30897     invoke-virtual/range {v60 .. v60}, Ljava/util/ArrayList;->size()I
30899     move-result v5
30901     const/4 v6, 0x1
30903     if-eq v5, v6, :cond_b6
30905     if-eqz v43, :cond_b8
30907     :cond_b6
30908     const/16 v38, 0x1
30910     :cond_b8
30911     if-eqz v43, :cond_1ec
30913     new-instance v5, Ljava/lang/StringBuilder;
30915     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
30917     move-wide/from16 v0, v72
30919     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
30921     move-result-object v5
30923     const-string v6, ","
30925     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
30927     move-result-object v5
30929     move-wide/from16 v0, v62
30931     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
30933     move-result-object v5
30935     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
30937     move-result-object v5
30939     move-object/from16 v0, p2
30941     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
30943     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->flush()V
30945     :goto_dd
30946     move-object/from16 v0, p4
30948     array-length v5, v0
30950     sub-int v5, v5, v57
30952     new-array v0, v5, [Ljava/lang/String;
30954     move-object/from16 v42, v0
30956     const/4 v5, 0x0
30958     move-object/from16 v0, p4
30960     array-length v6, v0
30962     sub-int v6, v6, v57
30964     move-object/from16 v0, p4
30966     move/from16 v1, v57
30968     move-object/from16 v2, v42
30970     invoke-static {v0, v1, v2, v5, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
30972     new-instance v59, Ljava/util/ArrayList;
30974     invoke-direct/range {v59 .. v59}, Ljava/util/ArrayList;-><init>()V
30976     const-wide/16 v12, 0x0
30978     const-wide/16 v17, 0x0
30980     const-wide/16 v22, 0x0
30982     const/16 v5, 0x9
30984     new-array v0, v5, [J
30986     move-object/from16 v50, v0
30988     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
30990     array-length v5, v5
30992     new-array v0, v5, [J
30994     move-object/from16 v55, v0
30996     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
30998     array-length v5, v5
31000     new-array v0, v5, [Ljava/util/ArrayList;
31002     move-object/from16 v54, v0
31004     check-cast v54, [Ljava/util/ArrayList;
31006     const-wide/16 v68, 0x0
31008     invoke-virtual/range {v60 .. v60}, Ljava/util/ArrayList;->size()I
31010     move-result v5
31012     add-int/lit8 v41, v5, -0x1
31014     :goto_11e
31015     if-ltz v41, :cond_272
31017     move-object/from16 v0, v60
31019     move/from16 v1, v41
31021     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
31023     move-result-object v61
31025     check-cast v61, Lcom/android/server/am/ProcessRecord;
31027     move-object/from16 v0, v61
31029     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
31031     if-eqz v5, :cond_26b
31033     if-nez v43, :cond_167
31035     if-eqz v38, :cond_167
31037     new-instance v5, Ljava/lang/StringBuilder;
31039     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
31041     const-string v6, "\n** MEMINFO in pid "
31043     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31045     move-result-object v5
31047     move-object/from16 v0, v61
31049     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
31051     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
31053     move-result-object v5
31055     const-string v6, " ["
31057     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31059     move-result-object v5
31061     move-object/from16 v0, v61
31063     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
31065     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31067     move-result-object v5
31069     const-string v6, "] **"
31071     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31073     move-result-object v5
31075     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
31077     move-result-object v5
31079     move-object/from16 v0, p2
31081     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31083     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->flush()V
31085     :cond_167
31086     const/16 v48, 0x0
31088     if-eqz v38, :cond_22a
31090     :try_start_16b
31091     move-object/from16 v0, v61
31093     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
31095     move-object/from16 v0, p1
31097     move/from16 v1, v43
31099     move/from16 v2, v38
31101     move-object/from16 v3, v42
31103     invoke-interface {v5, v0, v1, v2, v3}, Landroid/app/IApplicationThread;->dumpMemInfo(Ljava/io/FileDescriptor;ZZ[Ljava/lang/String;)Landroid/os/Debug$MemoryInfo;
31104     :try_end_17a
31105     .catch Landroid/os/RemoteException; {:try_start_16b .. :try_end_17a} :catch_21b
31107     move-result-object v48
31109     :cond_17b
31110     :goto_17b
31111     if-nez v43, :cond_26b
31113     if-eqz v48, :cond_26b
31115     invoke-virtual/range {v48 .. v48}, Landroid/os/Debug$MemoryInfo;->getTotalPss()I
31117     move-result v5
31119     int-to-long v7, v5
31121     add-long v68, v68, v7
31123     new-instance v4, Lcom/android/server/am/ActivityManagerService$MemItem;
31125     new-instance v5, Ljava/lang/StringBuilder;
31127     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
31129     move-object/from16 v0, v61
31131     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
31133     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31135     move-result-object v5
31137     const-string v6, " (pid "
31139     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31141     move-result-object v5
31143     move-object/from16 v0, v61
31145     iget v6, v0, Lcom/android/server/am/ProcessRecord;->pid:I
31147     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
31149     move-result-object v5
31151     const-string v6, ")"
31153     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31155     move-result-object v5
31157     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
31159     move-result-object v5
31161     move-object/from16 v0, v61
31163     iget-object v6, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
31165     const/4 v9, 0x0
31167     invoke-direct/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
31169     move-object/from16 v0, v59
31171     invoke-virtual {v0, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
31173     move-object/from16 v0, v48
31175     iget v5, v0, Landroid/os/Debug$MemoryInfo;->nativePss:I
31177     int-to-long v5, v5
31179     add-long/2addr v12, v5
31181     move-object/from16 v0, v48
31183     iget v5, v0, Landroid/os/Debug$MemoryInfo;->dalvikPss:I
31185     int-to-long v5, v5
31187     add-long v17, v17, v5
31189     move-object/from16 v0, v48
31191     iget v5, v0, Landroid/os/Debug$MemoryInfo;->otherPss:I
31193     int-to-long v5, v5
31195     add-long v22, v22, v5
31197     const/16 v29, 0x0
31199     :goto_1d0
31200     const/16 v5, 0x9
31202     move/from16 v0, v29
31204     if-ge v0, v5, :cond_23a
31206     move-object/from16 v0, v48
31208     move/from16 v1, v29
31210     invoke-virtual {v0, v1}, Landroid/os/Debug$MemoryInfo;->getOtherPss(I)I
31212     move-result v5
31214     int-to-long v0, v5
31216     move-wide/from16 v46, v0
31218     aget-wide v5, v50, v29
31220     add-long v5, v5, v46
31222     aput-wide v5, v50, v29
31224     sub-long v22, v22, v46
31226     add-int/lit8 v29, v29, 0x1
31228     goto :goto_1d0
31230     :cond_1ec
31231     const-string v5, "Applications Memory Usage (kB):"
31233     move-object/from16 v0, p2
31235     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31237     new-instance v5, Ljava/lang/StringBuilder;
31239     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
31241     const-string v6, "Uptime: "
31243     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31245     move-result-object v5
31247     move-wide/from16 v0, v72
31249     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
31251     move-result-object v5
31253     const-string v6, " Realtime: "
31255     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31257     move-result-object v5
31259     move-wide/from16 v0, v62
31261     invoke-virtual {v5, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
31263     move-result-object v5
31265     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
31267     move-result-object v5
31269     move-object/from16 v0, p2
31271     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31273     goto/16 :goto_dd
31275     :catch_21b
31276     move-exception v39
31278     if-nez v43, :cond_17b
31280     const-string v5, "Got RemoteException!"
31282     move-object/from16 v0, p2
31284     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31286     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->flush()V
31288     goto/16 :goto_17b
31290     :cond_22a
31291     new-instance v48, Landroid/os/Debug$MemoryInfo;
31293     invoke-direct/range {v48 .. v48}, Landroid/os/Debug$MemoryInfo;-><init>()V
31295     move-object/from16 v0, v61
31297     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
31299     move-object/from16 v0, v48
31301     invoke-static {v5, v0}, Landroid/os/Debug;->getMemoryInfo(ILandroid/os/Debug$MemoryInfo;)V
31303     goto/16 :goto_17b
31305     :cond_23a
31306     const/16 v51, 0x0
31308     :goto_23c
31309     move-object/from16 v0, v55
31311     array-length v5, v0
31313     move/from16 v0, v51
31315     if-ge v0, v5, :cond_26b
31317     move-object/from16 v0, v61
31319     iget v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
31321     sget-object v6, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
31323     aget v6, v6, v51
31325     if-le v5, v6, :cond_256
31327     move-object/from16 v0, v55
31329     array-length v5, v0
31331     add-int/lit8 v5, v5, -0x1
31333     move/from16 v0, v51
31335     if-ne v0, v5, :cond_26f
31337     :cond_256
31338     aget-wide v5, v55, v51
31340     add-long/2addr v5, v7
31342     aput-wide v5, v55, v51
31344     aget-object v5, v54, v51
31346     if-nez v5, :cond_266
31348     new-instance v5, Ljava/util/ArrayList;
31350     invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
31352     aput-object v5, v54, v51
31354     :cond_266
31355     aget-object v5, v54, v51
31357     invoke-virtual {v5, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
31359     :cond_26b
31360     add-int/lit8 v41, v41, -0x1
31362     goto/16 :goto_11e
31364     :cond_26f
31365     add-int/lit8 v51, v51, 0x1
31367     goto :goto_23c
31369     :cond_272
31370     if-nez v43, :cond_30
31372     invoke-virtual/range {v60 .. v60}, Ljava/util/ArrayList;->size()I
31374     move-result v5
31376     const/4 v6, 0x1
31378     if-le v5, v6, :cond_30
31380     new-instance v37, Ljava/util/ArrayList;
31382     invoke-direct/range {v37 .. v37}, Ljava/util/ArrayList;-><init>()V
31384     new-instance v9, Lcom/android/server/am/ActivityManagerService$MemItem;
31386     const-string v10, "Native"
31388     const-string v11, "Native"
31390     const/4 v14, -0x1
31392     invoke-direct/range {v9 .. v14}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
31394     move-object/from16 v0, v37
31396     invoke-virtual {v0, v9}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
31398     new-instance v14, Lcom/android/server/am/ActivityManagerService$MemItem;
31400     const-string v15, "Dalvik"
31402     const-string v16, "Dalvik"
31404     const/16 v19, -0x2
31406     invoke-direct/range {v14 .. v19}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
31408     move-object/from16 v0, v37
31410     invoke-virtual {v0, v14}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
31412     new-instance v19, Lcom/android/server/am/ActivityManagerService$MemItem;
31414     const-string v20, "Unknown"
31416     const-string v21, "Unknown"
31418     const/16 v24, -0x3
31420     invoke-direct/range {v19 .. v24}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
31422     move-object/from16 v0, v37
31424     move-object/from16 v1, v19
31426     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
31428     const/16 v29, 0x0
31430     :goto_2b3
31431     const/16 v5, 0x9
31433     move/from16 v0, v29
31435     if-ge v0, v5, :cond_2d0
31437     invoke-static/range {v29 .. v29}, Landroid/os/Debug$MemoryInfo;->getOtherLabel(I)Ljava/lang/String;
31439     move-result-object v25
31441     new-instance v24, Lcom/android/server/am/ActivityManagerService$MemItem;
31443     aget-wide v27, v50, v29
31445     move-object/from16 v26, v25
31447     invoke-direct/range {v24 .. v29}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
31449     move-object/from16 v0, v37
31451     move-object/from16 v1, v24
31453     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
31455     add-int/lit8 v29, v29, 0x1
31457     goto :goto_2b3
31459     :cond_2d0
31460     new-instance v52, Ljava/util/ArrayList;
31462     invoke-direct/range {v52 .. v52}, Ljava/util/ArrayList;-><init>()V
31464     const/16 v29, 0x0
31466     :goto_2d7
31467     move-object/from16 v0, v55
31469     array-length v5, v0
31471     move/from16 v0, v29
31473     if-ge v0, v5, :cond_309
31475     aget-wide v5, v55, v29
31477     const-wide/16 v9, 0x0
31479     cmp-long v5, v5, v9
31481     if-eqz v5, :cond_306
31483     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
31485     aget-object v25, v5, v29
31487     new-instance v30, Lcom/android/server/am/ActivityManagerService$MemItem;
31489     aget-wide v33, v55, v29
31491     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
31493     aget v35, v5, v29
31495     move-object/from16 v31, v25
31497     move-object/from16 v32, v25
31499     invoke-direct/range {v30 .. v35}, Lcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JI)V
31501     aget-object v5, v54, v29
31503     move-object/from16 v0, v30
31505     iput-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
31507     move-object/from16 v0, v52
31509     move-object/from16 v1, v30
31511     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
31513     :cond_306
31514     add-int/lit8 v29, v29, 0x1
31516     goto :goto_2d7
31518     :cond_309
31519     if-nez p7, :cond_30d
31521     if-eqz p8, :cond_433
31523     :cond_30d
31524     if-eqz p7, :cond_319
31526     const-string v5, "total"
31528     const/4 v6, 0x0
31530     move-object/from16 v0, p7
31532     move-wide/from16 v1, v68
31534     invoke-static {v0, v1, v2, v5, v6}, Lcom/android/server/am/ActivityManagerService;->appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
31536     :cond_319
31537     if-eqz p8, :cond_325
31539     const-string v5, "total"
31541     const/4 v6, 0x1
31543     move-object/from16 v0, p8
31545     move-wide/from16 v1, v68
31547     invoke-static {v0, v1, v2, v5, v6}, Lcom/android/server/am/ActivityManagerService;->appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
31549     :cond_325
31550     const/16 v40, 0x1
31552     const/16 v41, 0x0
31554     :goto_329
31555     invoke-virtual/range {v52 .. v52}, Ljava/util/ArrayList;->size()I
31557     move-result v5
31559     move/from16 v0, v41
31561     if-ge v0, v5, :cond_433
31563     move-object/from16 v0, v52
31565     move/from16 v1, v41
31567     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
31569     move-result-object v49
31571     check-cast v49, Lcom/android/server/am/ActivityManagerService$MemItem;
31573     move-object/from16 v0, v49
31575     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
31577     if-eqz v5, :cond_34c
31579     move-object/from16 v0, v49
31581     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
31583     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
31585     move-result v5
31587     const/4 v6, 0x1
31589     if-ge v5, v6, :cond_34f
31591     :cond_34c
31592     :goto_34c
31593     add-int/lit8 v41, v41, 0x1
31595     goto :goto_329
31597     :cond_34f
31598     move-object/from16 v0, v49
31600     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
31602     const/4 v6, 0x5
31604     if-lt v5, v6, :cond_364
31606     move-object/from16 v0, v49
31608     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
31610     const/4 v6, 0x6
31612     if-eq v5, v6, :cond_364
31614     move-object/from16 v0, v49
31616     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
31618     const/4 v6, 0x7
31620     if-ne v5, v6, :cond_34c
31622     :cond_364
31623     if-eqz p7, :cond_373
31625     move-object/from16 v0, v49
31627     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
31629     if-gtz v5, :cond_373
31631     const-string v5, " / "
31633     move-object/from16 v0, p7
31635     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31637     :cond_373
31638     if-eqz p8, :cond_38d
31640     move-object/from16 v0, v49
31642     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
31644     if-ltz v5, :cond_3e4
31646     if-eqz v40, :cond_386
31648     const-string v5, ":"
31650     move-object/from16 v0, p8
31652     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31654     const/16 v40, 0x0
31656     :cond_386
31657     const-string v5, "\n\t at "
31659     move-object/from16 v0, p8
31661     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31663     :cond_38d
31664     :goto_38d
31665     const/16 v29, 0x0
31667     :goto_38f
31668     move-object/from16 v0, v49
31670     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
31672     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
31674     move-result v5
31676     move/from16 v0, v29
31678     if-ge v0, v5, :cond_3ec
31680     move-object/from16 v0, v49
31682     iget-object v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->subitems:Ljava/util/ArrayList;
31684     move/from16 v0, v29
31686     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
31688     move-result-object v48
31690     check-cast v48, Lcom/android/server/am/ActivityManagerService$MemItem;
31692     if-lez v29, :cond_3bb
31694     if-eqz p7, :cond_3b2
31696     const-string v5, " "
31698     move-object/from16 v0, p7
31700     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31702     :cond_3b2
31703     if-eqz p8, :cond_3bb
31705     const-string v5, "$"
31707     move-object/from16 v0, p8
31709     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31711     :cond_3bb
31712     if-eqz p7, :cond_3d1
31714     move-object/from16 v0, v49
31716     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
31718     if-gtz v5, :cond_3d1
31720     move-object/from16 v0, v48
31722     iget-wide v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->pss:J
31724     move-object/from16 v0, v48
31726     iget-object v9, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->shortLabel:Ljava/lang/String;
31728     const/4 v10, 0x0
31730     move-object/from16 v0, p7
31732     invoke-static {v0, v5, v6, v9, v10}, Lcom/android/server/am/ActivityManagerService;->appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
31734     :cond_3d1
31735     if-eqz p8, :cond_3e1
31737     move-object/from16 v0, v48
31739     iget-wide v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->pss:J
31741     move-object/from16 v0, v48
31743     iget-object v9, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->shortLabel:Ljava/lang/String;
31745     const/4 v10, 0x1
31747     move-object/from16 v0, p8
31749     invoke-static {v0, v5, v6, v9, v10}, Lcom/android/server/am/ActivityManagerService;->appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
31751     :cond_3e1
31752     add-int/lit8 v29, v29, 0x1
31754     goto :goto_38f
31756     :cond_3e4
31757     const-string v5, "$"
31759     move-object/from16 v0, p8
31761     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31763     goto :goto_38d
31765     :cond_3ec
31766     if-eqz p8, :cond_34c
31768     move-object/from16 v0, v49
31770     iget v5, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
31772     if-ltz v5, :cond_34c
31774     const-string v5, "("
31776     move-object/from16 v0, p8
31778     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31780     const/16 v44, 0x0
31782     :goto_3fd
31783     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
31785     array-length v5, v5
31787     move/from16 v0, v44
31789     if-ge v0, v5, :cond_42a
31791     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
31793     aget v5, v5, v44
31795     move-object/from16 v0, v49
31797     iget v6, v0, Lcom/android/server/am/ActivityManagerService$MemItem;->id:I
31799     if-ne v5, v6, :cond_427
31801     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_LABEL:[Ljava/lang/String;
31803     aget-object v5, v5, v44
31805     move-object/from16 v0, p8
31807     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31809     const-string v5, ":"
31811     move-object/from16 v0, p8
31813     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31815     sget-object v5, Lcom/android/server/am/ActivityManagerService;->DUMP_MEM_OOM_ADJ:[I
31817     aget v5, v5, v44
31819     move-object/from16 v0, p8
31821     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
31823     :cond_427
31824     add-int/lit8 v44, v44, 0x1
31826     goto :goto_3fd
31828     :cond_42a
31829     const-string v5, ")"
31831     move-object/from16 v0, p8
31833     invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
31835     goto/16 :goto_34c
31837     :cond_433
31838     if-nez p5, :cond_44e
31840     if-nez v53, :cond_44e
31842     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
31844     const-string v5, "Total PSS by process:"
31846     move-object/from16 v0, p2
31848     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31850     const-string v5, "  "
31852     const/4 v6, 0x1
31854     move-object/from16 v0, p2
31856     move-object/from16 v1, v59
31858     invoke-static {v0, v5, v1, v6}, Lcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
31860     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
31862     :cond_44e
31863     const-string v5, "Total PSS by OOM adjustment:"
31865     move-object/from16 v0, p2
31867     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31869     const-string v5, "  "
31871     const/4 v6, 0x0
31873     move-object/from16 v0, p2
31875     move-object/from16 v1, v52
31877     invoke-static {v0, v5, v1, v6}, Lcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
31879     if-nez v53, :cond_479
31881     if-eqz p6, :cond_54b
31883     move-object/from16 v58, p6
31885     :goto_465
31886     invoke-virtual/range {v58 .. v58}, Ljava/io/PrintWriter;->println()V
31888     const-string v5, "Total PSS by category:"
31890     move-object/from16 v0, v58
31892     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31894     const-string v5, "  "
31896     const/4 v6, 0x1
31898     move-object/from16 v0, v58
31900     move-object/from16 v1, v37
31902     invoke-static {v0, v5, v1, v6}, Lcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/ArrayList;Z)V
31904     :cond_479
31905     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
31907     const-string v5, "Total PSS: "
31909     move-object/from16 v0, p2
31911     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
31913     move-object/from16 v0, p2
31915     move-wide/from16 v1, v68
31917     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
31919     const-string v5, " kB"
31921     move-object/from16 v0, p2
31923     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
31925     const/4 v5, 0x1
31927     new-array v0, v5, [I
31929     move-object/from16 v36, v0
31931     const/4 v5, 0x0
31933     const/16 v6, 0x2020
31935     aput v6, v36, v5
31937     const/4 v5, 0x1
31939     new-array v0, v5, [J
31941     move-object/from16 v45, v0
31943     const-string v5, "/sys/kernel/mm/ksm/pages_shared"
31945     const/4 v6, 0x0
31947     const/4 v9, 0x0
31949     move-object/from16 v0, v36
31951     move-object/from16 v1, v45
31953     invoke-static {v5, v0, v6, v1, v9}, Landroid/os/Process;->readProcFile(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z
31955     const/4 v5, 0x0
31957     aget-wide v5, v45, v5
31959     const-wide/16 v9, 0x1000
31961     mul-long/2addr v5, v9
31963     const-wide/16 v9, 0x400
31965     div-long v64, v5, v9
31967     const/4 v5, 0x0
31969     const-wide/16 v9, 0x0
31971     aput-wide v9, v45, v5
31973     const-string v5, "/sys/kernel/mm/ksm/pages_sharing"
31975     const/4 v6, 0x0
31977     const/4 v9, 0x0
31979     move-object/from16 v0, v36
31981     move-object/from16 v1, v45
31983     invoke-static {v5, v0, v6, v1, v9}, Landroid/os/Process;->readProcFile(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z
31985     const/4 v5, 0x0
31987     aget-wide v5, v45, v5
31989     const-wide/16 v9, 0x1000
31991     mul-long/2addr v5, v9
31993     const-wide/16 v9, 0x400
31995     div-long v66, v5, v9
31997     const/4 v5, 0x0
31999     const-wide/16 v9, 0x0
32001     aput-wide v9, v45, v5
32003     const-string v5, "/sys/kernel/mm/ksm/pages_unshared"
32005     const/4 v6, 0x0
32007     const/4 v9, 0x0
32009     move-object/from16 v0, v36
32011     move-object/from16 v1, v45
32013     invoke-static {v5, v0, v6, v1, v9}, Landroid/os/Process;->readProcFile(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z
32015     const/4 v5, 0x0
32017     aget-wide v5, v45, v5
32019     const-wide/16 v9, 0x1000
32021     mul-long/2addr v5, v9
32023     const-wide/16 v9, 0x400
32025     div-long v70, v5, v9
32027     const/4 v5, 0x0
32029     const-wide/16 v9, 0x0
32031     aput-wide v9, v45, v5
32033     const-string v5, "/sys/kernel/mm/ksm/pages_volatile"
32035     const/4 v6, 0x0
32037     const/4 v9, 0x0
32039     move-object/from16 v0, v36
32041     move-object/from16 v1, v45
32043     invoke-static {v5, v0, v6, v1, v9}, Landroid/os/Process;->readProcFile(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z
32045     const/4 v5, 0x0
32047     aget-wide v5, v45, v5
32049     const-wide/16 v9, 0x1000
32051     mul-long/2addr v5, v9
32053     const-wide/16 v9, 0x400
32055     div-long v74, v5, v9
32057     const-string v5, "      KSM: "
32059     move-object/from16 v0, p2
32061     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32063     move-object/from16 v0, p2
32065     move-wide/from16 v1, v66
32067     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
32069     const-string v5, " kB saved from shared "
32071     move-object/from16 v0, p2
32073     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32075     move-object/from16 v0, p2
32077     move-wide/from16 v1, v64
32079     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
32081     const-string v5, " kB"
32083     move-object/from16 v0, p2
32085     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32087     const-string v5, "           "
32089     move-object/from16 v0, p2
32091     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32093     move-object/from16 v0, p2
32095     move-wide/from16 v1, v70
32097     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
32099     const-string v5, " kB unshared; "
32101     move-object/from16 v0, p2
32103     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32105     move-object/from16 v0, p2
32107     move-wide/from16 v1, v74
32109     invoke-virtual {v0, v1, v2}, Ljava/io/PrintWriter;->print(J)V
32111     const-string v5, " kB volatile"
32113     move-object/from16 v0, p2
32115     invoke-virtual {v0, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32117     goto/16 :goto_30
32119     :cond_54b
32120     move-object/from16 v58, p2
32122     goto/16 :goto_465
32123 .end method
32125 .method dumpBroadcastsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
32126     .registers 31
32128     const/4 v9, 0x0
32130     const/16 v19, 0x0
32132     const-string v3, "history"
32134     move-object/from16 v0, p6
32136     invoke-virtual {v3, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
32138     move-result v3
32140     if-eqz v3, :cond_24
32142     move-object/from16 v0, p3
32144     array-length v3, v0
32146     move/from16 v0, p4
32148     if-ge v0, v3, :cond_20
32150     const-string v3, "-s"
32152     aget-object v5, p3, p4
32154     invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
32156     move-result v3
32158     if-eqz v3, :cond_20
32160     const/16 p5, 0x0
32162     :cond_20
32163     const/16 v19, 0x1
32165     const/16 p6, 0x0
32167     :cond_24
32168     const-string v3, "ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts)"
32170     move-object/from16 v0, p2
32172     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32174     if-nez v19, :cond_a5
32176     if-eqz p5, :cond_a5
32178     move-object/from16 v0, p0
32180     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
32182     invoke-virtual {v3}, Ljava/util/HashMap;->size()I
32184     move-result v3
32186     if-lez v3, :cond_8f
32188     const/16 v20, 0x0
32190     move-object/from16 v0, p0
32192     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
32194     invoke-virtual {v3}, Ljava/util/HashMap;->values()Ljava/util/Collection;
32196     move-result-object v3
32198     invoke-interface {v3}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
32200     move-result-object v17
32202     :cond_47
32203     :goto_47
32204     invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->hasNext()Z
32206     move-result v3
32208     if-eqz v3, :cond_8f
32210     invoke-interface/range {v17 .. v17}, Ljava/util/Iterator;->next()Ljava/lang/Object;
32212     move-result-object v22
32214     check-cast v22, Lcom/android/server/am/ReceiverList;
32216     if-eqz p6, :cond_6b
32218     move-object/from16 v0, v22
32220     iget-object v3, v0, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
32222     if-eqz v3, :cond_47
32224     move-object/from16 v0, v22
32226     iget-object v3, v0, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
32228     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
32230     iget-object v3, v3, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
32232     move-object/from16 v0, p6
32234     invoke-virtual {v0, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
32236     move-result v3
32238     if-eqz v3, :cond_47
32240     :cond_6b
32241     if-nez v20, :cond_77
32243     const-string v3, "  Registered Receivers:"
32245     move-object/from16 v0, p2
32247     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32249     const/4 v9, 0x1
32251     const/16 v20, 0x1
32253     :cond_77
32254     const-string v3, "  * "
32256     move-object/from16 v0, p2
32258     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32260     move-object/from16 v0, p2
32262     move-object/from16 v1, v22
32264     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
32266     const-string v3, "    "
32268     move-object/from16 v0, v22
32270     move-object/from16 v1, p2
32272     invoke-virtual {v0, v1, v3}, Lcom/android/server/am/ReceiverList;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
32274     goto :goto_47
32276     :cond_8f
32277     move-object/from16 v0, p0
32279     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
32281     if-eqz v9, :cond_c6
32283     const-string v4, "\n  Receiver Resolver Table:"
32285     :goto_97
32286     const-string v5, "    "
32288     const/4 v7, 0x0
32290     move-object/from16 v3, p2
32292     move-object/from16 v6, p6
32294     invoke-virtual/range {v2 .. v7}, Lcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Z
32296     move-result v3
32298     if-eqz v3, :cond_a5
32300     const/4 v9, 0x1
32302     :cond_a5
32303     move-object/from16 v0, p0
32305     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
32307     array-length v0, v11
32309     move/from16 v18, v0
32311     const/4 v15, 0x0
32313     :goto_ad
32314     move/from16 v0, v18
32316     if-ge v15, v0, :cond_c9
32318     aget-object v2, v11, v15
32320     move-object/from16 v3, p1
32322     move-object/from16 v4, p2
32324     move-object/from16 v5, p3
32326     move/from16 v6, p4
32328     move/from16 v7, p5
32330     move-object/from16 v8, p6
32332     invoke-virtual/range {v2 .. v9}, Lcom/android/server/am/BroadcastQueue;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;Z)Z
32334     move-result v9
32336     add-int/lit8 v15, v15, 0x1
32338     goto :goto_ad
32340     :cond_c6
32341     const-string v4, "  Receiver Resolver Table:"
32343     goto :goto_97
32345     :cond_c9
32346     const/4 v9, 0x1
32348     if-nez v19, :cond_1a2
32350     move-object/from16 v0, p0
32352     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
32354     if-eqz v3, :cond_1a2
32356     if-nez p6, :cond_1a2
32358     const/16 v23, 0x0
32360     :goto_d6
32361     move-object/from16 v0, p0
32363     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
32365     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
32367     move-result v3
32369     move/from16 v0, v23
32371     if-ge v0, v3, :cond_1a2
32373     if-eqz v9, :cond_e7
32375     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
32377     :cond_e7
32378     const/4 v9, 0x1
32380     const-string v3, "  Sticky broadcasts for user "
32382     move-object/from16 v0, p2
32384     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32386     move-object/from16 v0, p0
32388     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
32390     move/from16 v0, v23
32392     invoke-virtual {v3, v0}, Landroid/util/SparseArray;->keyAt(I)I
32394     move-result v3
32396     move-object/from16 v0, p2
32398     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(I)V
32400     const-string v3, ":"
32402     move-object/from16 v0, p2
32404     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32406     new-instance v4, Ljava/lang/StringBuilder;
32408     const/16 v3, 0x80
32410     invoke-direct {v4, v3}, Ljava/lang/StringBuilder;-><init>(I)V
32412     move-object/from16 v0, p0
32414     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
32416     move/from16 v0, v23
32418     invoke-virtual {v3, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
32420     move-result-object v3
32422     check-cast v3, Ljava/util/HashMap;
32424     invoke-virtual {v3}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
32426     move-result-object v3
32428     invoke-interface {v3}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
32430     move-result-object v15
32432     :cond_120
32433     :goto_120
32434     invoke-interface {v15}, Ljava/util/Iterator;->hasNext()Z
32436     move-result v3
32438     if-eqz v3, :cond_19e
32440     invoke-interface {v15}, Ljava/util/Iterator;->next()Ljava/lang/Object;
32442     move-result-object v13
32444     check-cast v13, Ljava/util/Map$Entry;
32446     const-string v3, "  * Sticky action "
32448     move-object/from16 v0, p2
32450     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32452     invoke-interface {v13}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
32454     move-result-object v3
32456     check-cast v3, Ljava/lang/String;
32458     move-object/from16 v0, p2
32460     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32462     if-eqz p5, :cond_196
32464     const-string v3, ":"
32466     move-object/from16 v0, p2
32468     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32470     invoke-interface {v13}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
32472     move-result-object v16
32474     check-cast v16, Ljava/util/ArrayList;
32476     invoke-virtual/range {v16 .. v16}, Ljava/util/ArrayList;->size()I
32478     move-result v10
32480     const/4 v14, 0x0
32482     :goto_152
32483     if-ge v14, v10, :cond_120
32485     const/4 v3, 0x0
32487     invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->setLength(I)V
32489     const-string v3, "    Intent: "
32491     invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32493     move-object/from16 v0, v16
32495     invoke-virtual {v0, v14}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
32497     move-result-object v3
32499     check-cast v3, Landroid/content/Intent;
32501     const/4 v5, 0x0
32503     const/4 v6, 0x1
32505     const/4 v7, 0x0
32507     const/4 v8, 0x0
32509     invoke-virtual/range {v3 .. v8}, Landroid/content/Intent;->toShortString(Ljava/lang/StringBuilder;ZZZZ)V
32511     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32513     move-result-object v3
32515     move-object/from16 v0, p2
32517     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32519     move-object/from16 v0, v16
32521     invoke-virtual {v0, v14}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
32523     move-result-object v3
32525     check-cast v3, Landroid/content/Intent;
32527     invoke-virtual {v3}, Landroid/content/Intent;->getExtras()Landroid/os/Bundle;
32529     move-result-object v12
32531     if-eqz v12, :cond_193
32533     const-string v3, "      "
32535     move-object/from16 v0, p2
32537     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
32539     invoke-virtual {v12}, Landroid/os/Bundle;->toString()Ljava/lang/String;
32541     move-result-object v3
32543     move-object/from16 v0, p2
32545     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32547     :cond_193
32548     add-int/lit8 v14, v14, 0x1
32550     goto :goto_152
32552     :cond_196
32553     const-string v3, ""
32555     move-object/from16 v0, p2
32557     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32559     goto :goto_120
32561     :cond_19e
32562     add-int/lit8 v23, v23, 0x1
32564     goto/16 :goto_d6
32566     :cond_1a2
32567     if-nez v19, :cond_1fc
32569     if-eqz p5, :cond_1fc
32571     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
32573     move-object/from16 v0, p0
32575     iget-object v11, v0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
32577     array-length v0, v11
32579     move/from16 v18, v0
32581     const/4 v15, 0x0
32583     :goto_1b1
32584     move/from16 v0, v18
32586     if-ge v15, v0, :cond_1e4
32588     aget-object v21, v11, v15
32590     new-instance v3, Ljava/lang/StringBuilder;
32592     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
32594     const-string v5, "  mBroadcastsScheduled ["
32596     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32598     move-result-object v3
32600     move-object/from16 v0, v21
32602     iget-object v5, v0, Lcom/android/server/am/BroadcastQueue;->mQueueName:Ljava/lang/String;
32604     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32606     move-result-object v3
32608     const-string v5, "]="
32610     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32612     move-result-object v3
32614     move-object/from16 v0, v21
32616     iget-boolean v5, v0, Lcom/android/server/am/BroadcastQueue;->mBroadcastsScheduled:Z
32618     invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
32620     move-result-object v3
32622     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32624     move-result-object v3
32626     move-object/from16 v0, p2
32628     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32630     add-int/lit8 v15, v15, 0x1
32632     goto :goto_1b1
32634     :cond_1e4
32635     const-string v3, "  mHandler:"
32637     move-object/from16 v0, p2
32639     invoke-virtual {v0, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32641     move-object/from16 v0, p0
32643     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
32645     new-instance v5, Landroid/util/PrintWriterPrinter;
32647     move-object/from16 v0, p2
32649     invoke-direct {v5, v0}, Landroid/util/PrintWriterPrinter;-><init>(Ljava/io/PrintWriter;)V
32651     const-string v6, "    "
32653     invoke-virtual {v3, v5, v6}, Landroid/os/Handler;->dump(Landroid/util/Printer;Ljava/lang/String;)V
32655     const/4 v9, 0x1
32657     :cond_1fc
32658     return v9
32659 .end method
32661 .method final dumpDbInfo(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
32662     .registers 11
32664     const/4 v5, 0x0
32666     invoke-virtual {p0, p2, v5, p3}, Lcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;I[Ljava/lang/String;)Ljava/util/ArrayList;
32668     move-result-object v2
32670     if-nez v2, :cond_8
32672     :cond_7
32673     return-void
32675     :cond_8
32676     const-string v5, "Applications Database Info:"
32678     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32680     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
32682     move-result v5
32684     add-int/lit8 v1, v5, -0x1
32686     :goto_13
32687     if-ltz v1, :cond_7
32689     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
32691     move-result-object v3
32693     check-cast v3, Lcom/android/server/am/ProcessRecord;
32695     iget-object v5, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
32697     if-eqz v5, :cond_64
32699     new-instance v5, Ljava/lang/StringBuilder;
32701     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
32703     const-string v6, "\n** Database info for pid "
32705     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32707     move-result-object v5
32709     iget v6, v3, Lcom/android/server/am/ProcessRecord;->pid:I
32711     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
32713     move-result-object v5
32715     const-string v6, " ["
32717     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32719     move-result-object v5
32721     iget-object v6, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
32723     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32725     move-result-object v5
32727     const-string v6, "] **"
32729     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32731     move-result-object v5
32733     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32735     move-result-object v5
32737     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32739     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
32741     :try_start_4c
32742     new-instance v4, Lcom/android/server/am/TransferPipe;
32744     invoke-direct {v4}, Lcom/android/server/am/TransferPipe;-><init>()V
32745     :try_end_51
32746     .catch Ljava/io/IOException; {:try_start_4c .. :try_end_51} :catch_6c
32747     .catch Landroid/os/RemoteException; {:try_start_4c .. :try_end_51} :catch_87
32749     :try_start_51
32750     iget-object v5, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
32752     invoke-virtual {v4}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
32754     move-result-object v6
32756     invoke-virtual {v6}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
32758     move-result-object v6
32760     invoke-interface {v5, v6, p3}, Landroid/app/IApplicationThread;->dumpDbInfo(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
32762     invoke-virtual {v4, p1}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;)V
32763     :try_end_61
32764     .catchall {:try_start_51 .. :try_end_61} :catchall_67
32766     :try_start_61
32767     invoke-virtual {v4}, Lcom/android/server/am/TransferPipe;->kill()V
32769     :cond_64
32770     :goto_64
32771     add-int/lit8 v1, v1, -0x1
32773     goto :goto_13
32775     :catchall_67
32776     move-exception v5
32778     invoke-virtual {v4}, Lcom/android/server/am/TransferPipe;->kill()V
32780     throw v5
32781     :try_end_6c
32782     .catch Ljava/io/IOException; {:try_start_61 .. :try_end_6c} :catch_6c
32783     .catch Landroid/os/RemoteException; {:try_start_61 .. :try_end_6c} :catch_87
32785     :catch_6c
32786     move-exception v0
32788     new-instance v5, Ljava/lang/StringBuilder;
32790     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
32792     const-string v6, "Failure while dumping the app: "
32794     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32796     move-result-object v5
32798     invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32800     move-result-object v5
32802     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32804     move-result-object v5
32806     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32808     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
32810     goto :goto_64
32812     :catch_87
32813     move-exception v0
32815     new-instance v5, Ljava/lang/StringBuilder;
32817     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
32819     const-string v6, "Got a RemoteException while dumping the app "
32821     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32823     move-result-object v5
32825     invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32827     move-result-object v5
32829     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32831     move-result-object v5
32833     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32835     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
32837     goto :goto_64
32838 .end method
32840 .method final dumpGraphicsHardwareUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
32841     .registers 15
32843     const/4 v9, 0x0
32845     invoke-virtual {p0, p2, v9, p3}, Lcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;I[Ljava/lang/String;)Ljava/util/ArrayList;
32847     move-result-object v2
32849     if-nez v2, :cond_8
32851     :cond_7
32852     return-void
32854     :cond_8
32855     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
32857     move-result-wide v7
32859     invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
32861     move-result-wide v4
32863     const-string v9, "Applications Graphics Acceleration Info:"
32865     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32867     new-instance v9, Ljava/lang/StringBuilder;
32869     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
32871     const-string v10, "Uptime: "
32873     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32875     move-result-object v9
32877     invoke-virtual {v9, v7, v8}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
32879     move-result-object v9
32881     const-string v10, " Realtime: "
32883     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32885     move-result-object v9
32887     invoke-virtual {v9, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
32889     move-result-object v9
32891     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32893     move-result-object v9
32895     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32897     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
32899     move-result v9
32901     add-int/lit8 v1, v9, -0x1
32903     :goto_3b
32904     if-ltz v1, :cond_7
32906     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
32908     move-result-object v3
32910     check-cast v3, Lcom/android/server/am/ProcessRecord;
32912     iget-object v9, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
32914     if-eqz v9, :cond_8c
32916     new-instance v9, Ljava/lang/StringBuilder;
32918     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
32920     const-string v10, "\n** Graphics info for pid "
32922     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32924     move-result-object v9
32926     iget v10, v3, Lcom/android/server/am/ProcessRecord;->pid:I
32928     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
32930     move-result-object v9
32932     const-string v10, " ["
32934     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32936     move-result-object v9
32938     iget-object v10, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
32940     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32942     move-result-object v9
32944     const-string v10, "] **"
32946     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
32948     move-result-object v9
32950     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
32952     move-result-object v9
32954     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
32956     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
32958     :try_start_74
32959     new-instance v6, Lcom/android/server/am/TransferPipe;
32961     invoke-direct {v6}, Lcom/android/server/am/TransferPipe;-><init>()V
32962     :try_end_79
32963     .catch Ljava/io/IOException; {:try_start_74 .. :try_end_79} :catch_94
32964     .catch Landroid/os/RemoteException; {:try_start_74 .. :try_end_79} :catch_af
32966     :try_start_79
32967     iget-object v9, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
32969     invoke-virtual {v6}, Lcom/android/server/am/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
32971     move-result-object v10
32973     invoke-virtual {v10}, Landroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
32975     move-result-object v10
32977     invoke-interface {v9, v10, p3}, Landroid/app/IApplicationThread;->dumpGfxInfo(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
32979     invoke-virtual {v6, p1}, Lcom/android/server/am/TransferPipe;->go(Ljava/io/FileDescriptor;)V
32980     :try_end_89
32981     .catchall {:try_start_79 .. :try_end_89} :catchall_8f
32983     :try_start_89
32984     invoke-virtual {v6}, Lcom/android/server/am/TransferPipe;->kill()V
32986     :cond_8c
32987     :goto_8c
32988     add-int/lit8 v1, v1, -0x1
32990     goto :goto_3b
32992     :catchall_8f
32993     move-exception v9
32995     invoke-virtual {v6}, Lcom/android/server/am/TransferPipe;->kill()V
32997     throw v9
32998     :try_end_94
32999     .catch Ljava/io/IOException; {:try_start_89 .. :try_end_94} :catch_94
33000     .catch Landroid/os/RemoteException; {:try_start_89 .. :try_end_94} :catch_af
33002     :catch_94
33003     move-exception v0
33005     new-instance v9, Ljava/lang/StringBuilder;
33007     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
33009     const-string v10, "Failure while dumping the app: "
33011     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33013     move-result-object v9
33015     invoke-virtual {v9, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
33017     move-result-object v9
33019     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33021     move-result-object v9
33023     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33025     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
33027     goto :goto_8c
33029     :catch_af
33030     move-exception v0
33032     new-instance v9, Ljava/lang/StringBuilder;
33034     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
33036     const-string v10, "Got a RemoteException while dumping the app "
33038     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33040     move-result-object v9
33042     invoke-virtual {v9, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
33044     move-result-object v9
33046     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33048     move-result-object v9
33050     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33052     invoke-virtual {p2}, Ljava/io/PrintWriter;->flush()V
33054     goto :goto_8c
33055 .end method
33057 .method public dumpHeap(Ljava/lang/String;IZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)Z
33058     .registers 12
33059     .annotation system Ldalvik/annotation/Throws;
33060         value = {
33061             Landroid/os/RemoteException;
33062         }
33063     .end annotation
33065     :try_start_0
33066     monitor-enter p0
33067     :try_end_1
33068     .catchall {:try_start_0 .. :try_end_1} :catchall_1d
33069     .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_1} :catch_14
33071     :try_start_1
33072     const-string v3, "android.permission.SET_ACTIVITY_WATCHER"
33074     invoke-virtual {p0, v3}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
33076     move-result v3
33078     if-eqz v3, :cond_24
33080     new-instance v3, Ljava/lang/SecurityException;
33082     const-string v4, "Requires permission android.permission.SET_ACTIVITY_WATCHER"
33084     invoke-direct {v3, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
33086     throw v3
33088     :catchall_11
33089     move-exception v3
33091     monitor-exit p0
33092     :try_end_13
33093     .catchall {:try_start_1 .. :try_end_13} :catchall_11
33095     :try_start_13
33096     throw v3
33097     :try_end_14
33098     .catchall {:try_start_13 .. :try_end_14} :catchall_1d
33099     .catch Landroid/os/RemoteException; {:try_start_13 .. :try_end_14} :catch_14
33101     :catch_14
33102     move-exception v0
33104     :try_start_15
33105     new-instance v3, Ljava/lang/IllegalStateException;
33107     const-string v4, "Process disappeared"
33109     invoke-direct {v3, v4}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
33111     throw v3
33112     :try_end_1d
33113     .catchall {:try_start_15 .. :try_end_1d} :catchall_1d
33115     :catchall_1d
33116     move-exception v3
33118     if-eqz p5, :cond_23
33120     :try_start_20
33121     invoke-virtual {p5}, Landroid/os/ParcelFileDescriptor;->close()V
33122     :try_end_23
33123     .catch Ljava/io/IOException; {:try_start_20 .. :try_end_23} :catch_92
33125     :cond_23
33126     :goto_23
33127     throw v3
33129     :cond_24
33130     if-nez p5, :cond_2e
33132     :try_start_26
33133     new-instance v3, Ljava/lang/IllegalArgumentException;
33135     const-string v4, "null fd"
33137     invoke-direct {v3, v4}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
33139     throw v3
33141     :cond_2e
33142     const-string v3, "dumpHeap"
33144     invoke-direct {p0, p1, p2, v3}, Lcom/android/server/am/ActivityManagerService;->findProcessLocked(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/am/ProcessRecord;
33146     move-result-object v2
33148     if-eqz v2, :cond_3a
33150     iget-object v3, v2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
33152     if-nez v3, :cond_53
33154     :cond_3a
33155     new-instance v3, Ljava/lang/IllegalArgumentException;
33157     new-instance v4, Ljava/lang/StringBuilder;
33159     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
33161     const-string v5, "Unknown process: "
33163     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33165     move-result-object v4
33167     invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33169     move-result-object v4
33171     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33173     move-result-object v4
33175     invoke-direct {v3, v4}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
33177     throw v3
33179     :cond_53
33180     const-string v3, "1"
33182     const-string v4, "ro.debuggable"
33184     const-string v5, "0"
33186     invoke-static {v4, v5}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
33188     move-result-object v4
33190     invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
33192     move-result v1
33194     if-nez v1, :cond_84
33196     iget-object v3, v2, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
33198     iget v3, v3, Landroid/content/pm/ApplicationInfo;->flags:I
33200     and-int/lit8 v3, v3, 0x2
33202     if-nez v3, :cond_84
33204     new-instance v3, Ljava/lang/SecurityException;
33206     new-instance v4, Ljava/lang/StringBuilder;
33208     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
33210     const-string v5, "Process not debuggable: "
33212     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33214     move-result-object v4
33216     invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
33218     move-result-object v4
33220     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33222     move-result-object v4
33224     invoke-direct {v3, v4}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
33226     throw v3
33228     :cond_84
33229     iget-object v3, v2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
33231     invoke-interface {v3, p3, p4, p5}, Landroid/app/IApplicationThread;->dumpHeap(ZLjava/lang/String;Landroid/os/ParcelFileDescriptor;)V
33233     const/4 p5, 0x0
33235     const/4 v3, 0x1
33237     monitor-exit p0
33238     :try_end_8c
33239     .catchall {:try_start_26 .. :try_end_8c} :catchall_11
33241     if-eqz p5, :cond_91
33243     :try_start_8e
33244     invoke-virtual {p5}, Landroid/os/ParcelFileDescriptor;->close()V
33245     :try_end_91
33246     .catch Ljava/io/IOException; {:try_start_8e .. :try_end_91} :catch_94
33248     :cond_91
33249     :goto_91
33250     return v3
33252     :catch_92
33253     move-exception v4
33255     goto :goto_23
33257     :catch_94
33258     move-exception v4
33260     goto :goto_91
33261 .end method
33263 .method dumpOomLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZ)Z
33264     .registers 14
33266     const/4 v5, 0x0
33268     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
33270     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
33272     move-result v0
33274     if-lez v0, :cond_ad
33276     if-eqz v5, :cond_10
33278     const-string v0, " "
33280     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33282     :cond_10
33283     const/4 v5, 0x1
33285     const-string v0, "  OOM levels:"
33287     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33289     const-string v0, "    SYSTEM_ADJ: "
33291     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33293     const/16 v0, -0x10
33295     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33297     const-string v0, "    PERSISTENT_PROC_ADJ: "
33299     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33301     const/16 v0, -0xc
33303     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33305     const-string v0, "    FOREGROUND_APP_ADJ: "
33307     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33309     const/4 v0, 0x0
33311     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33313     const-string v0, "    VISIBLE_APP_ADJ: "
33315     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33317     const/4 v0, 0x1
33319     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33321     const-string v0, "    PERCEPTIBLE_APP_ADJ: "
33323     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33325     const/4 v0, 0x2
33327     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33329     const-string v0, "    HEAVY_WEIGHT_APP_ADJ: "
33331     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33333     const/4 v0, 0x3
33335     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33337     const-string v0, "    BACKUP_APP_ADJ: "
33339     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33341     const/4 v0, 0x4
33343     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33345     const-string v0, "    SERVICE_ADJ: "
33347     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33349     const/4 v0, 0x5
33351     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33353     const-string v0, "    HOME_APP_ADJ: "
33355     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33357     const/4 v0, 0x6
33359     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33361     const-string v0, "    PREVIOUS_APP_ADJ: "
33363     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33365     const/4 v0, 0x7
33367     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33369     const-string v0, "    SERVICE_B_ADJ: "
33371     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33373     const/16 v0, 0x8
33375     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33377     const-string v0, "    HIDDEN_APP_MIN_ADJ: "
33379     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33381     sget v0, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
33383     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33385     const-string v0, "    HIDDEN_APP_MAX_ADJ: "
33387     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33389     const/16 v0, 0xf
33391     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(I)V
33393     if-eqz v5, :cond_97
33395     const-string v0, " "
33397     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33399     :cond_97
33400     const/4 v5, 0x1
33402     const-string v0, "  Process OOM control:"
33404     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33406     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
33408     const-string v3, "    "
33410     const-string v4, "Proc"
33412     const-string v5, "PERS"
33414     const/4 v6, 0x1
33416     const/4 v7, 0x0
33418     move-object v0, p2
33420     move-object v1, p0
33422     invoke-static/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->dumpProcessOomList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Z
33424     const/4 v5, 0x1
33426     :cond_ad
33427     const/4 v7, 0x0
33429     move-object v0, p0
33431     move-object v1, p1
33433     move-object v2, p2
33435     move-object v3, p3
33437     move v4, p4
33439     move v6, p5
33441     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->dumpProcessesToGc(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
33443     move-result v5
33445     invoke-virtual {p2}, Ljava/io/PrintWriter;->println()V
33447     new-instance v0, Ljava/lang/StringBuilder;
33449     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
33451     const-string v1, "  mHomeProcess: "
33453     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33455     move-result-object v0
33457     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
33459     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
33461     move-result-object v0
33463     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33465     move-result-object v0
33467     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33469     new-instance v0, Ljava/lang/StringBuilder;
33471     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
33473     const-string v1, "  mPreviousProcess: "
33475     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33477     move-result-object v0
33479     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
33481     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
33483     move-result-object v0
33485     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33487     move-result-object v0
33489     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33491     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
33493     if-eqz v0, :cond_107
33495     new-instance v0, Ljava/lang/StringBuilder;
33497     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
33499     const-string v1, "  mHeavyWeightProcess: "
33501     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
33503     move-result-object v0
33505     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
33507     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
33509     move-result-object v0
33511     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
33513     move-result-object v0
33515     invoke-virtual {p2, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33517     :cond_107
33518     const/4 v0, 0x1
33520     return v0
33521 .end method
33523 .method dumpPendingIntentsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
33524     .registers 13
33526     const/4 v1, 0x0
33528     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
33530     invoke-virtual {v5}, Ljava/util/HashMap;->size()I
33532     move-result v5
33534     if-lez v5, :cond_5d
33536     const/4 v2, 0x0
33538     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
33540     invoke-virtual {v5}, Ljava/util/HashMap;->values()Ljava/util/Collection;
33542     move-result-object v5
33544     invoke-interface {v5}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
33546     move-result-object v0
33548     :cond_14
33549     :goto_14
33550     invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
33552     move-result v5
33554     if-eqz v5, :cond_5d
33556     invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
33558     move-result-object v4
33560     check-cast v4, Ljava/lang/ref/WeakReference;
33562     if-eqz v4, :cond_52
33564     invoke-virtual {v4}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
33566     move-result-object v5
33568     check-cast v5, Lcom/android/server/am/PendingIntentRecord;
33570     move-object v3, v5
33572     :goto_29
33573     if-eqz p6, :cond_37
33575     if-eqz v3, :cond_14
33577     iget-object v5, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
33579     iget-object v5, v5, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
33581     invoke-virtual {p6, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
33583     move-result v5
33585     if-eqz v5, :cond_14
33587     :cond_37
33588     if-nez v2, :cond_3f
33590     const-string v5, "ACTIVITY MANAGER PENDING INTENTS (dumpsys activity intents)"
33592     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33594     const/4 v2, 0x1
33596     :cond_3f
33597     const/4 v1, 0x1
33599     if-eqz v3, :cond_54
33601     const-string v5, "  * "
33603     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33605     invoke-virtual {p2, v3}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
33607     if-eqz p5, :cond_14
33609     const-string v5, "    "
33611     invoke-virtual {v3, p2, v5}, Lcom/android/server/am/PendingIntentRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
33613     goto :goto_14
33615     :cond_52
33616     const/4 v3, 0x0
33618     goto :goto_29
33620     :cond_54
33621     const-string v5, "  * "
33623     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33625     invoke-virtual {p2, v4}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
33627     goto :goto_14
33629     :cond_5d
33630     return v1
33631 .end method
33633 .method dumpProcessesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
33634     .registers 38
33636     const/4 v7, 0x0
33638     const/16 v20, 0x0
33640     const-string v2, "ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)"
33642     move-object/from16 v0, p2
33644     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33646     if-eqz p5, :cond_96
33648     move-object/from16 v0, p0
33650     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
33652     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
33654     move-result-object v2
33656     invoke-virtual {v2}, Ljava/util/HashMap;->values()Ljava/util/Collection;
33658     move-result-object v2
33660     invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
33662     move-result-object v14
33664     :cond_1c
33665     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
33667     move-result v2
33669     if-eqz v2, :cond_96
33671     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
33673     move-result-object v24
33675     check-cast v24, Landroid/util/SparseArray;
33677     invoke-virtual/range {v24 .. v24}, Landroid/util/SparseArray;->size()I
33679     move-result v11
33681     const/4 v15, 0x0
33683     :goto_2d
33684     if-ge v15, v11, :cond_1c
33686     move-object/from16 v0, v24
33688     invoke-virtual {v0, v15}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
33690     move-result-object v27
33692     check-cast v27, Lcom/android/server/am/ProcessRecord;
33694     if-eqz p6, :cond_4a
33696     move-object/from16 v0, v27
33698     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
33700     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
33702     move-object/from16 v0, p6
33704     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
33706     move-result v2
33708     if-nez v2, :cond_4a
33710     :cond_47
33711     :goto_47
33712     add-int/lit8 v15, v15, 0x1
33714     goto :goto_2d
33716     :cond_4a
33717     if-nez v7, :cond_54
33719     const-string v2, "  All known processes:"
33721     move-object/from16 v0, p2
33723     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33725     const/4 v7, 0x1
33727     :cond_54
33728     move-object/from16 v0, v27
33730     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
33732     if-eqz v2, :cond_93
33734     const-string v2, "  *PERS*"
33736     :goto_5c
33737     move-object/from16 v0, p2
33739     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33741     const-string v2, " UID "
33743     move-object/from16 v0, p2
33745     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33747     move-object/from16 v0, v24
33749     invoke-virtual {v0, v15}, Landroid/util/SparseArray;->keyAt(I)I
33751     move-result v2
33753     move-object/from16 v0, p2
33755     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(I)V
33757     const-string v2, " "
33759     move-object/from16 v0, p2
33761     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
33763     move-object/from16 v0, p2
33765     move-object/from16 v1, v27
33767     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
33769     const-string v2, "    "
33771     move-object/from16 v0, v27
33773     move-object/from16 v1, p2
33775     invoke-virtual {v0, v1, v2}, Lcom/android/server/am/ProcessRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
33777     move-object/from16 v0, v27
33779     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
33781     if-eqz v2, :cond_47
33783     add-int/lit8 v20, v20, 0x1
33785     goto :goto_47
33787     :cond_93
33788     const-string v2, "  *APP*"
33790     goto :goto_5c
33792     :cond_96
33793     move-object/from16 v0, p0
33795     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
33797     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
33799     move-result v2
33801     if-lez v2, :cond_fb
33803     if-eqz v7, :cond_a9
33805     const-string v2, " "
33807     move-object/from16 v0, p2
33809     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33811     :cond_a9
33812     const/4 v7, 0x1
33814     const-string v2, "  Isolated process list (sorted by uid):"
33816     move-object/from16 v0, p2
33818     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33820     const/4 v13, 0x0
33822     :goto_b2
33823     move-object/from16 v0, p0
33825     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
33827     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
33829     move-result v2
33831     if-ge v13, v2, :cond_fb
33833     move-object/from16 v0, p0
33835     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
33837     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
33839     move-result-object v27
33841     check-cast v27, Lcom/android/server/am/ProcessRecord;
33843     if-eqz p6, :cond_d9
33845     move-object/from16 v0, v27
33847     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
33849     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
33851     move-object/from16 v0, p6
33853     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
33855     move-result v2
33857     if-nez v2, :cond_d9
33859     :goto_d6
33860     add-int/lit8 v13, v13, 0x1
33862     goto :goto_b2
33864     :cond_d9
33865     const-string v2, "%sIsolated #%2d: %s"
33867     const/4 v3, 0x3
33869     new-array v3, v3, [Ljava/lang/Object;
33871     const/4 v4, 0x0
33873     const-string v5, "    "
33875     aput-object v5, v3, v4
33877     const/4 v4, 0x1
33879     invoke-static {v13}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
33881     move-result-object v5
33883     aput-object v5, v3, v4
33885     const/4 v4, 0x2
33887     invoke-virtual/range {v27 .. v27}, Lcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;
33889     move-result-object v5
33891     aput-object v5, v3, v4
33893     invoke-static {v2, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
33895     move-result-object v2
33897     move-object/from16 v0, p2
33899     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33901     goto :goto_d6
33903     :cond_fb
33904     move-object/from16 v0, p0
33906     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
33908     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
33910     move-result v2
33912     if-lez v2, :cond_12b
33914     if-eqz v7, :cond_10e
33916     const-string v2, " "
33918     move-object/from16 v0, p2
33920     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33922     :cond_10e
33923     const/4 v7, 0x1
33925     const-string v2, "  Process LRU list (sorted by oom_adj):"
33927     move-object/from16 v0, p2
33929     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
33931     move-object/from16 v0, p0
33933     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
33935     const-string v5, "    "
33937     const-string v6, "Proc"
33939     const-string v7, "PERS"
33941     const/4 v8, 0x0
33943     move-object/from16 v2, p2
33945     move-object/from16 v3, p0
33947     move-object/from16 v9, p6
33949     invoke-static/range {v2 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpProcessOomList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Z
33951     const/4 v7, 0x1
33953     :cond_12b
33954     if-eqz p5, :cond_19e
33956     move-object/from16 v0, p0
33958     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
33960     monitor-enter v3
33962     const/16 v23, 0x0
33964     const/4 v13, 0x0
33966     :goto_135
33967     :try_start_135
33968     move-object/from16 v0, p0
33970     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
33972     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
33974     move-result v2
33976     if-ge v13, v2, :cond_19d
33978     move-object/from16 v0, p0
33980     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
33982     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
33984     move-result-object v27
33986     check-cast v27, Lcom/android/server/am/ProcessRecord;
33988     if-eqz p6, :cond_15c
33990     move-object/from16 v0, v27
33992     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
33994     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
33996     move-object/from16 v0, p6
33998     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
34000     move-result v2
34002     if-nez v2, :cond_15c
34004     :goto_159
34005     add-int/lit8 v13, v13, 0x1
34007     goto :goto_135
34009     :cond_15c
34010     if-nez v23, :cond_171
34012     if-eqz v7, :cond_167
34014     const-string v2, " "
34016     move-object/from16 v0, p2
34018     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34020     :cond_167
34021     const/4 v7, 0x1
34023     const-string v2, "  PID mappings:"
34025     move-object/from16 v0, p2
34027     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34029     const/16 v23, 0x1
34031     :cond_171
34032     const-string v2, "    PID #"
34034     move-object/from16 v0, p2
34036     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34038     move-object/from16 v0, p0
34040     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
34042     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->keyAt(I)I
34044     move-result v2
34046     move-object/from16 v0, p2
34048     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(I)V
34050     const-string v2, ": "
34052     move-object/from16 v0, p2
34054     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34056     move-object/from16 v0, p0
34058     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
34060     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
34062     move-result-object v2
34064     move-object/from16 v0, p2
34066     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
34068     goto :goto_159
34070     :catchall_19a
34071     move-exception v2
34073     monitor-exit v3
34074     :try_end_19c
34075     .catchall {:try_start_135 .. :try_end_19c} :catchall_19a
34077     throw v2
34079     :cond_19d
34080     :try_start_19d
34081     monitor-exit v3
34082     :try_end_19e
34083     .catchall {:try_start_19d .. :try_end_19e} :catchall_19a
34085     :cond_19e
34086     move-object/from16 v0, p0
34088     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
34090     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
34092     move-result v2
34094     if-lez v2, :cond_227
34096     move-object/from16 v0, p0
34098     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
34100     monitor-enter v3
34102     const/16 v23, 0x0
34104     const/4 v13, 0x0
34106     :goto_1b0
34107     :try_start_1b0
34108     move-object/from16 v0, p0
34110     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
34112     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
34114     move-result v2
34116     if-ge v13, v2, :cond_226
34118     move-object/from16 v0, p0
34120     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
34122     move-object/from16 v0, p0
34124     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
34126     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
34128     move-result-object v2
34130     check-cast v2, Lcom/android/server/am/ActivityManagerService$ForegroundToken;
34132     iget v2, v2, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
34134     invoke-virtual {v4, v2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
34136     move-result-object v27
34138     check-cast v27, Lcom/android/server/am/ProcessRecord;
34140     if-eqz p6, :cond_1e5
34142     if-eqz v27, :cond_1e2
34144     move-object/from16 v0, v27
34146     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
34148     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
34150     move-object/from16 v0, p6
34152     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
34154     move-result v2
34156     if-nez v2, :cond_1e5
34158     :cond_1e2
34159     :goto_1e2
34160     add-int/lit8 v13, v13, 0x1
34162     goto :goto_1b0
34164     :cond_1e5
34165     if-nez v23, :cond_1fa
34167     if-eqz v7, :cond_1f0
34169     const-string v2, " "
34171     move-object/from16 v0, p2
34173     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34175     :cond_1f0
34176     const/4 v7, 0x1
34178     const-string v2, "  Foreground Processes:"
34180     move-object/from16 v0, p2
34182     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34184     const/16 v23, 0x1
34186     :cond_1fa
34187     const-string v2, "    PID #"
34189     move-object/from16 v0, p2
34191     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34193     move-object/from16 v0, p0
34195     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
34197     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->keyAt(I)I
34199     move-result v2
34201     move-object/from16 v0, p2
34203     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(I)V
34205     const-string v2, ": "
34207     move-object/from16 v0, p2
34209     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34211     move-object/from16 v0, p0
34213     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
34215     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
34217     move-result-object v2
34219     move-object/from16 v0, p2
34221     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
34223     goto :goto_1e2
34225     :catchall_223
34226     move-exception v2
34228     monitor-exit v3
34229     :try_end_225
34230     .catchall {:try_start_1b0 .. :try_end_225} :catchall_223
34232     throw v2
34234     :cond_226
34235     :try_start_226
34236     monitor-exit v3
34237     :try_end_227
34238     .catchall {:try_start_226 .. :try_end_227} :catchall_223
34240     :cond_227
34241     move-object/from16 v0, p0
34243     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
34245     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
34247     move-result v2
34249     if-lez v2, :cond_258
34251     if-eqz v7, :cond_23a
34253     const-string v2, " "
34255     move-object/from16 v0, p2
34257     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34259     :cond_23a
34260     const/16 v17, 0x1
34262     const-string v2, "  Persisent processes that are starting:"
34264     move-object/from16 v0, p2
34266     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34268     move-object/from16 v0, p0
34270     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPersistentStartingProcesses:Ljava/util/ArrayList;
34272     const-string v5, "    "
34274     const-string v6, "Starting Norm"
34276     const-string v7, "Restarting PERS"
34278     move-object/from16 v2, p2
34280     move-object/from16 v3, p0
34282     move-object/from16 v8, p6
34284     invoke-static/range {v2 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpProcessList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
34286     move/from16 v7, v17
34288     :cond_258
34289     move-object/from16 v0, p0
34291     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
34293     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
34295     move-result v2
34297     if-lez v2, :cond_289
34299     if-eqz v7, :cond_26b
34301     const-string v2, " "
34303     move-object/from16 v0, p2
34305     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34307     :cond_26b
34308     const/16 v17, 0x1
34310     const-string v2, "  Processes that are being removed:"
34312     move-object/from16 v0, p2
34314     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34316     move-object/from16 v0, p0
34318     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
34320     const-string v5, "    "
34322     const-string v6, "Removed Norm"
34324     const-string v7, "Removed PERS"
34326     move-object/from16 v2, p2
34328     move-object/from16 v3, p0
34330     move-object/from16 v8, p6
34332     invoke-static/range {v2 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpProcessList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
34334     move/from16 v7, v17
34336     :cond_289
34337     move-object/from16 v0, p0
34339     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
34341     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
34343     move-result v2
34345     if-lez v2, :cond_2ba
34347     if-eqz v7, :cond_29c
34349     const-string v2, " "
34351     move-object/from16 v0, p2
34353     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34355     :cond_29c
34356     const/16 v17, 0x1
34358     const-string v2, "  Processes that are on old until the system is ready:"
34360     move-object/from16 v0, p2
34362     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34364     move-object/from16 v0, p0
34366     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
34368     const-string v5, "    "
34370     const-string v6, "OnHold Norm"
34372     const-string v7, "OnHold PERS"
34374     move-object/from16 v2, p2
34376     move-object/from16 v3, p0
34378     move-object/from16 v8, p6
34380     invoke-static/range {v2 .. v8}, Lcom/android/server/am/ActivityManagerService;->dumpProcessList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
34382     move/from16 v7, v17
34384     :cond_2ba
34385     move-object/from16 v2, p0
34387     move-object/from16 v3, p1
34389     move-object/from16 v4, p2
34391     move-object/from16 v5, p3
34393     move/from16 v6, p4
34395     move/from16 v8, p5
34397     move-object/from16 v9, p6
34399     invoke-virtual/range {v2 .. v9}, Lcom/android/server/am/ActivityManagerService;->dumpProcessesToGc(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
34401     move-result v7
34403     move-object/from16 v0, p0
34405     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
34407     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
34409     move-result-object v2
34411     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
34413     move-result v2
34415     if-lez v2, :cond_38b
34417     const/16 v23, 0x0
34419     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
34421     move-result-wide v18
34423     move-object/from16 v0, p0
34425     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
34427     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
34429     move-result-object v2
34431     invoke-virtual {v2}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
34433     move-result-object v2
34435     invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
34437     move-result-object v14
34439     :cond_2f0
34440     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
34442     move-result v2
34444     if-eqz v2, :cond_38b
34446     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
34448     move-result-object v25
34450     check-cast v25, Ljava/util/Map$Entry;
34452     invoke-interface/range {v25 .. v25}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
34454     move-result-object v22
34456     check-cast v22, Ljava/lang/String;
34458     invoke-interface/range {v25 .. v25}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
34460     move-result-object v29
34462     check-cast v29, Landroid/util/SparseArray;
34464     invoke-virtual/range {v29 .. v29}, Landroid/util/SparseArray;->size()I
34466     move-result v10
34468     const/4 v13, 0x0
34470     :goto_30d
34471     if-ge v13, v10, :cond_2f0
34473     move-object/from16 v0, v29
34475     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->keyAt(I)I
34477     move-result v26
34479     move-object/from16 v0, p0
34481     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
34483     move-object/from16 v0, v22
34485     move/from16 v1, v26
34487     invoke-virtual {v2, v0, v1}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
34489     move-result-object v27
34491     check-cast v27, Lcom/android/server/am/ProcessRecord;
34493     if-eqz p6, :cond_338
34495     if-eqz v27, :cond_335
34497     move-object/from16 v0, v27
34499     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
34501     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
34503     move-object/from16 v0, p6
34505     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
34507     move-result v2
34509     if-nez v2, :cond_338
34511     :cond_335
34512     :goto_335
34513     add-int/lit8 v13, v13, 0x1
34515     goto :goto_30d
34517     :cond_338
34518     if-nez v23, :cond_34d
34520     if-eqz v7, :cond_343
34522     const-string v2, " "
34524     move-object/from16 v0, p2
34526     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34528     :cond_343
34529     const/4 v7, 0x1
34531     const-string v2, "  Time since processes crashed:"
34533     move-object/from16 v0, p2
34535     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34537     const/16 v23, 0x1
34539     :cond_34d
34540     const-string v2, "    Process "
34542     move-object/from16 v0, p2
34544     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34546     move-object/from16 v0, p2
34548     move-object/from16 v1, v22
34550     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34552     const-string v2, " uid "
34554     move-object/from16 v0, p2
34556     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34558     move-object/from16 v0, p2
34560     move/from16 v1, v26
34562     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
34564     const-string v2, ": last crashed "
34566     move-object/from16 v0, p2
34568     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34570     move-object/from16 v0, v29
34572     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
34574     move-result-object v2
34576     check-cast v2, Ljava/lang/Long;
34578     invoke-virtual {v2}, Ljava/lang/Long;->longValue()J
34580     move-result-wide v2
34582     sub-long v2, v18, v2
34584     move-object/from16 v0, p2
34586     invoke-static {v2, v3, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
34588     const-string v2, " ago"
34590     move-object/from16 v0, p2
34592     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34594     goto :goto_335
34596     :cond_38b
34597     move-object/from16 v0, p0
34599     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
34601     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
34603     move-result-object v2
34605     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
34607     move-result v2
34609     if-lez v2, :cond_435
34611     const/16 v23, 0x0
34613     move-object/from16 v0, p0
34615     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
34617     invoke-virtual {v2}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
34619     move-result-object v2
34621     invoke-virtual {v2}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
34623     move-result-object v2
34625     invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
34627     move-result-object v14
34629     :cond_3ab
34630     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
34632     move-result v2
34634     if-eqz v2, :cond_435
34636     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
34638     move-result-object v25
34640     check-cast v25, Ljava/util/Map$Entry;
34642     invoke-interface/range {v25 .. v25}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
34644     move-result-object v22
34646     check-cast v22, Ljava/lang/String;
34648     invoke-interface/range {v25 .. v25}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
34650     move-result-object v29
34652     check-cast v29, Landroid/util/SparseArray;
34654     invoke-virtual/range {v29 .. v29}, Landroid/util/SparseArray;->size()I
34656     move-result v10
34658     const/4 v13, 0x0
34660     :goto_3c8
34661     if-ge v13, v10, :cond_3ab
34663     move-object/from16 v0, v29
34665     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->keyAt(I)I
34667     move-result v26
34669     move-object/from16 v0, p0
34671     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
34673     move-object/from16 v0, v22
34675     move/from16 v1, v26
34677     invoke-virtual {v2, v0, v1}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
34679     move-result-object v27
34681     check-cast v27, Lcom/android/server/am/ProcessRecord;
34683     if-eqz p6, :cond_3f3
34685     if-eqz v27, :cond_3f0
34687     move-object/from16 v0, v27
34689     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
34691     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
34693     move-object/from16 v0, p6
34695     invoke-virtual {v0, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
34697     move-result v2
34699     if-nez v2, :cond_3f3
34701     :cond_3f0
34702     :goto_3f0
34703     add-int/lit8 v13, v13, 0x1
34705     goto :goto_3c8
34707     :cond_3f3
34708     if-nez v23, :cond_406
34710     if-eqz v7, :cond_3fe
34712     const-string v2, " "
34714     move-object/from16 v0, p2
34716     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34718     :cond_3fe
34719     const/4 v7, 0x1
34721     const-string v2, "  Bad processes:"
34723     move-object/from16 v0, p2
34725     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34727     :cond_406
34728     const-string v2, "    Bad process "
34730     move-object/from16 v0, p2
34732     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34734     move-object/from16 v0, p2
34736     move-object/from16 v1, v22
34738     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34740     const-string v2, " uid "
34742     move-object/from16 v0, p2
34744     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34746     move-object/from16 v0, p2
34748     move/from16 v1, v26
34750     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
34752     const-string v2, ": crashed at time "
34754     move-object/from16 v0, p2
34756     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34758     move-object/from16 v0, v29
34760     invoke-virtual {v0, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
34762     move-result-object v2
34764     move-object/from16 v0, p2
34766     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
34768     goto :goto_3f0
34770     :cond_435
34771     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
34773     const-string v2, "  mStartedUsers:"
34775     move-object/from16 v0, p2
34777     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34779     const/4 v13, 0x0
34781     :goto_440
34782     move-object/from16 v0, p0
34784     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
34786     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
34788     move-result v2
34790     if-ge v13, v2, :cond_47b
34792     move-object/from16 v0, p0
34794     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
34796     invoke-virtual {v2, v13}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
34798     move-result-object v30
34800     check-cast v30, Lcom/android/server/am/UserStartedState;
34802     const-string v2, "    User #"
34804     move-object/from16 v0, p2
34806     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34808     move-object/from16 v0, v30
34810     iget-object v2, v0, Lcom/android/server/am/UserStartedState;->mHandle:Landroid/os/UserHandle;
34812     invoke-virtual {v2}, Landroid/os/UserHandle;->getIdentifier()I
34814     move-result v2
34816     move-object/from16 v0, p2
34818     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(I)V
34820     const-string v2, ": "
34822     move-object/from16 v0, p2
34824     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34826     const-string v2, ""
34828     move-object/from16 v0, v30
34830     move-object/from16 v1, p2
34832     invoke-virtual {v0, v2, v1}, Lcom/android/server/am/UserStartedState;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
34834     add-int/lit8 v13, v13, 0x1
34836     goto :goto_440
34838     :cond_47b
34839     const-string v2, "  mStartedUserArray: ["
34841     move-object/from16 v0, p2
34843     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34845     const/4 v13, 0x0
34847     :goto_483
34848     move-object/from16 v0, p0
34850     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUserArray:[I
34852     array-length v2, v2
34854     if-ge v13, v2, :cond_4a1
34856     if-lez v13, :cond_493
34858     const-string v2, ", "
34860     move-object/from16 v0, p2
34862     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34864     :cond_493
34865     move-object/from16 v0, p0
34867     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUserArray:[I
34869     aget v2, v2, v13
34871     move-object/from16 v0, p2
34873     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(I)V
34875     add-int/lit8 v13, v13, 0x1
34877     goto :goto_483
34879     :cond_4a1
34880     const-string v2, "]"
34882     move-object/from16 v0, p2
34884     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34886     const-string v2, "  mUserLru: ["
34888     move-object/from16 v0, p2
34890     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34892     const/4 v13, 0x0
34894     :goto_4b0
34895     move-object/from16 v0, p0
34897     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
34899     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
34901     move-result v2
34903     if-ge v13, v2, :cond_4d3
34905     if-lez v13, :cond_4c3
34907     const-string v2, ", "
34909     move-object/from16 v0, p2
34911     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34913     :cond_4c3
34914     move-object/from16 v0, p0
34916     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
34918     invoke-virtual {v2, v13}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
34920     move-result-object v2
34922     move-object/from16 v0, p2
34924     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/Object;)V
34926     add-int/lit8 v13, v13, 0x1
34928     goto :goto_4b0
34930     :cond_4d3
34931     const-string v2, "]"
34933     move-object/from16 v0, p2
34935     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34937     if-eqz p5, :cond_4f0
34939     const-string v2, "  mStartedUserArray: "
34941     move-object/from16 v0, p2
34943     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
34945     move-object/from16 v0, p0
34947     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUserArray:[I
34949     invoke-static {v2}, Ljava/util/Arrays;->toString([I)Ljava/lang/String;
34951     move-result-object v2
34953     move-object/from16 v0, p2
34955     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34957     :cond_4f0
34958     new-instance v2, Ljava/lang/StringBuilder;
34960     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
34962     const-string v3, "  mHomeProcess: "
34964     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34966     move-result-object v2
34968     move-object/from16 v0, p0
34970     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
34972     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
34974     move-result-object v2
34976     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
34978     move-result-object v2
34980     move-object/from16 v0, p2
34982     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
34984     new-instance v2, Ljava/lang/StringBuilder;
34986     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
34988     const-string v3, "  mPreviousProcess: "
34990     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
34992     move-result-object v2
34994     move-object/from16 v0, p0
34996     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
34998     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35000     move-result-object v2
35002     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35004     move-result-object v2
35006     move-object/from16 v0, p2
35008     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35010     if-eqz p5, :cond_54a
35012     new-instance v28, Ljava/lang/StringBuilder;
35014     const/16 v2, 0x80
35016     move-object/from16 v0, v28
35018     invoke-direct {v0, v2}, Ljava/lang/StringBuilder;-><init>(I)V
35020     const-string v2, "  mPreviousProcessVisibleTime: "
35022     move-object/from16 v0, v28
35024     invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35026     move-object/from16 v0, p0
35028     iget-wide v2, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcessVisibleTime:J
35030     move-object/from16 v0, v28
35032     invoke-static {v2, v3, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/lang/StringBuilder;)V
35034     move-object/from16 v0, p2
35036     move-object/from16 v1, v28
35038     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
35040     :cond_54a
35041     move-object/from16 v0, p0
35043     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
35045     if-eqz v2, :cond_56c
35047     new-instance v2, Ljava/lang/StringBuilder;
35049     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35051     const-string v3, "  mHeavyWeightProcess: "
35053     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35055     move-result-object v2
35057     move-object/from16 v0, p0
35059     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
35061     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35063     move-result-object v2
35065     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35067     move-result-object v2
35069     move-object/from16 v0, p2
35071     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35073     :cond_56c
35074     new-instance v2, Ljava/lang/StringBuilder;
35076     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35078     const-string v3, "  mConfiguration: "
35080     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35082     move-result-object v2
35084     move-object/from16 v0, p0
35086     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
35088     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35090     move-result-object v2
35092     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35094     move-result-object v2
35096     move-object/from16 v0, p2
35098     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35100     if-eqz p5, :cond_61b
35102     new-instance v2, Ljava/lang/StringBuilder;
35104     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35106     const-string v3, "  mConfigWillChange: "
35108     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35110     move-result-object v2
35112     move-object/from16 v0, p0
35114     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
35116     iget-boolean v3, v3, Lcom/android/server/am/ActivityStack;->mConfigWillChange:Z
35118     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35120     move-result-object v2
35122     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35124     move-result-object v2
35126     move-object/from16 v0, p2
35128     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35130     move-object/from16 v0, p0
35132     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
35134     invoke-virtual {v2}, Lcom/android/server/am/CompatModePackages;->getPackages()Ljava/util/HashMap;
35136     move-result-object v2
35138     invoke-virtual {v2}, Ljava/util/HashMap;->size()I
35140     move-result v2
35142     if-lez v2, :cond_61b
35144     const/16 v23, 0x0
35146     move-object/from16 v0, p0
35148     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
35150     invoke-virtual {v2}, Lcom/android/server/am/CompatModePackages;->getPackages()Ljava/util/HashMap;
35152     move-result-object v2
35154     invoke-virtual {v2}, Ljava/util/HashMap;->entrySet()Ljava/util/Set;
35156     move-result-object v2
35158     invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
35160     move-result-object v14
35162     :cond_5c8
35163     :goto_5c8
35164     invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
35166     move-result v2
35168     if-eqz v2, :cond_61b
35170     invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
35172     move-result-object v12
35174     check-cast v12, Ljava/util/Map$Entry;
35176     invoke-interface {v12}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
35178     move-result-object v21
35180     check-cast v21, Ljava/lang/String;
35182     invoke-interface {v12}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
35184     move-result-object v2
35186     check-cast v2, Ljava/lang/Integer;
35188     invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
35190     move-result v16
35192     if-eqz p6, :cond_5f0
35194     move-object/from16 v0, p6
35196     move-object/from16 v1, v21
35198     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
35200     move-result v2
35202     if-eqz v2, :cond_5c8
35204     :cond_5f0
35205     if-nez v23, :cond_5fb
35207     const-string v2, "  mScreenCompatPackages:"
35209     move-object/from16 v0, p2
35211     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35213     const/16 v23, 0x1
35215     :cond_5fb
35216     const-string v2, "    "
35218     move-object/from16 v0, p2
35220     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35222     move-object/from16 v0, p2
35224     move-object/from16 v1, v21
35226     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35228     const-string v2, ": "
35230     move-object/from16 v0, p2
35232     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35234     move-object/from16 v0, p2
35236     move/from16 v1, v16
35238     invoke-virtual {v0, v1}, Ljava/io/PrintWriter;->print(I)V
35240     invoke-virtual/range {p2 .. p2}, Ljava/io/PrintWriter;->println()V
35242     goto :goto_5c8
35244     :cond_61b
35245     move-object/from16 v0, p0
35247     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
35249     if-nez v2, :cond_62d
35251     move-object/from16 v0, p0
35253     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
35255     if-nez v2, :cond_62d
35257     move-object/from16 v0, p0
35259     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
35261     if-eqz v2, :cond_665
35263     :cond_62d
35264     new-instance v2, Ljava/lang/StringBuilder;
35266     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35268     const-string v3, "  mSleeping="
35270     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35272     move-result-object v2
35274     move-object/from16 v0, p0
35276     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
35278     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35280     move-result-object v2
35282     const-string v3, " mWentToSleep="
35284     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35286     move-result-object v2
35288     move-object/from16 v0, p0
35290     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
35292     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35294     move-result-object v2
35296     const-string v3, " mLockScreenShown "
35298     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35300     move-result-object v2
35302     move-object/from16 v0, p0
35304     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
35306     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35308     move-result-object v2
35310     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35312     move-result-object v2
35314     move-object/from16 v0, p2
35316     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35318     :cond_665
35319     move-object/from16 v0, p0
35321     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
35323     if-eqz v2, :cond_687
35325     new-instance v2, Ljava/lang/StringBuilder;
35327     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35329     const-string v3, "  mShuttingDown="
35331     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35333     move-result-object v2
35335     move-object/from16 v0, p0
35337     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
35339     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35341     move-result-object v2
35343     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35345     move-result-object v2
35347     move-object/from16 v0, p2
35349     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35351     :cond_687
35352     move-object/from16 v0, p0
35354     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
35356     if-nez v2, :cond_69f
35358     move-object/from16 v0, p0
35360     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
35362     if-nez v2, :cond_69f
35364     move-object/from16 v0, p0
35366     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
35368     if-nez v2, :cond_69f
35370     move-object/from16 v0, p0
35372     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
35374     if-eqz v2, :cond_6e5
35376     :cond_69f
35377     new-instance v2, Ljava/lang/StringBuilder;
35379     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35381     const-string v3, "  mDebugApp="
35383     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35385     move-result-object v2
35387     move-object/from16 v0, p0
35389     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
35391     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35393     move-result-object v2
35395     const-string v3, "/orig="
35397     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35399     move-result-object v2
35401     move-object/from16 v0, p0
35403     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
35405     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35407     move-result-object v2
35409     const-string v3, " mDebugTransient="
35411     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35413     move-result-object v2
35415     move-object/from16 v0, p0
35417     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
35419     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35421     move-result-object v2
35423     const-string v3, " mOrigWaitForDebugger="
35425     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35427     move-result-object v2
35429     move-object/from16 v0, p0
35431     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
35433     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35435     move-result-object v2
35437     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35439     move-result-object v2
35441     move-object/from16 v0, p2
35443     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35445     :cond_6e5
35446     move-object/from16 v0, p0
35448     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
35450     if-eqz v2, :cond_707
35452     new-instance v2, Ljava/lang/StringBuilder;
35454     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35456     const-string v3, "  mOpenGlTraceApp="
35458     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35460     move-result-object v2
35462     move-object/from16 v0, p0
35464     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
35466     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35468     move-result-object v2
35470     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35472     move-result-object v2
35474     move-object/from16 v0, p2
35476     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35478     :cond_707
35479     move-object/from16 v0, p0
35481     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
35483     if-nez v2, :cond_71f
35485     move-object/from16 v0, p0
35487     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
35489     if-nez v2, :cond_71f
35491     move-object/from16 v0, p0
35493     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
35495     if-nez v2, :cond_71f
35497     move-object/from16 v0, p0
35499     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
35501     if-eqz v2, :cond_79d
35503     :cond_71f
35504     new-instance v2, Ljava/lang/StringBuilder;
35506     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35508     const-string v3, "  mProfileApp="
35510     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35512     move-result-object v2
35514     move-object/from16 v0, p0
35516     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
35518     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35520     move-result-object v2
35522     const-string v3, " mProfileProc="
35524     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35526     move-result-object v2
35528     move-object/from16 v0, p0
35530     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
35532     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35534     move-result-object v2
35536     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35538     move-result-object v2
35540     move-object/from16 v0, p2
35542     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35544     new-instance v2, Ljava/lang/StringBuilder;
35546     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35548     const-string v3, "  mProfileFile="
35550     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35552     move-result-object v2
35554     move-object/from16 v0, p0
35556     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
35558     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35560     move-result-object v2
35562     const-string v3, " mProfileFd="
35564     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35566     move-result-object v2
35568     move-object/from16 v0, p0
35570     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
35572     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35574     move-result-object v2
35576     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35578     move-result-object v2
35580     move-object/from16 v0, p2
35582     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35584     new-instance v2, Ljava/lang/StringBuilder;
35586     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35588     const-string v3, "  mProfileType="
35590     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35592     move-result-object v2
35594     move-object/from16 v0, p0
35596     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
35598     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35600     move-result-object v2
35602     const-string v3, " mAutoStopProfiler="
35604     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35606     move-result-object v2
35608     move-object/from16 v0, p0
35610     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
35612     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35614     move-result-object v2
35616     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35618     move-result-object v2
35620     move-object/from16 v0, p2
35622     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35624     :cond_79d
35625     move-object/from16 v0, p0
35627     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
35629     if-nez v2, :cond_7a9
35631     move-object/from16 v0, p0
35633     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
35635     if-eqz v2, :cond_7d3
35637     :cond_7a9
35638     new-instance v2, Ljava/lang/StringBuilder;
35640     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35642     const-string v3, "  mAlwaysFinishActivities="
35644     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35646     move-result-object v2
35648     move-object/from16 v0, p0
35650     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
35652     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35654     move-result-object v2
35656     const-string v3, " mController="
35658     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35660     move-result-object v2
35662     move-object/from16 v0, p0
35664     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
35666     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35668     move-result-object v2
35670     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35672     move-result-object v2
35674     move-object/from16 v0, p2
35676     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35678     :cond_7d3
35679     if-eqz p5, :cond_939
35681     new-instance v2, Ljava/lang/StringBuilder;
35683     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35685     const-string v3, "  Total persistent processes: "
35687     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35689     move-result-object v2
35691     move/from16 v0, v20
35693     invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35695     move-result-object v2
35697     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35699     move-result-object v2
35701     move-object/from16 v0, p2
35703     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35705     new-instance v2, Ljava/lang/StringBuilder;
35707     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35709     const-string v3, "  mStartRunning="
35711     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35713     move-result-object v2
35715     move-object/from16 v0, p0
35717     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
35719     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35721     move-result-object v2
35723     const-string v3, " mProcessesReady="
35725     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35727     move-result-object v2
35729     move-object/from16 v0, p0
35731     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
35733     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35735     move-result-object v2
35737     const-string v3, " mSystemReady="
35739     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35741     move-result-object v2
35743     move-object/from16 v0, p0
35745     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
35747     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35749     move-result-object v2
35751     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35753     move-result-object v2
35755     move-object/from16 v0, p2
35757     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35759     new-instance v2, Ljava/lang/StringBuilder;
35761     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35763     const-string v3, "  mBooting="
35765     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35767     move-result-object v2
35769     move-object/from16 v0, p0
35771     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
35773     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35775     move-result-object v2
35777     const-string v3, " mBooted="
35779     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35781     move-result-object v2
35783     move-object/from16 v0, p0
35785     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
35787     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
35789     move-result-object v2
35791     const-string v3, " mFactoryTest="
35793     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35795     move-result-object v2
35797     move-object/from16 v0, p0
35799     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
35801     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35803     move-result-object v2
35805     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35807     move-result-object v2
35809     move-object/from16 v0, p2
35811     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35813     const-string v2, "  mLastPowerCheckRealtime="
35815     move-object/from16 v0, p2
35817     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35819     move-object/from16 v0, p0
35821     iget-wide v2, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckRealtime:J
35823     move-object/from16 v0, p2
35825     invoke-static {v2, v3, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
35827     const-string v2, ""
35829     move-object/from16 v0, p2
35831     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35833     const-string v2, "  mLastPowerCheckUptime="
35835     move-object/from16 v0, p2
35837     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
35839     move-object/from16 v0, p0
35841     iget-wide v2, v0, Lcom/android/server/am/ActivityManagerService;->mLastPowerCheckUptime:J
35843     move-object/from16 v0, p2
35845     invoke-static {v2, v3, v0}, Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
35847     const-string v2, ""
35849     move-object/from16 v0, p2
35851     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35853     new-instance v2, Ljava/lang/StringBuilder;
35855     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35857     const-string v3, "  mGoingToSleep="
35859     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35861     move-result-object v2
35863     move-object/from16 v0, p0
35865     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
35867     iget-object v3, v3, Lcom/android/server/am/ActivityStack;->mGoingToSleep:Landroid/os/PowerManager$WakeLock;
35869     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35871     move-result-object v2
35873     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35875     move-result-object v2
35877     move-object/from16 v0, p2
35879     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35881     new-instance v2, Ljava/lang/StringBuilder;
35883     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35885     const-string v3, "  mLaunchingActivity="
35887     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35889     move-result-object v2
35891     move-object/from16 v0, p0
35893     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
35895     iget-object v3, v3, Lcom/android/server/am/ActivityStack;->mLaunchingActivity:Landroid/os/PowerManager$WakeLock;
35897     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
35899     move-result-object v2
35901     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35903     move-result-object v2
35905     move-object/from16 v0, p2
35907     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35909     new-instance v2, Ljava/lang/StringBuilder;
35911     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35913     const-string v3, "  mAdjSeq="
35915     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35917     move-result-object v2
35919     move-object/from16 v0, p0
35921     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
35923     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35925     move-result-object v2
35927     const-string v3, " mLruSeq="
35929     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35931     move-result-object v2
35933     move-object/from16 v0, p0
35935     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
35937     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35939     move-result-object v2
35941     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
35943     move-result-object v2
35945     move-object/from16 v0, p2
35947     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
35949     new-instance v2, Ljava/lang/StringBuilder;
35951     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
35953     const-string v3, "  mNumNonHiddenProcs="
35955     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35957     move-result-object v2
35959     move-object/from16 v0, p0
35961     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mNumNonHiddenProcs:I
35963     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35965     move-result-object v2
35967     const-string v3, " mNumHiddenProcs="
35969     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35971     move-result-object v2
35973     move-object/from16 v0, p0
35975     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mNumHiddenProcs:I
35977     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35979     move-result-object v2
35981     const-string v3, " mNumServiceProcs="
35983     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35985     move-result-object v2
35987     move-object/from16 v0, p0
35989     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mNumServiceProcs:I
35991     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
35993     move-result-object v2
35995     const-string v3, " mNewNumServiceProcs="
35997     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
35999     move-result-object v2
36001     move-object/from16 v0, p0
36003     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
36005     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
36007     move-result-object v2
36009     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
36011     move-result-object v2
36013     move-object/from16 v0, p2
36015     invoke-virtual {v0, v2}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36017     :cond_939
36018     const/4 v2, 0x1
36020     return v2
36021 .end method
36023 .method dumpProcessesToGc(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)Z
36024     .registers 15
36026     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
36028     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
36030     move-result v5
36032     if-lez v5, :cond_6d
36034     const/4 v3, 0x0
36036     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
36038     move-result-wide v1
36040     const/4 v0, 0x0
36042     :goto_e
36043     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
36045     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
36047     move-result v5
36049     if-ge v0, v5, :cond_6d
36051     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
36053     invoke-virtual {v5, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
36055     move-result-object v4
36057     check-cast v4, Lcom/android/server/am/ProcessRecord;
36059     if-eqz p7, :cond_2d
36061     iget-object v5, v4, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
36063     iget-object v5, v5, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
36065     invoke-virtual {p7, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
36067     move-result v5
36069     if-nez v5, :cond_2d
36071     :goto_2a
36072     add-int/lit8 v0, v0, 0x1
36074     goto :goto_e
36076     :cond_2d
36077     if-nez v3, :cond_3d
36079     if-eqz p5, :cond_36
36081     const-string v5, " "
36083     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36085     :cond_36
36086     const/4 p5, 0x1
36088     const-string v5, "  Processes that are waiting to GC:"
36090     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36092     const/4 v3, 0x1
36094     :cond_3d
36095     const-string v5, "    Process "
36097     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36099     invoke-virtual {p2, v4}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
36101     const-string v5, "      lowMem="
36103     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36105     iget-boolean v5, v4, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
36107     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Z)V
36109     const-string v5, ", last gced="
36111     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36113     iget-wide v5, v4, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
36115     sub-long v5, v1, v5
36117     invoke-virtual {p2, v5, v6}, Ljava/io/PrintWriter;->print(J)V
36119     const-string v5, " ms ago, last lowMem="
36121     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36123     iget-wide v5, v4, Lcom/android/server/am/ProcessRecord;->lastLowMemory:J
36125     sub-long v5, v1, v5
36127     invoke-virtual {p2, v5, v6}, Ljava/io/PrintWriter;->print(J)V
36129     const-string v5, " ms ago"
36131     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36133     goto :goto_2a
36135     :cond_6d
36136     return p5
36137 .end method
36139 .method protected dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
36140     .registers 14
36142     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
36144     move-object v1, p1
36146     move-object v2, p2
36148     move-object v3, p3
36150     move-object v4, p4
36152     move v5, p5
36154     move v6, p6
36156     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/ProviderMap;->dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
36158     move-result v0
36160     return v0
36161 .end method
36163 .method dumpProvidersLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Z
36164     .registers 18
36166     const/4 v4, 0x1
36168     new-instance v3, Lcom/android/server/am/ActivityManagerService$ItemMatcher;
36170     invoke-direct {v3}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;-><init>()V
36172     invoke-virtual {v3, p3, p4}, Lcom/android/server/am/ActivityManagerService$ItemMatcher;->build([Ljava/lang/String;I)I
36174     const-string v10, "ACTIVITY MANAGER CONTENT PROVIDERS (dumpsys activity providers)"
36176     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36178     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
36180     move/from16 v0, p5
36182     invoke-virtual {v10, p2, v0}, Lcom/android/server/am/ProviderMap;->dumpProvidersLocked(Ljava/io/PrintWriter;Z)V
36184     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
36186     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
36188     move-result v10
36190     if-lez v10, :cond_64
36192     const/4 v7, 0x0
36194     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
36196     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
36198     move-result v10
36200     add-int/lit8 v1, v10, -0x1
36202     :goto_26
36203     if-ltz v1, :cond_64
36205     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
36207     invoke-virtual {v10, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
36209     move-result-object v8
36211     check-cast v8, Lcom/android/server/am/ContentProviderRecord;
36213     if-eqz p6, :cond_43
36215     iget-object v10, v8, Lcom/android/server/am/ContentProviderRecord;->name:Landroid/content/ComponentName;
36217     invoke-virtual {v10}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
36219     move-result-object v10
36221     move-object/from16 v0, p6
36223     invoke-virtual {v0, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
36225     move-result v10
36227     if-nez v10, :cond_43
36229     :goto_40
36230     add-int/lit8 v1, v1, -0x1
36232     goto :goto_26
36234     :cond_43
36235     if-nez v7, :cond_53
36237     if-eqz v4, :cond_4c
36239     const-string v10, " "
36241     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36243     :cond_4c
36244     const/4 v4, 0x1
36246     const-string v10, "  Launching content providers:"
36248     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36250     const/4 v7, 0x1
36252     :cond_53
36253     const-string v10, "  Launching #"
36255     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36257     invoke-virtual {p2, v1}, Ljava/io/PrintWriter;->print(I)V
36259     const-string v10, ": "
36261     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36263     invoke-virtual {p2, v8}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
36265     goto :goto_40
36267     :cond_64
36268     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
36270     invoke-virtual {v10}, Landroid/util/SparseArray;->size()I
36272     move-result v10
36274     if-lez v10, :cond_c3
36276     if-eqz v4, :cond_71
36278     invoke-virtual {p2}, Ljava/io/PrintWriter;->println()V
36280     :cond_71
36281     const/4 v4, 0x1
36283     const-string v10, "Granted Uri Permissions:"
36285     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36287     const/4 v1, 0x0
36289     :goto_78
36290     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
36292     invoke-virtual {v10}, Landroid/util/SparseArray;->size()I
36294     move-result v10
36296     if-ge v1, v10, :cond_c2
36298     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
36300     invoke-virtual {v10, v1}, Landroid/util/SparseArray;->keyAt(I)I
36302     move-result v9
36304     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
36306     invoke-virtual {v10, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
36308     move-result-object v6
36310     check-cast v6, Ljava/util/HashMap;
36312     const-string v10, "  * UID "
36314     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36316     invoke-virtual {p2, v9}, Ljava/io/PrintWriter;->print(I)V
36318     const-string v10, " holds:"
36320     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V
36322     invoke-virtual {v6}, Ljava/util/HashMap;->values()Ljava/util/Collection;
36324     move-result-object v10
36326     invoke-interface {v10}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
36328     move-result-object v2
36330     :cond_a3
36331     :goto_a3
36332     invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
36334     move-result v10
36336     if-eqz v10, :cond_bf
36338     invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
36340     move-result-object v5
36342     check-cast v5, Lcom/android/server/am/UriPermission;
36344     const-string v10, "    "
36346     invoke-virtual {p2, v10}, Ljava/io/PrintWriter;->print(Ljava/lang/String;)V
36348     invoke-virtual {p2, v5}, Ljava/io/PrintWriter;->println(Ljava/lang/Object;)V
36350     if-eqz p5, :cond_a3
36352     const-string v10, "      "
36354     invoke-virtual {v5, p2, v10}, Lcom/android/server/am/UriPermission;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
36356     goto :goto_a3
36358     :cond_bf
36359     add-int/lit8 v1, v1, 0x1
36361     goto :goto_78
36363     :cond_c2
36364     const/4 v4, 0x1
36366     :cond_c3
36367     return v4
36368 .end method
36370 .method enableScreenAfterBoot()V
36371     .registers 4
36373     const/16 v0, 0xbea
36375     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
36377     move-result-wide v1
36379     invoke-static {v0, v1, v2}, Landroid/util/EventLog;->writeEvent(IJ)I
36381     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
36383     invoke-virtual {v0}, Lcom/android/server/wm/WindowManagerService;->enableScreenAfterBoot()V
36385     monitor-enter p0
36387     :try_start_f
36388     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V
36390     monitor-exit p0
36392     return-void
36394     :catchall_14
36395     move-exception v0
36397     monitor-exit p0
36398     :try_end_16
36399     .catchall {:try_start_f .. :try_end_16} :catchall_14
36401     throw v0
36402 .end method
36404 .method enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
36405     .registers 6
36407     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
36409     move-result v1
36411     if-nez v1, :cond_7
36413     return-void
36415     :cond_7
36416     new-instance v1, Ljava/lang/StringBuilder;
36418     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
36420     const-string v2, "Permission Denial: "
36422     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36424     move-result-object v1
36426     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36428     move-result-object v1
36430     const-string v2, " from pid="
36432     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36434     move-result-object v1
36436     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
36438     move-result v2
36440     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
36442     move-result-object v1
36444     const-string v2, ", uid="
36446     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36448     move-result-object v1
36450     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
36452     move-result v2
36454     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
36456     move-result-object v1
36458     const-string v2, " requires "
36460     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36462     move-result-object v1
36464     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36466     move-result-object v1
36468     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
36470     move-result-object v0
36472     const-string v1, "ActivityManager"
36474     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
36476     new-instance v1, Ljava/lang/SecurityException;
36478     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
36480     throw v1
36481 .end method
36483 .method enforceNotIsolatedCaller(Ljava/lang/String;)V
36484     .registers 5
36486     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
36488     move-result v0
36490     invoke-static {v0}, Landroid/os/UserHandle;->isIsolated(I)Z
36492     move-result v0
36494     if-eqz v0, :cond_23
36496     new-instance v0, Ljava/lang/SecurityException;
36498     new-instance v1, Ljava/lang/StringBuilder;
36500     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
36502     const-string v2, "Isolated process not allowed to call "
36504     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36506     move-result-object v1
36508     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
36510     move-result-object v1
36512     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
36514     move-result-object v1
36516     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
36518     throw v0
36520     :cond_23
36521     return-void
36522 .end method
36524 .method final ensureBootCompleted()V
36525     .registers 5
36527     const/4 v1, 0x1
36529     const/4 v2, 0x0
36531     monitor-enter p0
36533     :try_start_3
36534     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
36536     const/4 v3, 0x0
36538     iput-boolean v3, p0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
36540     iget-boolean v3, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
36542     if-nez v3, :cond_1b
36544     :goto_c
36545     const/4 v2, 0x1
36547     iput-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mBooted:Z
36549     monitor-exit p0
36550     :try_end_10
36551     .catchall {:try_start_3 .. :try_end_10} :catchall_1d
36553     if-eqz v0, :cond_15
36555     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->finishBooting()V
36557     :cond_15
36558     if-eqz v1, :cond_1a
36560     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->enableScreenAfterBoot()V
36562     :cond_1a
36563     return-void
36565     :cond_1b
36566     move v1, v2
36568     goto :goto_c
36570     :catchall_1d
36571     move-exception v2
36573     :try_start_1e
36574     monitor-exit p0
36575     :try_end_1f
36576     .catchall {:try_start_1e .. :try_end_1f} :catchall_1d
36578     throw v2
36579 .end method
36581 .method ensurePackageDexOpt(Ljava/lang/String;)V
36582     .registers 4
36584     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
36586     move-result-object v0
36588     :try_start_4
36589     invoke-interface {v0, p1}, Landroid/content/pm/IPackageManager;->performDexOpt(Ljava/lang/String;)Z
36591     move-result v1
36593     if-eqz v1, :cond_d
36595     const/4 v1, 0x1
36597     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mDidDexOpt:Z
36598     :try_end_d
36599     .catch Landroid/os/RemoteException; {:try_start_4 .. :try_end_d} :catch_e
36601     :cond_d
36602     :goto_d
36603     return-void
36605     :catch_e
36606     move-exception v1
36608     goto :goto_d
36609 .end method
36611 .method public final enterSafeMode()V
36612     .registers 2
36614     monitor-enter p0
36616     :try_start_1
36617     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
36618     :try_end_3
36619     .catchall {:try_start_1 .. :try_end_3} :catchall_e
36621     if-nez v0, :cond_c
36623     :try_start_5
36624     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
36626     move-result-object v0
36628     invoke-interface {v0}, Landroid/content/pm/IPackageManager;->enterSafeMode()V
36629     :try_end_c
36630     .catchall {:try_start_5 .. :try_end_c} :catchall_e
36631     .catch Landroid/os/RemoteException; {:try_start_5 .. :try_end_c} :catch_11
36633     :cond_c
36634     :goto_c
36635     :try_start_c
36636     monitor-exit p0
36638     return-void
36640     :catchall_e
36641     move-exception v0
36643     monitor-exit p0
36644     :try_end_10
36645     .catchall {:try_start_c .. :try_end_10} :catchall_e
36647     throw v0
36649     :catch_11
36650     move-exception v0
36652     goto :goto_c
36653 .end method
36655 .method public final finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;)Z
36656     .registers 16
36658     const/4 v1, 0x1
36660     const/4 v10, 0x0
36662     if-eqz p3, :cond_12
36664     invoke-virtual {p3}, Landroid/content/Intent;->hasFileDescriptors()Z
36666     move-result v0
36668     if-ne v0, v1, :cond_12
36670     new-instance v0, Ljava/lang/IllegalArgumentException;
36672     const-string v1, "File descriptors passed in Intent"
36674     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
36676     throw v0
36678     :cond_12
36679     monitor-enter p0
36681     :try_start_13
36682     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
36684     if-eqz v0, :cond_35
36686     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
36688     const/4 v1, 0x0
36690     invoke-virtual {v0, p1, v1}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Landroid/os/IBinder;I)Lcom/android/server/am/ActivityRecord;
36691     :try_end_1d
36692     .catchall {:try_start_13 .. :try_end_1d} :catchall_32
36694     move-result-object v7
36696     if-eqz v7, :cond_35
36698     const/4 v11, 0x1
36700     :try_start_21
36701     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
36703     iget-object v1, v7, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
36705     invoke-interface {v0, v1}, Landroid/app/IActivityController;->activityResuming(Ljava/lang/String;)Z
36706     :try_end_28
36707     .catchall {:try_start_21 .. :try_end_28} :catchall_32
36708     .catch Landroid/os/RemoteException; {:try_start_21 .. :try_end_28} :catch_2d
36710     move-result v11
36712     :goto_29
36713     if-nez v11, :cond_35
36715     :try_start_2b
36716     monitor-exit p0
36718     :goto_2c
36719     return v10
36721     :catch_2d
36722     move-exception v6
36724     const/4 v0, 0x0
36726     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
36728     goto :goto_29
36730     :catchall_32
36731     move-exception v0
36733     monitor-exit p0
36734     :try_end_34
36735     .catchall {:try_start_2b .. :try_end_34} :catchall_32
36737     throw v0
36739     :cond_35
36740     :try_start_35
36741     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
36743     move-result-wide v8
36745     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
36747     const-string v4, "app-request"
36749     const/4 v5, 0x1
36751     move-object v1, p1
36753     move v2, p2
36755     move-object v3, p3
36757     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityStack;->requestFinishActivityLocked(Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Z)Z
36759     move-result v10
36761     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
36763     monitor-exit p0
36764     :try_end_49
36765     .catchall {:try_start_35 .. :try_end_49} :catchall_32
36767     goto :goto_2c
36768 .end method
36770 .method public finishActivityAffinity(Landroid/os/IBinder;)Z
36771     .registers 6
36773     monitor-enter p0
36775     :try_start_1
36776     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
36778     move-result-wide v0
36780     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
36782     invoke-virtual {v3, p1}, Lcom/android/server/am/ActivityStack;->finishActivityAffinityLocked(Landroid/os/IBinder;)Z
36784     move-result v2
36786     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
36788     monitor-exit p0
36790     return v2
36792     :catchall_10
36793     move-exception v3
36795     monitor-exit p0
36796     :try_end_12
36797     .catchall {:try_start_1 .. :try_end_12} :catchall_10
36799     throw v3
36800 .end method
36802 .method final finishBooting()V
36803     .registers 25
36805     new-instance v21, Landroid/content/IntentFilter;
36807     invoke-direct/range {v21 .. v21}, Landroid/content/IntentFilter;-><init>()V
36809     const-string v2, "android.intent.action.QUERY_PACKAGE_RESTART"
36811     move-object/from16 v0, v21
36813     invoke-virtual {v0, v2}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
36815     const-string v2, "package"
36817     move-object/from16 v0, v21
36819     invoke-virtual {v0, v2}, Landroid/content/IntentFilter;->addDataScheme(Ljava/lang/String;)V
36821     move-object/from16 v0, p0
36823     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
36825     new-instance v3, Lcom/android/server/am/ActivityManagerService$6;
36827     move-object/from16 v0, p0
36829     invoke-direct {v3, v0}, Lcom/android/server/am/ActivityManagerService$6;-><init>(Lcom/android/server/am/ActivityManagerService;)V
36831     move-object/from16 v0, v21
36833     invoke-virtual {v2, v3, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
36835     move-object/from16 v0, p0
36837     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
36839     new-instance v3, Lcom/android/server/am/ActivityManagerService$7;
36841     move-object/from16 v0, p0
36843     invoke-direct {v3, v0}, Lcom/android/server/am/ActivityManagerService$7;-><init>(Lcom/android/server/am/ActivityManagerService;)V
36845     invoke-static {v2, v3}, Lcom/android/internal/app/ThemeUtils;->registerThemeChangeReceiver(Landroid/content/Context;Landroid/content/BroadcastReceiver;)V
36847     monitor-enter p0
36849     :try_start_32
36850     move-object/from16 v0, p0
36852     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
36854     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
36856     move-result v17
36858     if-lez v17, :cond_64
36860     new-instance v22, Ljava/util/ArrayList;
36862     move-object/from16 v0, p0
36864     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
36866     move-object/from16 v0, v22
36868     invoke-direct {v0, v2}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
36870     const/16 v19, 0x0
36872     :goto_49
36873     move/from16 v0, v19
36875     move/from16 v1, v17
36877     if-ge v0, v1, :cond_64
36879     move-object/from16 v0, v22
36881     move/from16 v1, v19
36883     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
36885     move-result-object v2
36887     check-cast v2, Lcom/android/server/am/ProcessRecord;
36889     const-string v3, "on-hold"
36891     const/4 v4, 0x0
36893     move-object/from16 v0, p0
36895     invoke-direct {v0, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
36897     add-int/lit8 v19, v19, 0x1
36899     goto :goto_49
36901     :cond_64
36902     move-object/from16 v0, p0
36904     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
36906     const/4 v3, 0x1
36908     if-eq v2, v3, :cond_e4
36910     move-object/from16 v0, p0
36912     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
36914     const/16 v3, 0x1b
36916     invoke-virtual {v2, v3}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
36918     move-result-object v20
36920     move-object/from16 v0, p0
36922     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
36924     const-wide/32 v3, 0xdbba0
36926     move-object/from16 v0, v20
36928     invoke-virtual {v2, v0, v3, v4}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
36930     const-string v2, "sys.boot_completed"
36932     const-string v3, "1"
36934     invoke-static {v2, v3}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
36936     const-string v2, "dev.bootcomplete"
36938     const-string v3, "1"
36940     invoke-static {v2, v3}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
36942     const/16 v18, 0x0
36944     :goto_91
36945     move-object/from16 v0, p0
36947     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
36949     invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
36951     move-result v2
36953     move/from16 v0, v18
36955     if-ge v0, v2, :cond_e4
36957     move-object/from16 v0, p0
36959     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
36961     move/from16 v0, v18
36963     invoke-virtual {v2, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
36965     move-result-object v23
36967     check-cast v23, Lcom/android/server/am/UserStartedState;
36969     move-object/from16 v0, v23
36971     iget v2, v0, Lcom/android/server/am/UserStartedState;->mState:I
36973     if-nez v2, :cond_e1
36975     const/4 v2, 0x1
36977     move-object/from16 v0, v23
36979     iput v2, v0, Lcom/android/server/am/UserStartedState;->mState:I
36981     move-object/from16 v0, p0
36983     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
36985     move/from16 v0, v18
36987     invoke-virtual {v2, v0}, Landroid/util/SparseArray;->keyAt(I)I
36989     move-result v16
36991     new-instance v5, Landroid/content/Intent;
36993     const-string v2, "android.intent.action.BOOT_COMPLETED"
36995     const/4 v3, 0x0
36997     invoke-direct {v5, v2, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
36999     const-string v2, "android.intent.extra.user_handle"
37001     move/from16 v0, v16
37003     invoke-virtual {v5, v2, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
37005     const/4 v3, 0x0
37007     const/4 v4, 0x0
37009     const/4 v6, 0x0
37011     const/4 v7, 0x0
37013     const/4 v8, 0x0
37015     const/4 v9, 0x0
37017     const/4 v10, 0x0
37019     const-string v11, "android.permission.RECEIVE_BOOT_COMPLETED"
37021     const/4 v12, 0x0
37023     const/4 v13, 0x0
37025     sget v14, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
37027     const/16 v15, 0x3e8
37029     move-object/from16 v2, p0
37031     invoke-direct/range {v2 .. v16}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
37033     :cond_e1
37034     add-int/lit8 v18, v18, 0x1
37036     goto :goto_91
37038     :cond_e4
37039     monitor-exit p0
37041     return-void
37043     :catchall_e6
37044     move-exception v2
37046     monitor-exit p0
37047     :try_end_e8
37048     .catchall {:try_start_32 .. :try_end_e8} :catchall_e6
37050     throw v2
37051 .end method
37053 .method public final finishHeavyWeightApp()V
37054     .registers 11
37056     const-string v0, "android.permission.FORCE_STOP_PACKAGES"
37058     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
37060     move-result v0
37062     if-eqz v0, :cond_44
37064     new-instance v0, Ljava/lang/StringBuilder;
37066     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
37068     const-string v3, "Permission Denial: finishHeavyWeightApp() from pid="
37070     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37072     move-result-object v0
37074     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
37076     move-result v3
37078     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
37080     move-result-object v0
37082     const-string v3, ", uid="
37084     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37086     move-result-object v0
37088     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
37090     move-result v3
37092     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
37094     move-result-object v0
37096     const-string v3, " requires "
37098     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37100     move-result-object v0
37102     const-string v3, "android.permission.FORCE_STOP_PACKAGES"
37104     invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37106     move-result-object v0
37108     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37110     move-result-object v9
37112     const-string v0, "ActivityManager"
37114     invoke-static {v0, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
37116     new-instance v0, Ljava/lang/SecurityException;
37118     invoke-direct {v0, v9}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
37120     throw v0
37122     :cond_44
37123     monitor-enter p0
37125     :try_start_45
37126     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
37128     if-nez v0, :cond_4b
37130     monitor-exit p0
37132     :goto_4a
37133     return-void
37135     :cond_4b
37136     new-instance v7, Ljava/util/ArrayList;
37138     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
37140     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
37142     invoke-direct {v7, v0}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
37144     const/4 v8, 0x0
37146     :goto_55
37147     invoke-virtual {v7}, Ljava/util/ArrayList;->size()I
37149     move-result v0
37151     if-ge v8, v0, :cond_7c
37153     invoke-virtual {v7, v8}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
37155     move-result-object v1
37157     check-cast v1, Lcom/android/server/am/ActivityRecord;
37159     iget-boolean v0, v1, Lcom/android/server/am/ActivityRecord;->finishing:Z
37161     if-nez v0, :cond_79
37163     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
37165     iget-object v3, v1, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
37167     invoke-virtual {v0, v3}, Lcom/android/server/am/ActivityStack;->indexOfTokenLocked(Landroid/os/IBinder;)I
37169     move-result v2
37171     if-ltz v2, :cond_79
37173     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
37175     const/4 v3, 0x0
37177     const/4 v4, 0x0
37179     const-string v5, "finish-heavy"
37181     const/4 v6, 0x1
37183     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;Z)Z
37185     :cond_79
37186     add-int/lit8 v8, v8, 0x1
37188     goto :goto_55
37190     :cond_7c
37191     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
37193     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
37195     const/16 v4, 0x19
37197     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
37199     iget v5, v5, Lcom/android/server/am/ProcessRecord;->userId:I
37201     const/4 v6, 0x0
37203     invoke-virtual {v3, v4, v5, v6}, Landroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
37205     move-result-object v3
37207     invoke-virtual {v0, v3}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
37209     const/4 v0, 0x0
37211     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHeavyWeightProcess:Lcom/android/server/am/ProcessRecord;
37213     monitor-exit p0
37215     goto :goto_4a
37217     :catchall_93
37218     move-exception v0
37220     monitor-exit p0
37221     :try_end_95
37222     .catchall {:try_start_45 .. :try_end_95} :catchall_93
37224     throw v0
37225 .end method
37227 .method public finishInstrumentation(Landroid/app/IApplicationThread;ILandroid/os/Bundle;)V
37228     .registers 11
37230     invoke-static {}, Landroid/os/UserHandle;->getCallingUserId()I
37232     move-result v3
37234     if-eqz p3, :cond_14
37236     invoke-virtual {p3}, Landroid/os/Bundle;->hasFileDescriptors()Z
37238     move-result v4
37240     if-eqz v4, :cond_14
37242     new-instance v4, Ljava/lang/IllegalArgumentException;
37244     const-string v5, "File descriptors passed in Intent"
37246     invoke-direct {v4, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
37248     throw v4
37250     :cond_14
37251     monitor-enter p0
37253     :try_start_15
37254     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
37256     move-result-object v0
37258     if-nez v0, :cond_35
37260     const-string v4, "ActivityManager"
37262     new-instance v5, Ljava/lang/StringBuilder;
37264     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
37266     const-string v6, "finishInstrumentation: no app for "
37268     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37270     move-result-object v5
37272     invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
37274     move-result-object v5
37276     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37278     move-result-object v5
37280     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
37282     monitor-exit p0
37284     :goto_34
37285     return-void
37287     :cond_35
37288     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
37290     move-result-wide v1
37292     invoke-virtual {p0, v0, p2, p3}, Lcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
37294     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
37296     monitor-exit p0
37298     goto :goto_34
37300     :catchall_41
37301     move-exception v4
37303     monitor-exit p0
37304     :try_end_43
37305     .catchall {:try_start_15 .. :try_end_43} :catchall_41
37307     throw v4
37308 .end method
37310 .method finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
37311     .registers 12
37313     const/4 v5, 0x1
37315     const/4 v3, 0x0
37317     const/4 v2, 0x0
37319     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
37321     if-eqz v0, :cond_e
37323     :try_start_7
37324     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
37326     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
37328     invoke-interface {v0, v1, p2, p3}, Landroid/app/IInstrumentationWatcher;->instrumentationFinished(Landroid/content/ComponentName;ILandroid/os/Bundle;)V
37329     :try_end_e
37330     .catch Landroid/os/RemoteException; {:try_start_7 .. :try_end_e} :catch_26
37332     :cond_e
37333     :goto_e
37334     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
37336     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
37338     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
37340     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationProfileFile:Ljava/lang/String;
37342     iput-object v2, p1, Lcom/android/server/am/ProcessRecord;->instrumentationArguments:Landroid/os/Bundle;
37344     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
37346     iget-object v1, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
37348     const/4 v2, -0x1
37350     iget v7, p1, Lcom/android/server/am/ProcessRecord;->userId:I
37352     move-object v0, p0
37354     move v4, v3
37356     move v6, v5
37358     invoke-direct/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
37360     return-void
37362     :catch_26
37363     move-exception v0
37365     goto :goto_e
37366 .end method
37368 .method public finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;Z)V
37369     .registers 16
37371     if-eqz p4, :cond_10
37373     invoke-virtual {p4}, Landroid/os/Bundle;->hasFileDescriptors()Z
37375     move-result v0
37377     if-eqz v0, :cond_10
37379     new-instance v0, Ljava/lang/IllegalArgumentException;
37381     const-string v2, "File descriptors passed in Bundle"
37383     invoke-direct {v0, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
37385     throw v0
37387     :cond_10
37388     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
37390     move-result-wide v8
37392     const/4 v7, 0x0
37394     const/4 v1, 0x0
37396     :try_start_16
37397     monitor-enter p0
37398     :try_end_17
37399     .catchall {:try_start_16 .. :try_end_17} :catchall_3b
37401     :try_start_17
37402     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->broadcastRecordForReceiverLocked(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
37404     move-result-object v1
37406     if-eqz v1, :cond_28
37408     iget-object v0, v1, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
37410     const/4 v6, 0x1
37412     move v2, p2
37414     move-object v3, p3
37416     move-object v4, p4
37418     move v5, p5
37420     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
37422     move-result v7
37424     :cond_28
37425     monitor-exit p0
37426     :try_end_29
37427     .catchall {:try_start_17 .. :try_end_29} :catchall_38
37429     if-eqz v7, :cond_31
37431     :try_start_2b
37432     iget-object v0, v1, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
37434     const/4 v2, 0x0
37436     invoke-virtual {v0, v2}, Lcom/android/server/am/BroadcastQueue;->processNextBroadcast(Z)V
37438     :cond_31
37439     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->trimApplications()V
37440     :try_end_34
37441     .catchall {:try_start_2b .. :try_end_34} :catchall_3b
37443     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
37445     return-void
37447     :catchall_38
37448     move-exception v0
37450     :try_start_39
37451     monitor-exit p0
37452     :try_end_3a
37453     .catchall {:try_start_39 .. :try_end_3a} :catchall_38
37455     :try_start_3a
37456     throw v0
37457     :try_end_3b
37458     .catchall {:try_start_3a .. :try_end_3b} :catchall_3b
37460     :catchall_3b
37461     move-exception v0
37463     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
37465     throw v0
37466 .end method
37468 .method public final finishSubActivity(Landroid/os/IBinder;Ljava/lang/String;I)V
37469     .registers 7
37471     monitor-enter p0
37473     :try_start_1
37474     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
37476     move-result-wide v0
37478     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
37480     invoke-virtual {v2, p1, p2, p3}, Lcom/android/server/am/ActivityStack;->finishSubActivityLocked(Landroid/os/IBinder;Ljava/lang/String;I)V
37482     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
37484     monitor-exit p0
37486     return-void
37488     :catchall_f
37489     move-exception v2
37491     monitor-exit p0
37492     :try_end_11
37493     .catchall {:try_start_1 .. :try_end_11} :catchall_f
37495     throw v2
37496 .end method
37498 .method finishUserStop(Lcom/android/server/am/UserStartedState;)V
37499     .registers 8
37501     iget-object v4, p1, Lcom/android/server/am/UserStartedState;->mHandle:Landroid/os/UserHandle;
37503     invoke-virtual {v4}, Landroid/os/UserHandle;->getIdentifier()I
37505     move-result v3
37507     monitor-enter p0
37509     :try_start_7
37510     new-instance v0, Ljava/util/ArrayList;
37512     iget-object v4, p1, Lcom/android/server/am/UserStartedState;->mStopCallbacks:Ljava/util/ArrayList;
37514     invoke-direct {v0, v4}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
37516     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
37518     invoke-virtual {v4, v3}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
37520     move-result-object v4
37522     if-eq v4, p1, :cond_2d
37524     const/4 v2, 0x0
37526     :goto_17
37527     monitor-exit p0
37528     :try_end_18
37529     .catchall {:try_start_7 .. :try_end_18} :catchall_4a
37531     const/4 v1, 0x0
37533     :goto_19
37534     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
37536     move-result v4
37538     if-ge v1, v4, :cond_59
37540     if-eqz v2, :cond_4d
37542     :try_start_21
37543     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
37545     move-result-object v4
37547     check-cast v4, Landroid/app/IStopUserCallback;
37549     invoke-interface {v4, v3}, Landroid/app/IStopUserCallback;->userStopped(I)V
37550     :try_end_2a
37551     .catch Landroid/os/RemoteException; {:try_start_21 .. :try_end_2a} :catch_57
37553     :goto_2a
37554     add-int/lit8 v1, v1, 0x1
37556     goto :goto_19
37558     :cond_2d
37559     :try_start_2d
37560     iget v4, p1, Lcom/android/server/am/UserStartedState;->mState:I
37562     const/4 v5, 0x3
37564     if-eq v4, v5, :cond_34
37566     const/4 v2, 0x0
37568     goto :goto_17
37570     :cond_34
37571     const/4 v2, 0x1
37573     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
37575     invoke-virtual {v4, v3}, Landroid/util/SparseArray;->remove(I)V
37577     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
37579     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
37581     move-result-object v5
37583     invoke-virtual {v4, v5}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
37585     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateStartedUserArrayLocked()V
37587     invoke-direct {p0, v3}, Lcom/android/server/am/ActivityManagerService;->forceStopUserLocked(I)V
37589     goto :goto_17
37591     :catchall_4a
37592     move-exception v4
37594     monitor-exit p0
37595     :try_end_4c
37596     .catchall {:try_start_2d .. :try_end_4c} :catchall_4a
37598     throw v4
37600     :cond_4d
37601     :try_start_4d
37602     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
37604     move-result-object v4
37606     check-cast v4, Landroid/app/IStopUserCallback;
37608     invoke-interface {v4, v3}, Landroid/app/IStopUserCallback;->userStopAborted(I)V
37609     :try_end_56
37610     .catch Landroid/os/RemoteException; {:try_start_4d .. :try_end_56} :catch_57
37612     goto :goto_2a
37614     :catch_57
37615     move-exception v4
37617     goto :goto_2a
37619     :cond_59
37620     return-void
37621 .end method
37623 .method finishUserSwitch(Lcom/android/server/am/UserStartedState;)V
37624     .registers 22
37626     monitor-enter p0
37628     :try_start_1
37629     move-object/from16 v0, p1
37631     iget v1, v0, Lcom/android/server/am/UserStartedState;->mState:I
37633     if-nez v1, :cond_49
37635     move-object/from16 v0, p0
37637     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
37639     move-object/from16 v0, p1
37641     iget-object v2, v0, Lcom/android/server/am/UserStartedState;->mHandle:Landroid/os/UserHandle;
37643     invoke-virtual {v2}, Landroid/os/UserHandle;->getIdentifier()I
37645     move-result v2
37647     invoke-virtual {v1, v2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
37649     move-result-object v1
37651     move-object/from16 v0, p1
37653     if-ne v1, v0, :cond_49
37655     const/4 v1, 0x1
37657     move-object/from16 v0, p1
37659     iput v1, v0, Lcom/android/server/am/UserStartedState;->mState:I
37661     move-object/from16 v0, p1
37663     iget-object v1, v0, Lcom/android/server/am/UserStartedState;->mHandle:Landroid/os/UserHandle;
37665     invoke-virtual {v1}, Landroid/os/UserHandle;->getIdentifier()I
37667     move-result v15
37669     new-instance v4, Landroid/content/Intent;
37671     const-string v1, "android.intent.action.BOOT_COMPLETED"
37673     const/4 v2, 0x0
37675     invoke-direct {v4, v1, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
37677     const-string v1, "android.intent.extra.user_handle"
37679     invoke-virtual {v4, v1, v15}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
37681     const/4 v2, 0x0
37683     const/4 v3, 0x0
37685     const/4 v5, 0x0
37687     const/4 v6, 0x0
37689     const/4 v7, 0x0
37691     const/4 v8, 0x0
37693     const/4 v9, 0x0
37695     const-string v10, "android.permission.RECEIVE_BOOT_COMPLETED"
37697     const/4 v11, 0x0
37699     const/4 v12, 0x0
37701     sget v13, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
37703     const/16 v14, 0x3e8
37705     move-object/from16 v1, p0
37707     invoke-direct/range {v1 .. v15}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
37709     :cond_49
37710     move-object/from16 v0, p0
37712     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
37714     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
37716     move-result v17
37718     const/16 v16, 0x0
37720     :goto_53
37721     const/4 v1, 0x3
37723     move/from16 v0, v17
37725     if-le v0, v1, :cond_c1
37727     move-object/from16 v0, p0
37729     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
37731     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
37733     move-result v1
37735     move/from16 v0, v16
37737     if-ge v0, v1, :cond_c1
37739     move-object/from16 v0, p0
37741     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
37743     move/from16 v0, v16
37745     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
37747     move-result-object v18
37749     check-cast v18, Ljava/lang/Integer;
37751     move-object/from16 v0, p0
37753     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
37755     invoke-virtual/range {v18 .. v18}, Ljava/lang/Integer;->intValue()I
37757     move-result v2
37759     invoke-virtual {v1, v2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
37761     move-result-object v19
37763     check-cast v19, Lcom/android/server/am/UserStartedState;
37765     if-nez v19, :cond_8c
37767     move-object/from16 v0, p0
37769     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
37771     move/from16 v0, v16
37773     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
37775     add-int/lit8 v17, v17, -0x1
37777     goto :goto_53
37779     :cond_8c
37780     move-object/from16 v0, v19
37782     iget v1, v0, Lcom/android/server/am/UserStartedState;->mState:I
37784     const/4 v2, 0x2
37786     if-eq v1, v2, :cond_9a
37788     move-object/from16 v0, v19
37790     iget v1, v0, Lcom/android/server/am/UserStartedState;->mState:I
37792     const/4 v2, 0x3
37794     if-ne v1, v2, :cond_9f
37796     :cond_9a
37797     add-int/lit8 v17, v17, -0x1
37799     add-int/lit8 v16, v16, 0x1
37801     goto :goto_53
37803     :cond_9f
37804     invoke-virtual/range {v18 .. v18}, Ljava/lang/Integer;->intValue()I
37806     move-result v1
37808     if-eqz v1, :cond_af
37810     invoke-virtual/range {v18 .. v18}, Ljava/lang/Integer;->intValue()I
37812     move-result v1
37814     move-object/from16 v0, p0
37816     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
37818     if-ne v1, v2, :cond_b2
37820     :cond_af
37821     add-int/lit8 v16, v16, 0x1
37823     goto :goto_53
37825     :cond_b2
37826     invoke-virtual/range {v18 .. v18}, Ljava/lang/Integer;->intValue()I
37828     move-result v1
37830     const/4 v2, 0x0
37832     move-object/from16 v0, p0
37834     invoke-direct {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->stopUserLocked(ILandroid/app/IStopUserCallback;)I
37836     add-int/lit8 v17, v17, -0x1
37838     add-int/lit8 v16, v16, 0x1
37840     goto :goto_53
37842     :cond_c1
37843     monitor-exit p0
37845     return-void
37847     :catchall_c3
37848     move-exception v1
37850     monitor-exit p0
37851     :try_end_c5
37852     .catchall {:try_start_1 .. :try_end_c5} :catchall_c3
37854     throw v1
37855 .end method
37857 .method public forceStopPackage(Ljava/lang/String;I)V
37858     .registers 25
37860     const-string v3, "android.permission.FORCE_STOP_PACKAGES"
37862     move-object/from16 v0, p0
37864     invoke-virtual {v0, v3}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
37866     move-result v3
37868     if-eqz v3, :cond_4a
37870     new-instance v3, Ljava/lang/StringBuilder;
37872     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
37874     const-string v4, "Permission Denial: forceStopPackage() from pid="
37876     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37878     move-result-object v3
37880     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
37882     move-result v4
37884     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
37886     move-result-object v3
37888     const-string v4, ", uid="
37890     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37892     move-result-object v3
37894     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
37896     move-result v4
37898     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
37900     move-result-object v3
37902     const-string v4, " requires "
37904     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37906     move-result-object v3
37908     const-string v4, "android.permission.FORCE_STOP_PACKAGES"
37910     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
37912     move-result-object v3
37914     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
37916     move-result-object v17
37918     const-string v3, "ActivityManager"
37920     move-object/from16 v0, v17
37922     invoke-static {v3, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
37924     new-instance v3, Ljava/lang/SecurityException;
37926     move-object/from16 v0, v17
37928     invoke-direct {v3, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
37930     throw v3
37932     :cond_4a
37933     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
37935     move-result v4
37937     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
37939     move-result v5
37941     const/4 v7, 0x1
37943     const/4 v8, 0x1
37945     const-string v9, "forceStopPackage"
37947     const/4 v10, 0x0
37949     move-object/from16 v3, p0
37951     move/from16 v6, p2
37953     invoke-virtual/range {v3 .. v10}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
37955     move-result p2
37957     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
37959     move-result-wide v12
37961     :try_start_63
37962     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
37964     move-result-object v19
37966     monitor-enter p0
37967     :try_end_68
37968     .catchall {:try_start_63 .. :try_end_68} :catchall_b7
37970     const/4 v3, -0x1
37972     move/from16 v0, p2
37974     if-ne v0, v3, :cond_ab
37976     :try_start_6d
37977     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->getUsersLocked()[I
37979     move-result-object v21
37981     :goto_71
37982     move-object/from16 v11, v21
37984     array-length v0, v11
37986     move/from16 v16, v0
37988     const/4 v15, 0x0
37990     :goto_77
37991     move/from16 v0, v16
37993     if-ge v15, v0, :cond_101
37995     aget v20, v11, v15
37996     :try_end_7d
37997     .catchall {:try_start_6d .. :try_end_7d} :catchall_b4
37999     const/16 v18, -0x1
38001     :try_start_7f
38002     move-object/from16 v0, v19
38004     move-object/from16 v1, p1
38006     move/from16 v2, v20
38008     invoke-interface {v0, v1, v2}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
38009     :try_end_88
38010     .catchall {:try_start_7f .. :try_end_88} :catchall_b4
38011     .catch Landroid/os/RemoteException; {:try_start_7f .. :try_end_88} :catch_106
38013     move-result v18
38015     :goto_89
38016     const/4 v3, -0x1
38018     move/from16 v0, v18
38020     if-ne v0, v3, :cond_bc
38022     :try_start_8e
38023     const-string v3, "ActivityManager"
38025     new-instance v4, Ljava/lang/StringBuilder;
38027     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
38029     const-string v5, "Invalid packageName: "
38031     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38033     move-result-object v4
38035     move-object/from16 v0, p1
38037     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38039     move-result-object v4
38041     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38043     move-result-object v4
38045     invoke-static {v3, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
38047     :cond_a8
38048     :goto_a8
38049     add-int/lit8 v15, v15, 0x1
38051     goto :goto_77
38053     :cond_ab
38054     const/4 v3, 0x1
38056     new-array v0, v3, [I
38058     move-object/from16 v21, v0
38060     const/4 v3, 0x0
38062     aput p2, v21, v3
38064     goto :goto_71
38066     :catchall_b4
38067     move-exception v3
38069     monitor-exit p0
38070     :try_end_b6
38071     .catchall {:try_start_8e .. :try_end_b6} :catchall_b4
38073     :try_start_b6
38074     throw v3
38075     :try_end_b7
38076     .catchall {:try_start_b6 .. :try_end_b7} :catchall_b7
38078     :catchall_b7
38079     move-exception v3
38081     invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
38083     throw v3
38085     :cond_bc
38086     const/4 v3, 0x1
38088     :try_start_bd
38089     move-object/from16 v0, v19
38091     move-object/from16 v1, p1
38093     move/from16 v2, v20
38095     invoke-interface {v0, v1, v3, v2}, Landroid/content/pm/IPackageManager;->setPackageStoppedState(Ljava/lang/String;ZI)V
38096     :try_end_c6
38097     .catchall {:try_start_bd .. :try_end_c6} :catchall_b4
38098     .catch Landroid/os/RemoteException; {:try_start_bd .. :try_end_c6} :catch_108
38099     .catch Ljava/lang/IllegalArgumentException; {:try_start_bd .. :try_end_c6} :catch_db
38101     :goto_c6
38102     const/4 v3, 0x0
38104     :try_start_c7
38105     move-object/from16 v0, p0
38107     move/from16 v1, v20
38109     invoke-virtual {v0, v1, v3}, Lcom/android/server/am/ActivityManagerService;->isUserRunningLocked(IZ)Z
38111     move-result v3
38113     if-eqz v3, :cond_a8
38115     move-object/from16 v0, p0
38117     move-object/from16 v1, p1
38119     move/from16 v2, v18
38121     invoke-direct {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;I)V
38123     goto :goto_a8
38125     :catch_db
38126     move-exception v14
38128     const-string v3, "ActivityManager"
38130     new-instance v4, Ljava/lang/StringBuilder;
38132     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
38134     const-string v5, "Failed trying to unstop package "
38136     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38138     move-result-object v4
38140     move-object/from16 v0, p1
38142     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38144     move-result-object v4
38146     const-string v5, ": "
38148     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38150     move-result-object v4
38152     invoke-virtual {v4, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
38154     move-result-object v4
38156     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38158     move-result-object v4
38160     invoke-static {v3, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
38162     goto :goto_c6
38164     :cond_101
38165     monitor-exit p0
38166     :try_end_102
38167     .catchall {:try_start_c7 .. :try_end_102} :catchall_b4
38169     invoke-static {v12, v13}, Landroid/os/Binder;->restoreCallingIdentity(J)V
38171     return-void
38173     :catch_106
38174     move-exception v3
38176     goto :goto_89
38178     :catch_108
38179     move-exception v3
38181     goto :goto_c6
38182 .end method
38184 .method foregroundTokenDied(Lcom/android/server/am/ActivityManagerService$ForegroundToken;)V
38185     .registers 7
38187     monitor-enter p0
38189     :try_start_1
38190     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
38192     monitor-enter v3
38193     :try_end_4
38194     .catchall {:try_start_1 .. :try_end_4} :catchall_29
38196     :try_start_4
38197     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
38199     iget v4, p1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
38201     invoke-virtual {v2, v4}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
38203     move-result-object v0
38205     check-cast v0, Lcom/android/server/am/ActivityManagerService$ForegroundToken;
38207     if-eq v0, p1, :cond_13
38209     monitor-exit v3
38210     :try_end_11
38211     .catchall {:try_start_4 .. :try_end_11} :catchall_38
38213     :try_start_11
38214     monitor-exit p0
38215     :try_end_12
38216     .catchall {:try_start_11 .. :try_end_12} :catchall_29
38218     :goto_12
38219     return-void
38221     :cond_13
38222     :try_start_13
38223     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
38225     iget v4, p1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
38227     invoke-virtual {v2, v4}, Landroid/util/SparseArray;->remove(I)V
38229     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
38231     iget v4, p1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
38233     invoke-virtual {v2, v4}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
38235     move-result-object v1
38237     check-cast v1, Lcom/android/server/am/ProcessRecord;
38239     if-nez v1, :cond_2c
38241     monitor-exit v3
38242     :try_end_27
38243     .catchall {:try_start_13 .. :try_end_27} :catchall_38
38245     :try_start_27
38246     monitor-exit p0
38248     goto :goto_12
38250     :catchall_29
38251     move-exception v2
38253     monitor-exit p0
38254     :try_end_2b
38255     .catchall {:try_start_27 .. :try_end_2b} :catchall_29
38257     throw v2
38259     :cond_2c
38260     const/4 v2, 0x0
38262     :try_start_2d
38263     iput-object v2, v1, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
38265     const/4 v2, 0x0
38267     iput-boolean v2, v1, Lcom/android/server/am/ProcessRecord;->foregroundServices:Z
38269     monitor-exit v3
38270     :try_end_33
38271     .catchall {:try_start_2d .. :try_end_33} :catchall_38
38273     :try_start_33
38274     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
38276     monitor-exit p0
38277     :try_end_37
38278     .catchall {:try_start_33 .. :try_end_37} :catchall_29
38280     goto :goto_12
38282     :catchall_38
38283     move-exception v2
38285     :try_start_39
38286     monitor-exit v3
38287     :try_end_3a
38288     .catchall {:try_start_39 .. :try_end_3a} :catchall_38
38290     :try_start_3a
38291     throw v2
38292     :try_end_3b
38293     .catchall {:try_start_3a .. :try_end_3b} :catchall_29
38294 .end method
38296 .method public getActivityClassForToken(Landroid/os/IBinder;)Landroid/content/ComponentName;
38297     .registers 4
38299     monitor-enter p0
38301     :try_start_1
38302     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
38304     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
38306     move-result-object v0
38308     if-nez v0, :cond_c
38310     const/4 v1, 0x0
38312     monitor-exit p0
38314     :goto_b
38315     return-object v1
38317     :cond_c
38318     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
38320     invoke-virtual {v1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
38322     move-result-object v1
38324     monitor-exit p0
38326     goto :goto_b
38328     :catchall_14
38329     move-exception v1
38331     monitor-exit p0
38332     :try_end_16
38333     .catchall {:try_start_1 .. :try_end_16} :catchall_14
38335     throw v1
38336 .end method
38338 .method getActivityInfoForUser(Landroid/content/pm/ActivityInfo;I)Landroid/content/pm/ActivityInfo;
38339     .registers 6
38341     if-eqz p1, :cond_e
38343     const/4 v1, 0x1
38345     if-ge p2, v1, :cond_10
38347     iget-object v1, p1, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
38349     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
38351     const v2, 0x186a0
38353     if-ge v1, v2, :cond_10
38355     :cond_e
38356     move-object v0, p1
38358     :goto_f
38359     return-object v0
38361     :cond_10
38362     new-instance v0, Landroid/content/pm/ActivityInfo;
38364     invoke-direct {v0, p1}, Landroid/content/pm/ActivityInfo;-><init>(Landroid/content/pm/ActivityInfo;)V
38366     iget-object v1, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
38368     invoke-virtual {p0, v1, p2}, Lcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
38370     move-result-object v1
38372     iput-object v1, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
38374     goto :goto_f
38375 .end method
38377 .method getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
38378     .registers 6
38380     if-nez p1, :cond_4
38382     const/4 v0, 0x0
38384     :goto_3
38385     return-object v0
38387     :cond_4
38388     new-instance v0, Landroid/content/pm/ApplicationInfo;
38390     invoke-direct {v0, p1}, Landroid/content/pm/ApplicationInfo;-><init>(Landroid/content/pm/ApplicationInfo;)V
38392     iget v1, p1, Landroid/content/pm/ApplicationInfo;->uid:I
38394     invoke-direct {p0, v1, p2}, Lcom/android/server/am/ActivityManagerService;->applyUserId(II)I
38396     move-result v1
38398     iput v1, v0, Landroid/content/pm/ApplicationInfo;->uid:I
38400     new-instance v1, Ljava/lang/StringBuilder;
38402     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
38404     const-string v2, "/data/user/"
38406     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38408     move-result-object v1
38410     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
38412     move-result-object v1
38414     const-string v2, "/"
38416     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38418     move-result-object v1
38420     iget-object v2, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
38422     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38424     move-result-object v1
38426     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38428     move-result-object v1
38430     iput-object v1, v0, Landroid/content/pm/ApplicationInfo;->dataDir:Ljava/lang/String;
38432     goto :goto_3
38433 .end method
38435 .method public getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName;
38436     .registers 4
38438     monitor-enter p0
38440     :try_start_1
38441     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
38443     move-result-object v0
38445     if-eqz v0, :cond_f
38447     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
38449     invoke-virtual {v1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
38451     move-result-object v1
38453     :goto_d
38454     monitor-exit p0
38456     return-object v1
38458     :cond_f
38459     const/4 v1, 0x0
38461     goto :goto_d
38463     :catchall_11
38464     move-exception v1
38466     monitor-exit p0
38467     :try_end_13
38468     .catchall {:try_start_1 .. :try_end_13} :catchall_11
38470     throw v1
38471 .end method
38473 .method public getCallingPackage(Landroid/os/IBinder;)Ljava/lang/String;
38474     .registers 4
38476     monitor-enter p0
38478     :try_start_1
38479     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
38481     move-result-object v0
38483     if-eqz v0, :cond_11
38485     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
38487     if-eqz v1, :cond_11
38489     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
38491     iget-object v1, v1, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
38493     :goto_f
38494     monitor-exit p0
38496     return-object v1
38498     :cond_11
38499     const/4 v1, 0x0
38501     goto :goto_f
38503     :catchall_13
38504     move-exception v1
38506     monitor-exit p0
38507     :try_end_15
38508     .catchall {:try_start_1 .. :try_end_15} :catchall_13
38510     throw v1
38511 .end method
38513 .method public getConfiguration()Landroid/content/res/Configuration;
38514     .registers 3
38516     monitor-enter p0
38518     :try_start_1
38519     new-instance v0, Landroid/content/res/Configuration;
38521     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
38523     invoke-direct {v0, v1}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
38525     monitor-exit p0
38527     return-object v0
38529     :catchall_a
38530     move-exception v1
38532     monitor-exit p0
38533     :try_end_c
38534     .catchall {:try_start_1 .. :try_end_c} :catchall_a
38536     throw v1
38537 .end method
38539 .method public final getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;IZ)Landroid/app/IActivityManager$ContentProviderHolder;
38540     .registers 16
38542     const/4 v7, 0x0
38544     const-string v0, "getContentProvider"
38546     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
38548     if-nez p1, :cond_26
38550     new-instance v0, Ljava/lang/StringBuilder;
38552     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
38554     const-string v1, "null IApplicationThread when getting content provider "
38556     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38558     move-result-object v0
38560     invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38562     move-result-object v0
38564     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38566     move-result-object v10
38568     const-string v0, "ActivityManager"
38570     invoke-static {v0, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
38572     new-instance v0, Ljava/lang/SecurityException;
38574     invoke-direct {v0, v10}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
38576     throw v0
38578     :cond_26
38579     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
38581     move-result v1
38583     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
38585     move-result v2
38587     const/4 v4, 0x0
38589     const/4 v5, 0x1
38591     const-string v6, "getContentProvider"
38593     move-object v0, p0
38595     move v3, p3
38597     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
38599     move-result p3
38601     move-object v4, p0
38603     move-object v5, p1
38605     move-object v6, p2
38607     move v8, p4
38609     move v9, p3
38611     invoke-direct/range {v4 .. v9}, Lcom/android/server/am/ActivityManagerService;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ZI)Landroid/app/IActivityManager$ContentProviderHolder;
38613     move-result-object v0
38615     return-object v0
38616 .end method
38618 .method public getContentProviderExternal(Ljava/lang/String;ILandroid/os/IBinder;)Landroid/app/IActivityManager$ContentProviderHolder;
38619     .registers 12
38621     const-string v0, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY"
38623     const-string v1, "Do not have permission in call getContentProviderExternal()"
38625     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
38627     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
38629     move-result v1
38631     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
38633     move-result v2
38635     const/4 v4, 0x0
38637     const/4 v5, 0x1
38639     const-string v6, "getContentProvider"
38641     const/4 v7, 0x0
38643     move-object v0, p0
38645     move v3, p2
38647     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
38649     move-result p2
38651     invoke-direct {p0, p1, p3, p2}, Lcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)Landroid/app/IActivityManager$ContentProviderHolder;
38653     move-result-object v0
38655     return-object v0
38656 .end method
38658 .method public getCurrentUser()Landroid/content/pm/UserInfo;
38659     .registers 4
38661     const-string v1, "android.permission.INTERACT_ACROSS_USERS"
38663     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
38665     move-result v1
38667     if-eqz v1, :cond_4c
38669     const-string v1, "android.permission.INTERACT_ACROSS_USERS_FULL"
38671     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
38673     move-result v1
38675     if-eqz v1, :cond_4c
38677     new-instance v1, Ljava/lang/StringBuilder;
38679     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
38681     const-string v2, "Permission Denial: getCurrentUser() from pid="
38683     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38685     move-result-object v1
38687     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
38689     move-result v2
38691     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
38693     move-result-object v1
38695     const-string v2, ", uid="
38697     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38699     move-result-object v1
38701     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
38703     move-result v2
38705     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
38707     move-result-object v1
38709     const-string v2, " requires "
38711     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38713     move-result-object v1
38715     const-string v2, "android.permission.INTERACT_ACROSS_USERS"
38717     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
38719     move-result-object v1
38721     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
38723     move-result-object v0
38725     const-string v1, "ActivityManager"
38727     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
38729     new-instance v1, Ljava/lang/SecurityException;
38731     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
38733     throw v1
38735     :cond_4c
38736     monitor-enter p0
38738     :try_start_4d
38739     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->getUserManagerLocked()Lcom/android/server/pm/UserManagerService;
38741     move-result-object v1
38743     iget v2, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
38745     invoke-virtual {v1, v2}, Lcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
38747     move-result-object v1
38749     monitor-exit p0
38751     return-object v1
38753     :catchall_59
38754     move-exception v1
38756     monitor-exit p0
38757     :try_end_5b
38758     .catchall {:try_start_4d .. :try_end_5b} :catchall_59
38760     throw v1
38761 .end method
38763 .method getCurrentUserIdLocked()I
38764     .registers 2
38766     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
38768     return v0
38769 .end method
38771 .method public getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
38772     .registers 4
38774     new-instance v0, Landroid/content/pm/ConfigurationInfo;
38776     invoke-direct {v0}, Landroid/content/pm/ConfigurationInfo;-><init>()V
38778     monitor-enter p0
38780     :try_start_6
38781     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
38783     iget v1, v1, Landroid/content/res/Configuration;->touchscreen:I
38785     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqTouchScreen:I
38787     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
38789     iget v1, v1, Landroid/content/res/Configuration;->keyboard:I
38791     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqKeyboardType:I
38793     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
38795     iget v1, v1, Landroid/content/res/Configuration;->navigation:I
38797     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqNavigation:I
38799     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
38801     iget v1, v1, Landroid/content/res/Configuration;->navigation:I
38803     const/4 v2, 0x2
38805     if-eq v1, v2, :cond_26
38807     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
38809     iget v1, v1, Landroid/content/res/Configuration;->navigation:I
38811     const/4 v2, 0x3
38813     if-ne v1, v2, :cond_2c
38815     :cond_26
38816     iget v1, v0, Landroid/content/pm/ConfigurationInfo;->reqInputFeatures:I
38818     or-int/lit8 v1, v1, 0x2
38820     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqInputFeatures:I
38822     :cond_2c
38823     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
38825     iget v1, v1, Landroid/content/res/Configuration;->keyboard:I
38827     if-eqz v1, :cond_3f
38829     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
38831     iget v1, v1, Landroid/content/res/Configuration;->keyboard:I
38833     const/4 v2, 0x1
38835     if-eq v1, v2, :cond_3f
38837     iget v1, v0, Landroid/content/pm/ConfigurationInfo;->reqInputFeatures:I
38839     or-int/lit8 v1, v1, 0x1
38841     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqInputFeatures:I
38843     :cond_3f
38844     iget v1, p0, Lcom/android/server/am/ActivityManagerService;->GL_ES_VERSION:I
38846     iput v1, v0, Landroid/content/pm/ConfigurationInfo;->reqGlEsVersion:I
38848     monitor-exit p0
38850     return-object v0
38852     :catchall_45
38853     move-exception v1
38855     monitor-exit p0
38856     :try_end_47
38857     .catchall {:try_start_6 .. :try_end_47} :catchall_45
38859     throw v1
38860 .end method
38862 .method public getFrontActivityScreenCompatMode()I
38863     .registers 2
38865     const-string v0, "getFrontActivityScreenCompatMode"
38867     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
38869     monitor-enter p0
38871     :try_start_6
38872     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
38874     invoke-virtual {v0}, Lcom/android/server/am/CompatModePackages;->getFrontActivityScreenCompatModeLocked()I
38876     move-result v0
38878     monitor-exit p0
38880     return v0
38882     :catchall_e
38883     move-exception v0
38885     monitor-exit p0
38886     :try_end_10
38887     .catchall {:try_start_6 .. :try_end_10} :catchall_e
38889     throw v0
38890 .end method
38892 .method public getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;
38893     .registers 33
38895     const-string v1, "getIntentSender"
38897     move-object/from16 v0, p0
38899     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
38901     if-eqz p6, :cond_66
38903     move-object/from16 v0, p6
38905     array-length v1, v0
38907     const/4 v2, 0x1
38909     if-ge v1, v2, :cond_17
38911     new-instance v1, Ljava/lang/IllegalArgumentException;
38913     const-string v2, "Intents array length must be >= 1"
38915     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
38917     throw v1
38919     :cond_17
38920     const/16 v17, 0x0
38922     :goto_19
38923     move-object/from16 v0, p6
38925     array-length v1, v0
38927     move/from16 v0, v17
38929     if-ge v0, v1, :cond_54
38931     aget-object v18, p6, v17
38933     if-eqz v18, :cond_51
38935     invoke-virtual/range {v18 .. v18}, Landroid/content/Intent;->hasFileDescriptors()Z
38937     move-result v1
38939     if-eqz v1, :cond_32
38941     new-instance v1, Ljava/lang/IllegalArgumentException;
38943     const-string v2, "File descriptors passed in Intent"
38945     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
38947     throw v1
38949     :cond_32
38950     const/4 v1, 0x1
38952     move/from16 v0, p1
38954     if-ne v0, v1, :cond_48
38956     invoke-virtual/range {v18 .. v18}, Landroid/content/Intent;->getFlags()I
38958     move-result v1
38960     const/high16 v2, 0x400
38962     and-int/2addr v1, v2
38964     if-eqz v1, :cond_48
38966     new-instance v1, Ljava/lang/IllegalArgumentException;
38968     const-string v2, "Can\'t use FLAG_RECEIVER_BOOT_UPGRADE here"
38970     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
38972     throw v1
38974     :cond_48
38975     new-instance v1, Landroid/content/Intent;
38977     move-object/from16 v0, v18
38979     invoke-direct {v1, v0}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
38981     aput-object v1, p6, v17
38983     :cond_51
38984     add-int/lit8 v17, v17, 0x1
38986     goto :goto_19
38988     :cond_54
38989     if-eqz p7, :cond_66
38991     move-object/from16 v0, p7
38993     array-length v1, v0
38995     move-object/from16 v0, p6
38997     array-length v2, v0
38999     if-eq v1, v2, :cond_66
39001     new-instance v1, Ljava/lang/IllegalArgumentException;
39003     const-string v2, "Intent array length does not match resolvedTypes length"
39005     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
39007     throw v1
39009     :cond_66
39010     if-eqz p9, :cond_76
39012     invoke-virtual/range {p9 .. p9}, Landroid/os/Bundle;->hasFileDescriptors()Z
39014     move-result v1
39016     if-eqz v1, :cond_76
39018     new-instance v1, Ljava/lang/IllegalArgumentException;
39020     const-string v2, "File descriptors passed in options"
39022     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
39024     throw v1
39026     :cond_76
39027     monitor-enter p0
39029     :try_start_77
39030     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
39032     move-result v3
39034     move/from16 v20, p10
39036     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
39038     move-result v2
39040     const/4 v1, 0x1
39042     move/from16 v0, p1
39044     if-ne v0, v1, :cond_114
39046     const/4 v5, 0x1
39048     :goto_87
39049     const/4 v6, 0x0
39051     const-string v7, "getIntentSender"
39053     const/4 v8, 0x0
39055     move-object/from16 v1, p0
39057     move/from16 v4, p10
39059     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
39060     :try_end_92
39061     .catchall {:try_start_77 .. :try_end_92} :catchall_111
39063     move-result p10
39065     const/4 v1, -0x2
39067     move/from16 v0, v20
39069     if-ne v0, v1, :cond_9a
39071     const/16 p10, -0x2
39073     :cond_9a
39074     if-eqz v3, :cond_117
39076     const/16 v1, 0x3e8
39078     if-eq v3, v1, :cond_117
39080     :try_start_a0
39081     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
39083     move-result-object v1
39085     invoke-static {v3}, Landroid/os/UserHandle;->getUserId(I)I
39087     move-result v2
39089     move-object/from16 v0, p2
39091     invoke-interface {v1, v0, v2}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
39093     move-result v21
39095     move/from16 v0, v21
39097     invoke-static {v3, v0}, Landroid/os/UserHandle;->isSameApp(II)Z
39099     move-result v1
39101     if-nez v1, :cond_117
39103     new-instance v1, Ljava/lang/StringBuilder;
39105     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
39107     const-string v2, "Permission Denial: getIntentSender() from pid="
39109     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
39111     move-result-object v1
39113     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
39115     move-result v2
39117     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
39119     move-result-object v1
39121     const-string v2, ", uid="
39123     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
39125     move-result-object v1
39127     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
39129     move-result v2
39131     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
39133     move-result-object v1
39135     const-string v2, ", (need uid="
39137     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
39139     move-result-object v1
39141     move/from16 v0, v21
39143     invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
39145     move-result-object v1
39147     const-string v2, ")"
39149     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
39151     move-result-object v1
39153     const-string v2, " is not allowed to send as package "
39155     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
39157     move-result-object v1
39159     move-object/from16 v0, p2
39161     invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
39163     move-result-object v1
39165     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
39167     move-result-object v19
39169     const-string v1, "ActivityManager"
39171     move-object/from16 v0, v19
39173     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
39175     new-instance v1, Ljava/lang/SecurityException;
39177     move-object/from16 v0, v19
39179     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
39181     throw v1
39182     :try_end_108
39183     .catchall {:try_start_a0 .. :try_end_108} :catchall_111
39184     .catch Landroid/os/RemoteException; {:try_start_a0 .. :try_end_108} :catch_108
39186     :catch_108
39187     move-exception v16
39189     :try_start_109
39190     new-instance v1, Ljava/lang/SecurityException;
39192     move-object/from16 v0, v16
39194     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/Throwable;)V
39196     throw v1
39198     :catchall_111
39199     move-exception v1
39201     monitor-exit p0
39202     :try_end_113
39203     .catchall {:try_start_109 .. :try_end_113} :catchall_111
39205     throw v1
39207     :cond_114
39208     const/4 v5, 0x0
39210     goto/16 :goto_87
39212     :cond_117
39213     move-object/from16 v4, p0
39215     move/from16 v5, p1
39217     move-object/from16 v6, p2
39219     move v7, v3
39221     move/from16 v8, p10
39223     move-object/from16 v9, p3
39225     move-object/from16 v10, p4
39227     move/from16 v11, p5
39229     move-object/from16 v12, p6
39231     move-object/from16 v13, p7
39233     move/from16 v14, p8
39235     move-object/from16 v15, p9
39237     :try_start_12e
39238     invoke-virtual/range {v4 .. v15}, Lcom/android/server/am/ActivityManagerService;->getIntentSenderLocked(ILjava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender;
39239     :try_end_131
39240     .catchall {:try_start_12e .. :try_end_131} :catchall_111
39241     .catch Landroid/os/RemoteException; {:try_start_12e .. :try_end_131} :catch_108
39243     move-result-object v1
39245     :try_start_132
39246     monitor-exit p0
39247     :try_end_133
39248     .catchall {:try_start_132 .. :try_end_133} :catchall_111
39250     return-object v1
39251 .end method
39253 .method getIntentSenderLocked(ILjava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender;
39254     .registers 30
39256     const/4 v5, 0x0
39258     const/4 v3, 0x3
39260     move/from16 v0, p1
39262     if-ne v0, v3, :cond_1a
39264     move-object/from16 v0, p0
39266     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
39268     move-object/from16 v0, p5
39270     invoke-virtual {v3, v0}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
39272     move-result-object v5
39274     if-nez v5, :cond_14
39276     const/4 v15, 0x0
39278     :cond_13
39279     :goto_13
39280     return-object v15
39282     :cond_14
39283     iget-boolean v3, v5, Lcom/android/server/am/ActivityRecord;->finishing:Z
39285     if-eqz v3, :cond_1a
39287     const/4 v15, 0x0
39289     goto :goto_13
39291     :cond_1a
39292     const/high16 v3, 0x2000
39294     and-int v3, v3, p10
39296     if-eqz v3, :cond_96
39298     const/4 v14, 0x1
39300     :goto_21
39301     const/high16 v3, 0x1000
39303     and-int v3, v3, p10
39305     if-eqz v3, :cond_98
39307     const/4 v13, 0x1
39309     :goto_28
39310     const/high16 v3, 0x800
39312     and-int v3, v3, p10
39314     if-eqz v3, :cond_9a
39316     const/16 v17, 0x1
39318     :goto_30
39319     const v3, -0x38000001
39321     and-int p10, p10, v3
39323     new-instance v2, Lcom/android/server/am/PendingIntentRecord$Key;
39325     move/from16 v3, p1
39327     move-object/from16 v4, p2
39329     move-object/from16 v6, p6
39331     move/from16 v7, p7
39333     move-object/from16 v8, p8
39335     move-object/from16 v9, p9
39337     move/from16 v10, p10
39339     move-object/from16 v11, p11
39341     move/from16 v12, p4
39343     invoke-direct/range {v2 .. v12}, Lcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)V
39345     move-object/from16 v0, p0
39347     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
39349     invoke-virtual {v3, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
39351     move-result-object v16
39353     check-cast v16, Ljava/lang/ref/WeakReference;
39355     if-eqz v16, :cond_9d
39357     invoke-virtual/range {v16 .. v16}, Ljava/lang/ref/WeakReference;->get()Ljava/lang/Object;
39359     move-result-object v3
39361     check-cast v3, Lcom/android/server/am/PendingIntentRecord;
39363     move-object v15, v3
39365     :goto_5f
39366     if-eqz v15, :cond_b7
39368     if-nez v13, :cond_ad
39370     if-eqz v17, :cond_13
39372     iget-object v3, v15, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
39374     iget-object v3, v3, Lcom/android/server/am/PendingIntentRecord$Key;->requestIntent:Landroid/content/Intent;
39376     if-eqz v3, :cond_7b
39378     iget-object v3, v15, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
39380     iget-object v4, v3, Lcom/android/server/am/PendingIntentRecord$Key;->requestIntent:Landroid/content/Intent;
39382     if-eqz p8, :cond_9f
39384     move-object/from16 v0, p8
39386     array-length v3, v0
39388     add-int/lit8 v3, v3, -0x1
39390     aget-object v3, p8, v3
39392     :goto_78
39393     invoke-virtual {v4, v3}, Landroid/content/Intent;->replaceExtras(Landroid/content/Intent;)Landroid/content/Intent;
39395     :cond_7b
39396     if-eqz p8, :cond_a1
39398     move-object/from16 v0, p8
39400     array-length v3, v0
39402     add-int/lit8 v3, v3, -0x1
39404     iget-object v4, v15, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
39406     iget-object v4, v4, Lcom/android/server/am/PendingIntentRecord$Key;->requestIntent:Landroid/content/Intent;
39408     aput-object v4, p8, v3
39410     iget-object v3, v15, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
39412     move-object/from16 v0, p8
39414     iput-object v0, v3, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
39416     iget-object v3, v15, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
39418     move-object/from16 v0, p9
39420     iput-object v0, v3, Lcom/android/server/am/PendingIntentRecord$Key;->allResolvedTypes:[Ljava/lang/String;
39422     goto/16 :goto_13
39424     :cond_96
39425     const/4 v14, 0x0
39427     goto :goto_21
39429     :cond_98
39430     const/4 v13, 0x0
39432     goto :goto_28
39434     :cond_9a
39435     const/16 v17, 0x0
39437     goto :goto_30
39439     :cond_9d
39440     const/4 v15, 0x0
39442     goto :goto_5f
39444     :cond_9f
39445     const/4 v3, 0x0
39447     goto :goto_78
39449     :cond_a1
39450     iget-object v3, v15, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
39452     const/4 v4, 0x0
39454     iput-object v4, v3, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
39456     iget-object v3, v15, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
39458     const/4 v4, 0x0
39460     iput-object v4, v3, Lcom/android/server/am/PendingIntentRecord$Key;->allResolvedTypes:[Ljava/lang/String;
39462     goto/16 :goto_13
39464     :cond_ad
39465     const/4 v3, 0x1
39467     iput-boolean v3, v15, Lcom/android/server/am/PendingIntentRecord;->canceled:Z
39469     move-object/from16 v0, p0
39471     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
39473     invoke-virtual {v3, v2}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
39475     :cond_b7
39476     if-nez v14, :cond_13
39478     new-instance v15, Lcom/android/server/am/PendingIntentRecord;
39480     move-object/from16 v0, p0
39482     move/from16 v1, p3
39484     invoke-direct {v15, v0, v2, v1}, Lcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/PendingIntentRecord$Key;I)V
39486     move-object/from16 v0, p0
39488     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mIntentSenderRecords:Ljava/util/HashMap;
39490     iget-object v4, v15, Lcom/android/server/am/PendingIntentRecord;->ref:Ljava/lang/ref/WeakReference;
39492     invoke-virtual {v3, v2, v4}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
39494     const/4 v3, 0x3
39496     move/from16 v0, p1
39498     if-ne v0, v3, :cond_13
39500     iget-object v3, v5, Lcom/android/server/am/ActivityRecord;->pendingResults:Ljava/util/HashSet;
39502     if-nez v3, :cond_db
39504     new-instance v3, Ljava/util/HashSet;
39506     invoke-direct {v3}, Ljava/util/HashSet;-><init>()V
39508     iput-object v3, v5, Lcom/android/server/am/ActivityRecord;->pendingResults:Ljava/util/HashSet;
39510     :cond_db
39511     iget-object v3, v5, Lcom/android/server/am/ActivityRecord;->pendingResults:Ljava/util/HashSet;
39513     iget-object v4, v15, Lcom/android/server/am/PendingIntentRecord;->ref:Ljava/lang/ref/WeakReference;
39515     invoke-virtual {v3, v4}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
39517     goto/16 :goto_13
39518 .end method
39520 .method public getLaunchedFromUid(Landroid/os/IBinder;)I
39521     .registers 4
39523     invoke-static {p1}, Lcom/android/server/am/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
39525     move-result-object v0
39527     if-nez v0, :cond_8
39529     const/4 v1, -0x1
39531     :goto_7
39532     return v1
39534     :cond_8
39535     iget v1, v0, Lcom/android/server/am/ActivityRecord;->launchedFromUid:I
39537     goto :goto_7
39538 .end method
39540 .method public getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
39541     .registers 15
39543     const/4 v5, 0x1
39545     const/4 v6, 0x0
39547     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
39549     const/4 v7, 0x6
39551     invoke-virtual {v4, v7}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
39553     move-result-wide v2
39555     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
39557     sget v7, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
39559     invoke-virtual {v4, v7}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
39561     move-result-wide v0
39563     invoke-static {}, Landroid/os/Process;->getFreeMemory()J
39565     move-result-wide v7
39567     iput-wide v7, p1, Landroid/app/ActivityManager$MemoryInfo;->availMem:J
39569     invoke-static {}, Landroid/os/Process;->getTotalMemory()J
39571     move-result-wide v7
39573     iput-wide v7, p1, Landroid/app/ActivityManager$MemoryInfo;->totalMem:J
39575     iput-wide v2, p1, Landroid/app/ActivityManager$MemoryInfo;->threshold:J
39577     iget-wide v7, p1, Landroid/app/ActivityManager$MemoryInfo;->availMem:J
39579     sub-long v9, v0, v2
39581     const-wide/16 v11, 0x2
39583     div-long/2addr v9, v11
39585     add-long/2addr v9, v2
39587     cmp-long v4, v7, v9
39589     if-gez v4, :cond_4a
39591     move v4, v5
39593     :goto_2c
39594     iput-boolean v4, p1, Landroid/app/ActivityManager$MemoryInfo;->lowMemory:Z
39596     iput-wide v0, p1, Landroid/app/ActivityManager$MemoryInfo;->hiddenAppThreshold:J
39598     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
39600     const/4 v7, 0x5
39602     invoke-virtual {v4, v7}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
39604     move-result-wide v7
39606     iput-wide v7, p1, Landroid/app/ActivityManager$MemoryInfo;->secondaryServerThreshold:J
39608     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
39610     invoke-virtual {v4, v5}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
39612     move-result-wide v4
39614     iput-wide v4, p1, Landroid/app/ActivityManager$MemoryInfo;->visibleAppThreshold:J
39616     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
39618     invoke-virtual {v4, v6}, Lcom/android/server/am/ProcessList;->getMemLevel(I)J
39620     move-result-wide v4
39622     iput-wide v4, p1, Landroid/app/ActivityManager$MemoryInfo;->foregroundAppThreshold:J
39624     return-void
39626     :cond_4a
39627     move v4, v6
39629     goto :goto_2c
39630 .end method
39632 .method public getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
39633     .registers 6
39635     const-string v1, "getMyMemoryState"
39637     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
39639     monitor-enter p0
39641     :try_start_6
39642     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
39644     monitor-enter v2
39645     :try_end_9
39646     .catchall {:try_start_6 .. :try_end_9} :catchall_1e
39648     :try_start_9
39649     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
39651     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
39653     move-result v3
39655     invoke-virtual {v1, v3}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
39657     move-result-object v0
39659     check-cast v0, Lcom/android/server/am/ProcessRecord;
39661     monitor-exit v2
39662     :try_end_16
39663     .catchall {:try_start_9 .. :try_end_16} :catchall_1b
39665     :try_start_16
39666     invoke-direct {p0, v0, p1}, Lcom/android/server/am/ActivityManagerService;->fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;)V
39668     monitor-exit p0
39669     :try_end_1a
39670     .catchall {:try_start_16 .. :try_end_1a} :catchall_1e
39672     return-void
39674     :catchall_1b
39675     move-exception v1
39677     :try_start_1c
39678     monitor-exit v2
39679     :try_end_1d
39680     .catchall {:try_start_1c .. :try_end_1d} :catchall_1b
39682     :try_start_1d
39683     throw v1
39685     :catchall_1e
39686     move-exception v1
39688     monitor-exit p0
39689     :try_end_20
39690     .catchall {:try_start_1d .. :try_end_20} :catchall_1e
39692     throw v1
39693 .end method
39695 .method public getPackageAskScreenCompat(Ljava/lang/String;)Z
39696     .registers 3
39698     const-string v0, "getPackageAskScreenCompat"
39700     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
39702     monitor-enter p0
39704     :try_start_6
39705     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
39707     invoke-virtual {v0, p1}, Lcom/android/server/am/CompatModePackages;->getPackageAskCompatModeLocked(Ljava/lang/String;)Z
39709     move-result v0
39711     monitor-exit p0
39713     return v0
39715     :catchall_e
39716     move-exception v0
39718     monitor-exit p0
39719     :try_end_10
39720     .catchall {:try_start_6 .. :try_end_10} :catchall_e
39722     throw v0
39723 .end method
39725 .method public getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String;
39726     .registers 6
39728     const/4 v2, 0x0
39730     instance-of v3, p1, Lcom/android/server/am/PendingIntentRecord;
39732     if-nez v3, :cond_6
39734     :goto_5
39735     return-object v2
39737     :cond_6
39738     :try_start_6
39739     move-object v0, p1
39741     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
39743     move-object v1, v0
39745     iget-object v3, v1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
39747     iget-object v2, v3, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
39748     :try_end_e
39749     .catch Ljava/lang/ClassCastException; {:try_start_6 .. :try_end_e} :catch_f
39751     goto :goto_5
39753     :catch_f
39754     move-exception v3
39756     goto :goto_5
39757 .end method
39759 .method public getPackageForToken(Landroid/os/IBinder;)Ljava/lang/String;
39760     .registers 4
39762     monitor-enter p0
39764     :try_start_1
39765     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
39767     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
39769     move-result-object v0
39771     if-nez v0, :cond_c
39773     const/4 v1, 0x0
39775     monitor-exit p0
39777     :goto_b
39778     return-object v1
39780     :cond_c
39781     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
39783     monitor-exit p0
39785     goto :goto_b
39787     :catchall_10
39788     move-exception v1
39790     monitor-exit p0
39791     :try_end_12
39792     .catchall {:try_start_1 .. :try_end_12} :catchall_10
39794     throw v1
39795 .end method
39797 .method public getPackageScreenCompatMode(Ljava/lang/String;)I
39798     .registers 3
39800     const-string v0, "getPackageScreenCompatMode"
39802     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
39804     monitor-enter p0
39806     :try_start_6
39807     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
39809     invoke-virtual {v0, p1}, Lcom/android/server/am/CompatModePackages;->getPackageScreenCompatModeLocked(Ljava/lang/String;)I
39811     move-result v0
39813     monitor-exit p0
39815     return v0
39817     :catchall_e
39818     move-exception v0
39820     monitor-exit p0
39821     :try_end_10
39822     .catchall {:try_start_6 .. :try_end_10} :catchall_e
39824     throw v0
39825 .end method
39827 .method public getProcessLimit()I
39828     .registers 2
39830     monitor-enter p0
39832     :try_start_1
39833     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimitOverride:I
39835     monitor-exit p0
39837     return v0
39839     :catchall_5
39840     move-exception v0
39842     monitor-exit p0
39843     :try_end_7
39844     .catchall {:try_start_1 .. :try_end_7} :catchall_5
39846     throw v0
39847 .end method
39849 .method public getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;
39850     .registers 6
39851     .annotation system Ldalvik/annotation/Throws;
39852         value = {
39853             Landroid/os/RemoteException;
39854         }
39855     .end annotation
39857     const-string v2, "getProcessMemoryInfo"
39859     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
39861     array-length v2, p1
39863     new-array v1, v2, [Landroid/os/Debug$MemoryInfo;
39865     array-length v2, p1
39867     add-int/lit8 v0, v2, -0x1
39869     :goto_b
39870     if-ltz v0, :cond_1e
39872     new-instance v2, Landroid/os/Debug$MemoryInfo;
39874     invoke-direct {v2}, Landroid/os/Debug$MemoryInfo;-><init>()V
39876     aput-object v2, v1, v0
39878     aget v2, p1, v0
39880     aget-object v3, v1, v0
39882     invoke-static {v2, v3}, Landroid/os/Debug;->getMemoryInfo(ILandroid/os/Debug$MemoryInfo;)V
39884     add-int/lit8 v0, v0, -0x1
39886     goto :goto_b
39888     :cond_1e
39889     return-object v1
39890 .end method
39892 .method public getProcessPss([I)[J
39893     .registers 6
39894     .annotation system Ldalvik/annotation/Throws;
39895         value = {
39896             Landroid/os/RemoteException;
39897         }
39898     .end annotation
39900     const-string v2, "getProcessPss"
39902     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
39904     array-length v2, p1
39906     new-array v1, v2, [J
39908     array-length v2, p1
39910     add-int/lit8 v0, v2, -0x1
39912     :goto_b
39913     if-ltz v0, :cond_18
39915     aget v2, p1, v0
39917     invoke-static {v2}, Landroid/os/Debug;->getPss(I)J
39919     move-result-wide v2
39921     aput-wide v2, v1, v0
39923     add-int/lit8 v0, v0, -0x1
39925     goto :goto_b
39927     :cond_18
39928     return-object v1
39929 .end method
39931 .method final getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
39932     .registers 8
39934     const/16 v4, 0x3e8
39936     if-ne p2, v4, :cond_2f
39938     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
39940     invoke-virtual {v4}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
39942     move-result-object v4
39944     invoke-virtual {v4, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
39946     move-result-object v3
39948     check-cast v3, Landroid/util/SparseArray;
39950     if-nez v3, :cond_14
39952     const/4 v4, 0x0
39954     :goto_13
39955     return-object v4
39957     :cond_14
39958     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
39960     move-result v0
39962     const/4 v1, 0x0
39964     :goto_19
39965     if-ge v1, v0, :cond_2f
39967     invoke-virtual {v3, v1}, Landroid/util/SparseArray;->keyAt(I)I
39969     move-result v4
39971     invoke-static {v4, p2}, Landroid/os/UserHandle;->isSameUser(II)Z
39973     move-result v4
39975     if-eqz v4, :cond_2c
39977     invoke-virtual {v3, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
39979     move-result-object v4
39981     check-cast v4, Lcom/android/server/am/ProcessRecord;
39983     goto :goto_13
39985     :cond_2c
39986     add-int/lit8 v1, v1, 0x1
39988     goto :goto_19
39990     :cond_2f
39991     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
39993     invoke-virtual {v4, p1, p2}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
39995     move-result-object v2
39997     check-cast v2, Lcom/android/server/am/ProcessRecord;
39999     move-object v4, v2
40001     goto :goto_13
40002 .end method
40004 .method public getProcessesInErrorState()Ljava/util/List;
40005     .registers 11
40006     .annotation system Ldalvik/annotation/Signature;
40007         value = {
40008             "()",
40009             "Ljava/util/List",
40010             "<",
40011             "Landroid/app/ActivityManager$ProcessErrorStateInfo;",
40012             ">;"
40013         }
40014     .end annotation
40016     const/4 v0, 0x1
40018     const-string v7, "getProcessesInErrorState"
40020     invoke-virtual {p0, v7}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
40022     const/4 v2, 0x0
40024     const-string v7, "android.permission.INTERACT_ACROSS_USERS_FULL"
40026     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
40028     move-result v8
40030     invoke-static {v7, v8}, Landroid/app/ActivityManager;->checkUidPermission(Ljava/lang/String;I)I
40032     move-result v7
40034     if-nez v7, :cond_3a
40036     :goto_13
40037     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
40039     move-result v7
40041     invoke-static {v7}, Landroid/os/UserHandle;->getUserId(I)I
40043     move-result v6
40045     monitor-enter p0
40047     :try_start_1c
40048     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
40050     invoke-virtual {v7}, Ljava/util/ArrayList;->size()I
40051     :try_end_21
40052     .catchall {:try_start_1c .. :try_end_21} :catchall_5d
40054     move-result v7
40056     add-int/lit8 v4, v7, -0x1
40058     move-object v3, v2
40060     :goto_25
40061     if-ltz v4, :cond_9b
40063     :try_start_27
40064     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
40066     invoke-virtual {v7, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
40068     move-result-object v1
40070     check-cast v1, Lcom/android/server/am/ProcessRecord;
40072     if-nez v0, :cond_3c
40074     iget v7, v1, Lcom/android/server/am/ProcessRecord;->userId:I
40076     if-eq v7, v6, :cond_3c
40078     move-object v2, v3
40080     :goto_36
40081     add-int/lit8 v4, v4, -0x1
40083     move-object v3, v2
40085     goto :goto_25
40087     :cond_3a
40088     const/4 v0, 0x0
40090     goto :goto_13
40092     :cond_3c
40093     iget-object v7, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
40095     if-eqz v7, :cond_99
40097     iget-boolean v7, v1, Lcom/android/server/am/ProcessRecord;->crashing:Z
40099     if-nez v7, :cond_48
40101     iget-boolean v7, v1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
40103     if-eqz v7, :cond_99
40105     :cond_48
40106     const/4 v5, 0x0
40108     iget-boolean v7, v1, Lcom/android/server/am/ProcessRecord;->crashing:Z
40110     if-eqz v7, :cond_60
40112     iget-object v5, v1, Lcom/android/server/am/ProcessRecord;->crashingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
40114     :cond_4f
40115     :goto_4f
40116     if-eqz v5, :cond_67
40118     if-nez v3, :cond_a0
40120     new-instance v2, Ljava/util/ArrayList;
40122     const/4 v7, 0x1
40124     invoke-direct {v2, v7}, Ljava/util/ArrayList;-><init>(I)V
40125     :try_end_59
40126     .catchall {:try_start_27 .. :try_end_59} :catchall_9d
40128     :goto_59
40129     :try_start_59
40130     invoke-interface {v2, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
40132     goto :goto_36
40134     :catchall_5d
40135     move-exception v7
40137     :goto_5e
40138     monitor-exit p0
40139     :try_end_5f
40140     .catchall {:try_start_59 .. :try_end_5f} :catchall_5d
40142     throw v7
40144     :cond_60
40145     :try_start_60
40146     iget-boolean v7, v1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
40148     if-eqz v7, :cond_4f
40150     iget-object v5, v1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
40152     goto :goto_4f
40154     :cond_67
40155     const-string v7, "ActivityManager"
40157     new-instance v8, Ljava/lang/StringBuilder;
40159     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
40161     const-string v9, "Missing app error report, app = "
40163     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40165     move-result-object v8
40167     iget-object v9, v1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
40169     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40171     move-result-object v8
40173     const-string v9, " crashing = "
40175     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40177     move-result-object v8
40179     iget-boolean v9, v1, Lcom/android/server/am/ProcessRecord;->crashing:Z
40181     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
40183     move-result-object v8
40185     const-string v9, " notResponding = "
40187     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40189     move-result-object v8
40191     iget-boolean v9, v1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
40193     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
40195     move-result-object v8
40197     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
40199     move-result-object v8
40201     invoke-static {v7, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
40203     :cond_99
40204     move-object v2, v3
40206     goto :goto_36
40208     :cond_9b
40209     monitor-exit p0
40210     :try_end_9c
40211     .catchall {:try_start_60 .. :try_end_9c} :catchall_9d
40213     return-object v3
40215     :catchall_9d
40216     move-exception v7
40218     move-object v2, v3
40220     goto :goto_5e
40222     :cond_a0
40223     move-object v2, v3
40225     goto :goto_59
40226 .end method
40228 .method public getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String;
40229     .registers 16
40231     const/4 v7, 0x0
40233     const-string v0, "getProviderMimeType"
40235     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
40237     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
40239     move-result v1
40241     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
40243     move-result v2
40245     const/4 v4, 0x0
40247     const/4 v5, 0x1
40249     const-string v6, "getProviderMimeType"
40251     move-object v0, p0
40253     move v3, p2
40255     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
40257     move-result p2
40259     invoke-virtual {p1}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
40261     move-result-object v12
40263     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
40265     move-result-wide v10
40267     const/4 v9, 0x0
40269     const/4 v0, 0x0
40271     :try_start_22
40272     invoke-direct {p0, v12, v0, p2}, Lcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)Landroid/app/IActivityManager$ContentProviderHolder;
40274     move-result-object v9
40276     if-eqz v9, :cond_64
40278     iget-object v0, v9, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
40280     invoke-interface {v0, p1}, Landroid/content/IContentProvider;->getType(Landroid/net/Uri;)Ljava/lang/String;
40281     :try_end_2d
40282     .catchall {:try_start_22 .. :try_end_2d} :catchall_5a
40283     .catch Landroid/os/RemoteException; {:try_start_22 .. :try_end_2d} :catch_38
40285     move-result-object v0
40287     if-eqz v9, :cond_33
40289     invoke-direct {p0, v12, v7, p2}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
40291     :cond_33
40292     invoke-static {v10, v11}, Landroid/os/Binder;->restoreCallingIdentity(J)V
40294     move-object v7, v0
40296     :goto_37
40297     return-object v7
40299     :catch_38
40300     move-exception v8
40302     :try_start_39
40303     const-string v0, "ActivityManager"
40305     new-instance v1, Ljava/lang/StringBuilder;
40307     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
40309     const-string v2, "Content provider dead retrieving "
40311     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
40313     move-result-object v1
40315     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
40317     move-result-object v1
40319     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
40321     move-result-object v1
40323     invoke-static {v0, v1, v8}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
40324     :try_end_51
40325     .catchall {:try_start_39 .. :try_end_51} :catchall_5a
40327     if-eqz v9, :cond_56
40329     invoke-direct {p0, v12, v7, p2}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
40331     :cond_56
40332     :goto_56
40333     invoke-static {v10, v11}, Landroid/os/Binder;->restoreCallingIdentity(J)V
40335     goto :goto_37
40337     :catchall_5a
40338     move-exception v0
40340     if-eqz v9, :cond_60
40342     invoke-direct {p0, v12, v7, p2}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
40344     :cond_60
40345     invoke-static {v10, v11}, Landroid/os/Binder;->restoreCallingIdentity(J)V
40347     throw v0
40349     :cond_64
40350     if-eqz v9, :cond_56
40352     invoke-direct {p0, v12, v7, p2}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
40354     goto :goto_56
40355 .end method
40357 .method public getRecentTasks(III)Ljava/util/List;
40358     .registers 20
40359     .annotation system Ldalvik/annotation/Signature;
40360         value = {
40361             "(III)",
40362             "Ljava/util/List",
40363             "<",
40364             "Landroid/app/ActivityManager$RecentTaskInfo;",
40365             ">;"
40366         }
40367     .end annotation
40369     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
40371     move-result v2
40373     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
40375     move-result v3
40377     const/4 v5, 0x0
40379     const/4 v6, 0x1
40381     const-string v7, "getRecentTasks"
40383     const/4 v8, 0x0
40385     move-object/from16 v1, p0
40387     move/from16 v4, p3
40389     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
40391     move-result p3
40393     monitor-enter p0
40395     :try_start_16
40396     const-string v1, "android.permission.GET_TASKS"
40398     const-string v2, "getRecentTasks()"
40400     move-object/from16 v0, p0
40402     invoke-virtual {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
40404     const-string v1, "android.permission.GET_DETAILED_TASKS"
40406     move-object/from16 v0, p0
40408     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
40410     move-result v1
40412     if-nez v1, :cond_59
40414     const/4 v10, 0x1
40416     :goto_2a
40417     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
40419     move-result-object v12
40421     move-object/from16 v0, p0
40423     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
40425     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
40427     move-result v9
40429     new-instance v13, Ljava/util/ArrayList;
40431     move/from16 v0, p1
40433     if-ge v0, v9, :cond_5b
40435     move/from16 v1, p1
40437     :goto_3e
40438     invoke-direct {v13, v1}, Ljava/util/ArrayList;-><init>(I)V
40440     const/4 v11, 0x0
40442     :goto_42
40443     if-ge v11, v9, :cond_d1
40445     if-lez p1, :cond_d1
40447     move-object/from16 v0, p0
40449     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
40451     invoke-virtual {v1, v11}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
40453     move-result-object v15
40455     check-cast v15, Lcom/android/server/am/TaskRecord;
40457     iget v1, v15, Lcom/android/server/am/TaskRecord;->userId:I
40459     move/from16 v0, p3
40461     if-eq v1, v0, :cond_5d
40463     :cond_56
40464     :goto_56
40465     add-int/lit8 v11, v11, 0x1
40467     goto :goto_42
40469     :cond_59
40470     const/4 v10, 0x0
40472     goto :goto_2a
40474     :cond_5b
40475     move v1, v9
40477     goto :goto_3e
40479     :cond_5d
40480     if-eqz v11, :cond_72
40482     and-int/lit8 v1, p2, 0x1
40484     if-nez v1, :cond_72
40486     iget-object v1, v15, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
40488     if-eqz v1, :cond_72
40490     iget-object v1, v15, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
40492     invoke-virtual {v1}, Landroid/content/Intent;->getFlags()I
40494     move-result v1
40496     const/high16 v2, 0x80
40498     and-int/2addr v1, v2
40500     if-nez v1, :cond_56
40502     :cond_72
40503     new-instance v14, Landroid/app/ActivityManager$RecentTaskInfo;
40505     invoke-direct {v14}, Landroid/app/ActivityManager$RecentTaskInfo;-><init>()V
40507     iget v1, v15, Lcom/android/server/am/TaskRecord;->numActivities:I
40509     if-lez v1, :cond_bb
40511     iget v1, v15, Lcom/android/server/am/TaskRecord;->taskId:I
40513     :goto_7d
40514     iput v1, v14, Landroid/app/ActivityManager$RecentTaskInfo;->id:I
40516     iget v1, v15, Lcom/android/server/am/TaskRecord;->taskId:I
40518     iput v1, v14, Landroid/app/ActivityManager$RecentTaskInfo;->persistentId:I
40520     new-instance v2, Landroid/content/Intent;
40522     iget-object v1, v15, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
40524     if-eqz v1, :cond_bd
40526     iget-object v1, v15, Lcom/android/server/am/TaskRecord;->intent:Landroid/content/Intent;
40528     :goto_8b
40529     invoke-direct {v2, v1}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
40531     iput-object v2, v14, Landroid/app/ActivityManager$RecentTaskInfo;->baseIntent:Landroid/content/Intent;
40533     if-nez v10, :cond_9a
40535     iget-object v2, v14, Landroid/app/ActivityManager$RecentTaskInfo;->baseIntent:Landroid/content/Intent;
40537     const/4 v1, 0x0
40539     check-cast v1, Landroid/os/Bundle;
40541     invoke-virtual {v2, v1}, Landroid/content/Intent;->replaceExtras(Landroid/os/Bundle;)Landroid/content/Intent;
40543     :cond_9a
40544     iget-object v1, v15, Lcom/android/server/am/TaskRecord;->origActivity:Landroid/content/ComponentName;
40546     iput-object v1, v14, Landroid/app/ActivityManager$RecentTaskInfo;->origActivity:Landroid/content/ComponentName;
40548     iget-object v1, v15, Lcom/android/server/am/TaskRecord;->lastDescription:Ljava/lang/CharSequence;
40550     iput-object v1, v14, Landroid/app/ActivityManager$RecentTaskInfo;->description:Ljava/lang/CharSequence;
40551     :try_end_a2
40552     .catchall {:try_start_16 .. :try_end_a2} :catchall_d3
40554     and-int/lit8 v1, p2, 0x2
40556     if-eqz v1, :cond_b5
40558     :try_start_a6
40559     iget-object v1, v14, Landroid/app/ActivityManager$RecentTaskInfo;->origActivity:Landroid/content/ComponentName;
40561     if-eqz v1, :cond_c0
40563     iget-object v1, v14, Landroid/app/ActivityManager$RecentTaskInfo;->origActivity:Landroid/content/ComponentName;
40565     const/4 v2, 0x0
40567     move/from16 v0, p3
40569     invoke-interface {v12, v1, v2, v0}, Landroid/content/pm/IPackageManager;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
40570     :try_end_b2
40571     .catchall {:try_start_a6 .. :try_end_b2} :catchall_d3
40572     .catch Landroid/os/RemoteException; {:try_start_a6 .. :try_end_b2} :catch_d6
40574     move-result-object v1
40576     if-eqz v1, :cond_56
40578     :cond_b5
40579     :goto_b5
40580     :try_start_b5
40581     invoke-virtual {v13, v14}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
40583     add-int/lit8 p1, p1, -0x1
40585     goto :goto_56
40587     :cond_bb
40588     const/4 v1, -0x1
40590     goto :goto_7d
40592     :cond_bd
40593     iget-object v1, v15, Lcom/android/server/am/TaskRecord;->affinityIntent:Landroid/content/Intent;
40594     :try_end_bf
40595     .catchall {:try_start_b5 .. :try_end_bf} :catchall_d3
40597     goto :goto_8b
40599     :cond_c0
40600     :try_start_c0
40601     iget-object v1, v14, Landroid/app/ActivityManager$RecentTaskInfo;->baseIntent:Landroid/content/Intent;
40603     if-eqz v1, :cond_b5
40605     iget-object v1, v14, Landroid/app/ActivityManager$RecentTaskInfo;->baseIntent:Landroid/content/Intent;
40607     const/4 v2, 0x0
40609     const/4 v3, 0x0
40611     move/from16 v0, p3
40613     invoke-interface {v12, v1, v2, v3, v0}, Landroid/content/pm/IPackageManager;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
40614     :try_end_cd
40615     .catchall {:try_start_c0 .. :try_end_cd} :catchall_d3
40616     .catch Landroid/os/RemoteException; {:try_start_c0 .. :try_end_cd} :catch_d6
40618     move-result-object v1
40620     if-nez v1, :cond_b5
40622     goto :goto_56
40624     :cond_d1
40625     :try_start_d1
40626     monitor-exit p0
40628     return-object v13
40630     :catchall_d3
40631     move-exception v1
40633     monitor-exit p0
40634     :try_end_d5
40635     .catchall {:try_start_d1 .. :try_end_d5} :catchall_d3
40637     throw v1
40639     :catch_d6
40640     move-exception v1
40642     goto :goto_b5
40643 .end method
40645 .method final getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
40646     .registers 4
40648     const/4 v1, 0x0
40650     if-nez p1, :cond_4
40652     :cond_3
40653     :goto_3
40654     return-object v1
40656     :cond_4
40657     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getLRURecordIndexForAppLocked(Landroid/app/IApplicationThread;)I
40659     move-result v0
40661     if-ltz v0, :cond_3
40663     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
40665     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
40667     move-result-object v1
40669     check-cast v1, Lcom/android/server/am/ProcessRecord;
40671     goto :goto_3
40672 .end method
40674 .method public getRequestedOrientation(Landroid/os/IBinder;)I
40675     .registers 5
40677     monitor-enter p0
40679     :try_start_1
40680     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
40682     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
40684     move-result-object v0
40686     if-nez v0, :cond_c
40688     const/4 v1, -0x1
40690     monitor-exit p0
40692     :goto_b
40693     return v1
40695     :cond_c
40696     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
40698     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
40700     invoke-virtual {v1, v2}, Lcom/android/server/wm/WindowManagerService;->getAppOrientation(Landroid/view/IApplicationToken;)I
40702     move-result v1
40704     monitor-exit p0
40706     goto :goto_b
40708     :catchall_16
40709     move-exception v1
40711     monitor-exit p0
40712     :try_end_18
40713     .catchall {:try_start_1 .. :try_end_18} :catchall_16
40715     throw v1
40716 .end method
40718 .method public getRunningAppProcesses()Ljava/util/List;
40719     .registers 12
40720     .annotation system Ldalvik/annotation/Signature;
40721         value = {
40722             "()",
40723             "Ljava/util/List",
40724             "<",
40725             "Landroid/app/ActivityManager$RunningAppProcessInfo;",
40726             ">;"
40727         }
40728     .end annotation
40730     const-string v8, "getRunningAppProcesses"
40732     invoke-virtual {p0, v8}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
40734     const/4 v5, 0x0
40736     const-string v8, "android.permission.INTERACT_ACROSS_USERS_FULL"
40738     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
40740     move-result v9
40742     invoke-static {v8, v9}, Landroid/app/ActivityManager;->checkUidPermission(Ljava/lang/String;I)I
40744     move-result v8
40746     if-nez v8, :cond_3a
40748     const/4 v0, 0x1
40750     :goto_13
40751     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
40753     move-result v8
40755     invoke-static {v8}, Landroid/os/UserHandle;->getUserId(I)I
40757     move-result v7
40759     monitor-enter p0
40761     :try_start_1c
40762     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
40764     invoke-virtual {v8}, Ljava/util/ArrayList;->size()I
40765     :try_end_21
40766     .catchall {:try_start_1c .. :try_end_21} :catchall_86
40768     move-result v8
40770     add-int/lit8 v3, v8, -0x1
40772     move-object v6, v5
40774     :goto_25
40775     if-ltz v3, :cond_a1
40777     :try_start_27
40778     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
40780     invoke-virtual {v8, v3}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
40782     move-result-object v1
40784     check-cast v1, Lcom/android/server/am/ProcessRecord;
40786     if-nez v0, :cond_3c
40788     iget v8, v1, Lcom/android/server/am/ProcessRecord;->userId:I
40790     if-eq v8, v7, :cond_3c
40792     move-object v5, v6
40794     :goto_36
40795     add-int/lit8 v3, v3, -0x1
40797     move-object v6, v5
40799     goto :goto_25
40801     :cond_3a
40802     const/4 v0, 0x0
40804     goto :goto_13
40806     :cond_3c
40807     iget-object v8, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
40809     if-eqz v8, :cond_a5
40811     iget-boolean v8, v1, Lcom/android/server/am/ProcessRecord;->crashing:Z
40813     if-nez v8, :cond_a5
40815     iget-boolean v8, v1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
40817     if-nez v8, :cond_a5
40819     new-instance v2, Landroid/app/ActivityManager$RunningAppProcessInfo;
40821     iget-object v8, v1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
40823     iget v9, v1, Lcom/android/server/am/ProcessRecord;->pid:I
40825     invoke-virtual {v1}, Lcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String;
40827     move-result-object v10
40829     invoke-direct {v2, v8, v9, v10}, Landroid/app/ActivityManager$RunningAppProcessInfo;-><init>(Ljava/lang/String;I[Ljava/lang/String;)V
40831     invoke-direct {p0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->fillInProcMemInfo(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;)V
40833     iget-object v8, v1, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
40835     instance-of v8, v8, Lcom/android/server/am/ProcessRecord;
40837     if-eqz v8, :cond_89
40839     iget-object v8, v1, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
40841     check-cast v8, Lcom/android/server/am/ProcessRecord;
40843     iget v8, v8, Lcom/android/server/am/ProcessRecord;->pid:I
40845     iput v8, v2, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonPid:I
40847     iget v8, v1, Lcom/android/server/am/ProcessRecord;->adjSourceOom:I
40849     const/4 v9, 0x0
40851     invoke-static {v8, v9}, Lcom/android/server/am/ActivityManagerService;->oomAdjToImportance(ILandroid/app/ActivityManager$RunningAppProcessInfo;)I
40853     move-result v8
40855     iput v8, v2, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonImportance:I
40857     :cond_6f
40858     :goto_6f
40859     iget-object v8, v1, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
40861     instance-of v8, v8, Landroid/content/ComponentName;
40863     if-eqz v8, :cond_7b
40865     iget-object v8, v1, Lcom/android/server/am/ProcessRecord;->adjTarget:Ljava/lang/Object;
40867     check-cast v8, Landroid/content/ComponentName;
40869     iput-object v8, v2, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonComponent:Landroid/content/ComponentName;
40871     :cond_7b
40872     if-nez v6, :cond_a3
40874     new-instance v5, Ljava/util/ArrayList;
40876     invoke-direct {v5}, Ljava/util/ArrayList;-><init>()V
40877     :try_end_82
40878     .catchall {:try_start_27 .. :try_end_82} :catchall_9e
40880     :goto_82
40881     :try_start_82
40882     invoke-interface {v5, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z
40884     goto :goto_36
40886     :catchall_86
40887     move-exception v8
40889     :goto_87
40890     monitor-exit p0
40891     :try_end_88
40892     .catchall {:try_start_82 .. :try_end_88} :catchall_86
40894     throw v8
40896     :cond_89
40897     :try_start_89
40898     iget-object v8, v1, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
40900     instance-of v8, v8, Lcom/android/server/am/ActivityRecord;
40902     if-eqz v8, :cond_6f
40904     iget-object v4, v1, Lcom/android/server/am/ProcessRecord;->adjSource:Ljava/lang/Object;
40906     check-cast v4, Lcom/android/server/am/ActivityRecord;
40908     iget-object v8, v4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
40910     if-eqz v8, :cond_6f
40912     iget-object v8, v4, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
40914     iget v8, v8, Lcom/android/server/am/ProcessRecord;->pid:I
40916     iput v8, v2, Landroid/app/ActivityManager$RunningAppProcessInfo;->importanceReasonPid:I
40918     goto :goto_6f
40920     :catchall_9e
40921     move-exception v8
40923     move-object v5, v6
40925     goto :goto_87
40927     :cond_a1
40928     monitor-exit p0
40929     :try_end_a2
40930     .catchall {:try_start_89 .. :try_end_a2} :catchall_9e
40932     return-object v6
40934     :cond_a3
40935     move-object v5, v6
40937     goto :goto_82
40939     :cond_a5
40940     move-object v5, v6
40942     goto :goto_36
40943 .end method
40945 .method public getRunningExternalApplications()Ljava/util/List;
40946     .registers 14
40947     .annotation system Ldalvik/annotation/Signature;
40948         value = {
40949             "()",
40950             "Ljava/util/List",
40951             "<",
40952             "Landroid/content/pm/ApplicationInfo;",
40953             ">;"
40954         }
40955     .end annotation
40957     const-string v11, "getRunningExternalApplications"
40959     invoke-virtual {p0, v11}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
40961     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;
40963     move-result-object v10
40965     new-instance v9, Ljava/util/ArrayList;
40967     invoke-direct {v9}, Ljava/util/ArrayList;-><init>()V
40969     if-eqz v10, :cond_67
40971     invoke-interface {v10}, Ljava/util/List;->size()I
40973     move-result v11
40975     if-lez v11, :cond_67
40977     new-instance v2, Ljava/util/HashSet;
40979     invoke-direct {v2}, Ljava/util/HashSet;-><init>()V
40981     invoke-interface {v10}, Ljava/util/List;->iterator()Ljava/util/Iterator;
40983     move-result-object v3
40985     :cond_1f
40986     invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
40988     move-result v11
40990     if-eqz v11, :cond_3d
40992     invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
40994     move-result-object v0
40996     check-cast v0, Landroid/app/ActivityManager$RunningAppProcessInfo;
40998     iget-object v11, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->pkgList:[Ljava/lang/String;
41000     if-eqz v11, :cond_1f
41002     iget-object v1, v0, Landroid/app/ActivityManager$RunningAppProcessInfo;->pkgList:[Ljava/lang/String;
41004     array-length v6, v1
41006     const/4 v4, 0x0
41008     :goto_33
41009     if-ge v4, v6, :cond_1f
41011     aget-object v7, v1, v4
41013     invoke-interface {v2, v7}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
41015     add-int/lit8 v4, v4, 0x1
41017     goto :goto_33
41019     :cond_3d
41020     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
41022     move-result-object v8
41024     invoke-interface {v2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
41026     move-result-object v3
41028     :cond_45
41029     :goto_45
41030     invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
41032     move-result v11
41034     if-eqz v11, :cond_67
41036     invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
41038     move-result-object v7
41040     check-cast v7, Ljava/lang/String;
41042     const/4 v11, 0x0
41044     :try_start_52
41045     invoke-static {}, Landroid/os/UserHandle;->getCallingUserId()I
41047     move-result v12
41049     invoke-interface {v8, v7, v11, v12}, Landroid/content/pm/IPackageManager;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;
41051     move-result-object v5
41053     iget v11, v5, Landroid/content/pm/ApplicationInfo;->flags:I
41055     const/high16 v12, 0x4
41057     and-int/2addr v11, v12
41059     if-eqz v11, :cond_45
41061     invoke-interface {v9, v5}, Ljava/util/List;->add(Ljava/lang/Object;)Z
41062     :try_end_64
41063     .catch Landroid/os/RemoteException; {:try_start_52 .. :try_end_64} :catch_65
41065     goto :goto_45
41067     :catch_65
41068     move-exception v11
41070     goto :goto_45
41072     :cond_67
41073     return-object v9
41074 .end method
41076 .method public getRunningServiceControlPanel(Landroid/content/ComponentName;)Landroid/app/PendingIntent;
41077     .registers 3
41079     const-string v0, "getRunningServiceControlPanel"
41081     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
41083     monitor-enter p0
41085     :try_start_6
41086     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
41088     invoke-virtual {v0, p1}, Lcom/android/server/am/ActiveServices;->getRunningServiceControlPanelLocked(Landroid/content/ComponentName;)Landroid/app/PendingIntent;
41090     move-result-object v0
41092     monitor-exit p0
41094     return-object v0
41096     :catchall_e
41097     move-exception v0
41099     monitor-exit p0
41100     :try_end_10
41101     .catchall {:try_start_6 .. :try_end_10} :catchall_e
41103     throw v0
41104 .end method
41106 .method public getRunningUserIds()[I
41107     .registers 4
41109     const-string v1, "android.permission.INTERACT_ACROSS_USERS"
41111     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
41113     move-result v1
41115     if-eqz v1, :cond_44
41117     new-instance v1, Ljava/lang/StringBuilder;
41119     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
41121     const-string v2, "Permission Denial: isUserRunning() from pid="
41123     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41125     move-result-object v1
41127     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
41129     move-result v2
41131     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
41133     move-result-object v1
41135     const-string v2, ", uid="
41137     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41139     move-result-object v1
41141     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
41143     move-result v2
41145     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
41147     move-result-object v1
41149     const-string v2, " requires "
41151     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41153     move-result-object v1
41155     const-string v2, "android.permission.INTERACT_ACROSS_USERS"
41157     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41159     move-result-object v1
41161     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
41163     move-result-object v0
41165     const-string v1, "ActivityManager"
41167     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
41169     new-instance v1, Ljava/lang/SecurityException;
41171     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
41173     throw v1
41175     :cond_44
41176     monitor-enter p0
41178     :try_start_45
41179     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUserArray:[I
41181     monitor-exit p0
41183     return-object v1
41185     :catchall_49
41186     move-exception v1
41188     monitor-exit p0
41189     :try_end_4b
41190     .catchall {:try_start_45 .. :try_end_4b} :catchall_49
41192     throw v1
41193 .end method
41195 .method public getServices(II)Ljava/util/List;
41196     .registers 4
41197     .annotation system Ldalvik/annotation/Signature;
41198         value = {
41199             "(II)",
41200             "Ljava/util/List",
41201             "<",
41202             "Landroid/app/ActivityManager$RunningServiceInfo;",
41203             ">;"
41204         }
41205     .end annotation
41207     const-string v0, "getServices"
41209     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
41211     monitor-enter p0
41213     :try_start_6
41214     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
41216     invoke-virtual {v0, p1, p2}, Lcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(II)Ljava/util/List;
41218     move-result-object v0
41220     monitor-exit p0
41222     return-object v0
41224     :catchall_e
41225     move-exception v0
41227     monitor-exit p0
41228     :try_end_10
41229     .catchall {:try_start_6 .. :try_end_10} :catchall_e
41231     throw v0
41232 .end method
41234 .method public getTaskForActivity(Landroid/os/IBinder;Z)I
41235     .registers 4
41237     monitor-enter p0
41239     :try_start_1
41240     invoke-virtual {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->getTaskForActivityLocked(Landroid/os/IBinder;Z)I
41242     move-result v0
41244     monitor-exit p0
41246     return v0
41248     :catchall_7
41249     move-exception v0
41251     monitor-exit p0
41252     :try_end_9
41253     .catchall {:try_start_1 .. :try_end_9} :catchall_7
41255     throw v0
41256 .end method
41258 .method getTaskForActivityLocked(Landroid/os/IBinder;Z)I
41259     .registers 9
41261     const/4 v4, -0x1
41263     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41265     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
41267     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
41269     move-result v0
41271     const/4 v2, 0x0
41273     const/4 v1, 0x0
41275     :goto_b
41276     if-ge v1, v0, :cond_25
41278     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41280     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
41282     invoke-virtual {v5, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
41284     move-result-object v3
41286     check-cast v3, Lcom/android/server/am/ActivityRecord;
41288     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
41290     if-ne v5, p1, :cond_26
41292     if-eqz p2, :cond_21
41294     iget-object v5, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
41296     if-eq v2, v5, :cond_25
41298     :cond_21
41299     iget-object v4, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
41301     iget v4, v4, Lcom/android/server/am/TaskRecord;->taskId:I
41303     :cond_25
41304     return v4
41306     :cond_26
41307     iget-object v2, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
41309     add-int/lit8 v1, v1, 0x1
41311     goto :goto_b
41312 .end method
41314 .method public getTaskThumbnails(I)Landroid/app/ActivityManager$TaskThumbnails;
41315     .registers 5
41317     monitor-enter p0
41319     :try_start_1
41320     const-string v1, "android.permission.READ_FRAME_BUFFER"
41322     const-string v2, "getTaskThumbnails()"
41324     invoke-virtual {p0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
41326     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
41328     move-result-object v0
41330     if-eqz v0, :cond_16
41332     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41334     invoke-virtual {v1, v0}, Lcom/android/server/am/ActivityStack;->getTaskThumbnailsLocked(Lcom/android/server/am/TaskRecord;)Landroid/app/ActivityManager$TaskThumbnails;
41336     move-result-object v1
41338     monitor-exit p0
41340     :goto_15
41341     return-object v1
41343     :cond_16
41344     monitor-exit p0
41346     const/4 v1, 0x0
41348     goto :goto_15
41350     :catchall_19
41351     move-exception v1
41353     monitor-exit p0
41354     :try_end_1b
41355     .catchall {:try_start_1 .. :try_end_1b} :catchall_19
41357     throw v1
41358 .end method
41360 .method public getTaskTopThumbnail(I)Landroid/graphics/Bitmap;
41361     .registers 5
41363     monitor-enter p0
41365     :try_start_1
41366     const-string v1, "android.permission.READ_FRAME_BUFFER"
41368     const-string v2, "getTaskTopThumbnail()"
41370     invoke-virtual {p0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
41372     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
41374     move-result-object v0
41376     if-eqz v0, :cond_16
41378     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41380     invoke-virtual {v1, v0}, Lcom/android/server/am/ActivityStack;->getTaskTopThumbnailLocked(Lcom/android/server/am/TaskRecord;)Landroid/graphics/Bitmap;
41382     move-result-object v1
41384     monitor-exit p0
41386     :goto_15
41387     return-object v1
41389     :cond_16
41390     monitor-exit p0
41392     const/4 v1, 0x0
41394     goto :goto_15
41396     :catchall_19
41397     move-exception v1
41399     monitor-exit p0
41400     :try_end_1b
41401     .catchall {:try_start_1 .. :try_end_1b} :catchall_19
41403     throw v1
41404 .end method
41406 .method public getTasks(IILandroid/app/IThumbnailReceiver;)Ljava/util/List;
41407     .registers 26
41409     new-instance v10, Ljava/util/ArrayList;
41411     invoke-direct {v10}, Ljava/util/ArrayList;-><init>()V
41413     const/4 v15, 0x0
41415     const/16 v21, 0x0
41417     const/16 v20, 0x0
41419     monitor-enter p0
41421     :try_start_b
41422     const-string v1, "android.permission.GET_TASKS"
41424     move-object/from16 v0, p0
41426     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
41427     :try_end_12
41428     .catchall {:try_start_b .. :try_end_12} :catchall_56
41430     move-result v1
41432     if-eqz v1, :cond_59
41434     if-eqz p3, :cond_1a
41436     :try_start_17
41437     invoke-interface/range {p3 .. p3}, Landroid/app/IThumbnailReceiver;->finished()V
41438     :try_end_1a
41439     .catchall {:try_start_17 .. :try_end_1a} :catchall_56
41440     .catch Landroid/os/RemoteException; {:try_start_17 .. :try_end_1a} :catch_18e
41442     :cond_1a
41443     :goto_1a
41444     :try_start_1a
41445     new-instance v1, Ljava/lang/StringBuilder;
41447     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
41449     const-string v2, "Permission Denial: getTasks() from pid="
41451     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41453     move-result-object v1
41455     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
41457     move-result v2
41459     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
41461     move-result-object v1
41463     const-string v2, ", uid="
41465     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41467     move-result-object v1
41469     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
41471     move-result v2
41473     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
41475     move-result-object v1
41477     const-string v2, " requires "
41479     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41481     move-result-object v1
41483     const-string v2, "android.permission.GET_TASKS"
41485     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
41487     move-result-object v1
41489     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
41491     move-result-object v11
41493     const-string v1, "ActivityManager"
41495     invoke-static {v1, v11}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
41497     new-instance v1, Ljava/lang/SecurityException;
41499     invoke-direct {v1, v11}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
41501     throw v1
41503     :catchall_56
41504     move-exception v1
41506     :goto_57
41507     monitor-exit p0
41508     :try_end_58
41509     .catchall {:try_start_1a .. :try_end_58} :catchall_56
41511     throw v1
41513     :cond_59
41514     :try_start_59
41515     move-object/from16 v0, p0
41517     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41519     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
41521     invoke-virtual {v1}, Ljava/util/ArrayList;->size()I
41523     move-result v1
41525     add-int/lit8 v17, v1, -0x1
41527     if-ltz v17, :cond_148
41529     move-object/from16 v0, p0
41531     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41533     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
41535     move/from16 v0, v17
41537     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
41539     move-result-object v1
41541     check-cast v1, Lcom/android/server/am/ActivityRecord;
41542     :try_end_75
41543     .catchall {:try_start_59 .. :try_end_75} :catchall_56
41545     move-object v12, v1
41547     :goto_76
41548     const/16 v19, 0x0
41550     const/4 v8, 0x0
41552     const/4 v13, 0x0
41554     const/4 v14, 0x0
41556     move-object/from16 v16, v15
41558     :goto_7d
41559     if-ltz v17, :cond_159
41561     if-lez p1, :cond_159
41563     move-object/from16 v18, v12
41565     add-int/lit8 v17, v17, -0x1
41567     if-ltz v17, :cond_14b
41569     :try_start_87
41570     move-object/from16 v0, p0
41572     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
41574     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
41576     move/from16 v0, v17
41578     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
41580     move-result-object v1
41582     check-cast v1, Lcom/android/server/am/ActivityRecord;
41584     move-object v12, v1
41586     :goto_96
41587     if-eqz v19, :cond_aa
41589     move-object/from16 v0, v19
41591     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
41593     sget-object v2, Lcom/android/server/am/ActivityStack$ActivityState;->INITIALIZING:Lcom/android/server/am/ActivityStack$ActivityState;
41595     if-ne v1, v2, :cond_b2
41597     move-object/from16 v0, v19
41599     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
41601     move-object/from16 v0, v18
41603     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
41605     if-ne v1, v2, :cond_b2
41607     :cond_aa
41608     move-object/from16 v19, v18
41610     move-object/from16 v0, v18
41612     iget-object v8, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
41614     const/4 v14, 0x0
41616     move v13, v14
41618     :cond_b2
41619     add-int/lit8 v13, v13, 0x1
41621     move-object/from16 v0, v18
41623     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
41625     if-eqz v1, :cond_c4
41627     move-object/from16 v0, v18
41629     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
41631     iget-object v1, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
41633     if-eqz v1, :cond_c4
41635     add-int/lit8 v14, v14, 0x1
41637     :cond_c4
41638     if-eqz v12, :cond_ca
41640     iget-object v1, v12, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
41642     if-eq v1, v8, :cond_199
41644     :cond_ca
41645     new-instance v7, Landroid/app/ActivityManager$RunningTaskInfo;
41647     invoke-direct {v7}, Landroid/app/ActivityManager$RunningTaskInfo;-><init>()V
41649     iget v1, v8, Lcom/android/server/am/TaskRecord;->taskId:I
41651     iput v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->id:I
41653     move-object/from16 v0, v18
41655     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
41657     invoke-virtual {v1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
41659     move-result-object v1
41661     iput-object v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->baseActivity:Landroid/content/ComponentName;
41663     move-object/from16 v0, v19
41665     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
41667     invoke-virtual {v1}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
41669     move-result-object v1
41671     iput-object v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->topActivity:Landroid/content/ComponentName;
41673     move-object/from16 v0, v19
41675     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
41677     if-eqz v1, :cond_f5
41679     move-object/from16 v0, v19
41681     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
41683     iget-object v1, v1, Lcom/android/server/am/ThumbnailHolder;->lastDescription:Ljava/lang/CharSequence;
41685     iput-object v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->description:Ljava/lang/CharSequence;
41687     :cond_f5
41688     iput v13, v7, Landroid/app/ActivityManager$RunningTaskInfo;->numActivities:I
41690     iput v14, v7, Landroid/app/ActivityManager$RunningTaskInfo;->numRunning:I
41692     iget-object v1, v7, Landroid/app/ActivityManager$RunningTaskInfo;->thumbnail:Landroid/graphics/Bitmap;
41694     if-nez v1, :cond_196
41696     if-eqz p3, :cond_196
41698     move-object/from16 v0, v19
41700     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
41702     sget-object v2, Lcom/android/server/am/ActivityStack$ActivityState;->RESUMED:Lcom/android/server/am/ActivityStack$ActivityState;
41704     if-eq v1, v2, :cond_10f
41706     move-object/from16 v0, v19
41708     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
41710     sget-object v2, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
41712     if-ne v1, v2, :cond_12d
41714     :cond_10f
41715     move-object/from16 v0, v19
41717     iget-boolean v1, v0, Lcom/android/server/am/ActivityRecord;->idle:Z
41719     if-eqz v1, :cond_14e
41721     move-object/from16 v0, v19
41723     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
41725     if-eqz v1, :cond_14e
41727     move-object/from16 v0, v19
41729     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
41731     iget-object v1, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
41733     if-eqz v1, :cond_14e
41735     move-object/from16 v20, v19
41737     move-object/from16 v0, v19
41739     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
41741     iget-object v0, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
41743     move-object/from16 v21, v0
41745     :cond_12d
41746     :goto_12d
41747     if-nez v16, :cond_193
41749     new-instance v15, Lcom/android/server/am/PendingThumbnailsRecord;
41751     move-object/from16 v0, p3
41753     invoke-direct {v15, v0}, Lcom/android/server/am/PendingThumbnailsRecord;-><init>(Landroid/app/IThumbnailReceiver;)V
41754     :try_end_136
41755     .catchall {:try_start_87 .. :try_end_136} :catchall_154
41757     :goto_136
41758     :try_start_136
41759     iget-object v1, v15, Lcom/android/server/am/PendingThumbnailsRecord;->pendingRecords:Ljava/util/HashSet;
41761     move-object/from16 v0, v19
41763     invoke-virtual {v1, v0}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
41765     :goto_13d
41766     invoke-virtual {v10, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
41767     :try_end_140
41768     .catchall {:try_start_136 .. :try_end_140} :catchall_56
41770     add-int/lit8 p1, p1, -0x1
41772     const/16 v19, 0x0
41774     :goto_144
41775     move-object/from16 v16, v15
41777     goto/16 :goto_7d
41779     :cond_148
41780     const/4 v12, 0x0
41782     goto/16 :goto_76
41784     :cond_14b
41785     const/4 v12, 0x0
41787     goto/16 :goto_96
41789     :cond_14e
41790     const/4 v1, 0x1
41792     :try_start_14f
41793     move-object/from16 v0, v19
41795     iput-boolean v1, v0, Lcom/android/server/am/ActivityRecord;->thumbnailNeeded:Z
41797     goto :goto_12d
41799     :catchall_154
41800     move-exception v1
41802     move-object/from16 v15, v16
41804     goto/16 :goto_57
41806     :cond_159
41807     if-eqz v16, :cond_164
41809     move-object/from16 v0, p0
41811     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
41813     move-object/from16 v0, v16
41815     invoke-virtual {v1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
41817     :cond_164
41818     monitor-exit p0
41819     :try_end_165
41820     .catchall {:try_start_14f .. :try_end_165} :catchall_154
41822     if-eqz v21, :cond_170
41824     :try_start_167
41825     move-object/from16 v0, v20
41827     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
41829     move-object/from16 v0, v21
41831     invoke-interface {v0, v1}, Landroid/app/IApplicationThread;->requestThumbnail(Landroid/os/IBinder;)V
41832     :try_end_170
41833     .catch Ljava/lang/Exception; {:try_start_167 .. :try_end_170} :catch_178
41835     :cond_170
41836     :goto_170
41837     if-nez v16, :cond_177
41839     if-eqz p3, :cond_177
41841     :try_start_174
41842     invoke-interface/range {p3 .. p3}, Landroid/app/IThumbnailReceiver;->finished()V
41843     :try_end_177
41844     .catch Landroid/os/RemoteException; {:try_start_174 .. :try_end_177} :catch_191
41846     :cond_177
41847     :goto_177
41848     return-object v10
41850     :catch_178
41851     move-exception v9
41853     const-string v1, "ActivityManager"
41855     const-string v2, "Exception thrown when requesting thumbnail"
41857     invoke-static {v1, v2, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
41859     const/4 v2, 0x0
41861     move-object/from16 v0, v20
41863     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
41865     const/4 v4, 0x0
41867     const/4 v5, 0x0
41869     const/4 v6, 0x1
41871     move-object/from16 v1, p0
41873     invoke-virtual/range {v1 .. v6}, Lcom/android/server/am/ActivityManagerService;->sendPendingThumbnail(Lcom/android/server/am/ActivityRecord;Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;Z)V
41875     goto :goto_170
41877     :catch_18e
41878     move-exception v1
41880     goto/16 :goto_1a
41882     :catch_191
41883     move-exception v1
41885     goto :goto_177
41887     :cond_193
41888     move-object/from16 v15, v16
41890     goto :goto_136
41892     :cond_196
41893     move-object/from16 v15, v16
41895     goto :goto_13d
41897     :cond_199
41898     move-object/from16 v15, v16
41900     goto :goto_144
41901 .end method
41903 .method public getUidForIntentSender(Landroid/content/IIntentSender;)I
41904     .registers 5
41906     instance-of v2, p1, Lcom/android/server/am/PendingIntentRecord;
41908     if-eqz v2, :cond_c
41910     :try_start_4
41911     move-object v0, p1
41913     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
41915     move-object v1, v0
41917     iget v2, v1, Lcom/android/server/am/PendingIntentRecord;->uid:I
41918     :try_end_a
41919     .catch Ljava/lang/ClassCastException; {:try_start_4 .. :try_end_a} :catch_b
41921     :goto_a
41922     return v2
41924     :catch_b
41925     move-exception v2
41927     :cond_c
41928     const/4 v2, -0x1
41930     goto :goto_a
41931 .end method
41933 .method getUserManagerLocked()Lcom/android/server/pm/UserManagerService;
41934     .registers 3
41936     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mUserManager:Lcom/android/server/pm/UserManagerService;
41938     if-nez v1, :cond_12
41940     const-string v1, "user"
41942     invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
41944     move-result-object v0
41946     invoke-static {v0}, Landroid/os/IUserManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUserManager;
41948     move-result-object v1
41950     check-cast v1, Lcom/android/server/pm/UserManagerService;
41952     iput-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mUserManager:Lcom/android/server/pm/UserManagerService;
41954     :cond_12
41955     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mUserManager:Lcom/android/server/pm/UserManagerService;
41957     return-object v1
41958 .end method
41960 .method getUsersLocked()[I
41961     .registers 4
41963     const/4 v2, 0x0
41965     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->getUserManagerLocked()Lcom/android/server/pm/UserManagerService;
41967     move-result-object v0
41969     if-eqz v0, :cond_c
41971     invoke-virtual {v0}, Lcom/android/server/pm/UserManagerService;->getUserIds()[I
41973     move-result-object v1
41975     :goto_b
41976     return-object v1
41978     :cond_c
41979     const/4 v1, 0x1
41981     new-array v1, v1, [I
41983     aput v2, v1, v2
41985     goto :goto_b
41986 .end method
41988 .method public goingToSleep()V
41989     .registers 5
41991     const-string v1, "android.permission.DEVICE_POWER"
41993     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
41995     move-result v1
41997     if-eqz v1, :cond_10
41999     new-instance v1, Ljava/lang/SecurityException;
42001     const-string v2, "Requires permission android.permission.DEVICE_POWER"
42003     invoke-direct {v1, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
42005     throw v1
42007     :cond_10
42008     monitor-enter p0
42010     const/4 v1, 0x1
42012     :try_start_12
42013     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
42015     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V
42017     iget-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
42019     if-nez v1, :cond_3e
42021     const/4 v1, 0x1
42023     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
42025     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
42027     invoke-virtual {v1}, Lcom/android/server/am/ActivityStack;->stopIfSleepingLocked()V
42029     const/4 v1, 0x0
42031     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLocked(Z)V
42033     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
42035     const/16 v2, 0x1b
42037     invoke-virtual {v1, v2}, Landroid/os/Handler;->removeMessages(I)V
42039     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
42041     const/16 v2, 0x1b
42043     invoke-virtual {v1, v2}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
42045     move-result-object v0
42047     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
42049     const-wide/32 v2, 0xdbba0
42051     invoke-virtual {v1, v0, v2, v3}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
42053     :cond_3e
42054     monitor-exit p0
42056     return-void
42058     :catchall_40
42059     move-exception v1
42061     monitor-exit p0
42062     :try_end_42
42063     .catchall {:try_start_12 .. :try_end_42} :catchall_40
42065     throw v1
42066 .end method
42068 .method public grantUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;I)V
42069     .registers 12
42071     const-string v0, "grantUriPermission"
42073     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
42075     monitor-enter p0
42077     :try_start_6
42078     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
42080     move-result-object v6
42082     if-nez v6, :cond_32
42084     new-instance v0, Ljava/lang/SecurityException;
42086     new-instance v1, Ljava/lang/StringBuilder;
42088     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
42090     const-string v2, "Unable to find app for caller "
42092     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42094     move-result-object v1
42096     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
42098     move-result-object v1
42100     const-string v2, " when granting permission to uri "
42102     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42104     move-result-object v1
42106     invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
42108     move-result-object v1
42110     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
42112     move-result-object v1
42114     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
42116     throw v0
42118     :catchall_2f
42119     move-exception v0
42121     monitor-exit p0
42122     :try_end_31
42123     .catchall {:try_start_6 .. :try_end_31} :catchall_2f
42125     throw v0
42127     :cond_32
42128     if-nez p2, :cond_3c
42130     :try_start_34
42131     new-instance v0, Ljava/lang/IllegalArgumentException;
42133     const-string v1, "null target"
42135     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42137     throw v0
42139     :cond_3c
42140     if-nez p3, :cond_46
42142     new-instance v0, Ljava/lang/IllegalArgumentException;
42144     const-string v1, "null uri"
42146     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42148     throw v0
42150     :cond_46
42151     iget v1, v6, Lcom/android/server/am/ProcessRecord;->uid:I
42153     const/4 v5, 0x0
42155     move-object v0, p0
42157     move-object v2, p2
42159     move-object v3, p3
42161     move v4, p4
42163     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
42165     monitor-exit p0
42166     :try_end_51
42167     .catchall {:try_start_34 .. :try_end_51} :catchall_2f
42169     return-void
42170 .end method
42172 .method grantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;Lcom/android/server/am/UriPermissionOwner;)V
42173     .registers 12
42175     if-eqz p3, :cond_12
42177     invoke-virtual {p3}, Landroid/content/Intent;->getFlags()I
42179     move-result v4
42181     :goto_6
42182     const/4 v5, 0x0
42184     move-object v0, p0
42186     move v1, p1
42188     move-object v2, p2
42190     move-object v3, p3
42192     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionFromIntentLocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/am/ActivityManagerService$NeededUriGrants;)Lcom/android/server/am/ActivityManagerService$NeededUriGrants;
42194     move-result-object v6
42196     if-nez v6, :cond_14
42198     :goto_11
42199     return-void
42201     :cond_12
42202     const/4 v4, 0x0
42204     goto :goto_6
42206     :cond_14
42207     invoke-virtual {p0, v6, p4}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionUncheckedFromIntentLocked(Lcom/android/server/am/ActivityManagerService$NeededUriGrants;Lcom/android/server/am/UriPermissionOwner;)V
42209     goto :goto_11
42210 .end method
42212 .method public grantUriPermissionFromOwner(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;I)V
42213     .registers 12
42215     monitor-enter p0
42217     :try_start_1
42218     invoke-static {p1}, Lcom/android/server/am/UriPermissionOwner;->fromExternalToken(Landroid/os/IBinder;)Lcom/android/server/am/UriPermissionOwner;
42220     move-result-object v5
42222     if-nez v5, :cond_23
42224     new-instance v0, Ljava/lang/IllegalArgumentException;
42226     new-instance v1, Ljava/lang/StringBuilder;
42228     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
42230     const-string v2, "Unknown owner: "
42232     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42234     move-result-object v1
42236     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
42238     move-result-object v1
42240     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
42242     move-result-object v1
42244     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42246     throw v0
42248     :catchall_20
42249     move-exception v0
42251     monitor-exit p0
42252     :try_end_22
42253     .catchall {:try_start_1 .. :try_end_22} :catchall_20
42255     throw v0
42257     :cond_23
42258     :try_start_23
42259     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
42261     move-result v0
42263     if-eq p2, v0, :cond_3b
42265     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
42267     move-result v0
42269     invoke-static {}, Landroid/os/Process;->myUid()I
42271     move-result v1
42273     if-eq v0, v1, :cond_3b
42275     new-instance v0, Ljava/lang/SecurityException;
42277     const-string v1, "nice try"
42279     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
42281     throw v0
42283     :cond_3b
42284     if-nez p3, :cond_45
42286     new-instance v0, Ljava/lang/IllegalArgumentException;
42288     const-string v1, "null target"
42290     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42292     throw v0
42294     :cond_45
42295     if-nez p4, :cond_4f
42297     new-instance v0, Ljava/lang/IllegalArgumentException;
42299     const-string v1, "null uri"
42301     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
42303     throw v0
42305     :cond_4f
42306     move-object v0, p0
42308     move v1, p2
42310     move-object v2, p3
42312     move-object v3, p4
42314     move v4, p5
42316     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
42318     monitor-exit p0
42319     :try_end_58
42320     .catchall {:try_start_23 .. :try_end_58} :catchall_20
42322     return-void
42323 .end method
42325 .method grantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
42326     .registers 12
42328     if-nez p2, :cond_a
42330     new-instance v0, Ljava/lang/NullPointerException;
42332     const-string v2, "targetPkg"
42334     invoke-direct {v0, v2}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
42336     throw v0
42338     :cond_a
42339     const/4 v5, -0x1
42341     move-object v0, p0
42343     move v1, p1
42345     move-object v2, p2
42347     move-object v3, p3
42349     move v4, p4
42351     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->checkGrantUriPermissionLocked(ILjava/lang/String;Landroid/net/Uri;II)I
42353     move-result v1
42355     if-gez v1, :cond_17
42357     :goto_16
42358     return-void
42360     :cond_17
42361     move-object v0, p0
42363     move-object v2, p2
42365     move-object v3, p3
42367     move v4, p4
42369     move-object v5, p5
42371     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionUncheckedLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
42373     goto :goto_16
42374 .end method
42376 .method grantUriPermissionUncheckedFromIntentLocked(Lcom/android/server/am/ActivityManagerService$NeededUriGrants;Lcom/android/server/am/UriPermissionOwner;)V
42377     .registers 10
42379     if-eqz p1, :cond_1d
42381     const/4 v6, 0x0
42383     :goto_3
42384     invoke-virtual {p1}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->size()I
42386     move-result v0
42388     if-ge v6, v0, :cond_1d
42390     iget v1, p1, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->targetUid:I
42392     iget-object v2, p1, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->targetPkg:Ljava/lang/String;
42394     invoke-virtual {p1, v6}, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->get(I)Ljava/lang/Object;
42396     move-result-object v3
42398     check-cast v3, Landroid/net/Uri;
42400     iget v4, p1, Lcom/android/server/am/ActivityManagerService$NeededUriGrants;->flags:I
42402     move-object v0, p0
42404     move-object v5, p2
42406     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->grantUriPermissionUncheckedLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
42408     add-int/lit8 v6, v6, 0x1
42410     goto :goto_3
42412     :cond_1d
42413     return-void
42414 .end method
42416 .method grantUriPermissionUncheckedLocked(ILjava/lang/String;Landroid/net/Uri;ILcom/android/server/am/UriPermissionOwner;)V
42417     .registers 9
42419     and-int/lit8 p4, p4, 0x3
42421     if-nez p4, :cond_5
42423     :cond_4
42424     :goto_4
42425     return-void
42427     :cond_5
42428     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
42430     invoke-virtual {v2, p1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
42432     move-result-object v1
42434     check-cast v1, Ljava/util/HashMap;
42436     if-nez v1, :cond_19
42438     new-instance v1, Ljava/util/HashMap;
42440     invoke-direct {v1}, Ljava/util/HashMap;-><init>()V
42442     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
42444     invoke-virtual {v2, p1, v1}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
42446     :cond_19
42447     invoke-virtual {v1, p3}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
42449     move-result-object v0
42451     check-cast v0, Lcom/android/server/am/UriPermission;
42453     if-nez v0, :cond_29
42455     new-instance v0, Lcom/android/server/am/UriPermission;
42457     invoke-direct {v0, p1, p3}, Lcom/android/server/am/UriPermission;-><init>(ILandroid/net/Uri;)V
42459     invoke-virtual {v1, p3, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
42461     :cond_29
42462     iget v2, v0, Lcom/android/server/am/UriPermission;->modeFlags:I
42464     or-int/2addr v2, p4
42466     iput v2, v0, Lcom/android/server/am/UriPermission;->modeFlags:I
42468     if-nez p5, :cond_36
42470     iget v2, v0, Lcom/android/server/am/UriPermission;->globalModeFlags:I
42472     or-int/2addr v2, p4
42474     iput v2, v0, Lcom/android/server/am/UriPermission;->globalModeFlags:I
42476     goto :goto_4
42478     :cond_36
42479     and-int/lit8 v2, p4, 0x1
42481     if-eqz v2, :cond_42
42483     iget-object v2, v0, Lcom/android/server/am/UriPermission;->readOwners:Ljava/util/HashSet;
42485     invoke-virtual {v2, p5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
42487     invoke-virtual {p5, v0}, Lcom/android/server/am/UriPermissionOwner;->addReadPermission(Lcom/android/server/am/UriPermission;)V
42489     :cond_42
42490     and-int/lit8 v2, p4, 0x2
42492     if-eqz v2, :cond_4
42494     iget-object v2, v0, Lcom/android/server/am/UriPermission;->writeOwners:Ljava/util/HashSet;
42496     invoke-virtual {v2, p5}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
42498     invoke-virtual {p5, v0}, Lcom/android/server/am/UriPermissionOwner;->addWritePermission(Lcom/android/server/am/UriPermission;)V
42500     goto :goto_4
42501 .end method
42503 .method public handleApplicationCrash(Landroid/os/IBinder;Landroid/app/ApplicationErrorReport$CrashInfo;)V
42504     .registers 13
42506     const/4 v4, 0x0
42508     const-string v0, "Crash"
42510     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
42512     move-result-object v2
42514     if-nez p1, :cond_62
42516     const-string v3, "system_server"
42518     :goto_b
42519     const/16 v1, 0x7557
42521     const/16 v0, 0x8
42523     new-array v5, v0, [Ljava/lang/Object;
42525     const/4 v0, 0x0
42527     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
42529     move-result v6
42531     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
42533     move-result-object v6
42535     aput-object v6, v5, v0
42537     const/4 v0, 0x1
42539     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
42541     move-result v6
42543     invoke-static {v6}, Landroid/os/UserHandle;->getUserId(I)I
42545     move-result v6
42547     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
42549     move-result-object v6
42551     aput-object v6, v5, v0
42553     const/4 v0, 0x2
42555     aput-object v3, v5, v0
42557     const/4 v6, 0x3
42559     if-nez v2, :cond_6a
42561     const/4 v0, -0x1
42563     :goto_32
42564     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
42566     move-result-object v0
42568     aput-object v0, v5, v6
42570     const/4 v0, 0x4
42572     iget-object v6, p2, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionClassName:Ljava/lang/String;
42574     aput-object v6, v5, v0
42576     const/4 v0, 0x5
42578     iget-object v6, p2, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionMessage:Ljava/lang/String;
42580     aput-object v6, v5, v0
42582     const/4 v0, 0x6
42584     iget-object v6, p2, Landroid/app/ApplicationErrorReport$CrashInfo;->throwFileName:Ljava/lang/String;
42586     aput-object v6, v5, v0
42588     const/4 v0, 0x7
42590     iget v6, p2, Landroid/app/ApplicationErrorReport$CrashInfo;->throwLineNumber:I
42592     invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
42594     move-result-object v6
42596     aput-object v6, v5, v0
42598     invoke-static {v1, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
42600     const-string v1, "crash"
42602     move-object v0, p0
42604     move-object v5, v4
42606     move-object v6, v4
42608     move-object v7, v4
42610     move-object v8, v4
42612     move-object v9, p2
42614     invoke-virtual/range {v0 .. v9}, Lcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V
42616     invoke-direct {p0, v2, p2}, Lcom/android/server/am/ActivityManagerService;->crashApplication(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;)V
42618     return-void
42620     :cond_62
42621     if-nez v2, :cond_67
42623     const-string v3, "unknown"
42625     goto :goto_b
42627     :cond_67
42628     iget-object v3, v2, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
42630     goto :goto_b
42632     :cond_6a
42633     iget-object v0, v2, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
42635     iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I
42637     goto :goto_32
42638 .end method
42640 .method public handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V
42641     .registers 16
42643     const-string v9, "StrictMode"
42645     invoke-direct {p0, p1, v9}, Lcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
42647     move-result-object v5
42649     if-nez v5, :cond_9
42651     :cond_8
42652     :goto_8
42653     return-void
42655     :cond_9
42656     and-int/lit16 v9, p2, 0x80
42658     if-eqz v9, :cond_28
42660     invoke-virtual {p3}, Landroid/os/StrictMode$ViolationInfo;->hashCode()I
42662     move-result v9
42664     invoke-static {v9}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
42666     move-result-object v8
42668     const/4 v1, 0x1
42670     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
42672     monitor-enter v10
42674     :try_start_19
42675     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
42677     invoke-virtual {v9, v8}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
42679     move-result v9
42681     if-eqz v9, :cond_83
42683     const/4 v1, 0x0
42685     :goto_22
42686     monitor-exit v10
42687     :try_end_23
42688     .catchall {:try_start_19 .. :try_end_23} :catchall_98
42690     if-eqz v1, :cond_28
42692     invoke-direct {p0, v5, p3}, Lcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V
42694     :cond_28
42695     and-int/lit8 v9, p2, 0x20
42697     if-eqz v9, :cond_8
42699     new-instance v7, Lcom/android/server/am/AppErrorResult;
42701     invoke-direct {v7}, Lcom/android/server/am/AppErrorResult;-><init>()V
42703     monitor-enter p0
42705     :try_start_32
42706     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
42708     move-result-wide v3
42710     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
42712     move-result-object v2
42714     const/16 v9, 0x1a
42716     iput v9, v2, Landroid/os/Message;->what:I
42718     new-instance v0, Ljava/util/HashMap;
42720     invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
42722     const-string v9, "result"
42724     invoke-virtual {v0, v9, v7}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
42726     const-string v9, "app"
42728     invoke-virtual {v0, v9, v5}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
42730     const-string v9, "violationMask"
42732     invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
42734     move-result-object v10
42736     invoke-virtual {v0, v9, v10}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
42738     const-string v9, "info"
42740     invoke-virtual {v0, v9, p3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
42742     iput-object v0, v2, Landroid/os/Message;->obj:Ljava/lang/Object;
42744     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
42746     invoke-virtual {v9, v2}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
42748     invoke-static {v3, v4}, Landroid/os/Binder;->restoreCallingIdentity(J)V
42750     monitor-exit p0
42751     :try_end_66
42752     .catchall {:try_start_32 .. :try_end_66} :catchall_9b
42754     invoke-virtual {v7}, Lcom/android/server/am/AppErrorResult;->get()I
42756     move-result v6
42758     const-string v9, "ActivityManager"
42760     new-instance v10, Ljava/lang/StringBuilder;
42762     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
42764     const-string v11, "handleApplicationStrictModeViolation; res="
42766     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
42768     move-result-object v10
42770     invoke-virtual {v10, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
42772     move-result-object v10
42774     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
42776     move-result-object v10
42778     invoke-static {v9, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
42780     goto :goto_8
42782     :cond_83
42783     :try_start_83
42784     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
42786     invoke-virtual {v9}, Ljava/util/HashSet;->size()I
42788     move-result v9
42790     const/16 v11, 0x1388
42792     if-lt v9, v11, :cond_92
42794     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
42796     invoke-virtual {v9}, Ljava/util/HashSet;->clear()V
42798     :cond_92
42799     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mAlreadyLoggedViolatedStacks:Ljava/util/HashSet;
42801     invoke-virtual {v9, v8}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
42803     goto :goto_22
42805     :catchall_98
42806     move-exception v9
42808     monitor-exit v10
42809     :try_end_9a
42810     .catchall {:try_start_83 .. :try_end_9a} :catchall_98
42812     throw v9
42814     :catchall_9b
42815     move-exception v9
42817     :try_start_9c
42818     monitor-exit p0
42819     :try_end_9d
42820     .catchall {:try_start_9c .. :try_end_9d} :catchall_9b
42822     throw v9
42823 .end method
42825 .method public handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)Z
42826     .registers 16
42828     const/4 v10, 0x1
42830     const/4 v11, 0x0
42832     const/4 v4, 0x0
42834     const-string v0, "WTF"
42836     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
42838     move-result-object v2
42840     if-nez p1, :cond_6a
42842     const-string v3, "system_server"
42844     :goto_d
42845     const/16 v1, 0x7558
42847     const/4 v0, 0x6
42849     new-array v5, v0, [Ljava/lang/Object;
42851     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
42853     move-result v0
42855     invoke-static {v0}, Landroid/os/UserHandle;->getUserId(I)I
42857     move-result v0
42859     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
42861     move-result-object v0
42863     aput-object v0, v5, v11
42865     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
42867     move-result v0
42869     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
42871     move-result-object v0
42873     aput-object v0, v5, v10
42875     const/4 v0, 0x2
42877     aput-object v3, v5, v0
42879     const/4 v6, 0x3
42881     if-nez v2, :cond_72
42883     const/4 v0, -0x1
42885     :goto_31
42886     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
42888     move-result-object v0
42890     aput-object v0, v5, v6
42892     const/4 v0, 0x4
42894     aput-object p2, v5, v0
42896     const/4 v0, 0x5
42898     iget-object v6, p3, Landroid/app/ApplicationErrorReport$CrashInfo;->exceptionMessage:Ljava/lang/String;
42900     aput-object v6, v5, v0
42902     invoke-static {v1, v5}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
42904     const-string v1, "wtf"
42906     move-object v0, p0
42908     move-object v5, v4
42910     move-object v6, p2
42912     move-object v7, v4
42914     move-object v8, v4
42916     move-object v9, p3
42918     invoke-virtual/range {v0 .. v9}, Lcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;)V
42920     if-eqz v2, :cond_77
42922     iget v0, v2, Lcom/android/server/am/ProcessRecord;->pid:I
42924     invoke-static {}, Landroid/os/Process;->myPid()I
42926     move-result v1
42928     if-eq v0, v1, :cond_77
42930     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
42932     invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
42934     move-result-object v0
42936     const-string v1, "wtf_is_fatal"
42938     invoke-static {v0, v1, v11}, Landroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
42940     move-result v0
42942     if-eqz v0, :cond_77
42944     invoke-direct {p0, v2, p3}, Lcom/android/server/am/ActivityManagerService;->crashApplication(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;)V
42946     move v0, v10
42948     :goto_69
42949     return v0
42951     :cond_6a
42952     if-nez v2, :cond_6f
42954     const-string v3, "unknown"
42956     goto :goto_d
42958     :cond_6f
42959     iget-object v3, v2, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
42961     goto :goto_d
42963     :cond_72
42964     iget-object v0, v2, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
42966     iget v0, v0, Landroid/content/pm/ApplicationInfo;->flags:I
42968     goto :goto_31
42970     :cond_77
42971     move v0, v11
42973     goto :goto_69
42974 .end method
42976 .method public handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
42977     .registers 18
42979     invoke-static {p2}, Landroid/os/UserHandle;->getUserId(I)I
42981     move-result v8
42983     if-eq v8, p3, :cond_a7
42985     if-eqz p2, :cond_2c
42987     const/16 v1, 0x3e8
42989     if-eq p2, v1, :cond_2c
42991     if-nez p5, :cond_1b
42993     const-string v2, "android.permission.INTERACT_ACROSS_USERS"
42995     const/4 v5, -0x1
42997     const/4 v6, 0x1
42999     move-object v1, p0
43001     move v3, p1
43003     move v4, p2
43005     invoke-virtual/range {v1 .. v6}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
43007     move-result v1
43009     if-eqz v1, :cond_2c
43011     :cond_1b
43012     const-string v2, "android.permission.INTERACT_ACROSS_USERS_FULL"
43014     const/4 v5, -0x1
43016     const/4 v6, 0x1
43018     move-object v1, p0
43020     move v3, p1
43022     move v4, p2
43024     invoke-virtual/range {v1 .. v6}, Lcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
43026     move-result v1
43028     if-eqz v1, :cond_2c
43030     const/4 v1, -0x3
43032     if-ne p3, v1, :cond_51
43034     move p3, v8
43036     :cond_2c
43037     const/4 v1, -0x2
43039     if-eq p3, v1, :cond_32
43041     const/4 v1, -0x3
43043     if-ne p3, v1, :cond_34
43045     :cond_32
43046     iget p3, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
43048     :cond_34
43049     if-nez p4, :cond_a7
43051     if-gez p3, :cond_a7
43053     new-instance v1, Ljava/lang/IllegalArgumentException;
43055     new-instance v2, Ljava/lang/StringBuilder;
43057     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
43059     const-string v3, "Call does not support special user #"
43061     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43063     move-result-object v2
43065     invoke-virtual {v2, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
43067     move-result-object v2
43069     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
43071     move-result-object v2
43073     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
43075     throw v1
43077     :cond_51
43078     new-instance v7, Ljava/lang/StringBuilder;
43080     const/16 v1, 0x80
43082     invoke-direct {v7, v1}, Ljava/lang/StringBuilder;-><init>(I)V
43084     const-string v1, "Permission Denial: "
43086     invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43088     move-object/from16 v0, p6
43090     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43092     if-eqz p7, :cond_6e
43094     const-string v1, " from "
43096     invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43098     move-object/from16 v0, p7
43100     invoke-virtual {v7, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43102     :cond_6e
43103     const-string v1, " asks to run as user "
43105     invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43107     invoke-virtual {v7, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
43109     const-string v1, " but is calling from user "
43111     invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43113     invoke-static {p2}, Landroid/os/UserHandle;->getUserId(I)I
43115     move-result v1
43117     invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
43119     const-string v1, "; this requires "
43121     invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43123     const-string v1, "android.permission.INTERACT_ACROSS_USERS_FULL"
43125     invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43127     if-nez p5, :cond_98
43129     const-string v1, " or "
43131     invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43133     const-string v1, "android.permission.INTERACT_ACROSS_USERS"
43135     invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43137     :cond_98
43138     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
43140     move-result-object v9
43142     const-string v1, "ActivityManager"
43144     invoke-static {v1, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
43146     new-instance v1, Ljava/lang/SecurityException;
43148     invoke-direct {v1, v9}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
43150     throw v1
43152     :cond_a7
43153     return p3
43154 .end method
43156 .method incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Lcom/android/server/am/ContentProviderConnection;
43157     .registers 9
43159     const/4 v3, 0x1
43161     if-eqz p1, :cond_52
43163     const/4 v1, 0x0
43165     :goto_4
43166     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
43168     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
43170     move-result v2
43172     if-ge v1, v2, :cond_37
43174     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
43176     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
43178     move-result-object v0
43180     check-cast v0, Lcom/android/server/am/ContentProviderConnection;
43182     iget-object v2, v0, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
43184     if-ne v2, p2, :cond_34
43186     if-eqz p4, :cond_27
43188     iget v2, v0, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
43190     add-int/lit8 v2, v2, 0x1
43192     iput v2, v0, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
43194     iget v2, v0, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
43196     add-int/lit8 v2, v2, 0x1
43198     iput v2, v0, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
43200     :goto_26
43201     return-object v0
43203     :cond_27
43204     iget v2, v0, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
43206     add-int/lit8 v2, v2, 0x1
43208     iput v2, v0, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
43210     iget v2, v0, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
43212     add-int/lit8 v2, v2, 0x1
43214     iput v2, v0, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
43216     goto :goto_26
43218     :cond_34
43219     add-int/lit8 v1, v1, 0x1
43221     goto :goto_4
43223     :cond_37
43224     new-instance v0, Lcom/android/server/am/ContentProviderConnection;
43226     invoke-direct {v0, p2, p1}, Lcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;)V
43228     if-eqz p4, :cond_4d
43230     iput v3, v0, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
43232     iput v3, v0, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
43234     :goto_42
43235     iget-object v2, p2, Lcom/android/server/am/ContentProviderRecord;->connections:Ljava/util/ArrayList;
43237     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
43239     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->conProviders:Ljava/util/ArrayList;
43241     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
43243     goto :goto_26
43245     :cond_4d
43246     iput v3, v0, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
43248     iput v3, v0, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
43250     goto :goto_42
43252     :cond_52
43253     invoke-virtual {p2, p3}, Lcom/android/server/am/ContentProviderRecord;->addExternalProcessHandleLocked(Landroid/os/IBinder;)V
43255     const/4 v0, 0x0
43257     goto :goto_26
43258 .end method
43260 .method public inputDispatchingTimedOut(IZ)J
43261     .registers 10
43263     const-wide/16 v3, -0x1
43265     const/4 v2, 0x0
43267     const-string v0, "android.permission.FILTER_EVENTS"
43269     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
43271     move-result v0
43273     if-eqz v0, :cond_13
43275     new-instance v0, Ljava/lang/SecurityException;
43277     const-string v2, "Requires permission android.permission.FILTER_EVENTS"
43279     invoke-direct {v0, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
43281     throw v0
43283     :cond_13
43284     monitor-enter p0
43286     :try_start_14
43287     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
43289     monitor-enter v5
43290     :try_end_17
43291     .catchall {:try_start_14 .. :try_end_17} :catchall_2c
43293     :try_start_17
43294     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
43296     invoke-virtual {v0, p1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
43298     move-result-object v1
43300     check-cast v1, Lcom/android/server/am/ProcessRecord;
43302     monitor-exit v5
43303     :try_end_20
43304     .catchall {:try_start_17 .. :try_end_20} :catchall_29
43306     if-eqz v1, :cond_55
43308     :try_start_22
43309     iget-boolean v0, v1, Lcom/android/server/am/ProcessRecord;->debugging:Z
43311     if-eqz v0, :cond_2f
43313     monitor-exit p0
43314     :try_end_27
43315     .catchall {:try_start_22 .. :try_end_27} :catchall_2c
43317     move-wide v2, v3
43319     :goto_28
43320     return-wide v2
43322     :catchall_29
43323     move-exception v0
43325     :try_start_2a
43326     monitor-exit v5
43327     :try_end_2b
43328     .catchall {:try_start_2a .. :try_end_2b} :catchall_29
43330     :try_start_2b
43331     throw v0
43333     :catchall_2c
43334     move-exception v0
43336     monitor-exit p0
43337     :try_end_2e
43338     .catchall {:try_start_2b .. :try_end_2e} :catchall_2c
43340     throw v0
43342     :cond_2f
43343     :try_start_2f
43344     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mDidDexOpt:Z
43346     if-eqz v0, :cond_39
43348     const/4 v0, 0x0
43350     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mDidDexOpt:Z
43352     monitor-exit p0
43354     move-wide v2, v3
43356     goto :goto_28
43358     :cond_39
43359     iget-object v0, v1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
43361     if-eqz v0, :cond_55
43363     new-instance v6, Landroid/os/Bundle;
43365     invoke-direct {v6}, Landroid/os/Bundle;-><init>()V
43367     const-string v0, "shortMsg"
43369     const-string v3, "keyDispatchingTimedOut"
43371     invoke-virtual {v6, v0, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
43373     const-string v0, "longMsg"
43375     const-string v3, "Timed out while dispatching key event"
43377     invoke-virtual {v6, v0, v3}, Landroid/os/Bundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
43379     const/4 v0, 0x0
43381     invoke-virtual {p0, v1, v0, v6}, Lcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
43383     const/4 v1, 0x0
43385     :cond_55
43386     monitor-exit p0
43387     :try_end_56
43388     .catchall {:try_start_2f .. :try_end_56} :catchall_2c
43390     if-eqz v1, :cond_6c
43392     const-string v5, "keyDispatchingTimedOut"
43394     move-object v0, p0
43396     move-object v3, v2
43398     move v4, p2
43400     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->appNotResponding(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;ZLjava/lang/String;)V
43402     iget-object v0, v1, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
43404     if-nez v0, :cond_68
43406     iget-boolean v0, v1, Lcom/android/server/am/ProcessRecord;->usingWrapper:Z
43408     if-eqz v0, :cond_6c
43410     :cond_68
43411     const-wide/32 v2, 0xea60
43413     goto :goto_28
43415     :cond_6c
43416     const-wide/16 v2, 0x1388
43418     goto :goto_28
43419 .end method
43421 .method isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
43422     .registers 3
43424     iget v0, p1, Landroid/content/pm/ApplicationInfo;->flags:I
43426     and-int/lit8 v0, v0, 0x8
43428     if-eqz v0, :cond_8
43430     const/4 v0, 0x1
43432     :goto_7
43433     return v0
43435     :cond_8
43436     const/4 v0, 0x0
43438     goto :goto_7
43439 .end method
43441 .method public isImmersive(Landroid/os/IBinder;)Z
43442     .registers 4
43444     monitor-enter p0
43446     :try_start_1
43447     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
43449     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
43451     move-result-object v0
43453     if-nez v0, :cond_12
43455     new-instance v1, Ljava/lang/IllegalArgumentException;
43457     invoke-direct {v1}, Ljava/lang/IllegalArgumentException;-><init>()V
43459     throw v1
43461     :catchall_f
43462     move-exception v1
43464     monitor-exit p0
43465     :try_end_11
43466     .catchall {:try_start_1 .. :try_end_11} :catchall_f
43468     throw v1
43470     :cond_12
43471     :try_start_12
43472     iget-boolean v1, v0, Lcom/android/server/am/ActivityRecord;->immersive:Z
43474     monitor-exit p0
43475     :try_end_15
43476     .catchall {:try_start_12 .. :try_end_15} :catchall_f
43478     return v1
43479 .end method
43481 .method public isIntentSenderAnActivity(Landroid/content/IIntentSender;)Z
43482     .registers 7
43484     const/4 v2, 0x0
43486     instance-of v3, p1, Lcom/android/server/am/PendingIntentRecord;
43488     if-nez v3, :cond_6
43490     :cond_5
43491     :goto_5
43492     return v2
43494     :cond_6
43495     :try_start_6
43496     move-object v0, p1
43498     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
43500     move-object v1, v0
43502     iget-object v3, v1, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
43504     iget v3, v3, Lcom/android/server/am/PendingIntentRecord$Key;->type:I
43505     :try_end_e
43506     .catch Ljava/lang/ClassCastException; {:try_start_6 .. :try_end_e} :catch_13
43508     const/4 v4, 0x2
43510     if-ne v3, v4, :cond_5
43512     const/4 v2, 0x1
43514     goto :goto_5
43516     :catch_13
43517     move-exception v3
43519     goto :goto_5
43520 .end method
43522 .method public isIntentSenderTargetedToPackage(Landroid/content/IIntentSender;)Z
43523     .registers 8
43525     const/4 v4, 0x0
43527     instance-of v5, p1, Lcom/android/server/am/PendingIntentRecord;
43529     if-nez v5, :cond_6
43531     :cond_5
43532     :goto_5
43533     return v4
43535     :cond_6
43536     :try_start_6
43537     move-object v0, p1
43539     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
43541     move-object v3, v0
43543     iget-object v5, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
43545     iget-object v5, v5, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
43547     if-eqz v5, :cond_5
43549     const/4 v1, 0x0
43551     :goto_11
43552     iget-object v5, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
43554     iget-object v5, v5, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
43556     array-length v5, v5
43558     if-ge v1, v5, :cond_2d
43560     iget-object v5, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
43562     iget-object v5, v5, Lcom/android/server/am/PendingIntentRecord$Key;->allIntents:[Landroid/content/Intent;
43564     aget-object v2, v5, v1
43566     invoke-virtual {v2}, Landroid/content/Intent;->getPackage()Ljava/lang/String;
43568     move-result-object v5
43570     if-eqz v5, :cond_2a
43572     invoke-virtual {v2}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
43573     :try_end_27
43574     .catch Ljava/lang/ClassCastException; {:try_start_6 .. :try_end_27} :catch_2f
43576     move-result-object v5
43578     if-nez v5, :cond_5
43580     :cond_2a
43581     add-int/lit8 v1, v1, 0x1
43583     goto :goto_11
43585     :cond_2d
43586     const/4 v4, 0x1
43588     goto :goto_5
43590     :catch_2f
43591     move-exception v5
43593     goto :goto_5
43594 .end method
43596 .method isNextTransitionForward()Z
43597     .registers 3
43599     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
43601     invoke-virtual {v1}, Lcom/android/server/wm/WindowManagerService;->getPendingAppTransition()I
43603     move-result v0
43605     const/16 v1, 0x1006
43607     if-eq v0, v1, :cond_12
43609     const/16 v1, 0x1008
43611     if-eq v0, v1, :cond_12
43613     const/16 v1, 0x100a
43615     if-ne v0, v1, :cond_14
43617     :cond_12
43618     const/4 v1, 0x1
43620     :goto_13
43621     return v1
43623     :cond_14
43624     const/4 v1, 0x0
43626     goto :goto_13
43627 .end method
43629 .method isPendingBroadcastProcessLocked(I)Z
43630     .registers 3
43632     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mFgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
43634     invoke-virtual {v0, p1}, Lcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z
43636     move-result v0
43638     if-nez v0, :cond_10
43640     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBgBroadcastQueue:Lcom/android/server/am/BroadcastQueue;
43642     invoke-virtual {v0, p1}, Lcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z
43644     move-result v0
43646     if-eqz v0, :cond_12
43648     :cond_10
43649     const/4 v0, 0x1
43651     :goto_11
43652     return v0
43654     :cond_12
43655     const/4 v0, 0x0
43657     goto :goto_11
43658 .end method
43660 .method isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z
43661     .registers 10
43663     const/4 v2, 0x0
43665     iget v3, p2, Landroid/content/pm/ApplicationInfo;->uid:I
43667     invoke-static {v3}, Landroid/os/UserHandle;->getAppId(I)I
43669     move-result v3
43671     const/16 v4, 0x2710
43673     if-lt v3, v4, :cond_51
43675     const/high16 v3, 0x4000
43677     and-int/2addr v3, p4
43679     if-eqz v3, :cond_50
43681     const-string v3, "android.permission.INTERACT_ACROSS_USERS"
43683     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
43685     invoke-static {v3, v4}, Landroid/app/ActivityManager;->checkUidPermission(Ljava/lang/String;I)I
43687     move-result v3
43689     if-eqz v3, :cond_4f
43691     new-instance v0, Landroid/content/ComponentName;
43693     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
43695     invoke-direct {v0, v3, p3}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
43697     new-instance v3, Ljava/lang/StringBuilder;
43699     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
43701     const-string v4, "Permission Denial: Component "
43703     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43705     move-result-object v3
43707     invoke-virtual {v0}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
43709     move-result-object v4
43711     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43713     move-result-object v3
43715     const-string v4, " requests FLAG_SINGLE_USER, but app does not hold "
43717     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43719     move-result-object v3
43721     const-string v4, "android.permission.INTERACT_ACROSS_USERS"
43723     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43725     move-result-object v3
43727     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
43729     move-result-object v1
43731     const-string v3, "ActivityManager"
43733     invoke-static {v3, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
43735     new-instance v3, Ljava/lang/SecurityException;
43737     invoke-direct {v3, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
43739     throw v3
43741     :cond_4f
43742     const/4 v2, 0x1
43744     :cond_50
43745     :goto_50
43746     return v2
43748     :cond_51
43749     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
43751     if-ne p1, v3, :cond_5f
43753     iget v3, p2, Landroid/content/pm/ApplicationInfo;->flags:I
43755     and-int/lit8 v3, v3, 0x8
43757     if-eqz v3, :cond_5d
43759     const/4 v2, 0x1
43761     :goto_5c
43762     goto :goto_50
43764     :cond_5d
43765     const/4 v2, 0x0
43767     goto :goto_5c
43769     :cond_5f
43770     const-string v3, "system"
43772     invoke-virtual {v3, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
43774     move-result v3
43776     if-eqz v3, :cond_50
43778     const/4 v2, 0x1
43780     goto :goto_50
43781 .end method
43783 .method public isSleeping()Z
43784     .registers 2
43786     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSleeping:Z
43788     if-nez v0, :cond_8
43790     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
43792     if-eqz v0, :cond_a
43794     :cond_8
43795     const/4 v0, 0x1
43797     :goto_9
43798     return v0
43800     :cond_a
43801     const/4 v0, 0x0
43803     goto :goto_9
43804 .end method
43806 .method public isTopActivityImmersive()Z
43807     .registers 4
43809     const-string v1, "startActivity"
43811     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
43813     monitor-enter p0
43815     :try_start_6
43816     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
43818     const/4 v2, 0x0
43820     invoke-virtual {v1, v2}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
43822     move-result-object v0
43824     if-eqz v0, :cond_13
43826     iget-boolean v1, v0, Lcom/android/server/am/ActivityRecord;->immersive:Z
43828     :goto_11
43829     monitor-exit p0
43831     return v1
43833     :cond_13
43834     const/4 v1, 0x0
43836     goto :goto_11
43838     :catchall_15
43839     move-exception v1
43841     monitor-exit p0
43842     :try_end_17
43843     .catchall {:try_start_6 .. :try_end_17} :catchall_15
43845     throw v1
43846 .end method
43848 .method public isUserAMonkey()Z
43849     .registers 2
43851     monitor-enter p0
43853     :try_start_1
43854     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
43856     if-eqz v0, :cond_8
43858     const/4 v0, 0x1
43860     :goto_6
43861     monitor-exit p0
43863     return v0
43865     :cond_8
43866     const/4 v0, 0x0
43868     goto :goto_6
43870     :catchall_a
43871     move-exception v0
43873     monitor-exit p0
43874     :try_end_c
43875     .catchall {:try_start_1 .. :try_end_c} :catchall_a
43877     throw v0
43878 .end method
43880 .method public isUserRunning(IZ)Z
43881     .registers 6
43883     const-string v1, "android.permission.INTERACT_ACROSS_USERS"
43885     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
43887     move-result v1
43889     if-eqz v1, :cond_44
43891     new-instance v1, Ljava/lang/StringBuilder;
43893     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
43895     const-string v2, "Permission Denial: isUserRunning() from pid="
43897     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43899     move-result-object v1
43901     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
43903     move-result v2
43905     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
43907     move-result-object v1
43909     const-string v2, ", uid="
43911     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43913     move-result-object v1
43915     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
43917     move-result v2
43919     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
43921     move-result-object v1
43923     const-string v2, " requires "
43925     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43927     move-result-object v1
43929     const-string v2, "android.permission.INTERACT_ACROSS_USERS"
43931     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
43933     move-result-object v1
43935     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
43937     move-result-object v0
43939     const-string v1, "ActivityManager"
43941     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
43943     new-instance v1, Ljava/lang/SecurityException;
43945     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
43947     throw v1
43949     :cond_44
43950     monitor-enter p0
43952     :try_start_45
43953     invoke-virtual {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->isUserRunningLocked(IZ)Z
43955     move-result v1
43957     monitor-exit p0
43959     return v1
43961     :catchall_4b
43962     move-exception v1
43964     monitor-exit p0
43965     :try_end_4d
43966     .catchall {:try_start_45 .. :try_end_4d} :catchall_4b
43968     throw v1
43969 .end method
43971 .method isUserRunningLocked(IZ)Z
43972     .registers 8
43974     const/4 v1, 0x1
43976     const/4 v2, 0x0
43978     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
43980     invoke-virtual {v3, p1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
43982     move-result-object v0
43984     check-cast v0, Lcom/android/server/am/UserStartedState;
43986     if-nez v0, :cond_e
43988     move v1, v2
43990     :cond_d
43991     :goto_d
43992     return v1
43994     :cond_e
43995     if-nez p2, :cond_d
43997     iget v3, v0, Lcom/android/server/am/UserStartedState;->mState:I
43999     const/4 v4, 0x2
44001     if-eq v3, v4, :cond_1a
44003     iget v3, v0, Lcom/android/server/am/UserStartedState;->mState:I
44005     const/4 v4, 0x3
44007     if-ne v3, v4, :cond_d
44009     :cond_1a
44010     move v1, v2
44012     goto :goto_d
44013 .end method
44015 .method public killAllBackgroundProcesses()V
44016     .registers 16
44018     const-string v11, "android.permission.KILL_BACKGROUND_PROCESSES"
44020     invoke-virtual {p0, v11}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
44022     move-result v11
44024     if-eqz v11, :cond_44
44026     new-instance v11, Ljava/lang/StringBuilder;
44028     invoke-direct {v11}, Ljava/lang/StringBuilder;-><init>()V
44030     const-string v12, "Permission Denial: killAllBackgroundProcesses() from pid="
44032     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44034     move-result-object v11
44036     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
44038     move-result v12
44040     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44042     move-result-object v11
44044     const-string v12, ", uid="
44046     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44048     move-result-object v11
44050     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
44052     move-result v12
44054     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44056     move-result-object v11
44058     const-string v12, " requires "
44060     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44062     move-result-object v11
44064     const-string v12, "android.permission.KILL_BACKGROUND_PROCESSES"
44066     invoke-virtual {v11, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44068     move-result-object v11
44070     invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44072     move-result-object v9
44074     const-string v11, "ActivityManager"
44076     invoke-static {v11, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
44078     new-instance v11, Ljava/lang/SecurityException;
44080     invoke-direct {v11, v9}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
44082     throw v11
44084     :cond_44
44085     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
44087     move-result-wide v4
44089     :try_start_48
44090     monitor-enter p0
44091     :try_end_49
44092     .catchall {:try_start_48 .. :try_end_49} :catchall_87
44094     :try_start_49
44095     new-instance v10, Ljava/util/ArrayList;
44097     invoke-direct {v10}, Ljava/util/ArrayList;-><init>()V
44099     iget-object v11, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
44101     invoke-virtual {v11}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
44103     move-result-object v11
44105     invoke-virtual {v11}, Ljava/util/HashMap;->values()Ljava/util/Collection;
44107     move-result-object v11
44109     invoke-interface {v11}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
44111     move-result-object v7
44113     :cond_5c
44114     invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
44116     move-result v11
44118     if-eqz v11, :cond_99
44120     invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
44122     move-result-object v3
44124     check-cast v3, Landroid/util/SparseArray;
44126     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
44128     move-result v1
44130     const/4 v8, 0x0
44132     :goto_6d
44133     if-ge v8, v1, :cond_5c
44135     invoke-virtual {v3, v8}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
44137     move-result-object v2
44139     check-cast v2, Lcom/android/server/am/ProcessRecord;
44141     iget-boolean v11, v2, Lcom/android/server/am/ProcessRecord;->persistent:Z
44143     if-eqz v11, :cond_7c
44145     :cond_79
44146     :goto_79
44147     add-int/lit8 v8, v8, 0x1
44149     goto :goto_6d
44151     :cond_7c
44152     iget-boolean v11, v2, Lcom/android/server/am/ProcessRecord;->removed:Z
44154     if-eqz v11, :cond_8c
44156     invoke-virtual {v10, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
44158     goto :goto_79
44160     :catchall_84
44161     move-exception v11
44163     monitor-exit p0
44164     :try_end_86
44165     .catchall {:try_start_49 .. :try_end_86} :catchall_84
44167     :try_start_86
44168     throw v11
44169     :try_end_87
44170     .catchall {:try_start_86 .. :try_end_87} :catchall_87
44172     :catchall_87
44173     move-exception v11
44175     invoke-static {v4, v5}, Landroid/os/Binder;->restoreCallingIdentity(J)V
44177     throw v11
44179     :cond_8c
44180     :try_start_8c
44181     iget v11, v2, Lcom/android/server/am/ProcessRecord;->setAdj:I
44183     sget v12, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
44185     if-lt v11, v12, :cond_79
44187     const/4 v11, 0x1
44189     iput-boolean v11, v2, Lcom/android/server/am/ProcessRecord;->removed:Z
44191     invoke-virtual {v10, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
44193     goto :goto_79
44195     :cond_99
44196     invoke-virtual {v10}, Ljava/util/ArrayList;->size()I
44198     move-result v0
44200     const/4 v6, 0x0
44202     :goto_9e
44203     if-ge v6, v0, :cond_b0
44205     invoke-virtual {v10, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
44207     move-result-object v11
44209     check-cast v11, Lcom/android/server/am/ProcessRecord;
44211     const/4 v12, 0x0
44213     const/4 v13, 0x1
44215     const-string v14, "kill all background"
44217     invoke-direct {p0, v11, v12, v13, v14}, Lcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
44219     add-int/lit8 v6, v6, 0x1
44221     goto :goto_9e
44223     :cond_b0
44224     monitor-exit p0
44225     :try_end_b1
44226     .catchall {:try_start_8c .. :try_end_b1} :catchall_84
44228     invoke-static {v4, v5}, Landroid/os/Binder;->restoreCallingIdentity(J)V
44230     return-void
44231 .end method
44233 .method killAppAtUsersRequest(Lcom/android/server/am/ProcessRecord;Landroid/app/Dialog;)V
44234     .registers 7
44236     monitor-enter p0
44238     const/4 v0, 0x0
44240     :try_start_2
44241     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->crashing:Z
44243     const/4 v0, 0x0
44245     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->crashingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
44247     const/4 v0, 0x0
44249     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->notResponding:Z
44251     const/4 v0, 0x0
44253     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->notRespondingReport:Landroid/app/ActivityManager$ProcessErrorStateInfo;
44255     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
44257     if-ne v0, p2, :cond_14
44259     const/4 v0, 0x0
44261     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->anrDialog:Landroid/app/Dialog;
44263     :cond_14
44264     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
44266     if-ne v0, p2, :cond_1b
44268     const/4 v0, 0x0
44270     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->waitDialog:Landroid/app/Dialog;
44272     :cond_1b
44273     iget v0, p1, Lcom/android/server/am/ProcessRecord;->pid:I
44275     if-lez v0, :cond_78
44277     iget v0, p1, Lcom/android/server/am/ProcessRecord;->pid:I
44279     sget v1, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
44281     if-eq v0, v1, :cond_78
44283     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->handleAppCrashLocked(Lcom/android/server/am/ProcessRecord;)Z
44285     const-string v0, "ActivityManager"
44287     new-instance v1, Ljava/lang/StringBuilder;
44289     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
44291     const-string v2, "Killing "
44293     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44295     move-result-object v1
44297     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
44299     move-result-object v1
44301     const-string v2, ": user\'s request"
44303     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44305     move-result-object v1
44307     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44309     move-result-object v1
44311     invoke-static {v0, v1}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
44313     const/16 v0, 0x7547
44315     const/4 v1, 0x5
44317     new-array v1, v1, [Ljava/lang/Object;
44319     const/4 v2, 0x0
44321     iget v3, p1, Lcom/android/server/am/ProcessRecord;->userId:I
44323     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
44325     move-result-object v3
44327     aput-object v3, v1, v2
44329     const/4 v2, 0x1
44331     iget v3, p1, Lcom/android/server/am/ProcessRecord;->pid:I
44333     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
44335     move-result-object v3
44337     aput-object v3, v1, v2
44339     const/4 v2, 0x2
44341     iget-object v3, p1, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
44343     aput-object v3, v1, v2
44345     const/4 v2, 0x3
44347     iget v3, p1, Lcom/android/server/am/ProcessRecord;->setAdj:I
44349     invoke-static {v3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
44351     move-result-object v3
44353     aput-object v3, v1, v2
44355     const/4 v2, 0x4
44357     const-string v3, "user\'s request after error"
44359     aput-object v3, v1, v2
44361     invoke-static {v0, v1}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
44363     iget v0, p1, Lcom/android/server/am/ProcessRecord;->pid:I
44365     invoke-static {v0}, Landroid/os/Process;->killProcessQuiet(I)V
44367     :cond_78
44368     monitor-exit p0
44370     return-void
44372     :catchall_7a
44373     move-exception v0
44375     monitor-exit p0
44376     :try_end_7c
44377     .catchall {:try_start_2 .. :try_end_7c} :catchall_7a
44379     throw v0
44380 .end method
44382 .method public killApplicationProcess(Ljava/lang/String;I)V
44383     .registers 8
44385     if-nez p1, :cond_3
44387     :goto_2
44388     return-void
44390     :cond_3
44391     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
44393     move-result v1
44395     const/16 v2, 0x3e8
44397     if-ne v1, v2, :cond_43
44399     monitor-enter p0
44401     :try_start_c
44402     invoke-virtual {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
44404     move-result-object v0
44406     if-eqz v0, :cond_20
44408     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
44409     :try_end_14
44410     .catchall {:try_start_c .. :try_end_14} :catchall_1d
44412     if-eqz v2, :cond_20
44414     :try_start_16
44415     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
44417     invoke-interface {v2}, Landroid/app/IApplicationThread;->scheduleSuicide()V
44418     :try_end_1b
44419     .catchall {:try_start_16 .. :try_end_1b} :catchall_1d
44420     .catch Landroid/os/RemoteException; {:try_start_16 .. :try_end_1b} :catch_60
44422     :goto_1b
44423     :try_start_1b
44424     monitor-exit p0
44426     goto :goto_2
44428     :catchall_1d
44429     move-exception v2
44431     monitor-exit p0
44432     :try_end_1f
44433     .catchall {:try_start_1b .. :try_end_1f} :catchall_1d
44435     throw v2
44437     :cond_20
44438     :try_start_20
44439     const-string v2, "ActivityManager"
44441     new-instance v3, Ljava/lang/StringBuilder;
44443     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
44445     const-string v4, "Process/uid not found attempting kill of "
44447     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44449     move-result-object v3
44451     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44453     move-result-object v3
44455     const-string v4, " / "
44457     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44459     move-result-object v3
44461     invoke-virtual {v3, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44463     move-result-object v3
44465     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44467     move-result-object v3
44469     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
44470     :try_end_42
44471     .catchall {:try_start_20 .. :try_end_42} :catchall_1d
44473     goto :goto_1b
44475     :cond_43
44476     new-instance v2, Ljava/lang/SecurityException;
44478     new-instance v3, Ljava/lang/StringBuilder;
44480     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
44482     invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44484     move-result-object v3
44486     const-string v4, " cannot kill app process: "
44488     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44490     move-result-object v3
44492     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44494     move-result-object v3
44496     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44498     move-result-object v3
44500     invoke-direct {v2, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
44502     throw v2
44504     :catch_60
44505     move-exception v2
44507     goto :goto_1b
44508 .end method
44510 .method public killApplicationWithAppId(Ljava/lang/String;I)V
44511     .registers 8
44513     if-nez p1, :cond_3
44515     :goto_2
44516     return-void
44518     :cond_3
44519     if-gez p2, :cond_1e
44521     const-string v2, "ActivityManager"
44523     new-instance v3, Ljava/lang/StringBuilder;
44525     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
44527     const-string v4, "Invalid appid specified for pkg : "
44529     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44531     move-result-object v3
44533     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44535     move-result-object v3
44537     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44539     move-result-object v3
44541     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
44543     goto :goto_2
44545     :cond_1e
44546     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
44548     move-result v0
44550     const/16 v2, 0x3e8
44552     if-ne v0, v2, :cond_3b
44554     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
44556     const/16 v3, 0x16
44558     invoke-virtual {v2, v3}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
44560     move-result-object v1
44562     iput p2, v1, Landroid/os/Message;->arg1:I
44564     const/4 v2, 0x0
44566     iput v2, v1, Landroid/os/Message;->arg2:I
44568     iput-object p1, v1, Landroid/os/Message;->obj:Ljava/lang/Object;
44570     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
44572     invoke-virtual {v2, v1}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
44574     goto :goto_2
44576     :cond_3b
44577     new-instance v2, Ljava/lang/SecurityException;
44579     new-instance v3, Ljava/lang/StringBuilder;
44581     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
44583     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44585     move-result-object v3
44587     const-string v4, " cannot kill pkg: "
44589     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44591     move-result-object v3
44593     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44595     move-result-object v3
44597     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44599     move-result-object v3
44601     invoke-direct {v2, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
44603     throw v2
44604 .end method
44606 .method public killBackgroundProcesses(Ljava/lang/String;I)V
44607     .registers 17
44609     const-string v0, "android.permission.KILL_BACKGROUND_PROCESSES"
44611     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
44613     move-result v0
44615     if-eqz v0, :cond_4c
44617     const-string v0, "android.permission.RESTART_PACKAGES"
44619     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
44621     move-result v0
44623     if-eqz v0, :cond_4c
44625     new-instance v0, Ljava/lang/StringBuilder;
44627     invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
44629     const-string v1, "Permission Denial: killBackgroundProcesses() from pid="
44631     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44633     move-result-object v0
44635     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
44637     move-result v1
44639     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44641     move-result-object v0
44643     const-string v1, ", uid="
44645     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44647     move-result-object v0
44649     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
44651     move-result v1
44653     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44655     move-result-object v0
44657     const-string v1, " requires "
44659     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44661     move-result-object v0
44663     const-string v1, "android.permission.KILL_BACKGROUND_PROCESSES"
44665     invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44667     move-result-object v0
44669     invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44671     move-result-object v12
44673     const-string v0, "ActivityManager"
44675     invoke-static {v0, v12}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
44677     new-instance v0, Ljava/lang/SecurityException;
44679     invoke-direct {v0, v12}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
44681     throw v0
44683     :cond_4c
44684     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
44686     move-result v1
44688     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
44690     move-result v2
44692     const/4 v4, 0x1
44694     const/4 v5, 0x1
44696     const-string v6, "killBackgroundProcesses"
44698     const/4 v7, 0x0
44700     move-object v0, p0
44702     move/from16 v3, p2
44704     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
44706     move-result p2
44708     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
44710     move-result-wide v10
44712     :try_start_64
44713     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
44715     move-result-object v13
44717     monitor-enter p0
44718     :try_end_69
44719     .catchall {:try_start_64 .. :try_end_69} :catchall_a6
44721     const/4 v2, -0x1
44723     const/4 v0, 0x0
44725     :try_start_6b
44726     invoke-interface {v13, p1, v0}, Landroid/content/pm/IPackageManager;->getPackageUid(Ljava/lang/String;I)I
44728     move-result v0
44730     invoke-static {v0}, Landroid/os/UserHandle;->getAppId(I)I
44731     :try_end_72
44732     .catchall {:try_start_6b .. :try_end_72} :catchall_a3
44733     .catch Landroid/os/RemoteException; {:try_start_6b .. :try_end_72} :catch_ab
44735     move-result v2
44737     :goto_73
44738     const/4 v0, -0x1
44740     if-ne v2, v0, :cond_93
44742     :try_start_76
44743     const-string v0, "ActivityManager"
44745     new-instance v1, Ljava/lang/StringBuilder;
44747     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
44749     const-string v3, "Invalid packageName: "
44751     invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44753     move-result-object v1
44755     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44757     move-result-object v1
44759     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44761     move-result-object v1
44763     invoke-static {v0, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
44765     monitor-exit p0
44766     :try_end_8f
44767     .catchall {:try_start_76 .. :try_end_8f} :catchall_a3
44769     :goto_8f
44770     invoke-static {v10, v11}, Landroid/os/Binder;->restoreCallingIdentity(J)V
44772     return-void
44774     :cond_93
44775     const/4 v4, 0x5
44777     const/4 v5, 0x0
44779     const/4 v6, 0x1
44781     const/4 v7, 0x1
44783     const/4 v8, 0x0
44785     :try_start_98
44786     const-string v9, "kill background"
44788     move-object v0, p0
44790     move-object v1, p1
44792     move/from16 v3, p2
44794     invoke-direct/range {v0 .. v9}, Lcom/android/server/am/ActivityManagerService;->killPackageProcessesLocked(Ljava/lang/String;IIIZZZZLjava/lang/String;)Z
44796     monitor-exit p0
44798     goto :goto_8f
44800     :catchall_a3
44801     move-exception v0
44803     monitor-exit p0
44804     :try_end_a5
44805     .catchall {:try_start_98 .. :try_end_a5} :catchall_a3
44807     :try_start_a5
44808     throw v0
44809     :try_end_a6
44810     .catchall {:try_start_a5 .. :try_end_a6} :catchall_a6
44812     :catchall_a6
44813     move-exception v0
44815     invoke-static {v10, v11}, Landroid/os/Binder;->restoreCallingIdentity(J)V
44817     throw v0
44819     :catch_ab
44820     move-exception v0
44822     goto :goto_73
44823 .end method
44825 .method public killPids([ILjava/lang/String;Z)Z
44826     .registers 17
44828     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
44830     move-result v8
44832     const/16 v9, 0x3e8
44834     if-eq v8, v9, :cond_10
44836     new-instance v8, Ljava/lang/SecurityException;
44838     const-string v9, "killPids only available to the system"
44840     invoke-direct {v8, v9}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
44842     throw v8
44844     :cond_10
44845     if-nez p2, :cond_36
44847     const-string v4, "Unknown"
44849     :goto_14
44850     const/4 v2, 0x0
44852     iget-object v9, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
44854     monitor-enter v9
44856     :try_start_18
44857     array-length v8, p1
44859     new-array v6, v8, [I
44861     const/4 v7, 0x0
44863     const/4 v1, 0x0
44865     :goto_1d
44866     array-length v8, p1
44868     if-ge v1, v8, :cond_38
44870     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
44872     aget v10, p1, v1
44874     invoke-virtual {v8, v10}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
44876     move-result-object v3
44878     check-cast v3, Lcom/android/server/am/ProcessRecord;
44880     if-eqz v3, :cond_33
44882     iget v5, v3, Lcom/android/server/am/ProcessRecord;->setAdj:I
44884     aput v5, v6, v1
44886     if-le v5, v7, :cond_33
44888     move v7, v5
44890     :cond_33
44891     add-int/lit8 v1, v1, 0x1
44893     goto :goto_1d
44895     :cond_36
44896     move-object v4, p2
44898     goto :goto_14
44900     :cond_38
44901     const/16 v8, 0xf
44903     if-ge v7, v8, :cond_42
44905     sget v8, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
44907     if-le v7, v8, :cond_42
44909     sget v7, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
44911     :cond_42
44912     if-nez p3, :cond_48
44914     const/4 v8, 0x5
44916     if-ge v7, v8, :cond_48
44918     const/4 v7, 0x5
44920     :cond_48
44921     const-string v8, "ActivityManager"
44923     new-instance v10, Ljava/lang/StringBuilder;
44925     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
44927     const-string v11, "Killing processes "
44929     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44931     move-result-object v10
44933     invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44935     move-result-object v10
44937     const-string v11, " at adjustment "
44939     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44941     move-result-object v10
44943     invoke-virtual {v10, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
44945     move-result-object v10
44947     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
44949     move-result-object v10
44951     invoke-static {v8, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
44953     const/4 v1, 0x0
44955     :goto_6b
44956     array-length v8, p1
44958     if-ge v1, v8, :cond_e7
44960     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
44962     aget v10, p1, v1
44964     invoke-virtual {v8, v10}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
44966     move-result-object v3
44968     check-cast v3, Lcom/android/server/am/ProcessRecord;
44970     if-nez v3, :cond_7d
44972     :cond_7a
44973     :goto_7a
44974     add-int/lit8 v1, v1, 0x1
44976     goto :goto_6b
44978     :cond_7d
44979     iget v0, v3, Lcom/android/server/am/ProcessRecord;->setAdj:I
44981     if-lt v0, v7, :cond_7a
44983     iget-boolean v8, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
44985     if-nez v8, :cond_7a
44987     const-string v8, "ActivityManager"
44989     new-instance v10, Ljava/lang/StringBuilder;
44991     invoke-direct {v10}, Ljava/lang/StringBuilder;-><init>()V
44993     const-string v11, "Killing "
44995     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
44997     move-result-object v10
44999     invoke-virtual {v10, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
45001     move-result-object v10
45003     const-string v11, " (adj "
45005     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
45007     move-result-object v10
45009     invoke-virtual {v10, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
45011     move-result-object v10
45013     const-string v11, "): "
45015     invoke-virtual {v10, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
45017     move-result-object v10
45019     invoke-virtual {v10, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
45021     move-result-object v10
45023     invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
45025     move-result-object v10
45027     invoke-static {v8, v10}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
45029     const/16 v8, 0x7547
45031     const/4 v10, 0x5
45033     new-array v10, v10, [Ljava/lang/Object;
45035     const/4 v11, 0x0
45037     iget v12, v3, Lcom/android/server/am/ProcessRecord;->userId:I
45039     invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45041     move-result-object v12
45043     aput-object v12, v10, v11
45045     const/4 v11, 0x1
45047     iget v12, v3, Lcom/android/server/am/ProcessRecord;->pid:I
45049     invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45051     move-result-object v12
45053     aput-object v12, v10, v11
45055     const/4 v11, 0x2
45057     iget-object v12, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
45059     aput-object v12, v10, v11
45061     const/4 v11, 0x3
45063     invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
45065     move-result-object v12
45067     aput-object v12, v10, v11
45069     const/4 v11, 0x4
45071     aput-object v4, v10, v11
45073     invoke-static {v8, v10}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
45075     const/4 v2, 0x1
45077     const/4 v8, 0x1
45079     iput-boolean v8, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
45081     aget v8, p1, v1
45083     invoke-static {v8}, Landroid/os/Process;->killProcessQuiet(I)V
45085     goto :goto_7a
45087     :catchall_e4
45088     move-exception v8
45090     monitor-exit v9
45091     :try_end_e6
45092     .catchall {:try_start_18 .. :try_end_e6} :catchall_e4
45094     throw v8
45096     :cond_e7
45097     :try_start_e7
45098     monitor-exit v9
45099     :try_end_e8
45100     .catchall {:try_start_e7 .. :try_end_e8} :catchall_e4
45102     return v2
45103 .end method
45105 .method public killProcessesBelowForeground(Ljava/lang/String;)Z
45106     .registers 4
45108     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
45110     move-result v0
45112     const/16 v1, 0x3e8
45114     if-eq v0, v1, :cond_10
45116     new-instance v0, Ljava/lang/SecurityException;
45118     const-string v1, "killProcessesBelowForeground() only available to system"
45120     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
45122     throw v0
45124     :cond_10
45125     const/4 v0, 0x0
45127     invoke-direct {p0, v0, p1}, Lcom/android/server/am/ActivityManagerService;->killProcessesBelowAdj(ILjava/lang/String;)Z
45129     move-result v0
45131     return v0
45132 .end method
45134 .method final logAppTooSlow(Lcom/android/server/am/ProcessRecord;JLjava/lang/String;)V
45135     .registers 5
45137     return-void
45138 .end method
45140 .method public monitor()V
45141     .registers 2
45143     monitor-enter p0
45145     :try_start_1
45146     monitor-exit p0
45148     return-void
45150     :catchall_3
45151     move-exception v0
45153     monitor-exit p0
45154     :try_end_5
45155     .catchall {:try_start_1 .. :try_end_5} :catchall_3
45157     throw v0
45158 .end method
45160 .method public moveActivityTaskToBack(Landroid/os/IBinder;Z)Z
45161     .registers 8
45163     const/4 v3, 0x0
45165     const-string v4, "moveActivityTaskToBack"
45167     invoke-virtual {p0, v4}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
45169     monitor-enter p0
45171     :try_start_7
45172     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
45174     move-result-wide v0
45176     if-nez p2, :cond_1d
45178     const/4 v4, 0x1
45180     :goto_e
45181     invoke-virtual {p0, p1, v4}, Lcom/android/server/am/ActivityManagerService;->getTaskForActivityLocked(Landroid/os/IBinder;Z)I
45183     move-result v2
45185     if-ltz v2, :cond_1f
45187     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45189     const/4 v4, 0x0
45191     invoke-virtual {v3, v2, v4}, Lcom/android/server/am/ActivityStack;->moveTaskToBackLocked(ILcom/android/server/am/ActivityRecord;)Z
45193     move-result v3
45195     monitor-exit p0
45197     :goto_1c
45198     return v3
45200     :cond_1d
45201     move v4, v3
45203     goto :goto_e
45205     :cond_1f
45206     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
45208     monitor-exit p0
45210     goto :goto_1c
45212     :catchall_24
45213     move-exception v3
45215     monitor-exit p0
45216     :try_end_26
45217     .catchall {:try_start_7 .. :try_end_26} :catchall_24
45219     throw v3
45220 .end method
45222 .method public moveTaskBackwards(I)V
45223     .registers 7
45225     const-string v2, "android.permission.REORDER_TASKS"
45227     const-string v3, "moveTaskBackwards()"
45229     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
45231     monitor-enter p0
45233     :try_start_8
45234     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
45236     move-result v2
45238     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
45240     move-result v3
45242     const-string v4, "Task backwards"
45244     invoke-virtual {p0, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->checkAppSwitchAllowedLocked(IILjava/lang/String;)Z
45246     move-result v2
45248     if-nez v2, :cond_1a
45250     monitor-exit p0
45252     :goto_19
45253     return-void
45255     :cond_1a
45256     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
45258     move-result-wide v0
45260     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->moveTaskBackwardsLocked(I)V
45262     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
45264     monitor-exit p0
45266     goto :goto_19
45268     :catchall_26
45269     move-exception v2
45271     monitor-exit p0
45272     :try_end_28
45273     .catchall {:try_start_8 .. :try_end_28} :catchall_26
45275     throw v2
45276 .end method
45278 .method public moveTaskToBack(I)V
45279     .registers 7
45281     const-string v2, "android.permission.REORDER_TASKS"
45283     const-string v3, "moveTaskToBack()"
45285     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
45287     monitor-enter p0
45289     :try_start_8
45290     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45292     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
45294     if-eqz v2, :cond_2a
45296     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45298     iget-object v2, v2, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
45300     iget-object v2, v2, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
45302     iget v2, v2, Lcom/android/server/am/TaskRecord;->taskId:I
45304     if-ne v2, p1, :cond_2a
45306     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
45308     move-result v2
45310     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
45312     move-result v3
45314     const-string v4, "Task to back"
45316     invoke-virtual {p0, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->checkAppSwitchAllowedLocked(IILjava/lang/String;)Z
45318     move-result v2
45320     if-nez v2, :cond_2a
45322     monitor-exit p0
45324     :goto_29
45325     return-void
45327     :cond_2a
45328     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
45330     move-result-wide v0
45332     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45334     const/4 v3, 0x0
45336     invoke-virtual {v2, p1, v3}, Lcom/android/server/am/ActivityStack;->moveTaskToBackLocked(ILcom/android/server/am/ActivityRecord;)Z
45338     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
45340     monitor-exit p0
45342     goto :goto_29
45344     :catchall_39
45345     move-exception v2
45347     monitor-exit p0
45348     :try_end_3b
45349     .catchall {:try_start_8 .. :try_end_3b} :catchall_39
45351     throw v2
45352 .end method
45354 .method public moveTaskToFront(IILandroid/os/Bundle;)V
45355     .registers 12
45357     const-string v5, "android.permission.REORDER_TASKS"
45359     const-string v6, "moveTaskToFront()"
45361     invoke-virtual {p0, v5, v6}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
45363     monitor-enter p0
45365     :try_start_8
45366     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
45368     move-result v5
45370     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
45372     move-result v6
45374     const-string v7, "Task to front"
45376     invoke-virtual {p0, v5, v6, v7}, Lcom/android/server/am/ActivityManagerService;->checkAppSwitchAllowedLocked(IILjava/lang/String;)Z
45378     move-result v5
45380     if-nez v5, :cond_1d
45382     invoke-static {p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
45384     monitor-exit p0
45386     :goto_1c
45387     return-void
45389     :cond_1d
45390     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
45391     :try_end_20
45392     .catchall {:try_start_8 .. :try_end_20} :catchall_44
45394     move-result-wide v2
45396     :try_start_21
45397     invoke-direct {p0, p1}, Lcom/android/server/am/ActivityManagerService;->taskForIdLocked(I)Lcom/android/server/am/TaskRecord;
45399     move-result-object v4
45401     if-eqz v4, :cond_47
45403     and-int/lit8 v5, p2, 0x2
45405     if-nez v5, :cond_30
45407     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45409     const/4 v6, 0x1
45411     iput-boolean v6, v5, Lcom/android/server/am/ActivityStack;->mUserLeaving:Z
45413     :cond_30
45414     and-int/lit8 v5, p2, 0x1
45416     if-eqz v5, :cond_39
45418     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45420     invoke-virtual {v5}, Lcom/android/server/am/ActivityStack;->moveHomeToFrontLocked()V
45422     :cond_39
45423     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45425     const/4 v6, 0x0
45427     invoke-virtual {v5, v4, v6, p3}, Lcom/android/server/am/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;Landroid/os/Bundle;)V
45428     :try_end_3f
45429     .catchall {:try_start_21 .. :try_end_3f} :catchall_85
45431     :try_start_3f
45432     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
45434     monitor-exit p0
45436     goto :goto_1c
45438     :catchall_44
45439     move-exception v5
45441     monitor-exit p0
45442     :try_end_46
45443     .catchall {:try_start_3f .. :try_end_46} :catchall_44
45445     throw v5
45447     :cond_47
45448     :try_start_47
45449     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45451     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
45453     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
45455     move-result v5
45457     add-int/lit8 v1, v5, -0x1
45459     :goto_51
45460     if-ltz v1, :cond_8a
45462     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45464     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
45466     invoke-virtual {v5, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
45468     move-result-object v0
45470     check-cast v0, Lcom/android/server/am/ActivityRecord;
45472     iget-object v5, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
45474     iget v5, v5, Lcom/android/server/am/TaskRecord;->taskId:I
45476     if-ne v5, p1, :cond_82
45478     and-int/lit8 v5, p2, 0x2
45480     if-nez v5, :cond_6c
45482     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45484     const/4 v6, 0x1
45486     iput-boolean v6, v5, Lcom/android/server/am/ActivityStack;->mUserLeaving:Z
45488     :cond_6c
45489     and-int/lit8 v5, p2, 0x1
45491     if-eqz v5, :cond_75
45493     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45495     invoke-virtual {v5}, Lcom/android/server/am/ActivityStack;->moveHomeToFrontLocked()V
45497     :cond_75
45498     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45500     iget-object v6, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
45502     const/4 v7, 0x0
45504     invoke-virtual {v5, v6, v7, p3}, Lcom/android/server/am/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/am/TaskRecord;Lcom/android/server/am/ActivityRecord;Landroid/os/Bundle;)V
45505     :try_end_7d
45506     .catchall {:try_start_47 .. :try_end_7d} :catchall_85
45508     :try_start_7d
45509     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
45511     monitor-exit p0
45513     goto :goto_1c
45515     :cond_82
45516     add-int/lit8 v1, v1, -0x1
45518     goto :goto_51
45520     :catchall_85
45521     move-exception v5
45523     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
45525     throw v5
45527     :cond_8a
45528     invoke-static {v2, v3}, Landroid/os/Binder;->restoreCallingIdentity(J)V
45530     invoke-static {p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
45532     monitor-exit p0
45533     :try_end_91
45534     .catchall {:try_start_7d .. :try_end_91} :catchall_44
45536     goto :goto_1c
45537 .end method
45539 .method public navigateUpTo(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/Intent;)Z
45540     .registers 39
45542     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
45544     move-result-object v16
45546     monitor-enter p0
45548     :try_start_5
45549     invoke-static/range {p1 .. p1}, Lcom/android/server/am/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
45551     move-result-object v31
45553     if-nez v31, :cond_f
45555     const/16 v20, 0x0
45557     monitor-exit p0
45559     :goto_e
45560     return v20
45562     :cond_f
45563     move-object/from16 v0, v31
45565     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->stack:Lcom/android/server/am/ActivityStack;
45567     iget-object v0, v2, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
45569     move-object/from16 v21, v0
45571     move-object/from16 v0, v21
45573     move-object/from16 v1, v31
45575     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
45577     move-result v32
45579     if-gez v32, :cond_28
45581     const/16 v20, 0x0
45583     monitor-exit p0
45585     goto :goto_e
45587     :catchall_25
45588     move-exception v2
45590     monitor-exit p0
45591     :try_end_27
45592     .catchall {:try_start_5 .. :try_end_27} :catchall_25
45594     throw v2
45596     :cond_28
45597     add-int/lit8 v19, v32, -0x1
45599     const/16 v26, 0x0
45601     const/16 v20, 0x0
45603     if-eqz v16, :cond_5a
45605     :try_start_30
45606     move-object/from16 v0, v31
45608     iget-object v0, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
45610     move-object/from16 v33, v0
45612     add-int/lit8 v22, v32, -0x1
45614     :goto_38
45615     if-ltz v22, :cond_5a
45617     invoke-virtual/range {v21 .. v22}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
45619     move-result-object v28
45621     check-cast v28, Lcom/android/server/am/ActivityRecord;
45623     move-object/from16 v0, v28
45625     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
45627     move-object/from16 v0, v33
45629     if-eq v0, v2, :cond_81
45631     add-int/lit8 v2, v32, -0x1
45633     add-int/lit8 v3, v22, 0x1
45635     invoke-static {v2, v3}, Ljava/lang/Math;->min(II)I
45637     move-result v19
45639     move-object/from16 v0, v21
45641     move/from16 v1, v19
45643     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
45645     move-result-object v26
45647     check-cast v26, Lcom/android/server/am/ActivityRecord;
45649     :cond_5a
45650     :goto_5a
45651     move-object/from16 v0, p0
45653     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
45655     if-eqz v2, :cond_b2
45657     move-object/from16 v0, p0
45659     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45661     const/4 v3, 0x0
45663     move-object/from16 v0, p1
45665     invoke-virtual {v2, v0, v3}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Landroid/os/IBinder;I)Lcom/android/server/am/ActivityRecord;
45666     :try_end_6a
45667     .catchall {:try_start_30 .. :try_end_6a} :catchall_25
45669     move-result-object v23
45671     if-eqz v23, :cond_b2
45673     const/16 v30, 0x1
45675     :try_start_6f
45676     move-object/from16 v0, p0
45678     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
45680     move-object/from16 v0, v23
45682     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
45684     invoke-interface {v2, v3}, Landroid/app/IActivityController;->activityResuming(Ljava/lang/String;)Z
45685     :try_end_7a
45686     .catchall {:try_start_6f .. :try_end_7a} :catchall_25
45687     .catch Landroid/os/RemoteException; {:try_start_6f .. :try_end_7a} :catch_ab
45689     move-result v30
45691     :goto_7b
45692     if-nez v30, :cond_b2
45694     const/16 v20, 0x0
45696     :try_start_7f
45697     monitor-exit p0
45699     goto :goto_e
45701     :cond_81
45702     move-object/from16 v0, v28
45704     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
45706     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
45708     invoke-virtual/range {v16 .. v16}, Landroid/content/ComponentName;->getPackageName()Ljava/lang/String;
45710     move-result-object v3
45712     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
45714     move-result v2
45716     if-eqz v2, :cond_a8
45718     move-object/from16 v0, v28
45720     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
45722     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
45724     invoke-virtual/range {v16 .. v16}, Landroid/content/ComponentName;->getClassName()Ljava/lang/String;
45726     move-result-object v3
45728     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
45730     move-result v2
45732     if-eqz v2, :cond_a8
45734     move/from16 v19, v22
45736     move-object/from16 v26, v28
45738     const/16 v20, 0x1
45740     goto :goto_5a
45742     :cond_a8
45743     add-int/lit8 v22, v22, -0x1
45745     goto :goto_38
45747     :catch_ab
45748     move-exception v18
45750     const/4 v2, 0x0
45752     move-object/from16 v0, p0
45754     iput-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
45756     goto :goto_7b
45758     :cond_b2
45759     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
45761     move-result-wide v24
45763     move/from16 v22, v32
45765     :goto_b8
45766     move/from16 v0, v22
45768     move/from16 v1, v19
45770     if-le v0, v1, :cond_dd
45772     invoke-virtual/range {v21 .. v22}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
45774     move-result-object v28
45776     check-cast v28, Lcom/android/server/am/ActivityRecord;
45778     move-object/from16 v0, p0
45780     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45782     move-object/from16 v0, v28
45784     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
45786     const-string v6, "navigate-up"
45788     const/4 v7, 0x1
45790     move/from16 v4, p3
45792     move-object/from16 v5, p4
45794     invoke-virtual/range {v2 .. v7}, Lcom/android/server/am/ActivityStack;->requestFinishActivityLocked(Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Z)Z
45796     const/16 p3, 0x0
45798     const/16 p4, 0x0
45800     add-int/lit8 v22, v22, -0x1
45802     goto :goto_b8
45804     :cond_dd
45805     if-eqz v26, :cond_111
45807     if-eqz v20, :cond_111
45809     move-object/from16 v0, v26
45811     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
45813     iget v0, v2, Landroid/content/pm/ActivityInfo;->launchMode:I
45815     move/from16 v27, v0
45817     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getFlags()I
45819     move-result v17
45821     const/4 v2, 0x3
45823     move/from16 v0, v27
45825     if-eq v0, v2, :cond_102
45827     const/4 v2, 0x2
45829     move/from16 v0, v27
45831     if-eq v0, v2, :cond_102
45833     const/4 v2, 0x1
45835     move/from16 v0, v27
45837     if-eq v0, v2, :cond_102
45839     const/high16 v2, 0x400
45841     and-int v2, v2, v17
45843     if-eqz v2, :cond_117
45845     :cond_102
45846     move-object/from16 v0, v31
45848     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
45850     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
45852     iget v2, v2, Landroid/content/pm/ApplicationInfo;->uid:I
45854     move-object/from16 v0, v26
45856     move-object/from16 v1, p2
45858     invoke-virtual {v0, v2, v1}, Lcom/android/server/am/ActivityRecord;->deliverNewIntentLocked(ILandroid/content/Intent;)V
45860     :cond_111
45861     :goto_111
45862     invoke-static/range {v24 .. v25}, Landroid/os/Binder;->restoreCallingIdentity(J)V
45864     monitor-exit p0
45865     :try_end_115
45866     .catchall {:try_start_7f .. :try_end_115} :catchall_25
45868     goto/16 :goto_e
45870     :cond_117
45871     :try_start_117
45872     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
45874     move-result-object v2
45876     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
45878     move-result-object v3
45880     const/4 v4, 0x0
45882     move-object/from16 v0, v31
45884     iget v5, v0, Lcom/android/server/am/ActivityRecord;->userId:I
45886     invoke-interface {v2, v3, v4, v5}, Landroid/content/pm/IPackageManager;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
45888     move-result-object v6
45890     move-object/from16 v0, p0
45892     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45894     move-object/from16 v0, v31
45896     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
45898     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
45900     const/4 v5, 0x0
45902     move-object/from16 v0, v26
45904     iget-object v7, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
45906     const/4 v8, 0x0
45908     const/4 v9, 0x0
45910     const/4 v10, -0x1
45912     move-object/from16 v0, v26
45914     iget v11, v0, Lcom/android/server/am/ActivityRecord;->launchedFromUid:I
45916     const/4 v12, 0x0
45918     const/4 v13, 0x0
45920     const/4 v14, 0x1
45922     const/4 v15, 0x0
45924     move-object/from16 v4, p2
45926     invoke-virtual/range {v2 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;Ljava/lang/String;IIIILandroid/os/Bundle;Z[Lcom/android/server/am/ActivityRecord;)I
45927     :try_end_147
45928     .catchall {:try_start_117 .. :try_end_147} :catchall_25
45929     .catch Landroid/os/RemoteException; {:try_start_117 .. :try_end_147} :catch_162
45931     move-result v29
45933     if-nez v29, :cond_15f
45935     const/16 v20, 0x1
45937     :goto_14c
45938     :try_start_14c
45939     move-object/from16 v0, p0
45941     iget-object v7, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
45943     move-object/from16 v0, v26
45945     iget-object v8, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
45947     const-string v11, "navigate-up"
45949     const/4 v12, 0x1
45951     move/from16 v9, p3
45953     move-object/from16 v10, p4
45955     invoke-virtual/range {v7 .. v12}, Lcom/android/server/am/ActivityStack;->requestFinishActivityLocked(Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Z)Z
45956     :try_end_15e
45957     .catchall {:try_start_14c .. :try_end_15e} :catchall_25
45959     goto :goto_111
45961     :cond_15f
45962     const/16 v20, 0x0
45964     goto :goto_14c
45966     :catch_162
45967     move-exception v18
45969     const/16 v20, 0x0
45971     goto :goto_14c
45972 .end method
45974 .method final newProcessRecordLocked(Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Lcom/android/server/am/ProcessRecord;
45975     .registers 14
45977     const v3, 0x182b8
45979     if-eqz p3, :cond_49
45981     move-object v4, p3
45983     :goto_6
45984     const/4 v1, 0x0
45986     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
45988     invoke-virtual {v0}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
45990     move-result-object v6
45992     iget v5, p2, Landroid/content/pm/ApplicationInfo;->uid:I
45994     if-eqz p4, :cond_39
45996     invoke-static {v5}, Landroid/os/UserHandle;->getUserId(I)I
45998     move-result v8
46000     const/16 v7, 0x3e8
46002     const/4 v5, 0x0
46004     :cond_18
46005     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
46007     if-lt v0, v3, :cond_23
46009     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
46011     const v2, 0x1869f
46013     if-le v0, v2, :cond_25
46015     :cond_23
46016     iput v3, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
46018     :cond_25
46019     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
46021     invoke-static {v8, v0}, Landroid/os/UserHandle;->getUid(II)I
46023     move-result v5
46025     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
46027     add-int/lit8 v0, v0, 0x1
46029     iput v0, p0, Lcom/android/server/am/ActivityManagerService;->mNextIsolatedProcessUid:I
46031     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
46033     invoke-virtual {v0, v5}, Landroid/util/SparseArray;->indexOfKey(I)I
46035     move-result v0
46037     if-gez v0, :cond_4c
46039     :cond_39
46040     monitor-enter v6
46042     :try_start_3a
46043     iget v0, p2, Landroid/content/pm/ApplicationInfo;->uid:I
46045     invoke-virtual {v6, v0, v4}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
46047     move-result-object v1
46049     monitor-exit v6
46050     :try_end_41
46051     .catchall {:try_start_3a .. :try_end_41} :catchall_52
46053     new-instance v0, Lcom/android/server/am/ProcessRecord;
46055     move-object v2, p1
46057     move-object v3, p2
46059     invoke-direct/range {v0 .. v5}, Lcom/android/server/am/ProcessRecord;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)V
46061     :goto_48
46062     return-object v0
46064     :cond_49
46065     iget-object v4, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
46067     goto :goto_6
46069     :cond_4c
46070     add-int/lit8 v7, v7, -0x1
46072     if-gtz v7, :cond_18
46074     const/4 v0, 0x0
46076     goto :goto_48
46078     :catchall_52
46079     move-exception v0
46081     :try_start_53
46082     monitor-exit v6
46083     :try_end_54
46084     .catchall {:try_start_53 .. :try_end_54} :catchall_52
46086     throw v0
46087 .end method
46089 .method public newUriPermissionOwner(Ljava/lang/String;)Landroid/os/IBinder;
46090     .registers 4
46092     const-string v1, "newUriPermissionOwner"
46094     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
46096     monitor-enter p0
46098     :try_start_6
46099     new-instance v0, Lcom/android/server/am/UriPermissionOwner;
46101     invoke-direct {v0, p0, p1}, Lcom/android/server/am/UriPermissionOwner;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/Object;)V
46103     invoke-virtual {v0}, Lcom/android/server/am/UriPermissionOwner;->getExternalTokenLocked()Landroid/os/Binder;
46105     move-result-object v1
46107     monitor-exit p0
46109     return-object v1
46111     :catchall_11
46112     move-exception v1
46114     monitor-exit p0
46115     :try_end_13
46116     .catchall {:try_start_6 .. :try_end_13} :catchall_11
46118     throw v1
46119 .end method
46121 .method public noteWakeupAlarm(Landroid/content/IIntentSender;)V
46122     .registers 9
46124     instance-of v6, p1, Lcom/android/server/am/PendingIntentRecord;
46126     if-nez v6, :cond_5
46128     :goto_4
46129     return-void
46131     :cond_5
46132     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
46134     invoke-virtual {v6}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
46136     move-result-object v4
46138     monitor-enter v4
46140     :try_start_c
46141     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
46143     invoke-virtual {v6}, Lcom/android/server/am/BatteryStatsService;->isOnBattery()Z
46145     move-result v6
46147     if-eqz v6, :cond_32
46149     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
46151     invoke-virtual {v6}, Lcom/android/server/am/BatteryStatsService;->enforceCallingPermission()V
46153     move-object v0, p1
46155     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
46157     move-object v3, v0
46159     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
46161     move-result v1
46163     iget v6, v3, Lcom/android/server/am/PendingIntentRecord;->uid:I
46165     if-ne v6, v1, :cond_37
46167     const/16 v5, 0x3e8
46169     :goto_27
46170     iget-object v6, v3, Lcom/android/server/am/PendingIntentRecord;->key:Lcom/android/server/am/PendingIntentRecord$Key;
46172     iget-object v6, v6, Lcom/android/server/am/PendingIntentRecord$Key;->packageName:Ljava/lang/String;
46174     invoke-virtual {v4, v5, v6}, Lcom/android/internal/os/BatteryStatsImpl;->getPackageStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;
46176     move-result-object v2
46178     invoke-virtual {v2}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->incWakeupsLocked()V
46180     :cond_32
46181     monitor-exit v4
46183     goto :goto_4
46185     :catchall_34
46186     move-exception v6
46188     monitor-exit v4
46189     :try_end_36
46190     .catchall {:try_start_c .. :try_end_36} :catchall_34
46192     throw v6
46194     :cond_37
46195     :try_start_37
46196     iget v5, v3, Lcom/android/server/am/PendingIntentRecord;->uid:I
46197     :try_end_39
46198     .catchall {:try_start_37 .. :try_end_39} :catchall_34
46200     goto :goto_27
46201 .end method
46203 .method onCoreSettingsChange(Landroid/os/Bundle;)V
46204     .registers 5
46206     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
46208     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
46210     move-result v2
46212     add-int/lit8 v0, v2, -0x1
46214     :goto_8
46215     if-ltz v0, :cond_1e
46217     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
46219     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
46221     move-result-object v1
46223     check-cast v1, Lcom/android/server/am/ProcessRecord;
46225     :try_start_12
46226     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46228     if-eqz v2, :cond_1b
46230     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46232     invoke-interface {v2, p1}, Landroid/app/IApplicationThread;->setCoreSettings(Landroid/os/Bundle;)V
46233     :try_end_1b
46234     .catch Landroid/os/RemoteException; {:try_start_12 .. :try_end_1b} :catch_1f
46236     :cond_1b
46237     :goto_1b
46238     add-int/lit8 v0, v0, -0x1
46240     goto :goto_8
46242     :cond_1e
46243     return-void
46245     :catch_1f
46246     move-exception v2
46248     goto :goto_1b
46249 .end method
46251 .method public onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
46252     .registers 19
46253     .annotation system Ldalvik/annotation/Throws;
46254         value = {
46255             Landroid/os/RemoteException;
46256         }
46257     .end annotation
46259     const v10, 0x5f535052
46261     if-ne p1, v10, :cond_65
46263     new-instance v9, Ljava/util/ArrayList;
46265     invoke-direct {v9}, Ljava/util/ArrayList;-><init>()V
46267     monitor-enter p0
46269     :try_start_b
46270     iget-object v10, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
46272     invoke-virtual {v10}, Lcom/android/server/ProcessMap;->getMap()Ljava/util/HashMap;
46274     move-result-object v10
46276     invoke-virtual {v10}, Ljava/util/HashMap;->values()Ljava/util/Collection;
46278     move-result-object v10
46280     invoke-interface {v10}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
46282     move-result-object v7
46284     :cond_19
46285     invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
46287     move-result v10
46289     if-eqz v10, :cond_42
46291     invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
46293     move-result-object v3
46295     check-cast v3, Landroid/util/SparseArray;
46297     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
46299     move-result v1
46301     const/4 v8, 0x0
46303     :goto_2a
46304     if-ge v8, v1, :cond_19
46306     invoke-virtual {v3, v8}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
46308     move-result-object v2
46310     check-cast v2, Lcom/android/server/am/ProcessRecord;
46312     iget-object v10, v2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46314     if-eqz v10, :cond_3f
46316     iget-object v10, v2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46318     invoke-interface {v10}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
46320     move-result-object v10
46322     invoke-virtual {v9, v10}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
46324     :cond_3f
46325     add-int/lit8 v8, v8, 0x1
46327     goto :goto_2a
46329     :cond_42
46330     monitor-exit p0
46331     :try_end_43
46332     .catchall {:try_start_b .. :try_end_43} :catchall_62
46334     invoke-virtual {v9}, Ljava/util/ArrayList;->size()I
46336     move-result v0
46338     const/4 v6, 0x0
46340     :goto_48
46341     if-ge v6, v0, :cond_65
46343     invoke-static {}, Landroid/os/Parcel;->obtain()Landroid/os/Parcel;
46345     move-result-object v4
46347     :try_start_4e
46348     invoke-virtual {v9, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
46350     move-result-object v10
46352     check-cast v10, Landroid/os/IBinder;
46354     const v11, 0x5f535052
46356     const/4 v12, 0x0
46358     const/4 v13, 0x0
46360     invoke-interface {v10, v11, v4, v12, v13}, Landroid/os/IBinder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
46361     :try_end_5c
46362     .catch Landroid/os/RemoteException; {:try_start_4e .. :try_end_5c} :catch_77
46364     :goto_5c
46365     invoke-virtual {v4}, Landroid/os/Parcel;->recycle()V
46367     add-int/lit8 v6, v6, 0x1
46369     goto :goto_48
46371     :catchall_62
46372     move-exception v10
46374     :try_start_63
46375     monitor-exit p0
46376     :try_end_64
46377     .catchall {:try_start_63 .. :try_end_64} :catchall_62
46379     throw v10
46381     :cond_65
46382     :try_start_65
46383     invoke-super/range {p0 .. p4}, Landroid/app/ActivityManagerNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
46384     :try_end_68
46385     .catch Ljava/lang/RuntimeException; {:try_start_65 .. :try_end_68} :catch_6a
46387     move-result v10
46389     return v10
46391     :catch_6a
46392     move-exception v5
46394     instance-of v10, v5, Ljava/lang/SecurityException;
46396     if-nez v10, :cond_76
46398     const-string v10, "ActivityManager"
46400     const-string v11, "Activity Manager Crash"
46402     invoke-static {v10, v11, v5}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
46404     :cond_76
46405     throw v5
46407     :catch_77
46408     move-exception v10
46410     goto :goto_5c
46411 .end method
46413 .method public openContentUri(Landroid/net/Uri;)Landroid/os/ParcelFileDescriptor;
46414     .registers 11
46415     .annotation system Ldalvik/annotation/Throws;
46416         value = {
46417             Landroid/os/RemoteException;
46418         }
46419     .end annotation
46421     const/4 v8, 0x0
46423     const-string v4, "openContentUri"
46425     invoke-virtual {p0, v4}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
46427     invoke-static {}, Landroid/os/UserHandle;->getCallingUserId()I
46429     move-result v3
46431     invoke-virtual {p1}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
46433     move-result-object v1
46435     invoke-direct {p0, v1, v8, v3}, Lcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)Landroid/app/IActivityManager$ContentProviderHolder;
46437     move-result-object v0
46439     const/4 v2, 0x0
46441     if-eqz v0, :cond_3f
46443     sget-object v4, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
46445     new-instance v5, Lcom/android/server/am/ActivityManagerService$Identity;
46447     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
46449     move-result v6
46451     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
46453     move-result v7
46455     invoke-direct {v5, p0, v6, v7}, Lcom/android/server/am/ActivityManagerService$Identity;-><init>(Lcom/android/server/am/ActivityManagerService;II)V
46457     invoke-virtual {v4, v5}, Ljava/lang/ThreadLocal;->set(Ljava/lang/Object;)V
46459     :try_start_27
46460     iget-object v4, v0, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
46462     const-string v5, "r"
46464     invoke-interface {v4, p1, v5}, Landroid/content/IContentProvider;->openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
46465     :try_end_2e
46466     .catchall {:try_start_27 .. :try_end_2e} :catchall_38
46467     .catch Ljava/io/FileNotFoundException; {:try_start_27 .. :try_end_2e} :catch_5e
46469     move-result-object v2
46471     sget-object v4, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
46473     :goto_31
46474     invoke-virtual {v4}, Ljava/lang/ThreadLocal;->remove()V
46476     invoke-direct {p0, v1, v8, v3}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
46478     :goto_37
46479     return-object v2
46481     :catchall_38
46482     move-exception v4
46484     sget-object v5, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
46486     invoke-virtual {v5}, Ljava/lang/ThreadLocal;->remove()V
46488     throw v4
46490     :cond_3f
46491     const-string v4, "ActivityManager"
46493     new-instance v5, Ljava/lang/StringBuilder;
46495     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
46497     const-string v6, "Failed to get provider for authority \'"
46499     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46501     move-result-object v5
46503     invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46505     move-result-object v5
46507     const-string v6, "\'"
46509     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46511     move-result-object v5
46513     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
46515     move-result-object v5
46517     invoke-static {v4, v5}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
46519     goto :goto_37
46521     :catch_5e
46522     move-exception v4
46524     sget-object v4, Lcom/android/server/am/ActivityManagerService;->sCallerIdentity:Ljava/lang/ThreadLocal;
46526     goto :goto_31
46527 .end method
46529 .method public overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V
46530     .registers 10
46532     monitor-enter p0
46534     :try_start_1
46535     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
46537     invoke-virtual {v3, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
46539     move-result-object v2
46541     if-nez v2, :cond_b
46543     monitor-exit p0
46545     :goto_a
46546     return-void
46548     :cond_b
46549     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
46551     move-result-wide v0
46553     iget-object v3, v2, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
46555     sget-object v4, Lcom/android/server/am/ActivityStack$ActivityState;->RESUMED:Lcom/android/server/am/ActivityStack$ActivityState;
46557     if-eq v3, v4, :cond_1b
46559     iget-object v3, v2, Lcom/android/server/am/ActivityRecord;->state:Lcom/android/server/am/ActivityStack$ActivityState;
46561     sget-object v4, Lcom/android/server/am/ActivityStack$ActivityState;->PAUSING:Lcom/android/server/am/ActivityStack$ActivityState;
46563     if-ne v3, v4, :cond_21
46565     :cond_1b
46566     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
46568     const/4 v4, 0x0
46570     invoke-virtual {v3, p2, p3, p4, v4}, Lcom/android/server/wm/WindowManagerService;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V
46572     :cond_21
46573     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
46575     monitor-exit p0
46577     goto :goto_a
46579     :catchall_26
46580     move-exception v3
46582     monitor-exit p0
46583     :try_end_28
46584     .catchall {:try_start_1 .. :try_end_28} :catchall_26
46586     throw v3
46587 .end method
46589 .method public peekService(Landroid/content/Intent;Ljava/lang/String;)Landroid/os/IBinder;
46590     .registers 5
46592     const-string v0, "peekService"
46594     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
46596     if-eqz p1, :cond_16
46598     invoke-virtual {p1}, Landroid/content/Intent;->hasFileDescriptors()Z
46600     move-result v0
46602     const/4 v1, 0x1
46604     if-ne v0, v1, :cond_16
46606     new-instance v0, Ljava/lang/IllegalArgumentException;
46608     const-string v1, "File descriptors passed in Intent"
46610     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
46612     throw v0
46614     :cond_16
46615     monitor-enter p0
46617     :try_start_17
46618     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
46620     invoke-virtual {v0, p1, p2}, Lcom/android/server/am/ActiveServices;->peekServiceLocked(Landroid/content/Intent;Ljava/lang/String;)Landroid/os/IBinder;
46622     move-result-object v0
46624     monitor-exit p0
46626     return-object v0
46628     :catchall_1f
46629     move-exception v0
46631     monitor-exit p0
46632     :try_end_21
46633     .catchall {:try_start_17 .. :try_end_21} :catchall_1f
46635     throw v0
46636 .end method
46638 .method final performAppGcLocked(Lcom/android/server/am/ProcessRecord;)V
46639     .registers 4
46641     :try_start_0
46642     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
46644     move-result-wide v0
46646     iput-wide v0, p1, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
46648     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46650     if-eqz v0, :cond_16
46652     iget-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
46654     if-eqz v0, :cond_17
46656     const/4 v0, 0x0
46658     iput-boolean v0, p1, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
46660     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46662     invoke-interface {v0}, Landroid/app/IApplicationThread;->scheduleLowMemory()V
46664     :cond_16
46665     :goto_16
46666     return-void
46668     :cond_17
46669     iget-object v0, p1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46671     invoke-interface {v0}, Landroid/app/IApplicationThread;->processInBackground()V
46672     :try_end_1c
46673     .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_1c} :catch_1d
46675     goto :goto_16
46677     :catch_1d
46678     move-exception v0
46680     goto :goto_16
46681 .end method
46683 .method final performAppGcsIfAppropriateLocked()V
46684     .registers 2
46686     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->canGcNowLocked()Z
46688     move-result v0
46690     if-eqz v0, :cond_a
46692     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->performAppGcsLocked()V
46694     :goto_9
46695     return-void
46697     :cond_a
46698     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
46700     goto :goto_9
46701 .end method
46703 .method final performAppGcsLocked()V
46704     .registers 7
46706     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
46708     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
46710     move-result v0
46712     if-gtz v0, :cond_9
46714     :cond_8
46715     :goto_8
46716     return-void
46718     :cond_9
46719     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->canGcNowLocked()Z
46721     move-result v2
46723     if-eqz v2, :cond_8
46725     :cond_f
46726     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
46728     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
46730     move-result v2
46732     if-lez v2, :cond_41
46734     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
46736     const/4 v3, 0x0
46738     invoke-virtual {v2, v3}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
46740     move-result-object v1
46742     check-cast v1, Lcom/android/server/am/ProcessRecord;
46744     iget v2, v1, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
46746     const/4 v3, 0x2
46748     if-gt v2, v3, :cond_29
46750     iget-boolean v2, v1, Lcom/android/server/am/ProcessRecord;->reportLowMemory:Z
46752     if-eqz v2, :cond_f
46754     :cond_29
46755     iget-wide v2, v1, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
46757     const-wide/32 v4, 0xea60
46759     add-long/2addr v2, v4
46761     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
46763     move-result-wide v4
46765     cmp-long v2, v2, v4
46767     if-gtz v2, :cond_3e
46769     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->performAppGcLocked(Lcom/android/server/am/ProcessRecord;)V
46771     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
46773     goto :goto_8
46775     :cond_3e
46776     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->addProcessToGcListLocked(Lcom/android/server/am/ProcessRecord;)V
46778     :cond_41
46779     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
46781     goto :goto_8
46782 .end method
46784 .method public profileControl(Ljava/lang/String;IZLjava/lang/String;Landroid/os/ParcelFileDescriptor;I)Z
46785     .registers 15
46786     .annotation system Ldalvik/annotation/Throws;
46787         value = {
46788             Landroid/os/RemoteException;
46789         }
46790     .end annotation
46792     :try_start_0
46793     monitor-enter p0
46794     :try_end_1
46795     .catchall {:try_start_0 .. :try_end_1} :catchall_1d
46796     .catch Landroid/os/RemoteException; {:try_start_0 .. :try_end_1} :catch_14
46798     :try_start_1
46799     const-string v0, "android.permission.SET_ACTIVITY_WATCHER"
46801     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
46803     move-result v0
46805     if-eqz v0, :cond_24
46807     new-instance v0, Ljava/lang/SecurityException;
46809     const-string v1, "Requires permission android.permission.SET_ACTIVITY_WATCHER"
46811     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
46813     throw v0
46815     :catchall_11
46816     move-exception v0
46818     monitor-exit p0
46819     :try_end_13
46820     .catchall {:try_start_1 .. :try_end_13} :catchall_11
46822     :try_start_13
46823     throw v0
46824     :try_end_14
46825     .catchall {:try_start_13 .. :try_end_14} :catchall_1d
46826     .catch Landroid/os/RemoteException; {:try_start_13 .. :try_end_14} :catch_14
46828     :catch_14
46829     move-exception v6
46831     :try_start_15
46832     new-instance v0, Ljava/lang/IllegalStateException;
46834     const-string v1, "Process disappeared"
46836     invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
46838     throw v0
46839     :try_end_1d
46840     .catchall {:try_start_15 .. :try_end_1d} :catchall_1d
46842     :catchall_1d
46843     move-exception v0
46845     if-eqz p5, :cond_23
46847     :try_start_20
46848     invoke-virtual {p5}, Landroid/os/ParcelFileDescriptor;->close()V
46849     :try_end_23
46850     .catch Ljava/io/IOException; {:try_start_20 .. :try_end_23} :catch_94
46852     :cond_23
46853     :goto_23
46854     throw v0
46856     :cond_24
46857     if-eqz p3, :cond_30
46859     if-nez p5, :cond_30
46861     :try_start_28
46862     new-instance v0, Ljava/lang/IllegalArgumentException;
46864     const-string v1, "null fd"
46866     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
46868     throw v0
46870     :cond_30
46871     const/4 v7, 0x0
46873     if-eqz p1, :cond_39
46875     const-string v0, "profileControl"
46877     invoke-direct {p0, p1, p2, v0}, Lcom/android/server/am/ActivityManagerService;->findProcessLocked(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/am/ProcessRecord;
46879     move-result-object v7
46881     :cond_39
46882     if-eqz p3, :cond_5a
46884     if-eqz v7, :cond_41
46886     iget-object v0, v7, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46888     if-nez v0, :cond_5a
46890     :cond_41
46891     new-instance v0, Ljava/lang/IllegalArgumentException;
46893     new-instance v1, Ljava/lang/StringBuilder;
46895     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
46897     const-string v2, "Unknown process: "
46899     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46901     move-result-object v1
46903     invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
46905     move-result-object v1
46907     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
46909     move-result-object v1
46911     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
46913     throw v0
46915     :cond_5a
46916     if-eqz p3, :cond_89
46918     const/4 v0, 0x0
46920     const/4 v1, 0x0
46922     const/4 v2, 0x0
46924     invoke-direct {p0, v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->stopProfilerLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
46926     iget-object v1, v7, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
46928     iget-object v2, v7, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
46930     const/4 v5, 0x0
46932     move-object v0, p0
46934     move-object v3, p4
46936     move-object v4, p5
46938     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->setProfileApp(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Z)V
46940     iput-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mProfileProc:Lcom/android/server/am/ProcessRecord;
46942     iput p6, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
46943     :try_end_71
46944     .catchall {:try_start_28 .. :try_end_71} :catchall_11
46946     :try_start_71
46947     invoke-virtual {p5}, Landroid/os/ParcelFileDescriptor;->dup()Landroid/os/ParcelFileDescriptor;
46948     :try_end_74
46949     .catchall {:try_start_71 .. :try_end_74} :catchall_11
46950     .catch Ljava/io/IOException; {:try_start_71 .. :try_end_74} :catch_86
46952     move-result-object p5
46954     :goto_75
46955     :try_start_75
46956     iget-object v0, v7, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
46958     invoke-interface {v0, p3, p4, p5, p6}, Landroid/app/IApplicationThread;->profilerControl(ZLjava/lang/String;Landroid/os/ParcelFileDescriptor;I)V
46960     const/4 p5, 0x0
46962     const/4 v0, 0x0
46964     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
46966     :cond_7e
46967     :goto_7e
46968     const/4 v0, 0x1
46970     monitor-exit p0
46971     :try_end_80
46972     .catchall {:try_start_75 .. :try_end_80} :catchall_11
46974     if-eqz p5, :cond_85
46976     :try_start_82
46977     invoke-virtual {p5}, Landroid/os/ParcelFileDescriptor;->close()V
46978     :try_end_85
46979     .catch Ljava/io/IOException; {:try_start_82 .. :try_end_85} :catch_96
46981     :cond_85
46982     :goto_85
46983     return v0
46985     :catch_86
46986     move-exception v6
46988     const/4 p5, 0x0
46990     goto :goto_75
46992     :cond_89
46993     :try_start_89
46994     invoke-direct {p0, v7, p4, p6}, Lcom/android/server/am/ActivityManagerService;->stopProfilerLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
46995     :try_end_8c
46996     .catchall {:try_start_89 .. :try_end_8c} :catchall_11
46998     if-eqz p5, :cond_7e
47000     :try_start_8e
47001     invoke-virtual {p5}, Landroid/os/ParcelFileDescriptor;->close()V
47002     :try_end_91
47003     .catchall {:try_start_8e .. :try_end_91} :catchall_11
47004     .catch Ljava/io/IOException; {:try_start_8e .. :try_end_91} :catch_92
47006     goto :goto_7e
47008     :catch_92
47009     move-exception v0
47011     goto :goto_7e
47013     :catch_94
47014     move-exception v1
47016     goto :goto_23
47018     :catch_96
47019     move-exception v1
47021     goto :goto_85
47022 .end method
47024 .method public final publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
47025     .registers 18
47026     .annotation system Ldalvik/annotation/Signature;
47027         value = {
47028             "(",
47029             "Landroid/app/IApplicationThread;",
47030             "Ljava/util/List",
47031             "<",
47032             "Landroid/app/IActivityManager$ContentProviderHolder;",
47033             ">;)V"
47034         }
47035     .end annotation
47037     if-nez p2, :cond_3
47039     :goto_2
47040     return-void
47042     :cond_3
47043     const-string v12, "publishContentProviders"
47045     invoke-virtual {p0, v12}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
47047     monitor-enter p0
47049     :try_start_9
47050     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
47052     move-result-object v10
47054     if-nez v10, :cond_41
47056     new-instance v12, Ljava/lang/SecurityException;
47058     new-instance v13, Ljava/lang/StringBuilder;
47060     invoke-direct {v13}, Ljava/lang/StringBuilder;-><init>()V
47062     const-string v14, "Unable to find app for caller "
47064     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47066     move-result-object v13
47068     move-object/from16 v0, p1
47070     invoke-virtual {v13, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
47072     move-result-object v13
47074     const-string v14, " (pid="
47076     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47078     move-result-object v13
47080     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
47082     move-result v14
47084     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47086     move-result-object v13
47088     const-string v14, ") when publishing content providers"
47090     invoke-virtual {v13, v14}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47092     move-result-object v13
47094     invoke-virtual {v13}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47096     move-result-object v13
47098     invoke-direct {v12, v13}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
47100     throw v12
47102     :catchall_3e
47103     move-exception v12
47105     monitor-exit p0
47106     :try_end_40
47107     .catchall {:try_start_9 .. :try_end_40} :catchall_3e
47109     throw v12
47111     :cond_41
47112     :try_start_41
47113     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
47115     move-result-wide v8
47117     invoke-interface/range {p2 .. p2}, Ljava/util/List;->size()I
47119     move-result v1
47121     const/4 v5, 0x0
47123     :goto_4a
47124     if-ge v5, v1, :cond_c8
47126     move-object/from16 v0, p2
47128     invoke-interface {v0, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
47130     move-result-object v11
47132     check-cast v11, Landroid/app/IActivityManager$ContentProviderHolder;
47134     if-eqz v11, :cond_5e
47136     iget-object v12, v11, Landroid/app/IActivityManager$ContentProviderHolder;->info:Landroid/content/pm/ProviderInfo;
47138     if-eqz v12, :cond_5e
47140     iget-object v12, v11, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
47142     if-nez v12, :cond_61
47144     :cond_5e
47145     :goto_5e
47146     add-int/lit8 v5, v5, 0x1
47148     goto :goto_4a
47150     :cond_61
47151     iget-object v12, v10, Lcom/android/server/am/ProcessRecord;->pubProviders:Ljava/util/HashMap;
47153     iget-object v13, v11, Landroid/app/IActivityManager$ContentProviderHolder;->info:Landroid/content/pm/ProviderInfo;
47155     iget-object v13, v13, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
47157     invoke-virtual {v12, v13}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
47159     move-result-object v4
47161     check-cast v4, Lcom/android/server/am/ContentProviderRecord;
47163     if-eqz v4, :cond_5e
47165     new-instance v3, Landroid/content/ComponentName;
47167     iget-object v12, v4, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
47169     iget-object v12, v12, Landroid/content/pm/ProviderInfo;->packageName:Ljava/lang/String;
47171     iget-object v13, v4, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
47173     iget-object v13, v13, Landroid/content/pm/ProviderInfo;->name:Ljava/lang/String;
47175     invoke-direct {v3, v12, v13}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
47177     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
47179     invoke-virtual {v12, v3, v4}, Lcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
47181     iget-object v12, v4, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
47183     iget-object v12, v12, Landroid/content/pm/ProviderInfo;->authority:Ljava/lang/String;
47185     const-string v13, ";"
47187     invoke-virtual {v12, v13}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
47189     move-result-object v7
47191     const/4 v6, 0x0
47193     :goto_8c
47194     array-length v12, v7
47196     if-ge v6, v12, :cond_99
47198     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
47200     aget-object v13, v7, v6
47202     invoke-virtual {v12, v13, v4}, Lcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
47204     add-int/lit8 v6, v6, 0x1
47206     goto :goto_8c
47208     :cond_99
47209     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
47211     invoke-virtual {v12}, Ljava/util/ArrayList;->size()I
47213     move-result v2
47215     const/4 v6, 0x0
47217     :goto_a0
47218     if-ge v6, v2, :cond_b6
47220     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
47222     invoke-virtual {v12, v6}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
47224     move-result-object v12
47226     if-ne v12, v4, :cond_b3
47228     iget-object v12, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchingProviders:Ljava/util/ArrayList;
47230     invoke-virtual {v12, v6}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
47232     add-int/lit8 v6, v6, -0x1
47234     add-int/lit8 v2, v2, -0x1
47236     :cond_b3
47237     add-int/lit8 v6, v6, 0x1
47239     goto :goto_a0
47241     :cond_b6
47242     monitor-enter v4
47243     :try_end_b7
47244     .catchall {:try_start_41 .. :try_end_b7} :catchall_3e
47246     :try_start_b7
47247     iget-object v12, v11, Landroid/app/IActivityManager$ContentProviderHolder;->provider:Landroid/content/IContentProvider;
47249     iput-object v12, v4, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
47251     iput-object v10, v4, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
47253     invoke-virtual {v4}, Ljava/lang/Object;->notifyAll()V
47255     monitor-exit v4
47256     :try_end_c1
47257     .catchall {:try_start_b7 .. :try_end_c1} :catchall_c5
47259     :try_start_c1
47260     invoke-virtual {p0, v10}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
47261     :try_end_c4
47262     .catchall {:try_start_c1 .. :try_end_c4} :catchall_3e
47264     goto :goto_5e
47266     :catchall_c5
47267     move-exception v12
47269     :try_start_c6
47270     monitor-exit v4
47271     :try_end_c7
47272     .catchall {:try_start_c6 .. :try_end_c7} :catchall_c5
47274     :try_start_c7
47275     throw v12
47277     :cond_c8
47278     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
47280     monitor-exit p0
47281     :try_end_cc
47282     .catchall {:try_start_c7 .. :try_end_cc} :catchall_3e
47284     goto/16 :goto_2
47285 .end method
47287 .method public publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V
47288     .registers 6
47290     if-eqz p2, :cond_11
47292     invoke-virtual {p2}, Landroid/content/Intent;->hasFileDescriptors()Z
47294     move-result v0
47296     const/4 v1, 0x1
47298     if-ne v0, v1, :cond_11
47300     new-instance v0, Ljava/lang/IllegalArgumentException;
47302     const-string v1, "File descriptors passed in Intent"
47304     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
47306     throw v0
47308     :cond_11
47309     monitor-enter p0
47311     :try_start_12
47312     instance-of v0, p1, Lcom/android/server/am/ServiceRecord;
47314     if-nez v0, :cond_21
47316     new-instance v0, Ljava/lang/IllegalArgumentException;
47318     const-string v1, "Invalid service token"
47320     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
47322     throw v0
47324     :catchall_1e
47325     move-exception v0
47327     monitor-exit p0
47328     :try_end_20
47329     .catchall {:try_start_12 .. :try_end_20} :catchall_1e
47331     throw v0
47333     :cond_21
47334     :try_start_21
47335     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
47337     check-cast p1, Lcom/android/server/am/ServiceRecord;
47339     invoke-virtual {v0, p1, p2, p3}, Lcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V
47341     monitor-exit p0
47342     :try_end_29
47343     .catchall {:try_start_21 .. :try_end_29} :catchall_1e
47345     return-void
47346 .end method
47348 .method public refContentProvider(Landroid/os/IBinder;II)Z
47349     .registers 11
47351     :try_start_0
47352     move-object v0, p1
47354     check-cast v0, Lcom/android/server/am/ContentProviderConnection;
47356     move-object v1, v0
47357     :try_end_4
47358     .catch Ljava/lang/ClassCastException; {:try_start_0 .. :try_end_4} :catch_e
47360     if-nez v1, :cond_33
47362     new-instance v4, Ljava/lang/NullPointerException;
47364     const-string v5, "connection is null"
47366     invoke-direct {v4, v5}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
47368     throw v4
47370     :catch_e
47371     move-exception v2
47373     new-instance v4, Ljava/lang/StringBuilder;
47375     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
47377     const-string v5, "refContentProvider: "
47379     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47381     move-result-object v4
47383     invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
47385     move-result-object v4
47387     const-string v5, " not a ContentProviderConnection"
47389     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47391     move-result-object v4
47393     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47395     move-result-object v3
47397     const-string v4, "ActivityManager"
47399     invoke-static {v4, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
47401     new-instance v4, Ljava/lang/IllegalArgumentException;
47403     invoke-direct {v4, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
47405     throw v4
47407     :cond_33
47408     monitor-enter p0
47410     if-lez p2, :cond_3b
47412     :try_start_36
47413     iget v4, v1, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
47415     add-int/2addr v4, p2
47417     iput v4, v1, Lcom/android/server/am/ContentProviderConnection;->numStableIncs:I
47419     :cond_3b
47420     iget v4, v1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
47422     add-int/2addr p2, v4
47424     if-gez p2, :cond_5c
47426     new-instance v4, Ljava/lang/IllegalStateException;
47428     new-instance v5, Ljava/lang/StringBuilder;
47430     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
47432     const-string v6, "stableCount < 0: "
47434     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47436     move-result-object v5
47438     invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47440     move-result-object v5
47442     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47444     move-result-object v5
47446     invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
47448     throw v4
47450     :catchall_59
47451     move-exception v4
47453     monitor-exit p0
47454     :try_end_5b
47455     .catchall {:try_start_36 .. :try_end_5b} :catchall_59
47457     throw v4
47459     :cond_5c
47460     if-lez p3, :cond_63
47462     :try_start_5e
47463     iget v4, v1, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
47465     add-int/2addr v4, p3
47467     iput v4, v1, Lcom/android/server/am/ContentProviderConnection;->numUnstableIncs:I
47469     :cond_63
47470     iget v4, v1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
47472     add-int/2addr p3, v4
47474     if-gez p3, :cond_81
47476     new-instance v4, Ljava/lang/IllegalStateException;
47478     new-instance v5, Ljava/lang/StringBuilder;
47480     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
47482     const-string v6, "unstableCount < 0: "
47484     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47486     move-result-object v5
47488     invoke-virtual {v5, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47490     move-result-object v5
47492     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47494     move-result-object v5
47496     invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
47498     throw v4
47500     :cond_81
47501     add-int v4, p2, p3
47503     if-gtz v4, :cond_a8
47505     new-instance v4, Ljava/lang/IllegalStateException;
47507     new-instance v5, Ljava/lang/StringBuilder;
47509     invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
47511     const-string v6, "ref counts can\'t go to zero here: stable="
47513     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47515     move-result-object v5
47517     invoke-virtual {v5, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47519     move-result-object v5
47521     const-string v6, " unstable="
47523     invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47525     move-result-object v5
47527     invoke-virtual {v5, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47529     move-result-object v5
47531     invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47533     move-result-object v5
47535     invoke-direct {v4, v5}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
47537     throw v4
47539     :cond_a8
47540     iput p2, v1, Lcom/android/server/am/ContentProviderConnection;->stableCount:I
47542     iput p3, v1, Lcom/android/server/am/ContentProviderConnection;->unstableCount:I
47544     iget-boolean v4, v1, Lcom/android/server/am/ContentProviderConnection;->dead:Z
47546     if-nez v4, :cond_b3
47548     const/4 v4, 0x1
47550     :goto_b1
47551     monitor-exit p0
47552     :try_end_b2
47553     .catchall {:try_start_5e .. :try_end_b2} :catchall_59
47555     return v4
47557     :cond_b3
47558     const/4 v4, 0x0
47560     goto :goto_b1
47561 .end method
47563 .method public registerProcessObserver(Landroid/app/IProcessObserver;)V
47564     .registers 4
47566     const-string v0, "android.permission.SET_ACTIVITY_WATCHER"
47568     const-string v1, "registerProcessObserver()"
47570     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
47572     monitor-enter p0
47574     :try_start_8
47575     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
47577     invoke-virtual {v0, p1}, Landroid/os/RemoteCallbackList;->register(Landroid/os/IInterface;)Z
47579     monitor-exit p0
47581     return-void
47583     :catchall_f
47584     move-exception v0
47586     monitor-exit p0
47587     :try_end_11
47588     .catchall {:try_start_8 .. :try_end_11} :catchall_f
47590     throw v0
47591 .end method
47593 .method public registerReceiver(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;I)Landroid/content/Intent;
47594     .registers 41
47596     const-string v4, "registerReceiver"
47598     move-object/from16 v0, p0
47600     invoke-virtual {v0, v4}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
47602     monitor-enter p0
47604     const/16 v30, 0x0
47606     if-eqz p1, :cond_d1
47608     :try_start_c
47609     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
47611     move-result-object v30
47613     if-nez v30, :cond_4a
47615     new-instance v4, Ljava/lang/SecurityException;
47617     new-instance v12, Ljava/lang/StringBuilder;
47619     invoke-direct {v12}, Ljava/lang/StringBuilder;-><init>()V
47621     const-string v13, "Unable to find app for caller "
47623     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47625     move-result-object v12
47627     move-object/from16 v0, p1
47629     invoke-virtual {v12, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
47631     move-result-object v12
47633     const-string v13, " (pid="
47635     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47637     move-result-object v12
47639     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
47641     move-result v13
47643     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
47645     move-result-object v12
47647     const-string v13, ") when registering receiver "
47649     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47651     move-result-object v12
47653     move-object/from16 v0, p3
47655     invoke-virtual {v12, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
47657     move-result-object v12
47659     invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47661     move-result-object v12
47663     invoke-direct {v4, v12}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
47665     throw v4
47667     :catchall_47
47668     move-exception v4
47670     monitor-exit p0
47671     :try_end_49
47672     .catchall {:try_start_c .. :try_end_49} :catchall_47
47674     throw v4
47676     :cond_4a
47677     :try_start_4a
47678     move-object/from16 v0, v30
47680     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
47682     iget v4, v4, Landroid/content/pm/ApplicationInfo;->uid:I
47684     const/16 v12, 0x3e8
47686     if-eq v4, v12, :cond_87
47688     move-object/from16 v0, v30
47690     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->pkgList:Ljava/util/HashSet;
47692     move-object/from16 v0, p2
47694     invoke-virtual {v4, v0}, Ljava/util/HashSet;->contains(Ljava/lang/Object;)Z
47696     move-result v4
47698     if-nez v4, :cond_87
47700     new-instance v4, Ljava/lang/SecurityException;
47702     new-instance v12, Ljava/lang/StringBuilder;
47704     invoke-direct {v12}, Ljava/lang/StringBuilder;-><init>()V
47706     const-string v13, "Given caller package "
47708     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47710     move-result-object v12
47712     move-object/from16 v0, p2
47714     invoke-virtual {v12, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47716     move-result-object v12
47718     const-string v13, " is not running in process "
47720     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
47722     move-result-object v12
47724     move-object/from16 v0, v30
47726     invoke-virtual {v12, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
47728     move-result-object v12
47730     invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
47732     move-result-object v12
47734     invoke-direct {v4, v12}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
47736     throw v4
47738     :cond_87
47739     move-object/from16 v0, v30
47741     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
47743     iget v6, v4, Landroid/content/pm/ApplicationInfo;->uid:I
47745     move-object/from16 v0, v30
47747     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
47749     :goto_91
47750     const/4 v8, 0x1
47752     const/4 v9, 0x1
47754     const-string v10, "registerReceiver"
47756     move-object/from16 v4, p0
47758     move/from16 v7, p6
47760     move-object/from16 v11, p2
47762     invoke-virtual/range {v4 .. v11}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
47764     move-result p6
47766     const/16 v29, 0x0
47768     invoke-virtual/range {p4 .. p4}, Landroid/content/IntentFilter;->actionsIterator()Ljava/util/Iterator;
47770     move-result-object v28
47772     if-eqz v28, :cond_dc
47774     :goto_a7
47775     invoke-interface/range {v28 .. v28}, Ljava/util/Iterator;->hasNext()Z
47777     move-result v4
47779     if-eqz v4, :cond_f7
47781     invoke-interface/range {v28 .. v28}, Ljava/util/Iterator;->next()Ljava/lang/Object;
47783     move-result-object v27
47785     check-cast v27, Ljava/lang/String;
47787     const/4 v4, -0x1
47789     move-object/from16 v0, p0
47791     move-object/from16 v1, v27
47793     move-object/from16 v2, p4
47795     move-object/from16 v3, v29
47797     invoke-direct {v0, v1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->getStickiesLocked(Ljava/lang/String;Landroid/content/IntentFilter;Ljava/util/List;I)Ljava/util/List;
47799     move-result-object v29
47801     invoke-static {v6}, Landroid/os/UserHandle;->getUserId(I)I
47803     move-result v4
47805     move-object/from16 v0, p0
47807     move-object/from16 v1, v27
47809     move-object/from16 v2, p4
47811     move-object/from16 v3, v29
47813     invoke-direct {v0, v1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->getStickiesLocked(Ljava/lang/String;Landroid/content/IntentFilter;Ljava/util/List;I)Ljava/util/List;
47815     move-result-object v29
47817     goto :goto_a7
47819     :cond_d1
47820     const/16 p2, 0x0
47822     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
47824     move-result v6
47826     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
47828     move-result v5
47830     goto :goto_91
47832     :cond_dc
47833     const/4 v4, 0x0
47835     const/4 v12, -0x1
47837     move-object/from16 v0, p0
47839     move-object/from16 v1, p4
47841     move-object/from16 v2, v29
47843     invoke-direct {v0, v4, v1, v2, v12}, Lcom/android/server/am/ActivityManagerService;->getStickiesLocked(Ljava/lang/String;Landroid/content/IntentFilter;Ljava/util/List;I)Ljava/util/List;
47845     move-result-object v29
47847     const/4 v4, 0x0
47849     invoke-static {v6}, Landroid/os/UserHandle;->getUserId(I)I
47851     move-result v12
47853     move-object/from16 v0, p0
47855     move-object/from16 v1, p4
47857     move-object/from16 v2, v29
47859     invoke-direct {v0, v4, v1, v2, v12}, Lcom/android/server/am/ActivityManagerService;->getStickiesLocked(Ljava/lang/String;Landroid/content/IntentFilter;Ljava/util/List;I)Ljava/util/List;
47861     move-result-object v29
47863     :cond_f7
47864     if-eqz v29, :cond_108
47866     const/4 v4, 0x0
47868     move-object/from16 v0, v29
47870     invoke-interface {v0, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
47872     move-result-object v4
47874     check-cast v4, Landroid/content/Intent;
47876     move-object/from16 v33, v4
47878     :goto_104
47879     if-nez p3, :cond_10b
47881     monitor-exit p0
47883     :goto_107
47884     return-object v33
47886     :cond_108
47887     const/16 v33, 0x0
47889     goto :goto_104
47891     :cond_10b
47892     move-object/from16 v0, p0
47894     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
47896     invoke-interface/range {p3 .. p3}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
47898     move-result-object v12
47900     invoke-virtual {v4, v12}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
47902     move-result-object v7
47904     check-cast v7, Lcom/android/server/am/ReceiverList;
47906     if-nez v7, :cond_1c3
47908     new-instance v7, Lcom/android/server/am/ReceiverList;
47910     move-object/from16 v8, p0
47912     move-object/from16 v9, v30
47914     move v10, v5
47916     move v11, v6
47918     move/from16 v12, p6
47920     move-object/from16 v13, p3
47922     invoke-direct/range {v7 .. v13}, Lcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V
47924     iget-object v4, v7, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
47926     if-eqz v4, :cond_1b2
47928     iget-object v4, v7, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
47930     iget-object v4, v4, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
47932     invoke-virtual {v4, v7}, Ljava/util/HashSet;->add(Ljava/lang/Object;)Z
47934     :goto_135
47935     move-object/from16 v0, p0
47937     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
47939     invoke-interface/range {p3 .. p3}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
47941     move-result-object v12
47943     invoke-virtual {v4, v12, v7}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
47945     :cond_140
47946     new-instance v8, Lcom/android/server/am/BroadcastFilter;
47948     move-object/from16 v9, p4
47950     move-object v10, v7
47952     move-object/from16 v11, p2
47954     move-object/from16 v12, p5
47956     move v13, v6
47958     move/from16 v14, p6
47960     invoke-direct/range {v8 .. v14}, Lcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;II)V
47962     invoke-virtual {v7, v8}, Lcom/android/server/am/ReceiverList;->add(Ljava/lang/Object;)Z
47964     invoke-virtual {v8}, Lcom/android/server/am/BroadcastFilter;->debugCheck()Z
47966     move-result v4
47968     if-nez v4, :cond_15f
47970     const-string v4, "ActivityManager"
47972     const-string v12, "==> For Dynamic broadast"
47974     invoke-static {v4, v12}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
47976     :cond_15f
47977     move-object/from16 v0, p0
47979     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
47981     invoke-virtual {v4, v8}, Lcom/android/server/IntentResolver;->addFilter(Landroid/content/IntentFilter;)V
47983     if-eqz v29, :cond_242
47985     new-instance v17, Ljava/util/ArrayList;
47987     invoke-direct/range {v17 .. v17}, Ljava/util/ArrayList;-><init>()V
47989     move-object/from16 v0, v17
47991     invoke-virtual {v0, v8}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
47993     invoke-interface/range {v29 .. v29}, Ljava/util/List;->size()I
47995     move-result v26
47997     const/16 v32, 0x0
47999     :goto_178
48000     move/from16 v0, v32
48002     move/from16 v1, v26
48004     if-ge v0, v1, :cond_242
48006     move-object/from16 v0, v29
48008     move/from16 v1, v32
48010     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
48012     move-result-object v11
48014     check-cast v11, Landroid/content/Intent;
48016     move-object/from16 v0, p0
48018     invoke-virtual {v0, v11}, Lcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
48020     move-result-object v10
48022     new-instance v9, Lcom/android/server/am/BroadcastRecord;
48024     const/4 v12, 0x0
48026     const/4 v13, 0x0
48028     const/4 v14, -0x1
48030     const/4 v15, -0x1
48032     const/16 v16, 0x0
48034     const/16 v18, 0x0
48036     const/16 v19, 0x0
48038     const/16 v20, 0x0
48040     const/16 v21, 0x0
48042     const/16 v22, 0x0
48044     const/16 v23, 0x1
48046     const/16 v24, 0x1
48048     const/16 v25, -0x1
48050     invoke-direct/range {v9 .. v25}, Lcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IILjava/lang/String;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZI)V
48052     invoke-virtual {v10, v9}, Lcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
48054     invoke-virtual {v10}, Lcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V
48055     :try_end_1af
48056     .catchall {:try_start_4a .. :try_end_1af} :catchall_47
48058     add-int/lit8 v32, v32, 0x1
48060     goto :goto_178
48062     :cond_1b2
48063     :try_start_1b2
48064     invoke-interface/range {p3 .. p3}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
48066     move-result-object v4
48068     const/4 v12, 0x0
48070     invoke-interface {v4, v7, v12}, Landroid/os/IBinder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
48071     :try_end_1ba
48072     .catchall {:try_start_1b2 .. :try_end_1ba} :catchall_47
48073     .catch Landroid/os/RemoteException; {:try_start_1b2 .. :try_end_1ba} :catch_1bf
48075     const/4 v4, 0x1
48077     :try_start_1bb
48078     iput-boolean v4, v7, Lcom/android/server/am/ReceiverList;->linkedToDeath:Z
48080     goto/16 :goto_135
48082     :catch_1bf
48083     move-exception v31
48085     monitor-exit p0
48087     goto/16 :goto_107
48089     :cond_1c3
48090     iget v4, v7, Lcom/android/server/am/ReceiverList;->uid:I
48092     if-eq v4, v6, :cond_1ec
48094     new-instance v4, Ljava/lang/IllegalArgumentException;
48096     new-instance v12, Ljava/lang/StringBuilder;
48098     invoke-direct {v12}, Ljava/lang/StringBuilder;-><init>()V
48100     const-string v13, "Receiver requested to register for uid "
48102     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48104     move-result-object v12
48106     invoke-virtual {v12, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48108     move-result-object v12
48110     const-string v13, " was previously registered for uid "
48112     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48114     move-result-object v12
48116     iget v13, v7, Lcom/android/server/am/ReceiverList;->uid:I
48118     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48120     move-result-object v12
48122     invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
48124     move-result-object v12
48126     invoke-direct {v4, v12}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
48128     throw v4
48130     :cond_1ec
48131     iget v4, v7, Lcom/android/server/am/ReceiverList;->pid:I
48133     if-eq v4, v5, :cond_215
48135     new-instance v4, Ljava/lang/IllegalArgumentException;
48137     new-instance v12, Ljava/lang/StringBuilder;
48139     invoke-direct {v12}, Ljava/lang/StringBuilder;-><init>()V
48141     const-string v13, "Receiver requested to register for pid "
48143     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48145     move-result-object v12
48147     invoke-virtual {v12, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48149     move-result-object v12
48151     const-string v13, " was previously registered for pid "
48153     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48155     move-result-object v12
48157     iget v13, v7, Lcom/android/server/am/ReceiverList;->pid:I
48159     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48161     move-result-object v12
48163     invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
48165     move-result-object v12
48167     invoke-direct {v4, v12}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
48169     throw v4
48171     :cond_215
48172     iget v4, v7, Lcom/android/server/am/ReceiverList;->userId:I
48174     move/from16 v0, p6
48176     if-eq v4, v0, :cond_140
48178     new-instance v4, Ljava/lang/IllegalArgumentException;
48180     new-instance v12, Ljava/lang/StringBuilder;
48182     invoke-direct {v12}, Ljava/lang/StringBuilder;-><init>()V
48184     const-string v13, "Receiver requested to register for user "
48186     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48188     move-result-object v12
48190     move/from16 v0, p6
48192     invoke-virtual {v12, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48194     move-result-object v12
48196     const-string v13, " was previously registered for user "
48198     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48200     move-result-object v12
48202     iget v13, v7, Lcom/android/server/am/ReceiverList;->userId:I
48204     invoke-virtual {v12, v13}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48206     move-result-object v12
48208     invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
48210     move-result-object v12
48212     invoke-direct {v4, v12}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
48214     throw v4
48216     :cond_242
48217     monitor-exit p0
48218     :try_end_243
48219     .catchall {:try_start_1bb .. :try_end_243} :catchall_47
48221     goto/16 :goto_107
48222 .end method
48224 .method public registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;)V
48225     .registers 5
48227     const-string v1, "android.permission.INTERACT_ACROSS_USERS_FULL"
48229     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
48231     move-result v1
48233     if-eqz v1, :cond_44
48235     new-instance v1, Ljava/lang/StringBuilder;
48237     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
48239     const-string v2, "Permission Denial: registerUserSwitchObserver() from pid="
48241     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48243     move-result-object v1
48245     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
48247     move-result v2
48249     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48251     move-result-object v1
48253     const-string v2, ", uid="
48255     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48257     move-result-object v1
48259     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
48261     move-result v2
48263     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48265     move-result-object v1
48267     const-string v2, " requires "
48269     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48271     move-result-object v1
48273     const-string v2, "android.permission.INTERACT_ACROSS_USERS_FULL"
48275     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48277     move-result-object v1
48279     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
48281     move-result-object v0
48283     const-string v1, "ActivityManager"
48285     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
48287     new-instance v1, Ljava/lang/SecurityException;
48289     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
48291     throw v1
48293     :cond_44
48294     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mUserSwitchObservers:Landroid/os/RemoteCallbackList;
48296     invoke-virtual {v1, p1}, Landroid/os/RemoteCallbackList;->register(Landroid/os/IInterface;)Z
48298     return-void
48299 .end method
48301 .method public removeContentProvider(Landroid/os/IBinder;Z)V
48302     .registers 9
48304     const-string v4, "removeContentProvider"
48306     invoke-virtual {p0, v4}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
48308     monitor-enter p0
48310     :try_start_6
48311     move-object v0, p1
48313     check-cast v0, Lcom/android/server/am/ContentProviderConnection;
48315     move-object v1, v0
48316     :try_end_a
48317     .catchall {:try_start_6 .. :try_end_a} :catchall_14
48318     .catch Ljava/lang/ClassCastException; {:try_start_6 .. :try_end_a} :catch_17
48320     if-nez v1, :cond_3c
48322     :try_start_c
48323     new-instance v4, Ljava/lang/NullPointerException;
48325     const-string v5, "connection is null"
48327     invoke-direct {v4, v5}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
48329     throw v4
48331     :catchall_14
48332     move-exception v4
48334     monitor-exit p0
48335     :try_end_16
48336     .catchall {:try_start_c .. :try_end_16} :catchall_14
48338     throw v4
48340     :catch_17
48341     move-exception v2
48343     :try_start_18
48344     new-instance v4, Ljava/lang/StringBuilder;
48346     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
48348     const-string v5, "removeContentProvider: "
48350     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48352     move-result-object v4
48354     invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
48356     move-result-object v4
48358     const-string v5, " not a ContentProviderConnection"
48360     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48362     move-result-object v4
48364     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
48366     move-result-object v3
48368     const-string v4, "ActivityManager"
48370     invoke-static {v4, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
48372     new-instance v4, Ljava/lang/IllegalArgumentException;
48374     invoke-direct {v4, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
48376     throw v4
48378     :cond_3c
48379     const/4 v4, 0x0
48381     const/4 v5, 0x0
48383     invoke-virtual {p0, v1, v4, v5, p2}, Lcom/android/server/am/ActivityManagerService;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z
48385     move-result v4
48387     if-eqz v4, :cond_47
48389     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
48391     :cond_47
48392     monitor-exit p0
48393     :try_end_48
48394     .catchall {:try_start_18 .. :try_end_48} :catchall_14
48396     return-void
48397 .end method
48399 .method public removeContentProviderExternal(Ljava/lang/String;Landroid/os/IBinder;)V
48400     .registers 5
48402     const-string v0, "android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY"
48404     const-string v1, "Do not have permission in call removeContentProviderExternal()"
48406     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
48408     invoke-static {}, Landroid/os/UserHandle;->getCallingUserId()I
48410     move-result v0
48412     invoke-direct {p0, p1, p2, v0}, Lcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
48414     return-void
48415 .end method
48417 .method removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
48418     .registers 6
48420     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
48422     iget-object v3, p1, Lcom/android/server/am/ReceiverList;->receiver:Landroid/content/IIntentReceiver;
48424     invoke-interface {v3}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
48426     move-result-object v3
48428     invoke-virtual {v2, v3}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
48430     invoke-virtual {p1}, Lcom/android/server/am/ReceiverList;->size()I
48432     move-result v0
48434     const/4 v1, 0x0
48436     :goto_10
48437     if-ge v1, v0, :cond_20
48439     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mReceiverResolver:Lcom/android/server/IntentResolver;
48441     invoke-virtual {p1, v1}, Lcom/android/server/am/ReceiverList;->get(I)Ljava/lang/Object;
48443     move-result-object v2
48445     check-cast v2, Landroid/content/IntentFilter;
48447     invoke-virtual {v3, v2}, Lcom/android/server/IntentResolver;->removeFilter(Landroid/content/IntentFilter;)V
48449     add-int/lit8 v1, v1, 0x1
48451     goto :goto_10
48453     :cond_20
48454     return-void
48455 .end method
48457 .method public removeSubTask(II)Z
48458     .registers 8
48460     const/4 v2, 0x1
48462     monitor-enter p0
48464     :try_start_2
48465     const-string v3, "android.permission.REMOVE_TASKS"
48467     const-string v4, "removeSubTask()"
48469     invoke-virtual {p0, v3, v4}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
48471     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
48472     :try_end_c
48473     .catchall {:try_start_2 .. :try_end_c} :catchall_22
48475     move-result-wide v0
48477     :try_start_d
48478     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48480     const/4 v4, 0x1
48482     invoke-virtual {v3, p1, p2, v4}, Lcom/android/server/am/ActivityStack;->removeTaskActivitiesLocked(IIZ)Lcom/android/server/am/ActivityRecord;
48483     :try_end_13
48484     .catchall {:try_start_d .. :try_end_13} :catchall_1d
48486     move-result-object v3
48488     if-eqz v3, :cond_1b
48490     :goto_16
48491     :try_start_16
48492     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48494     monitor-exit p0
48496     return v2
48498     :cond_1b
48499     const/4 v2, 0x0
48501     goto :goto_16
48503     :catchall_1d
48504     move-exception v2
48506     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48508     throw v2
48510     :catchall_22
48511     move-exception v2
48513     monitor-exit p0
48514     :try_end_24
48515     .catchall {:try_start_16 .. :try_end_24} :catchall_22
48517     throw v2
48518 .end method
48520 .method public removeTask(II)Z
48521     .registers 14
48523     const/4 v6, 0x1
48525     const/4 v7, 0x0
48527     monitor-enter p0
48529     :try_start_3
48530     const-string v8, "android.permission.REMOVE_TASKS"
48532     const-string v9, "removeTask()"
48534     invoke-virtual {p0, v8, v9}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
48536     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
48537     :try_end_d
48538     .catchall {:try_start_3 .. :try_end_d} :catchall_53
48540     move-result-wide v1
48542     :try_start_e
48543     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
48545     const/4 v9, -0x1
48547     const/4 v10, 0x0
48549     invoke-virtual {v8, p1, v9, v10}, Lcom/android/server/am/ActivityStack;->removeTaskActivitiesLocked(IIZ)Lcom/android/server/am/ActivityRecord;
48551     move-result-object v3
48553     if-eqz v3, :cond_29
48555     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
48557     iget-object v8, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
48559     invoke-virtual {v7, v8}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
48561     iget-object v7, v3, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
48563     invoke-direct {p0, v7, p2}, Lcom/android/server/am/ActivityManagerService;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;I)V
48564     :try_end_24
48565     .catchall {:try_start_e .. :try_end_24} :catchall_93
48567     :try_start_24
48568     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48570     monitor-exit p0
48571     :try_end_28
48572     .catchall {:try_start_24 .. :try_end_28} :catchall_53
48574     :goto_28
48575     return v6
48577     :cond_29
48578     const/4 v5, 0x0
48580     const/4 v0, 0x0
48582     :goto_2b
48583     :try_start_2b
48584     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
48586     invoke-virtual {v8}, Ljava/util/ArrayList;->size()I
48588     move-result v8
48590     if-ge v0, v8, :cond_40
48592     iget-object v8, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
48594     invoke-virtual {v8, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
48596     move-result-object v4
48598     check-cast v4, Lcom/android/server/am/TaskRecord;
48600     iget v8, v4, Lcom/android/server/am/TaskRecord;->taskId:I
48602     if-ne v8, p1, :cond_56
48604     move-object v5, v4
48606     :cond_40
48607     if-eqz v5, :cond_8d
48609     iget v8, v5, Lcom/android/server/am/TaskRecord;->numActivities:I
48611     if-gtz v8, :cond_59
48613     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mRecentTasks:Ljava/util/ArrayList;
48615     invoke-virtual {v7, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
48617     invoke-direct {p0, v5, p2}, Lcom/android/server/am/ActivityManagerService;->cleanUpRemovedTaskLocked(Lcom/android/server/am/TaskRecord;I)V
48618     :try_end_4e
48619     .catchall {:try_start_2b .. :try_end_4e} :catchall_93
48621     :try_start_4e
48622     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48624     monitor-exit p0
48626     goto :goto_28
48628     :catchall_53
48629     move-exception v6
48631     monitor-exit p0
48632     :try_end_55
48633     .catchall {:try_start_4e .. :try_end_55} :catchall_53
48635     throw v6
48637     :cond_56
48638     add-int/lit8 v0, v0, 0x1
48640     goto :goto_2b
48642     :cond_59
48643     :try_start_59
48644     const-string v6, "ActivityManager"
48646     new-instance v8, Ljava/lang/StringBuilder;
48648     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
48650     const-string v9, "removeTask: task "
48652     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48654     move-result-object v8
48656     invoke-virtual {v8, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48658     move-result-object v8
48660     const-string v9, " does not have activities to remove, "
48662     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48664     move-result-object v8
48666     const-string v9, " but numActivities="
48668     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48670     move-result-object v8
48672     iget v9, v5, Lcom/android/server/am/TaskRecord;->numActivities:I
48674     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
48676     move-result-object v8
48678     const-string v9, ": "
48680     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48682     move-result-object v8
48684     invoke-virtual {v8, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
48686     move-result-object v8
48688     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
48690     move-result-object v8
48692     invoke-static {v6, v8}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
48693     :try_end_8d
48694     .catchall {:try_start_59 .. :try_end_8d} :catchall_93
48696     :cond_8d
48697     :try_start_8d
48698     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48700     monitor-exit p0
48702     move v6, v7
48704     goto :goto_28
48706     :catchall_93
48707     move-exception v6
48709     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48711     throw v6
48712     :try_end_98
48713     .catchall {:try_start_8d .. :try_end_98} :catchall_53
48714 .end method
48716 .method removeUriPermissionIfNeededLocked(Lcom/android/server/am/UriPermission;)V
48717     .registers 5
48719     iget v1, p1, Lcom/android/server/am/UriPermission;->modeFlags:I
48721     and-int/lit8 v1, v1, 0x3
48723     if-nez v1, :cond_24
48725     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
48727     iget v2, p1, Lcom/android/server/am/UriPermission;->uid:I
48729     invoke-virtual {v1, v2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
48731     move-result-object v0
48733     check-cast v0, Ljava/util/HashMap;
48735     if-eqz v0, :cond_24
48737     iget-object v1, p1, Lcom/android/server/am/UriPermission;->uri:Landroid/net/Uri;
48739     invoke-virtual {v0, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
48741     invoke-virtual {v0}, Ljava/util/HashMap;->size()I
48743     move-result v1
48745     if-nez v1, :cond_24
48747     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mGrantedUriPermissions:Landroid/util/SparseArray;
48749     iget v2, p1, Lcom/android/server/am/UriPermission;->uid:I
48751     invoke-virtual {v1, v2}, Landroid/util/SparseArray;->remove(I)V
48753     :cond_24
48754     return-void
48755 .end method
48757 .method reportResumedActivityLocked(Lcom/android/server/am/ActivityRecord;)V
48758     .registers 3
48760     const/4 v0, 0x1
48762     invoke-virtual {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->updateUsageStats(Lcom/android/server/am/ActivityRecord;Z)V
48764     return-void
48765 .end method
48767 .method public reportThumbnail(Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;)V
48768     .registers 12
48770     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
48772     move-result-wide v6
48774     const/4 v1, 0x0
48776     const/4 v5, 0x1
48778     move-object v0, p0
48780     move-object v2, p1
48782     move-object v3, p2
48784     move-object v4, p3
48786     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActivityManagerService;->sendPendingThumbnail(Lcom/android/server/am/ActivityRecord;Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;Z)V
48788     invoke-static {v6, v7}, Landroid/os/Binder;->restoreCallingIdentity(J)V
48790     return-void
48791 .end method
48793 .method public requestBugReport()V
48794     .registers 3
48796     const-string v0, "ctl.start"
48798     const-string v1, "bugreport"
48800     invoke-static {v0, v1}, Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
48802     return-void
48803 .end method
48805 .method public resumeAppSwitches()V
48806     .registers 3
48808     const-string v0, "android.permission.STOP_APP_SWITCHES"
48810     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
48812     move-result v0
48814     if-eqz v0, :cond_10
48816     new-instance v0, Ljava/lang/SecurityException;
48818     const-string v1, "Requires permission android.permission.STOP_APP_SWITCHES"
48820     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
48822     throw v0
48824     :cond_10
48825     monitor-enter p0
48827     const-wide/16 v0, 0x0
48829     :try_start_13
48830     iput-wide v0, p0, Lcom/android/server/am/ActivityManagerService;->mAppSwitchesAllowedTime:J
48832     monitor-exit p0
48834     return-void
48836     :catchall_17
48837     move-exception v0
48839     monitor-exit p0
48840     :try_end_19
48841     .catchall {:try_start_13 .. :try_end_19} :catchall_17
48843     throw v0
48844 .end method
48846 .method public revokeUriPermission(Landroid/app/IApplicationThread;Landroid/net/Uri;I)V
48847     .registers 12
48849     const-string v5, "revokeUriPermission"
48851     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
48853     monitor-enter p0
48855     :try_start_6
48856     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
48858     move-result-object v4
48860     if-nez v4, :cond_32
48862     new-instance v5, Ljava/lang/SecurityException;
48864     new-instance v6, Ljava/lang/StringBuilder;
48866     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
48868     const-string v7, "Unable to find app for caller "
48870     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48872     move-result-object v6
48874     invoke-virtual {v6, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
48876     move-result-object v6
48878     const-string v7, " when revoking permission to uri "
48880     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48882     move-result-object v6
48884     invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
48886     move-result-object v6
48888     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
48890     move-result-object v6
48892     invoke-direct {v5, v6}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
48894     throw v5
48896     :catchall_2f
48897     move-exception v5
48899     monitor-exit p0
48900     :try_end_31
48901     .catchall {:try_start_6 .. :try_end_31} :catchall_2f
48903     throw v5
48905     :cond_32
48906     if-nez p2, :cond_3d
48908     :try_start_34
48909     const-string v5, "ActivityManager"
48911     const-string v6, "revokeUriPermission: null uri"
48913     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
48915     monitor-exit p0
48917     :goto_3c
48918     return-void
48920     :cond_3d
48921     and-int/lit8 p3, p3, 0x3
48923     if-nez p3, :cond_43
48925     monitor-exit p0
48927     goto :goto_3c
48929     :cond_43
48930     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
48932     move-result-object v3
48934     invoke-virtual {p2}, Landroid/net/Uri;->getAuthority()Ljava/lang/String;
48936     move-result-object v0
48938     const/4 v2, 0x0
48940     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mProviderMap:Lcom/android/server/am/ProviderMap;
48942     iget v6, v4, Lcom/android/server/am/ProcessRecord;->userId:I
48944     invoke-virtual {v5, v0, v6}, Lcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
48946     move-result-object v1
48948     if-eqz v1, :cond_78
48950     iget-object v2, v1, Lcom/android/server/am/ContentProviderRecord;->info:Landroid/content/pm/ProviderInfo;
48952     :goto_58
48953     if-nez v2, :cond_81
48955     const-string v5, "ActivityManager"
48957     new-instance v6, Ljava/lang/StringBuilder;
48959     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
48961     const-string v7, "No content provider found for permission revoke: "
48963     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48965     move-result-object v6
48967     invoke-virtual {p2}, Landroid/net/Uri;->toSafeString()Ljava/lang/String;
48969     move-result-object v7
48971     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
48973     move-result-object v6
48975     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
48977     move-result-object v6
48979     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
48981     monitor-exit p0
48982     :try_end_77
48983     .catchall {:try_start_34 .. :try_end_77} :catchall_2f
48985     goto :goto_3c
48987     :cond_78
48988     const/16 v5, 0x800
48990     :try_start_7a
48991     iget v6, v4, Lcom/android/server/am/ProcessRecord;->userId:I
48993     invoke-interface {v3, v0, v5, v6}, Landroid/content/pm/IPackageManager;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
48994     :try_end_7f
48995     .catchall {:try_start_7a .. :try_end_7f} :catchall_2f
48996     .catch Landroid/os/RemoteException; {:try_start_7a .. :try_end_7f} :catch_88
48998     move-result-object v2
49000     goto :goto_58
49002     :cond_81
49003     :try_start_81
49004     iget v5, v4, Lcom/android/server/am/ProcessRecord;->uid:I
49006     invoke-direct {p0, v5, p2, p3}, Lcom/android/server/am/ActivityManagerService;->revokeUriPermissionLocked(ILandroid/net/Uri;I)V
49008     monitor-exit p0
49009     :try_end_87
49010     .catchall {:try_start_81 .. :try_end_87} :catchall_2f
49012     goto :goto_3c
49014     :catch_88
49015     move-exception v5
49017     goto :goto_58
49018 .end method
49020 .method public revokeUriPermissionFromOwner(Landroid/os/IBinder;Landroid/net/Uri;I)V
49021     .registers 8
49023     monitor-enter p0
49025     :try_start_1
49026     invoke-static {p1}, Lcom/android/server/am/UriPermissionOwner;->fromExternalToken(Landroid/os/IBinder;)Lcom/android/server/am/UriPermissionOwner;
49028     move-result-object v0
49030     if-nez v0, :cond_23
49032     new-instance v1, Ljava/lang/IllegalArgumentException;
49034     new-instance v2, Ljava/lang/StringBuilder;
49036     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
49038     const-string v3, "Unknown owner: "
49040     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
49042     move-result-object v2
49044     invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
49046     move-result-object v2
49048     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
49050     move-result-object v2
49052     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
49054     throw v1
49056     :catchall_20
49057     move-exception v1
49059     monitor-exit p0
49060     :try_end_22
49061     .catchall {:try_start_1 .. :try_end_22} :catchall_20
49063     throw v1
49065     :cond_23
49066     if-nez p2, :cond_2a
49068     :try_start_25
49069     invoke-virtual {v0, p3}, Lcom/android/server/am/UriPermissionOwner;->removeUriPermissionsLocked(I)V
49071     :goto_28
49072     monitor-exit p0
49074     return-void
49076     :cond_2a
49077     invoke-virtual {v0, p2, p3}, Lcom/android/server/am/UriPermissionOwner;->removeUriPermissionLocked(Landroid/net/Uri;I)V
49078     :try_end_2d
49079     .catchall {:try_start_25 .. :try_end_2d} :catchall_20
49081     goto :goto_28
49082 .end method
49084 .method final scheduleAppGcLocked(Lcom/android/server/am/ProcessRecord;)V
49085     .registers 8
49087     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
49089     move-result-wide v0
49091     iget-wide v2, p1, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
49093     const-wide/32 v4, 0xea60
49095     add-long/2addr v2, v4
49097     cmp-long v2, v2, v0
49099     if-lez v2, :cond_f
49101     :cond_e
49102     :goto_e
49103     return-void
49105     :cond_f
49106     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
49108     invoke-virtual {v2, p1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
49110     move-result v2
49112     if-nez v2, :cond_e
49114     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->addProcessToGcListLocked(Lcom/android/server/am/ProcessRecord;)V
49116     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
49118     goto :goto_e
49119 .end method
49121 .method final scheduleAppGcsLocked()V
49122     .registers 13
49124     const-wide/16 v10, 0x1388
49126     const/4 v8, 0x5
49128     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
49130     invoke-virtual {v6, v8}, Landroid/os/Handler;->removeMessages(I)V
49132     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
49134     invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
49136     move-result v6
49138     if-lez v6, :cond_37
49140     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesToGc:Ljava/util/ArrayList;
49142     const/4 v7, 0x0
49144     invoke-virtual {v6, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
49146     move-result-object v3
49148     check-cast v3, Lcom/android/server/am/ProcessRecord;
49150     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
49152     invoke-virtual {v6, v8}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
49154     move-result-object v0
49156     iget-wide v6, v3, Lcom/android/server/am/ProcessRecord;->lastRequestedGc:J
49158     const-wide/32 v8, 0xea60
49160     add-long v4, v6, v8
49162     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
49164     move-result-wide v1
49166     add-long v6, v1, v10
49168     cmp-long v6, v4, v6
49170     if-gez v6, :cond_32
49172     add-long v4, v1, v10
49174     :cond_32
49175     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
49177     invoke-virtual {v6, v0, v4, v5}, Landroid/os/Handler;->sendMessageAtTime(Landroid/os/Message;J)Z
49179     :cond_37
49180     return-void
49181 .end method
49183 .method sendContinueUserSwitchLocked(Lcom/android/server/am/UserStartedState;II)V
49184     .registers 7
49186     const/4 v0, 0x0
49188     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCurUserSwitchCallback:Ljava/lang/Object;
49190     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
49192     const/16 v1, 0x24
49194     invoke-virtual {v0, v1}, Landroid/os/Handler;->removeMessages(I)V
49196     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
49198     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
49200     const/16 v2, 0x23
49202     invoke-virtual {v1, v2, p2, p3, p1}, Landroid/os/Handler;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;
49204     move-result-object v1
49206     invoke-virtual {v0, v1}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
49208     return-void
49209 .end method
49211 .method sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
49212     .registers 8
49214     const/4 v1, 0x0
49216     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
49218     array-length v3, v0
49220     const/4 v2, 0x0
49222     :goto_5
49223     if-ge v2, v3, :cond_11
49225     aget-object v4, v0, v2
49227     invoke-virtual {v4, p1}, Lcom/android/server/am/BroadcastQueue;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
49229     move-result v5
49231     or-int/2addr v1, v5
49233     add-int/lit8 v2, v2, 0x1
49235     goto :goto_5
49237     :cond_11
49238     return v1
49239 .end method
49241 .method final sendPendingThumbnail(Lcom/android/server/am/ActivityRecord;Landroid/os/IBinder;Landroid/graphics/Bitmap;Ljava/lang/CharSequence;Z)V
49242     .registers 15
49244     const/4 v6, 0x0
49246     const/4 v4, 0x0
49248     monitor-enter p0
49250     if-nez p1, :cond_f
49252     :try_start_5
49253     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
49255     invoke-virtual {v7, p2}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
49257     move-result-object p1
49259     if-nez p1, :cond_f
49261     monitor-exit p0
49263     :goto_e
49264     return-void
49266     :cond_f
49267     if-nez p3, :cond_1d
49269     iget-object v7, p1, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
49271     if-eqz v7, :cond_1d
49273     iget-object v7, p1, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
49275     iget-object p3, v7, Lcom/android/server/am/ThumbnailHolder;->lastThumbnail:Landroid/graphics/Bitmap;
49277     iget-object v7, p1, Lcom/android/server/am/ActivityRecord;->thumbHolder:Lcom/android/server/am/ThumbnailHolder;
49279     iget-object p4, v7, Lcom/android/server/am/ThumbnailHolder;->lastDescription:Ljava/lang/CharSequence;
49281     :cond_1d
49282     if-nez p3, :cond_26
49284     if-nez p5, :cond_26
49286     monitor-exit p0
49288     goto :goto_e
49290     :catchall_23
49291     move-exception v7
49293     :goto_24
49294     monitor-exit p0
49295     :try_end_25
49296     .catchall {:try_start_5 .. :try_end_25} :catchall_23
49298     throw v7
49300     :cond_26
49301     :try_start_26
49302     iget-object v6, p1, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
49304     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
49306     invoke-virtual {v7}, Ljava/util/ArrayList;->size()I
49307     :try_end_2d
49308     .catchall {:try_start_26 .. :try_end_2d} :catchall_23
49310     move-result v0
49312     const/4 v2, 0x0
49314     move-object v5, v4
49316     :goto_30
49317     if-ge v2, v0, :cond_65
49319     :try_start_32
49320     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
49322     invoke-virtual {v7, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
49324     move-result-object v3
49326     check-cast v3, Lcom/android/server/am/PendingThumbnailsRecord;
49328     iget-object v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->pendingRecords:Ljava/util/HashSet;
49330     invoke-virtual {v7, p1}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
49332     move-result v7
49334     if-eqz v7, :cond_60
49336     if-nez v5, :cond_9b
49338     new-instance v4, Ljava/util/ArrayList;
49340     invoke-direct {v4}, Ljava/util/ArrayList;-><init>()V
49341     :try_end_49
49342     .catchall {:try_start_32 .. :try_end_49} :catchall_98
49344     :goto_49
49345     :try_start_49
49346     invoke-virtual {v4, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
49348     iget-object v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->pendingRecords:Ljava/util/HashSet;
49350     invoke-virtual {v7}, Ljava/util/HashSet;->size()I
49352     move-result v7
49354     if-nez v7, :cond_61
49356     const/4 v7, 0x1
49358     iput-boolean v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->finished:Z
49360     iget-object v7, p0, Lcom/android/server/am/ActivityManagerService;->mPendingThumbnails:Ljava/util/ArrayList;
49362     invoke-virtual {v7, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
49363     :try_end_5c
49364     .catchall {:try_start_49 .. :try_end_5c} :catchall_23
49366     add-int/lit8 v0, v0, -0x1
49368     move-object v5, v4
49370     goto :goto_30
49372     :cond_60
49373     move-object v4, v5
49375     :cond_61
49376     add-int/lit8 v2, v2, 0x1
49378     move-object v5, v4
49380     goto :goto_30
49382     :cond_65
49383     :try_start_65
49384     monitor-exit p0
49385     :try_end_66
49386     .catchall {:try_start_65 .. :try_end_66} :catchall_98
49388     if-eqz v5, :cond_95
49390     invoke-virtual {v5}, Ljava/util/ArrayList;->size()I
49392     move-result v0
49394     const/4 v2, 0x0
49396     :goto_6d
49397     if-ge v2, v0, :cond_95
49399     :try_start_6f
49400     invoke-virtual {v5, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
49402     move-result-object v3
49404     check-cast v3, Lcom/android/server/am/PendingThumbnailsRecord;
49406     iget-object v8, v3, Lcom/android/server/am/PendingThumbnailsRecord;->receiver:Landroid/app/IThumbnailReceiver;
49408     if-eqz v6, :cond_8a
49410     iget v7, v6, Lcom/android/server/am/TaskRecord;->taskId:I
49412     :goto_7b
49413     invoke-interface {v8, v7, p3, p4}, Landroid/app/IThumbnailReceiver;->newThumbnail(ILandroid/graphics/Bitmap;Ljava/lang/CharSequence;)V
49415     iget-boolean v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->finished:Z
49417     if-eqz v7, :cond_87
49419     iget-object v7, v3, Lcom/android/server/am/PendingThumbnailsRecord;->receiver:Landroid/app/IThumbnailReceiver;
49421     invoke-interface {v7}, Landroid/app/IThumbnailReceiver;->finished()V
49422     :try_end_87
49423     .catch Ljava/lang/Exception; {:try_start_6f .. :try_end_87} :catch_8c
49425     :cond_87
49426     :goto_87
49427     add-int/lit8 v2, v2, 0x1
49429     goto :goto_6d
49431     :cond_8a
49432     const/4 v7, -0x1
49434     goto :goto_7b
49436     :catch_8c
49437     move-exception v1
49439     const-string v7, "ActivityManager"
49441     const-string v8, "Exception thrown when sending thumbnail"
49443     invoke-static {v7, v8, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
49445     goto :goto_87
49447     :cond_95
49448     move-object v4, v5
49450     goto/16 :goto_e
49452     :catchall_98
49453     move-exception v7
49455     move-object v4, v5
49457     goto :goto_24
49459     :cond_9b
49460     move-object v4, v5
49462     goto :goto_49
49463 .end method
49465 .method sendUserSwitchBroadcastsLocked(II)V
49466     .registers 21
49468     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
49470     move-result-wide v16
49472     if-ltz p1, :cond_2e
49474     :try_start_6
49475     new-instance v4, Landroid/content/Intent;
49477     const-string v1, "android.intent.action.USER_BACKGROUND"
49479     invoke-direct {v4, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
49481     const/high16 v1, 0x5000
49483     invoke-virtual {v4, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
49485     const-string v1, "android.intent.extra.user_handle"
49487     move/from16 v0, p1
49489     invoke-virtual {v4, v1, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
49491     const/4 v2, 0x0
49493     const/4 v3, 0x0
49495     const/4 v5, 0x0
49497     const/4 v6, 0x0
49499     const/4 v7, 0x0
49501     const/4 v8, 0x0
49503     const/4 v9, 0x0
49505     const/4 v10, 0x0
49507     const/4 v11, 0x0
49509     const/4 v12, 0x0
49511     sget v13, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
49513     const/16 v14, 0x3e8
49515     move-object/from16 v1, p0
49517     move/from16 v15, p1
49519     invoke-direct/range {v1 .. v15}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
49521     :cond_2e
49522     if-ltz p2, :cond_80
49524     new-instance v4, Landroid/content/Intent;
49526     const-string v1, "android.intent.action.USER_FOREGROUND"
49528     invoke-direct {v4, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
49530     const/high16 v1, 0x5000
49532     invoke-virtual {v4, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
49534     const-string v1, "android.intent.extra.user_handle"
49536     move/from16 v0, p2
49538     invoke-virtual {v4, v1, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
49540     const/4 v2, 0x0
49542     const/4 v3, 0x0
49544     const/4 v5, 0x0
49546     const/4 v6, 0x0
49548     const/4 v7, 0x0
49550     const/4 v8, 0x0
49552     const/4 v9, 0x0
49554     const/4 v10, 0x0
49556     const/4 v11, 0x0
49558     const/4 v12, 0x0
49560     sget v13, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
49562     const/16 v14, 0x3e8
49564     move-object/from16 v1, p0
49566     move/from16 v15, p2
49568     invoke-direct/range {v1 .. v15}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
49570     new-instance v4, Landroid/content/Intent;
49572     const-string v1, "android.intent.action.USER_SWITCHED"
49574     invoke-direct {v4, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
49576     const/high16 v1, 0x5000
49578     invoke-virtual {v4, v1}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
49580     const-string v1, "android.intent.extra.user_handle"
49582     move/from16 v0, p2
49584     invoke-virtual {v4, v1, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
49586     const/4 v2, 0x0
49588     const/4 v3, 0x0
49590     const/4 v5, 0x0
49592     const/4 v6, 0x0
49594     const/4 v7, 0x0
49596     const/4 v8, 0x0
49598     const/4 v9, 0x0
49600     const-string v10, "android.permission.MANAGE_USERS"
49602     const/4 v11, 0x0
49604     const/4 v12, 0x0
49606     sget v13, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
49608     const/16 v14, 0x3e8
49610     const/4 v15, -0x1
49612     move-object/from16 v1, p0
49614     invoke-direct/range {v1 .. v15}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
49615     :try_end_80
49616     .catchall {:try_start_6 .. :try_end_80} :catchall_84
49618     :cond_80
49619     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
49621     return-void
49623     :catchall_84
49624     move-exception v1
49626     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
49628     throw v1
49629 .end method
49631 .method public serviceDoneExecuting(Landroid/os/IBinder;III)V
49632     .registers 7
49634     monitor-enter p0
49636     :try_start_1
49637     instance-of v0, p1, Lcom/android/server/am/ServiceRecord;
49639     if-nez v0, :cond_10
49641     new-instance v0, Ljava/lang/IllegalArgumentException;
49643     const-string v1, "Invalid service token"
49645     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
49647     throw v0
49649     :catchall_d
49650     move-exception v0
49652     monitor-exit p0
49653     :try_end_f
49654     .catchall {:try_start_1 .. :try_end_f} :catchall_d
49656     throw v0
49658     :cond_10
49659     :try_start_10
49660     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
49662     check-cast p1, Lcom/android/server/am/ServiceRecord;
49664     invoke-virtual {v0, p1, p2, p3, p4}, Lcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;III)V
49666     monitor-exit p0
49667     :try_end_18
49668     .catchall {:try_start_10 .. :try_end_18} :catchall_d
49670     return-void
49671 .end method
49673 .method public setActivityController(Landroid/app/IActivityController;)V
49674     .registers 4
49676     const-string v0, "android.permission.SET_ACTIVITY_WATCHER"
49678     const-string v1, "setActivityController()"
49680     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
49682     monitor-enter p0
49684     :try_start_8
49685     iput-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mController:Landroid/app/IActivityController;
49687     monitor-exit p0
49689     return-void
49691     :catchall_c
49692     move-exception v0
49694     monitor-exit p0
49695     :try_end_e
49696     .catchall {:try_start_8 .. :try_end_e} :catchall_c
49698     throw v0
49699 .end method
49701 .method public setAlwaysFinish(Z)V
49702     .registers 5
49704     const-string v0, "android.permission.SET_ALWAYS_FINISH"
49706     const-string v1, "setAlwaysFinish()"
49708     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
49710     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
49712     invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
49714     move-result-object v1
49716     const-string v2, "always_finish_activities"
49718     if-eqz p1, :cond_1a
49720     const/4 v0, 0x1
49722     :goto_12
49723     invoke-static {v1, v2, v0}, Landroid/provider/Settings$Global;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
49725     monitor-enter p0
49727     :try_start_16
49728     iput-boolean p1, p0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
49730     monitor-exit p0
49732     return-void
49734     :cond_1a
49735     const/4 v0, 0x0
49737     goto :goto_12
49739     :catchall_1c
49740     move-exception v0
49742     monitor-exit p0
49743     :try_end_1e
49744     .catchall {:try_start_16 .. :try_end_1e} :catchall_1c
49746     throw v0
49747 .end method
49749 .method public setDebugApp(Ljava/lang/String;ZZ)V
49750     .registers 15
49752     const/4 v1, 0x1
49754     const/4 v2, 0x0
49756     const-string v0, "android.permission.SET_DEBUG_APP"
49758     const-string v3, "setDebugApp()"
49760     invoke-virtual {p0, v0, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
49762     if-eqz p3, :cond_1e
49764     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
49766     invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
49768     move-result-object v10
49770     const-string v0, "debug_app"
49772     invoke-static {v10, v0, p1}, Landroid/provider/Settings$Global;->putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z
49774     const-string v3, "wait_for_debugger"
49776     if-eqz p2, :cond_47
49778     move v0, v1
49780     :goto_1b
49781     invoke-static {v10, v3, v0}, Landroid/provider/Settings$Global;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
49783     :cond_1e
49784     monitor-enter p0
49786     if-nez p3, :cond_29
49788     :try_start_21
49789     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
49791     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mOrigDebugApp:Ljava/lang/String;
49793     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
49795     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mOrigWaitForDebugger:Z
49797     :cond_29
49798     iput-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mDebugApp:Ljava/lang/String;
49800     iput-boolean p2, p0, Lcom/android/server/am/ActivityManagerService;->mWaitForDebugger:Z
49802     if-nez p3, :cond_49
49804     :goto_2f
49805     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mDebugTransient:Z
49807     if-eqz p1, :cond_45
49809     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
49811     move-result-wide v8
49813     const/4 v2, -0x1
49815     const/4 v3, 0x0
49817     const/4 v4, 0x0
49819     const/4 v5, 0x1
49821     const/4 v6, 0x1
49823     const/4 v7, -0x1
49825     move-object v0, p0
49827     move-object v1, p1
49829     invoke-direct/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
49831     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
49833     :cond_45
49834     monitor-exit p0
49836     return-void
49838     :cond_47
49839     move v0, v2
49841     goto :goto_1b
49843     :cond_49
49844     move v1, v2
49846     goto :goto_2f
49848     :catchall_4b
49849     move-exception v0
49851     monitor-exit p0
49852     :try_end_4d
49853     .catchall {:try_start_21 .. :try_end_4d} :catchall_4b
49855     throw v0
49856 .end method
49858 .method final setFocusedActivityLocked(Lcom/android/server/am/ActivityRecord;)V
49859     .registers 5
49861     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mFocusedActivity:Lcom/android/server/am/ActivityRecord;
49863     if-eq v0, p1, :cond_10
49865     iput-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mFocusedActivity:Lcom/android/server/am/ActivityRecord;
49867     if-eqz p1, :cond_10
49869     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
49871     iget-object v1, p1, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
49873     const/4 v2, 0x1
49875     invoke-virtual {v0, v1, v2}, Lcom/android/server/wm/WindowManagerService;->setFocusedApp(Landroid/os/IBinder;Z)V
49877     :cond_10
49878     return-void
49879 .end method
49881 .method public setFrontActivityScreenCompatMode(I)V
49882     .registers 4
49884     const-string v0, "android.permission.SET_SCREEN_COMPATIBILITY"
49886     const-string v1, "setFrontActivityScreenCompatMode"
49888     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
49890     monitor-enter p0
49892     :try_start_8
49893     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
49895     invoke-virtual {v0, p1}, Lcom/android/server/am/CompatModePackages;->setFrontActivityScreenCompatModeLocked(I)V
49897     monitor-exit p0
49899     return-void
49901     :catchall_f
49902     move-exception v0
49904     monitor-exit p0
49905     :try_end_11
49906     .catchall {:try_start_8 .. :try_end_11} :catchall_f
49908     throw v0
49909 .end method
49911 .method public setImmersive(Landroid/os/IBinder;Z)V
49912     .registers 5
49914     monitor-enter p0
49916     :try_start_1
49917     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
49919     invoke-virtual {v1, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
49921     move-result-object v0
49923     if-nez v0, :cond_12
49925     new-instance v1, Ljava/lang/IllegalArgumentException;
49927     invoke-direct {v1}, Ljava/lang/IllegalArgumentException;-><init>()V
49929     throw v1
49931     :catchall_f
49932     move-exception v1
49934     monitor-exit p0
49935     :try_end_11
49936     .catchall {:try_start_1 .. :try_end_11} :catchall_f
49938     throw v1
49940     :cond_12
49941     :try_start_12
49942     iput-boolean p2, v0, Lcom/android/server/am/ActivityRecord;->immersive:Z
49944     monitor-exit p0
49945     :try_end_15
49946     .catchall {:try_start_12 .. :try_end_15} :catchall_f
49948     return-void
49949 .end method
49951 .method public setLockScreenShown(Z)V
49952     .registers 4
49954     const-string v0, "android.permission.DEVICE_POWER"
49956     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
49958     move-result v0
49960     if-eqz v0, :cond_10
49962     new-instance v0, Ljava/lang/SecurityException;
49964     const-string v1, "Requires permission android.permission.DEVICE_POWER"
49966     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
49968     throw v0
49970     :cond_10
49971     monitor-enter p0
49973     :try_start_11
49974     iput-boolean p1, p0, Lcom/android/server/am/ActivityManagerService;->mLockScreenShown:Z
49976     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->comeOutOfSleepIfNeededLocked()V
49978     monitor-exit p0
49980     return-void
49982     :catchall_18
49983     move-exception v0
49985     monitor-exit p0
49986     :try_end_1a
49987     .catchall {:try_start_11 .. :try_end_1a} :catchall_18
49989     throw v0
49990 .end method
49992 .method setOpenGlTraceApp(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;)V
49993     .registers 7
49995     monitor-enter p0
49997     :try_start_1
49998     const-string v1, "1"
50000     const-string v2, "ro.debuggable"
50002     const-string v3, "0"
50004     invoke-static {v2, v3}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
50006     move-result-object v2
50008     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
50010     move-result v0
50012     if-nez v0, :cond_35
50014     iget v1, p1, Landroid/content/pm/ApplicationInfo;->flags:I
50016     and-int/lit8 v1, v1, 0x2
50018     if-nez v1, :cond_35
50020     new-instance v1, Ljava/lang/SecurityException;
50022     new-instance v2, Ljava/lang/StringBuilder;
50024     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
50026     const-string v3, "Process not debuggable: "
50028     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50030     move-result-object v2
50032     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
50034     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50036     move-result-object v2
50038     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50040     move-result-object v2
50042     invoke-direct {v1, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
50044     throw v1
50046     :catchall_32
50047     move-exception v1
50049     monitor-exit p0
50050     :try_end_34
50051     .catchall {:try_start_1 .. :try_end_34} :catchall_32
50053     throw v1
50055     :cond_35
50056     :try_start_35
50057     iput-object p2, p0, Lcom/android/server/am/ActivityManagerService;->mOpenGlTraceApp:Ljava/lang/String;
50059     monitor-exit p0
50060     :try_end_38
50061     .catchall {:try_start_35 .. :try_end_38} :catchall_32
50063     return-void
50064 .end method
50066 .method public setPackageAskScreenCompat(Ljava/lang/String;Z)V
50067     .registers 5
50069     const-string v0, "android.permission.SET_SCREEN_COMPATIBILITY"
50071     const-string v1, "setPackageAskScreenCompat"
50073     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
50075     monitor-enter p0
50077     :try_start_8
50078     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
50080     invoke-virtual {v0, p1, p2}, Lcom/android/server/am/CompatModePackages;->setPackageAskCompatModeLocked(Ljava/lang/String;Z)V
50082     monitor-exit p0
50084     return-void
50086     :catchall_f
50087     move-exception v0
50089     monitor-exit p0
50090     :try_end_11
50091     .catchall {:try_start_8 .. :try_end_11} :catchall_f
50093     throw v0
50094 .end method
50096 .method public setPackageScreenCompatMode(Ljava/lang/String;I)V
50097     .registers 5
50099     const-string v0, "android.permission.SET_SCREEN_COMPATIBILITY"
50101     const-string v1, "setPackageScreenCompatMode"
50103     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
50105     monitor-enter p0
50107     :try_start_8
50108     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mCompatModePackages:Lcom/android/server/am/CompatModePackages;
50110     invoke-virtual {v0, p1, p2}, Lcom/android/server/am/CompatModePackages;->setPackageScreenCompatModeLocked(Ljava/lang/String;I)V
50112     monitor-exit p0
50114     return-void
50116     :catchall_f
50117     move-exception v0
50119     monitor-exit p0
50120     :try_end_11
50121     .catchall {:try_start_8 .. :try_end_11} :catchall_f
50123     throw v0
50124 .end method
50126 .method public setProcessForeground(Landroid/os/IBinder;IZ)V
50127     .registers 12
50129     const-string v4, "android.permission.SET_PROCESS_LIMIT"
50131     const-string v5, "setProcessForeground()"
50133     invoke-virtual {p0, v4, v5}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
50135     monitor-enter p0
50137     const/4 v0, 0x0
50139     :try_start_9
50140     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
50142     monitor-enter v5
50143     :try_end_c
50144     .catchall {:try_start_9 .. :try_end_c} :catchall_6f
50146     :try_start_c
50147     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
50149     invoke-virtual {v4, p2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
50151     move-result-object v3
50153     check-cast v3, Lcom/android/server/am/ProcessRecord;
50155     if-nez v3, :cond_33
50157     if-eqz p3, :cond_33
50159     const-string v4, "ActivityManager"
50161     new-instance v6, Ljava/lang/StringBuilder;
50163     invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
50165     const-string v7, "setProcessForeground called on unknown pid: "
50167     invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50169     move-result-object v6
50171     invoke-virtual {v6, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
50173     move-result-object v6
50175     invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50177     move-result-object v6
50179     invoke-static {v4, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
50181     monitor-exit v5
50182     :try_end_31
50183     .catchall {:try_start_c .. :try_end_31} :catchall_72
50185     :try_start_31
50186     monitor-exit p0
50187     :try_end_32
50188     .catchall {:try_start_31 .. :try_end_32} :catchall_6f
50190     :goto_32
50191     return-void
50193     :cond_33
50194     :try_start_33
50195     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
50197     invoke-virtual {v4, p2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
50199     move-result-object v2
50201     check-cast v2, Lcom/android/server/am/ActivityManagerService$ForegroundToken;
50203     if-eqz v2, :cond_4e
50205     iget-object v4, v2, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->token:Landroid/os/IBinder;
50207     const/4 v6, 0x0
50209     invoke-interface {v4, v2, v6}, Landroid/os/IBinder;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z
50211     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
50213     invoke-virtual {v4, p2}, Landroid/util/SparseArray;->remove(I)V
50215     if-eqz v3, :cond_4d
50217     const/4 v4, 0x0
50219     iput-object v4, v3, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
50221     :cond_4d
50222     const/4 v0, 0x1
50224     :cond_4e
50225     if-eqz p3, :cond_67
50227     if-eqz p1, :cond_67
50229     new-instance v1, Lcom/android/server/am/ActivityManagerService$8;
50231     invoke-direct {v1, p0}, Lcom/android/server/am/ActivityManagerService$8;-><init>(Lcom/android/server/am/ActivityManagerService;)V
50233     iput p2, v1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->pid:I
50235     iput-object p1, v1, Lcom/android/server/am/ActivityManagerService$ForegroundToken;->token:Landroid/os/IBinder;
50236     :try_end_5b
50237     .catchall {:try_start_33 .. :try_end_5b} :catchall_72
50239     const/4 v4, 0x0
50241     :try_start_5c
50242     invoke-interface {p1, v1, v4}, Landroid/os/IBinder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
50244     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mForegroundProcesses:Landroid/util/SparseArray;
50246     invoke-virtual {v4, p2, v1}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
50248     iput-object p1, v3, Lcom/android/server/am/ProcessRecord;->forcingToForeground:Landroid/os/IBinder;
50249     :try_end_66
50250     .catchall {:try_start_5c .. :try_end_66} :catchall_72
50251     .catch Landroid/os/RemoteException; {:try_start_5c .. :try_end_66} :catch_75
50253     const/4 v0, 0x1
50255     :cond_67
50256     :goto_67
50257     :try_start_67
50258     monitor-exit v5
50259     :try_end_68
50260     .catchall {:try_start_67 .. :try_end_68} :catchall_72
50262     if-eqz v0, :cond_6d
50264     :try_start_6a
50265     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
50267     :cond_6d
50268     monitor-exit p0
50270     goto :goto_32
50272     :catchall_6f
50273     move-exception v4
50275     monitor-exit p0
50276     :try_end_71
50277     .catchall {:try_start_6a .. :try_end_71} :catchall_6f
50279     throw v4
50281     :catchall_72
50282     move-exception v4
50284     :try_start_73
50285     monitor-exit v5
50286     :try_end_74
50287     .catchall {:try_start_73 .. :try_end_74} :catchall_72
50289     :try_start_74
50290     throw v4
50291     :try_end_75
50292     .catchall {:try_start_74 .. :try_end_75} :catchall_6f
50294     :catch_75
50295     move-exception v4
50297     goto :goto_67
50298 .end method
50300 .method public setProcessLimit(I)V
50301     .registers 4
50303     const-string v0, "android.permission.SET_PROCESS_LIMIT"
50305     const-string v1, "setProcessLimit()"
50307     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
50309     monitor-enter p0
50311     if-gez p1, :cond_15
50313     const/16 v0, 0x18
50315     :goto_c
50316     :try_start_c
50317     iput v0, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimit:I
50319     iput p1, p0, Lcom/android/server/am/ActivityManagerService;->mProcessLimitOverride:I
50321     monitor-exit p0
50322     :try_end_11
50323     .catchall {:try_start_c .. :try_end_11} :catchall_17
50325     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->trimApplications()V
50327     return-void
50329     :cond_15
50330     move v0, p1
50332     goto :goto_c
50334     :catchall_17
50335     move-exception v0
50337     :try_start_18
50338     monitor-exit p0
50339     :try_end_19
50340     .catchall {:try_start_18 .. :try_end_19} :catchall_17
50342     throw v0
50343 .end method
50345 .method setProfileApp(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Z)V
50346     .registers 10
50348     monitor-enter p0
50350     :try_start_1
50351     const-string v1, "1"
50353     const-string v2, "ro.debuggable"
50355     const-string v3, "0"
50357     invoke-static {v2, v3}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
50359     move-result-object v2
50361     invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
50363     move-result v0
50365     if-nez v0, :cond_35
50367     iget v1, p1, Landroid/content/pm/ApplicationInfo;->flags:I
50369     and-int/lit8 v1, v1, 0x2
50371     if-nez v1, :cond_35
50373     new-instance v1, Ljava/lang/SecurityException;
50375     new-instance v2, Ljava/lang/StringBuilder;
50377     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
50379     const-string v3, "Process not debuggable: "
50381     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50383     move-result-object v2
50385     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
50387     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
50389     move-result-object v2
50391     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
50393     move-result-object v2
50395     invoke-direct {v1, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
50397     throw v1
50399     :catchall_32
50400     move-exception v1
50402     monitor-exit p0
50403     :try_end_34
50404     .catchall {:try_start_1 .. :try_end_34} :catchall_32
50406     throw v1
50408     :cond_35
50409     :try_start_35
50410     iput-object p2, p0, Lcom/android/server/am/ActivityManagerService;->mProfileApp:Ljava/lang/String;
50412     iput-object p3, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFile:Ljava/lang/String;
50414     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
50415     :try_end_3b
50416     .catchall {:try_start_35 .. :try_end_3b} :catchall_32
50418     if-eqz v1, :cond_45
50420     :try_start_3d
50421     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
50423     invoke-virtual {v1}, Landroid/os/ParcelFileDescriptor;->close()V
50424     :try_end_42
50425     .catchall {:try_start_3d .. :try_end_42} :catchall_32
50426     .catch Ljava/io/IOException; {:try_start_3d .. :try_end_42} :catch_4e
50428     :goto_42
50429     const/4 v1, 0x0
50431     :try_start_43
50432     iput-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
50434     :cond_45
50435     iput-object p4, p0, Lcom/android/server/am/ActivityManagerService;->mProfileFd:Landroid/os/ParcelFileDescriptor;
50437     const/4 v1, 0x0
50439     iput v1, p0, Lcom/android/server/am/ActivityManagerService;->mProfileType:I
50441     iput-boolean p5, p0, Lcom/android/server/am/ActivityManagerService;->mAutoStopProfiler:Z
50443     monitor-exit p0
50444     :try_end_4d
50445     .catchall {:try_start_43 .. :try_end_4d} :catchall_32
50447     return-void
50449     :catch_4e
50450     move-exception v1
50452     goto :goto_42
50453 .end method
50455 .method public setRequestedOrientation(Landroid/os/IBinder;I)V
50456     .registers 11
50458     const/4 v4, 0x0
50460     monitor-enter p0
50462     :try_start_2
50463     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
50465     invoke-virtual {v5, p1}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
50467     move-result-object v3
50469     if-nez v3, :cond_c
50471     monitor-exit p0
50473     :goto_b
50474     return-void
50476     :cond_c
50477     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
50479     move-result-wide v1
50481     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
50483     iget-object v6, v3, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
50485     invoke-virtual {v5, v6, p2}, Lcom/android/server/wm/WindowManagerService;->setAppOrientation(Landroid/view/IApplicationToken;I)V
50487     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
50489     iget-object v6, p0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
50491     iget-object v7, v3, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
50493     invoke-virtual {v3, v7}, Lcom/android/server/am/ActivityRecord;->mayFreezeScreenLocked(Lcom/android/server/am/ProcessRecord;)Z
50495     move-result v7
50497     if-eqz v7, :cond_25
50499     iget-object v4, v3, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
50501     :cond_25
50502     invoke-virtual {v5, v6, v4}, Lcom/android/server/wm/WindowManagerService;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;)Landroid/content/res/Configuration;
50504     move-result-object v0
50506     if-eqz v0, :cond_3c
50508     const/4 v4, 0x1
50510     iput-boolean v4, v3, Lcom/android/server/am/ActivityRecord;->frozenBeforeDestroy:Z
50512     const/4 v4, 0x0
50514     const/4 v5, 0x0
50516     invoke-virtual {p0, v0, v3, v4, v5}, Lcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
50518     move-result v4
50520     if-nez v4, :cond_3c
50522     iget-object v4, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
50524     const/4 v5, 0x0
50526     invoke-virtual {v4, v5}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
50528     :cond_3c
50529     invoke-static {v1, v2}, Landroid/os/Binder;->restoreCallingIdentity(J)V
50531     monitor-exit p0
50533     goto :goto_b
50535     :catchall_41
50536     move-exception v4
50538     monitor-exit p0
50539     :try_end_43
50540     .catchall {:try_start_2 .. :try_end_43} :catchall_41
50542     throw v4
50543 .end method
50545 .method public setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;Z)V
50546     .registers 12
50548     monitor-enter p0
50550     :try_start_1
50551     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
50553     move-object v1, p1
50555     move-object v2, p2
50557     move v3, p3
50559     move-object v4, p4
50561     move v5, p5
50563     invoke-virtual/range {v0 .. v5}, Lcom/android/server/am/ActiveServices;->setServiceForegroundLocked(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;Z)V
50565     monitor-exit p0
50567     return-void
50569     :catchall_d
50570     move-exception v0
50572     monitor-exit p0
50573     :try_end_f
50574     .catchall {:try_start_1 .. :try_end_f} :catchall_d
50576     throw v0
50577 .end method
50579 .method public setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
50580     .registers 2
50582     iput-object p1, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
50584     return-void
50585 .end method
50587 .method public showBootMessage(Ljava/lang/CharSequence;Z)V
50588     .registers 4
50590     const-string v0, "showBootMessage"
50592     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
50594     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
50596     invoke-virtual {v0, p1, p2}, Lcom/android/server/wm/WindowManagerService;->showBootMessage(Ljava/lang/CharSequence;Z)V
50598     return-void
50599 .end method
50601 .method final showLaunchWarningLocked(Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)V
50602     .registers 5
50604     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchWarningShown:Z
50606     if-nez v0, :cond_11
50608     const/4 v0, 0x1
50610     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mLaunchWarningShown:Z
50612     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
50614     new-instance v1, Lcom/android/server/am/ActivityManagerService$5;
50616     invoke-direct {v1, p0, p1, p2}, Lcom/android/server/am/ActivityManagerService$5;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActivityRecord;Lcom/android/server/am/ActivityRecord;)V
50618     invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
50620     :cond_11
50621     return-void
50622 .end method
50624 .method public final showSafeModeOverlay()V
50625     .registers 7
50627     const/4 v5, -0x2
50629     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
50631     invoke-static {v2}, Landroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater;
50633     move-result-object v2
50635     const v3, 0x10900b3
50637     const/4 v4, 0x0
50639     invoke-virtual {v2, v3, v4}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
50641     move-result-object v1
50643     new-instance v0, Landroid/view/WindowManager$LayoutParams;
50645     invoke-direct {v0}, Landroid/view/WindowManager$LayoutParams;-><init>()V
50647     const/16 v2, 0x7df
50649     iput v2, v0, Landroid/view/WindowManager$LayoutParams;->type:I
50651     iput v5, v0, Landroid/view/WindowManager$LayoutParams;->width:I
50653     iput v5, v0, Landroid/view/WindowManager$LayoutParams;->height:I
50655     const v2, 0x800053
50657     iput v2, v0, Landroid/view/WindowManager$LayoutParams;->gravity:I
50659     invoke-virtual {v1}, Landroid/view/View;->getBackground()Landroid/graphics/drawable/Drawable;
50661     move-result-object v2
50663     invoke-virtual {v2}, Landroid/graphics/drawable/Drawable;->getOpacity()I
50665     move-result v2
50667     iput v2, v0, Landroid/view/WindowManager$LayoutParams;->format:I
50669     const/16 v2, 0x18
50671     iput v2, v0, Landroid/view/WindowManager$LayoutParams;->flags:I
50673     iget v2, v0, Landroid/view/WindowManager$LayoutParams;->privateFlags:I
50675     or-int/lit8 v2, v2, 0x10
50677     iput v2, v0, Landroid/view/WindowManager$LayoutParams;->privateFlags:I
50679     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
50681     const-string v3, "window"
50683     invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
50685     move-result-object v2
50687     check-cast v2, Landroid/view/WindowManager;
50689     invoke-interface {v2, v1, v0}, Landroid/view/WindowManager;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
50691     return-void
50692 .end method
50694 .method public showWaitingForDebugger(Landroid/app/IApplicationThread;Z)V
50695     .registers 6
50697     monitor-enter p0
50699     if-eqz p1, :cond_b
50701     :try_start_3
50702     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
50704     move-result-object v0
50706     :goto_7
50707     if-nez v0, :cond_d
50709     monitor-exit p0
50711     :goto_a
50712     return-void
50714     :cond_b
50715     const/4 v0, 0x0
50717     goto :goto_7
50719     :cond_d
50720     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
50722     move-result-object v1
50724     const/4 v2, 0x6
50726     iput v2, v1, Landroid/os/Message;->what:I
50728     iput-object v0, v1, Landroid/os/Message;->obj:Ljava/lang/Object;
50730     if-eqz p2, :cond_25
50732     const/4 v2, 0x1
50734     :goto_19
50735     iput v2, v1, Landroid/os/Message;->arg1:I
50737     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
50739     invoke-virtual {v2, v1}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
50741     monitor-exit p0
50743     goto :goto_a
50745     :catchall_22
50746     move-exception v2
50748     monitor-exit p0
50749     :try_end_24
50750     .catchall {:try_start_3 .. :try_end_24} :catchall_22
50752     throw v2
50754     :cond_25
50755     const/4 v2, 0x0
50757     goto :goto_19
50758 .end method
50760 .method public shutdown(I)Z
50761     .registers 11
50763     const-string v5, "android.permission.SHUTDOWN"
50765     invoke-virtual {p0, v5}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
50767     move-result v5
50769     if-eqz v5, :cond_10
50771     new-instance v5, Ljava/lang/SecurityException;
50773     const-string v6, "Requires permission android.permission.SHUTDOWN"
50775     invoke-direct {v5, v6}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
50777     throw v5
50779     :cond_10
50780     const/4 v4, 0x0
50782     monitor-enter p0
50784     const/4 v5, 0x1
50786     :try_start_13
50787     iput-boolean v5, p0, Lcom/android/server/am/ActivityManagerService;->mShuttingDown:Z
50789     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V
50791     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
50793     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
50795     if-eqz v5, :cond_4a
50797     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
50799     invoke-virtual {v5}, Lcom/android/server/am/ActivityStack;->stopIfSleepingLocked()V
50801     invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
50803     move-result-wide v5
50805     int-to-long v7, p1
50807     add-long v2, v5, v7
50809     :goto_2a
50810     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
50812     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
50814     if-nez v5, :cond_36
50816     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
50818     iget-object v5, v5, Lcom/android/server/am/ActivityStack;->mPausingActivity:Lcom/android/server/am/ActivityRecord;
50820     if-eqz v5, :cond_4a
50822     :cond_36
50823     invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
50825     move-result-wide v5
50827     sub-long v0, v2, v5
50829     const-wide/16 v5, 0x0
50831     cmp-long v5, v0, v5
50833     if-gtz v5, :cond_56
50835     const-string v5, "ActivityManager"
50837     const-string v6, "Activity manager shutdown timed out"
50839     invoke-static {v5, v6}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
50841     const/4 v4, 0x1
50843     :cond_4a
50844     monitor-exit p0
50845     :try_end_4b
50846     .catchall {:try_start_13 .. :try_end_4b} :catchall_5c
50848     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
50850     invoke-virtual {v5}, Lcom/android/server/am/UsageStatsService;->shutdown()V
50852     iget-object v5, p0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
50854     invoke-virtual {v5}, Lcom/android/server/am/BatteryStatsService;->shutdown()V
50856     return v4
50858     :cond_56
50859     :try_start_56
50860     invoke-virtual {p0}, Ljava/lang/Object;->wait()V
50861     :try_end_59
50862     .catchall {:try_start_56 .. :try_end_59} :catchall_5c
50863     .catch Ljava/lang/InterruptedException; {:try_start_56 .. :try_end_59} :catch_5a
50865     goto :goto_2a
50867     :catch_5a
50868     move-exception v5
50870     goto :goto_2a
50872     :catchall_5c
50873     move-exception v5
50875     :try_start_5d
50876     monitor-exit p0
50877     :try_end_5e
50878     .catchall {:try_start_5d .. :try_end_5e} :catchall_5c
50880     throw v5
50881 .end method
50883 .method public signalPersistentProcesses(I)V
50884     .registers 6
50885     .annotation system Ldalvik/annotation/Throws;
50886         value = {
50887             Landroid/os/RemoteException;
50888         }
50889     .end annotation
50891     const/16 v2, 0xa
50893     if-eq p1, v2, :cond_c
50895     new-instance v2, Ljava/lang/SecurityException;
50897     const-string v3, "Only SIGNAL_USR1 is allowed"
50899     invoke-direct {v2, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
50901     throw v2
50903     :cond_c
50904     monitor-enter p0
50906     :try_start_d
50907     const-string v2, "android.permission.SIGNAL_PERSISTENT_PROCESSES"
50909     invoke-virtual {p0, v2}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
50911     move-result v2
50913     if-eqz v2, :cond_20
50915     new-instance v2, Ljava/lang/SecurityException;
50917     const-string v3, "Requires permission android.permission.SIGNAL_PERSISTENT_PROCESSES"
50919     invoke-direct {v2, v3}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
50921     throw v2
50923     :catchall_1d
50924     move-exception v2
50926     monitor-exit p0
50927     :try_end_1f
50928     .catchall {:try_start_d .. :try_end_1f} :catchall_1d
50930     throw v2
50932     :cond_20
50933     :try_start_20
50934     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
50936     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
50938     move-result v2
50940     add-int/lit8 v0, v2, -0x1
50942     :goto_28
50943     if-ltz v0, :cond_42
50945     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
50947     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
50949     move-result-object v1
50951     check-cast v1, Lcom/android/server/am/ProcessRecord;
50953     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
50955     if-eqz v2, :cond_3f
50957     iget-boolean v2, v1, Lcom/android/server/am/ProcessRecord;->persistent:Z
50959     if-eqz v2, :cond_3f
50961     iget v2, v1, Lcom/android/server/am/ProcessRecord;->pid:I
50963     invoke-static {v2, p1}, Landroid/os/Process;->sendSignal(II)V
50965     :cond_3f
50966     add-int/lit8 v0, v0, -0x1
50968     goto :goto_28
50970     :cond_42
50971     monitor-exit p0
50972     :try_end_43
50973     .catchall {:try_start_20 .. :try_end_43} :catchall_1d
50975     return-void
50976 .end method
50978 .method skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
50979     .registers 6
50981     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
50983     array-length v2, v0
50985     const/4 v1, 0x0
50987     :goto_4
50988     if-ge v1, v2, :cond_e
50990     aget-object v3, v0, v1
50992     invoke-virtual {v3, p1}, Lcom/android/server/am/BroadcastQueue;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
50994     add-int/lit8 v1, v1, 0x1
50996     goto :goto_4
50998     :cond_e
50999     return-void
51000 .end method
51002 .method skipPendingBroadcastLocked(I)V
51003     .registers 8
51005     const-string v4, "ActivityManager"
51007     const-string v5, "Unattached app died before broadcast acknowledged, skipping"
51009     invoke-static {v4, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
51011     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mBroadcastQueues:[Lcom/android/server/am/BroadcastQueue;
51013     array-length v2, v0
51015     const/4 v1, 0x0
51017     :goto_b
51018     if-ge v1, v2, :cond_15
51020     aget-object v3, v0, v1
51022     invoke-virtual {v3, p1}, Lcom/android/server/am/BroadcastQueue;->skipPendingBroadcastLocked(I)V
51024     add-int/lit8 v1, v1, 0x1
51026     goto :goto_b
51028     :cond_15
51029     return-void
51030 .end method
51032 .method public final startActivities(Landroid/app/IApplicationThread;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I
51033     .registers 16
51035     const-string v0, "startActivities"
51037     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
51039     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
51041     move-result v1
51043     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
51045     move-result v2
51047     const/4 v4, 0x0
51049     const/4 v5, 0x1
51051     const-string v6, "startActivity"
51053     const/4 v7, 0x0
51055     move-object v0, p0
51057     move v3, p6
51059     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
51061     move-result p6
51063     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51065     const/4 v2, -0x1
51067     move-object v1, p1
51069     move-object v3, p2
51071     move-object v4, p3
51073     move-object v5, p4
51075     move-object v6, p5
51077     move v7, p6
51079     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityStack;->startActivities(Landroid/app/IApplicationThread;I[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I
51081     move-result v8
51083     return v8
51084 .end method
51086 .method final startActivitiesInPackage(I[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I
51087     .registers 16
51089     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
51091     move-result v1
51093     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
51095     move-result v2
51097     const/4 v4, 0x0
51099     const/4 v5, 0x1
51101     const-string v6, "startActivityInPackage"
51103     const/4 v7, 0x0
51105     move-object v0, p0
51107     move v3, p6
51109     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
51111     move-result p6
51113     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51115     const/4 v1, 0x0
51117     move v2, p1
51119     move-object v3, p2
51121     move-object v4, p3
51123     move-object v5, p4
51125     move-object v6, p5
51127     move v7, p6
51129     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityStack;->startActivities(Landroid/app/IApplicationThread;I[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I
51131     move-result v8
51133     return v8
51134 .end method
51136 .method public final startActivity(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;)I
51137     .registers 23
51139     invoke-static {}, Landroid/os/UserHandle;->getCallingUserId()I
51141     move-result v11
51143     move-object v0, p0
51145     move-object v1, p1
51147     move-object v2, p2
51149     move-object v3, p3
51151     move-object/from16 v4, p4
51153     move-object/from16 v5, p5
51155     move/from16 v6, p6
51157     move/from16 v7, p7
51159     move-object/from16 v8, p8
51161     move-object/from16 v9, p9
51163     move-object/from16 v10, p10
51165     invoke-virtual/range {v0 .. v11}, Lcom/android/server/am/ActivityManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;I)I
51167     move-result v0
51169     return v0
51170 .end method
51172 .method public final startActivityAndWait(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;I)Landroid/app/IActivityManager$WaitResult;
51173     .registers 27
51175     const-string v0, "startActivityAndWait"
51177     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
51179     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
51181     move-result v1
51183     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
51185     move-result v2
51187     const/4 v4, 0x0
51189     const/4 v5, 0x1
51191     const-string v6, "startActivityAndWait"
51193     const/4 v7, 0x0
51195     move-object v0, p0
51197     move/from16 v3, p11
51199     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
51201     move-result p11
51203     new-instance v11, Landroid/app/IActivityManager$WaitResult;
51205     invoke-direct {v11}, Landroid/app/IActivityManager$WaitResult;-><init>()V
51207     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51209     const/4 v2, -0x1
51211     const/4 v12, 0x0
51213     invoke-static {}, Landroid/os/UserHandle;->getCallingUserId()I
51215     move-result v14
51217     move-object/from16 v1, p1
51219     move-object/from16 v3, p2
51221     move-object/from16 v4, p3
51223     move-object/from16 v5, p4
51225     move-object/from16 v6, p5
51227     move/from16 v7, p6
51229     move/from16 v8, p7
51231     move-object/from16 v9, p8
51233     move-object/from16 v10, p9
51235     move-object/from16 v13, p10
51237     invoke-virtual/range {v0 .. v14}, Lcom/android/server/am/ActivityStack;->startActivityMayWait(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/app/IActivityManager$WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;I)I
51239     return-object v11
51240 .end method
51242 .method public final startActivityAsUser(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/Bundle;I)I
51243     .registers 27
51245     const-string v0, "startActivity"
51247     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
51249     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
51251     move-result v1
51253     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
51255     move-result v2
51257     const/4 v4, 0x0
51259     const/4 v5, 0x1
51261     const-string v6, "startActivity"
51263     const/4 v7, 0x0
51265     move-object v0, p0
51267     move/from16 v3, p11
51269     invoke-virtual/range {v0 .. v7}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
51271     move-result p11
51273     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51275     const/4 v2, -0x1
51277     const/4 v11, 0x0
51279     const/4 v12, 0x0
51281     move-object/from16 v1, p1
51283     move-object/from16 v3, p2
51285     move-object/from16 v4, p3
51287     move-object/from16 v5, p4
51289     move-object/from16 v6, p5
51291     move/from16 v7, p6
51293     move/from16 v8, p7
51295     move-object/from16 v9, p8
51297     move-object/from16 v10, p9
51299     move-object/from16 v13, p10
51301     move/from16 v14, p11
51303     invoke-virtual/range {v0 .. v14}, Lcom/android/server/am/ActivityStack;->startActivityMayWait(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/app/IActivityManager$WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;I)I
51305     move-result v0
51307     return v0
51308 .end method
51310 .method final startActivityInPackage(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/os/Bundle;I)I
51311     .registers 27
51313     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
51315     move-result v2
51317     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
51319     move-result v3
51321     const/4 v5, 0x0
51323     const/4 v6, 0x1
51325     const-string v7, "startActivityInPackage"
51327     const/4 v8, 0x0
51329     move-object/from16 v1, p0
51331     move/from16 v4, p9
51333     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
51335     move-result p9
51337     move-object/from16 v0, p0
51339     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51341     const/4 v2, 0x0
51343     const/4 v10, 0x0
51345     const/4 v11, 0x0
51347     const/4 v12, 0x0
51349     const/4 v13, 0x0
51351     move/from16 v3, p1
51353     move-object/from16 v4, p2
51355     move-object/from16 v5, p3
51357     move-object/from16 v6, p4
51359     move-object/from16 v7, p5
51361     move/from16 v8, p6
51363     move/from16 v9, p7
51365     move-object/from16 v14, p8
51367     move/from16 v15, p9
51369     invoke-virtual/range {v1 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityMayWait(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/app/IActivityManager$WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;I)I
51371     move-result v16
51373     return v16
51374 .end method
51376 .method public startActivityIntentSender(Landroid/app/IApplicationThread;Landroid/content/IntentSender;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
51377     .registers 25
51379     const-string v1, "startActivityIntentSender"
51381     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
51383     if-eqz p3, :cond_15
51385     invoke-virtual/range {p3 .. p3}, Landroid/content/Intent;->hasFileDescriptors()Z
51387     move-result v1
51389     if-eqz v1, :cond_15
51391     new-instance v1, Ljava/lang/IllegalArgumentException;
51393     const-string v2, "File descriptors passed in Intent"
51395     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
51397     throw v1
51399     :cond_15
51400     invoke-virtual/range {p2 .. p2}, Landroid/content/IntentSender;->getTarget()Landroid/content/IIntentSender;
51402     move-result-object v13
51404     instance-of v1, v13, Lcom/android/server/am/PendingIntentRecord;
51406     if-nez v1, :cond_25
51408     new-instance v1, Ljava/lang/IllegalArgumentException;
51410     const-string v2, "Bad PendingIntent object"
51412     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
51414     throw v1
51416     :cond_25
51417     move-object v0, v13
51419     check-cast v0, Lcom/android/server/am/PendingIntentRecord;
51421     monitor-enter p0
51423     :try_start_29
51424     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51426     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
51428     if-eqz v1, :cond_43
51430     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51432     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mResumedActivity:Lcom/android/server/am/ActivityRecord;
51434     iget-object v1, v1, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
51436     iget-object v1, v1, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
51438     iget v1, v1, Landroid/content/pm/ApplicationInfo;->uid:I
51440     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
51442     move-result v2
51444     if-ne v1, v2, :cond_43
51446     const-wide/16 v1, 0x0
51448     iput-wide v1, p0, Lcom/android/server/am/ActivityManagerService;->mAppSwitchesAllowedTime:J
51450     :cond_43
51451     monitor-exit p0
51452     :try_end_44
51453     .catchall {:try_start_29 .. :try_end_44} :catchall_5c
51455     const/4 v1, 0x0
51457     const/4 v4, 0x0
51459     const/4 v5, 0x0
51461     move-object/from16 v2, p3
51463     move-object/from16 v3, p4
51465     move-object/from16 v6, p5
51467     move-object/from16 v7, p6
51469     move/from16 v8, p7
51471     move/from16 v9, p8
51473     move/from16 v10, p9
51475     move-object/from16 v11, p10
51477     invoke-virtual/range {v0 .. v11}, Lcom/android/server/am/PendingIntentRecord;->sendInner(ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
51479     move-result v12
51481     return v12
51483     :catchall_5c
51484     move-exception v1
51486     :try_start_5d
51487     monitor-exit p0
51488     :try_end_5e
51489     .catchall {:try_start_5d .. :try_end_5e} :catchall_5c
51491     throw v1
51492 .end method
51494 .method public final startActivityWithConfig(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/content/res/Configuration;Landroid/os/Bundle;I)I
51495     .registers 28
51497     const-string v1, "startActivityWithConfig"
51499     move-object/from16 v0, p0
51501     invoke-virtual {v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
51503     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
51505     move-result v2
51507     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
51509     move-result v3
51511     const/4 v5, 0x0
51513     const/4 v6, 0x1
51515     const-string v7, "startActivityWithConfig"
51517     const/4 v8, 0x0
51519     move-object/from16 v1, p0
51521     move/from16 v4, p10
51523     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
51525     move-result p10
51527     move-object/from16 v0, p0
51529     iget-object v1, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51531     const/4 v3, -0x1
51533     const/4 v10, 0x0
51535     const/4 v11, 0x0
51537     const/4 v12, 0x0
51539     move-object/from16 v2, p1
51541     move-object/from16 v4, p2
51543     move-object/from16 v5, p3
51545     move-object/from16 v6, p4
51547     move-object/from16 v7, p5
51549     move/from16 v8, p6
51551     move/from16 v9, p7
51553     move-object/from16 v13, p8
51555     move-object/from16 v14, p9
51557     move/from16 v15, p10
51559     invoke-virtual/range {v1 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityMayWait(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/app/IActivityManager$WaitResult;Landroid/content/res/Configuration;Landroid/os/Bundle;I)I
51561     move-result v16
51563     return v16
51564 .end method
51566 .method startAppProblemLocked(Lcom/android/server/am/ProcessRecord;)V
51567     .registers 5
51569     iget v0, p1, Lcom/android/server/am/ProcessRecord;->userId:I
51571     iget v1, p0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
51573     if-ne v0, v1, :cond_1a
51575     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
51577     iget-object v1, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
51579     iget-object v1, v1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
51581     iget-object v2, p1, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
51583     iget v2, v2, Landroid/content/pm/ApplicationInfo;->flags:I
51585     invoke-static {v0, v1, v2}, Landroid/app/ApplicationErrorReport;->getErrorReportReceiver(Landroid/content/Context;Ljava/lang/String;I)Landroid/content/ComponentName;
51587     move-result-object v0
51589     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->errorReportReceiver:Landroid/content/ComponentName;
51591     :goto_16
51592     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
51594     return-void
51596     :cond_1a
51597     const/4 v0, 0x0
51599     iput-object v0, p1, Lcom/android/server/am/ProcessRecord;->errorReportReceiver:Landroid/content/ComponentName;
51601     goto :goto_16
51602 .end method
51604 .method startHomeActivityLocked(I)Z
51605     .registers 20
51607     move-object/from16 v0, p0
51609     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
51611     if-eqz v2, :cond_b
51613     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->ensureBootCompleted()V
51615     const/4 v2, 0x0
51617     :goto_a
51618     return v2
51620     :cond_b
51621     move-object/from16 v0, p0
51623     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
51625     const/4 v3, 0x1
51627     if-ne v2, v3, :cond_1a
51629     move-object/from16 v0, p0
51631     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
51633     if-nez v2, :cond_1a
51635     const/4 v2, 0x0
51637     goto :goto_a
51639     :cond_1a
51640     new-instance v4, Landroid/content/Intent;
51642     move-object/from16 v0, p0
51644     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
51646     move-object/from16 v0, p0
51648     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
51650     if-eqz v2, :cond_a8
51652     move-object/from16 v0, p0
51654     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
51656     invoke-static {v2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
51658     move-result-object v2
51660     :goto_2e
51661     invoke-direct {v4, v3, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
51663     move-object/from16 v0, p0
51665     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
51667     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
51669     move-object/from16 v0, p0
51671     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
51673     const/4 v3, 0x1
51675     if-eq v2, v3, :cond_44
51677     const-string v2, "android.intent.category.HOME"
51679     invoke-virtual {v4, v2}, Landroid/content/Intent;->addCategory(Ljava/lang/String;)Landroid/content/Intent;
51681     :cond_44
51682     const/16 v2, 0x400
51684     move-object/from16 v0, p0
51686     move/from16 v1, p1
51688     invoke-direct {v0, v4, v2, v1}, Lcom/android/server/am/ActivityManagerService;->resolveActivityInfo(Landroid/content/Intent;II)Landroid/content/pm/ActivityInfo;
51690     move-result-object v16
51692     if-eqz v16, :cond_aa
51694     new-instance v2, Landroid/content/ComponentName;
51696     move-object/from16 v0, v16
51698     iget-object v3, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
51700     iget-object v3, v3, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
51702     move-object/from16 v0, v16
51704     iget-object v5, v0, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
51706     invoke-direct {v2, v3, v5}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
51708     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
51710     new-instance v6, Landroid/content/pm/ActivityInfo;
51712     move-object/from16 v0, v16
51714     invoke-direct {v6, v0}, Landroid/content/pm/ActivityInfo;-><init>(Landroid/content/pm/ActivityInfo;)V
51716     iget-object v2, v6, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
51718     move-object/from16 v0, p0
51720     move/from16 v1, p1
51722     invoke-virtual {v0, v2, v1}, Lcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
51724     move-result-object v2
51726     iput-object v2, v6, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
51728     iget-object v2, v6, Landroid/content/pm/ActivityInfo;->processName:Ljava/lang/String;
51730     iget-object v3, v6, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
51732     iget v3, v3, Landroid/content/pm/ApplicationInfo;->uid:I
51734     move-object/from16 v0, p0
51736     invoke-virtual {v0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
51738     move-result-object v17
51740     if-eqz v17, :cond_89
51742     move-object/from16 v0, v17
51744     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
51746     if-nez v2, :cond_a5
51748     :cond_89
51749     invoke-virtual {v4}, Landroid/content/Intent;->getFlags()I
51751     move-result v2
51753     const/high16 v3, 0x1000
51755     or-int/2addr v2, v3
51757     invoke-virtual {v4, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
51759     move-object/from16 v0, p0
51761     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
51763     const/4 v3, 0x0
51765     const/4 v5, 0x0
51767     const/4 v7, 0x0
51769     const/4 v8, 0x0
51771     const/4 v9, 0x0
51773     const/4 v10, 0x0
51775     const/4 v11, 0x0
51777     const/4 v12, 0x0
51779     const/4 v13, 0x0
51781     const/4 v14, 0x0
51783     const/4 v15, 0x0
51785     invoke-virtual/range {v2 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;Ljava/lang/String;IIIILandroid/os/Bundle;Z[Lcom/android/server/am/ActivityRecord;)I
51787     :cond_a5
51788     :goto_a5
51789     const/4 v2, 0x1
51791     goto/16 :goto_a
51793     :cond_a8
51794     const/4 v2, 0x0
51796     goto :goto_2e
51798     :cond_aa
51799     move-object/from16 v6, v16
51801     goto :goto_a5
51802 .end method
51804 .method public startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;ILandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;I)Z
51805     .registers 25
51807     const-string v3, "startInstrumentation"
51809     move-object/from16 v0, p0
51811     invoke-virtual {v0, v3}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
51813     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
51815     move-result v4
51817     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
51819     move-result v5
51821     const/4 v7, 0x0
51823     const/4 v8, 0x1
51825     const-string v9, "startInstrumentation"
51827     const/4 v10, 0x0
51829     move-object/from16 v3, p0
51831     move/from16 v6, p6
51833     invoke-virtual/range {v3 .. v10}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
51835     move-result p6
51837     if-eqz p4, :cond_2c
51839     invoke-virtual/range {p4 .. p4}, Landroid/os/Bundle;->hasFileDescriptors()Z
51841     move-result v3
51843     if-eqz v3, :cond_2c
51845     new-instance v3, Ljava/lang/IllegalArgumentException;
51847     const-string v4, "File descriptors passed in Bundle"
51849     invoke-direct {v3, v4}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
51851     throw v3
51853     :cond_2c
51854     monitor-enter p0
51856     const/4 v13, 0x0
51858     const/4 v11, 0x0
51860     :try_start_2f
51861     move-object/from16 v0, p0
51863     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
51865     invoke-virtual {v3}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
51867     move-result-object v3
51869     const/16 v4, 0x400
51871     move-object/from16 v0, p1
51873     invoke-virtual {v3, v0, v4}, Landroid/content/pm/PackageManager;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo;
51875     move-result-object v13
51877     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
51879     move-result-object v3
51881     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
51883     const/16 v5, 0x400
51885     move/from16 v0, p6
51887     invoke-interface {v3, v4, v5, v0}, Landroid/content/pm/IPackageManager;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;
51888     :try_end_4c
51889     .catchall {:try_start_2f .. :try_end_4c} :catchall_93
51890     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_2f .. :try_end_4c} :catch_13c
51891     .catch Landroid/os/RemoteException; {:try_start_2f .. :try_end_4c} :catch_139
51893     move-result-object v11
51895     :goto_4d
51896     if-nez v13, :cond_70
51898     :try_start_4f
51899     new-instance v3, Ljava/lang/StringBuilder;
51901     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
51903     const-string v4, "Unable to find instrumentation info for: "
51905     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51907     move-result-object v3
51909     move-object/from16 v0, p1
51911     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
51913     move-result-object v3
51915     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
51917     move-result-object v3
51919     move-object/from16 v0, p0
51921     move-object/from16 v1, p5
51923     move-object/from16 v2, p1
51925     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->reportStartInstrumentationFailure(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;Ljava/lang/String;)V
51927     const/4 v3, 0x0
51929     monitor-exit p0
51931     :goto_6f
51932     return v3
51934     :cond_70
51935     if-nez v11, :cond_96
51937     new-instance v3, Ljava/lang/StringBuilder;
51939     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
51941     const-string v4, "Unable to find instrumentation target package: "
51943     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51945     move-result-object v3
51947     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
51949     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
51951     move-result-object v3
51953     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
51955     move-result-object v3
51957     move-object/from16 v0, p0
51959     move-object/from16 v1, p5
51961     move-object/from16 v2, p1
51963     invoke-direct {v0, v1, v2, v3}, Lcom/android/server/am/ActivityManagerService;->reportStartInstrumentationFailure(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;Ljava/lang/String;)V
51965     const/4 v3, 0x0
51967     monitor-exit p0
51969     goto :goto_6f
51971     :catchall_93
51972     move-exception v3
51974     monitor-exit p0
51975     :try_end_95
51976     .catchall {:try_start_4f .. :try_end_95} :catchall_93
51978     throw v3
51980     :cond_96
51981     :try_start_96
51982     move-object/from16 v0, p0
51984     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
51986     invoke-virtual {v3}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
51988     move-result-object v3
51990     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
51992     iget-object v5, v13, Landroid/content/pm/InstrumentationInfo;->packageName:Ljava/lang/String;
51994     invoke-virtual {v3, v4, v5}, Landroid/content/pm/PackageManager;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I
51996     move-result v14
51998     if-gez v14, :cond_103
52000     const/4 v3, -0x1
52002     if-eq v14, v3, :cond_103
52004     new-instance v3, Ljava/lang/StringBuilder;
52006     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
52008     const-string v4, "Permission Denial: starting instrumentation "
52010     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52012     move-result-object v3
52014     move-object/from16 v0, p1
52016     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
52018     move-result-object v3
52020     const-string v4, " from pid="
52022     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52024     move-result-object v3
52026     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
52028     move-result v4
52030     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
52032     move-result-object v3
52034     const-string v4, ", uid="
52036     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52038     move-result-object v3
52040     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
52042     move-result v4
52044     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
52046     move-result-object v3
52048     const-string v4, " not allowed because package "
52050     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52052     move-result-object v3
52054     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->packageName:Ljava/lang/String;
52056     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52058     move-result-object v3
52060     const-string v4, " does not have a signature matching the target "
52062     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52064     move-result-object v3
52066     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
52068     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52070     move-result-object v3
52072     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
52074     move-result-object v15
52076     move-object/from16 v0, p0
52078     move-object/from16 v1, p5
52080     move-object/from16 v2, p1
52082     invoke-direct {v0, v1, v2, v15}, Lcom/android/server/am/ActivityManagerService;->reportStartInstrumentationFailure(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;Ljava/lang/String;)V
52084     new-instance v3, Ljava/lang/SecurityException;
52086     invoke-direct {v3, v15}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
52088     throw v3
52090     :cond_103
52091     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
52093     move-result-wide v16
52095     iget-object v4, v13, Landroid/content/pm/InstrumentationInfo;->targetPackage:Ljava/lang/String;
52097     const/4 v5, -0x1
52099     const/4 v6, 0x1
52101     const/4 v7, 0x0
52103     const/4 v8, 0x1
52105     const/4 v9, 0x1
52107     move-object/from16 v3, p0
52109     move/from16 v10, p6
52111     invoke-direct/range {v3 .. v10}, Lcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZI)Z
52113     const/4 v3, 0x0
52115     move-object/from16 v0, p0
52117     invoke-virtual {v0, v11, v3}, Lcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
52119     move-result-object v12
52121     move-object/from16 v0, p1
52123     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationClass:Landroid/content/ComponentName;
52125     iput-object v11, v12, Lcom/android/server/am/ProcessRecord;->instrumentationInfo:Landroid/content/pm/ApplicationInfo;
52127     move-object/from16 v0, p2
52129     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationProfileFile:Ljava/lang/String;
52131     move-object/from16 v0, p4
52133     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationArguments:Landroid/os/Bundle;
52135     move-object/from16 v0, p5
52137     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationWatcher:Landroid/app/IInstrumentationWatcher;
52139     move-object/from16 v0, p1
52141     iput-object v0, v12, Lcom/android/server/am/ProcessRecord;->instrumentationResultClass:Landroid/content/ComponentName;
52143     invoke-static/range {v16 .. v17}, Landroid/os/Binder;->restoreCallingIdentity(J)V
52145     monitor-exit p0
52146     :try_end_136
52147     .catchall {:try_start_96 .. :try_end_136} :catchall_93
52149     const/4 v3, 0x1
52151     goto/16 :goto_6f
52153     :catch_139
52154     move-exception v3
52156     goto/16 :goto_4d
52158     :catch_13c
52159     move-exception v3
52161     goto/16 :goto_4d
52162 .end method
52164 .method public startNextMatchingActivity(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/Bundle;)Z
52165     .registers 30
52167     if-eqz p2, :cond_11
52169     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->hasFileDescriptors()Z
52171     move-result v2
52173     const/4 v3, 0x1
52175     if-ne v2, v3, :cond_11
52177     new-instance v2, Ljava/lang/IllegalArgumentException;
52179     const-string v3, "File descriptors passed in Intent"
52181     invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
52183     throw v2
52185     :cond_11
52186     monitor-enter p0
52188     :try_start_12
52189     move-object/from16 v0, p0
52191     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
52193     move-object/from16 v0, p1
52195     invoke-virtual {v2, v0}, Lcom/android/server/am/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
52197     move-result-object v20
52199     if-nez v20, :cond_24
52201     invoke-static/range {p3 .. p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
52203     const/4 v2, 0x0
52205     monitor-exit p0
52207     :goto_23
52208     return v2
52210     :cond_24
52211     move-object/from16 v0, v20
52213     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
52215     if-eqz v2, :cond_32
52217     move-object/from16 v0, v20
52219     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
52221     iget-object v2, v2, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
52223     if-nez v2, :cond_3b
52225     :cond_32
52226     invoke-static/range {p3 .. p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
52228     const/4 v2, 0x0
52230     monitor-exit p0
52232     goto :goto_23
52234     :catchall_38
52235     move-exception v2
52237     :goto_39
52238     monitor-exit p0
52239     :try_end_3a
52240     .catchall {:try_start_12 .. :try_end_3a} :catchall_38
52242     throw v2
52244     :cond_3b
52245     :try_start_3b
52246     new-instance v4, Landroid/content/Intent;
52248     move-object/from16 v0, p2
52250     invoke-direct {v4, v0}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
52251     :try_end_42
52252     .catchall {:try_start_3b .. :try_end_42} :catchall_38
52254     :try_start_42
52255     move-object/from16 v0, v20
52257     iget-object v2, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
52259     invoke-virtual {v2}, Landroid/content/Intent;->getData()Landroid/net/Uri;
52261     move-result-object v2
52263     move-object/from16 v0, v20
52265     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->intent:Landroid/content/Intent;
52267     invoke-virtual {v3}, Landroid/content/Intent;->getType()Ljava/lang/String;
52269     move-result-object v3
52271     invoke-virtual {v4, v2, v3}, Landroid/content/Intent;->setDataAndType(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;
52273     const/4 v2, 0x0
52275     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
52276     :try_end_59
52277     .catchall {:try_start_42 .. :try_end_59} :catchall_14b
52279     const/4 v6, 0x0
52281     :try_start_5a
52282     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
52284     move-result-object v2
52286     move-object/from16 v0, v20
52288     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->resolvedType:Ljava/lang/String;
52290     const v5, 0x10400
52292     invoke-static {}, Landroid/os/UserHandle;->getCallingUserId()I
52294     move-result v7
52296     invoke-interface {v2, v4, v3, v5, v7}, Landroid/content/pm/IPackageManager;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
52298     move-result-object v23
52300     if-eqz v23, :cond_c6
52302     invoke-interface/range {v23 .. v23}, Ljava/util/List;->size()I
52304     move-result v16
52306     :goto_73
52307     const/16 v17, 0x0
52309     :goto_75
52310     move/from16 v0, v17
52312     move/from16 v1, v16
52314     if-ge v0, v1, :cond_bb
52316     move-object/from16 v0, v23
52318     move/from16 v1, v17
52320     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
52322     move-result-object v21
52324     check-cast v21, Landroid/content/pm/ResolveInfo;
52326     move-object/from16 v0, v21
52328     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
52330     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
52332     move-object/from16 v0, v20
52334     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->packageName:Ljava/lang/String;
52336     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
52338     move-result v2
52340     if-eqz v2, :cond_c9
52342     move-object/from16 v0, v21
52344     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
52346     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
52348     move-object/from16 v0, v20
52350     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->info:Landroid/content/pm/ActivityInfo;
52352     iget-object v3, v3, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
52354     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
52356     move-result v2
52358     if-eqz v2, :cond_c9
52360     add-int/lit8 v17, v17, 0x1
52362     move/from16 v0, v17
52364     move/from16 v1, v16
52366     if-ge v0, v1, :cond_bb
52368     move-object/from16 v0, v23
52370     move/from16 v1, v17
52372     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
52374     move-result-object v2
52376     check-cast v2, Landroid/content/pm/ResolveInfo;
52378     iget-object v6, v2, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
52379     :try_end_bb
52380     .catchall {:try_start_5a .. :try_end_bb} :catchall_14b
52381     .catch Landroid/os/RemoteException; {:try_start_5a .. :try_end_bb} :catch_150
52383     :cond_bb
52384     :goto_bb
52385     if-nez v6, :cond_cc
52387     :try_start_bd
52388     invoke-static/range {p3 .. p3}, Landroid/app/ActivityOptions;->abort(Landroid/os/Bundle;)V
52390     const/4 v2, 0x0
52392     monitor-exit p0
52394     move-object/from16 p2, v4
52396     goto/16 :goto_23
52398     :cond_c6
52399     const/16 v16, 0x0
52401     goto :goto_73
52403     :cond_c9
52404     add-int/lit8 v17, v17, 0x1
52406     goto :goto_75
52408     :cond_cc
52409     new-instance v2, Landroid/content/ComponentName;
52411     iget-object v3, v6, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
52413     iget-object v3, v3, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
52415     iget-object v5, v6, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
52417     invoke-direct {v2, v3, v5}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
52419     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
52421     invoke-virtual {v4}, Landroid/content/Intent;->getFlags()I
52423     move-result v2
52425     const v3, -0x1e000001
52427     and-int/2addr v2, v3
52429     invoke-virtual {v4, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
52431     move-object/from16 v0, v20
52433     iget-boolean v0, v0, Lcom/android/server/am/ActivityRecord;->finishing:Z
52435     move/from16 v25, v0
52437     const/4 v2, 0x1
52439     move-object/from16 v0, v20
52441     iput-boolean v2, v0, Lcom/android/server/am/ActivityRecord;->finishing:Z
52443     move-object/from16 v0, v20
52445     iget-object v0, v0, Lcom/android/server/am/ActivityRecord;->resultTo:Lcom/android/server/am/ActivityRecord;
52447     move-object/from16 v24, v0
52449     move-object/from16 v0, v20
52451     iget-object v8, v0, Lcom/android/server/am/ActivityRecord;->resultWho:Ljava/lang/String;
52453     move-object/from16 v0, v20
52455     iget v9, v0, Lcom/android/server/am/ActivityRecord;->requestCode:I
52457     const/4 v2, 0x0
52459     move-object/from16 v0, v20
52461     iput-object v2, v0, Lcom/android/server/am/ActivityRecord;->resultTo:Lcom/android/server/am/ActivityRecord;
52463     if-eqz v24, :cond_10c
52465     move-object/from16 v0, v24
52467     move-object/from16 v1, v20
52469     invoke-virtual {v0, v1, v8, v9}, Lcom/android/server/am/ActivityRecord;->removeResultsLocked(Lcom/android/server/am/ActivityRecord;Ljava/lang/String;I)V
52471     :cond_10c
52472     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
52474     move-result-wide v18
52476     move-object/from16 v0, p0
52478     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
52480     move-object/from16 v0, v20
52482     iget-object v3, v0, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
52484     iget-object v3, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
52486     move-object/from16 v0, v20
52488     iget-object v5, v0, Lcom/android/server/am/ActivityRecord;->resolvedType:Ljava/lang/String;
52490     if-eqz v24, :cond_143
52492     move-object/from16 v0, v24
52494     iget-object v7, v0, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
52496     :goto_124
52497     const/4 v10, -0x1
52499     move-object/from16 v0, v20
52501     iget v11, v0, Lcom/android/server/am/ActivityRecord;->launchedFromUid:I
52503     const/4 v12, 0x0
52505     const/4 v14, 0x0
52507     const/4 v15, 0x0
52509     move-object/from16 v13, p3
52511     invoke-virtual/range {v2 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;Ljava/lang/String;IIIILandroid/os/Bundle;Z[Lcom/android/server/am/ActivityRecord;)I
52513     move-result v22
52515     invoke-static/range {v18 .. v19}, Landroid/os/Binder;->restoreCallingIdentity(J)V
52517     move/from16 v0, v25
52519     move-object/from16 v1, v20
52521     iput-boolean v0, v1, Lcom/android/server/am/ActivityRecord;->finishing:Z
52523     if-eqz v22, :cond_145
52525     const/4 v2, 0x0
52527     monitor-exit p0
52529     move-object/from16 p2, v4
52531     goto/16 :goto_23
52533     :cond_143
52534     const/4 v7, 0x0
52536     goto :goto_124
52538     :cond_145
52539     const/4 v2, 0x1
52541     monitor-exit p0
52542     :try_end_147
52543     .catchall {:try_start_bd .. :try_end_147} :catchall_14b
52545     move-object/from16 p2, v4
52547     goto/16 :goto_23
52549     :catchall_14b
52550     move-exception v2
52552     move-object/from16 p2, v4
52554     goto/16 :goto_39
52556     :catch_150
52557     move-exception v2
52559     goto/16 :goto_bb
52560 .end method
52562 .method final startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZ)Lcom/android/server/am/ProcessRecord;
52563     .registers 15
52565     if-nez p8, :cond_1b
52567     iget v2, p2, Landroid/content/pm/ApplicationInfo;->uid:I
52569     invoke-virtual {p0, p1, v2}, Lcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
52571     move-result-object v0
52573     :goto_8
52574     if-eqz v0, :cond_22
52576     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
52578     if-lez v2, :cond_22
52580     if-eqz p3, :cond_14
52582     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
52584     if-nez v2, :cond_1d
52586     :cond_14
52587     iget-object v2, p2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
52589     invoke-virtual {v0, v2}, Lcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;)Z
52591     move-object v2, v0
52593     :goto_1a
52594     return-object v2
52596     :cond_1b
52597     const/4 v0, 0x0
52599     goto :goto_8
52601     :cond_1d
52602     const/4 v2, 0x1
52604     const/4 v3, 0x1
52606     invoke-direct {p0, v0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
52608     :cond_22
52609     if-eqz p6, :cond_3c
52611     invoke-virtual {p6}, Landroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
52613     move-result-object v1
52615     :goto_28
52616     if-nez p8, :cond_84
52618     and-int/lit8 v2, p4, 0x4
52620     if-eqz v2, :cond_3e
52622     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
52624     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
52626     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
52628     invoke-virtual {v2, v3, v4}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
52630     move-result-object v2
52632     if-eqz v2, :cond_84
52634     const/4 v2, 0x0
52636     goto :goto_1a
52638     :cond_3c
52639     const/4 v1, 0x0
52641     goto :goto_28
52643     :cond_3e
52644     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessCrashTimes:Lcom/android/server/ProcessMap;
52646     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
52648     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
52650     invoke-virtual {v2, v3, v4}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
52652     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
52654     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
52656     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
52658     invoke-virtual {v2, v3, v4}, Lcom/android/server/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
52660     move-result-object v2
52662     if-eqz v2, :cond_84
52664     const/16 v2, 0x7540
52666     const/4 v3, 0x3
52668     new-array v3, v3, [Ljava/lang/Object;
52670     const/4 v4, 0x0
52672     iget v5, p2, Landroid/content/pm/ApplicationInfo;->uid:I
52674     invoke-static {v5}, Landroid/os/UserHandle;->getUserId(I)I
52676     move-result v5
52678     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
52680     move-result-object v5
52682     aput-object v5, v3, v4
52684     const/4 v4, 0x1
52686     iget v5, p2, Landroid/content/pm/ApplicationInfo;->uid:I
52688     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
52690     move-result-object v5
52692     aput-object v5, v3, v4
52694     const/4 v4, 0x2
52696     iget-object v5, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
52698     aput-object v5, v3, v4
52700     invoke-static {v2, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
52702     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBadProcesses:Lcom/android/server/ProcessMap;
52704     iget-object v3, p2, Landroid/content/pm/ApplicationInfo;->processName:Ljava/lang/String;
52706     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
52708     invoke-virtual {v2, v3, v4}, Lcom/android/server/ProcessMap;->remove(Ljava/lang/String;I)V
52710     if-eqz v0, :cond_84
52712     const/4 v2, 0x0
52714     iput-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->bad:Z
52716     :cond_84
52717     if-nez v0, :cond_ea
52719     const/4 v2, 0x0
52721     invoke-virtual {p0, v2, p2, p1, p8}, Lcom/android/server/am/ActivityManagerService;->newProcessRecordLocked(Landroid/app/IApplicationThread;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Lcom/android/server/am/ProcessRecord;
52723     move-result-object v0
52725     if-nez v0, :cond_be
52727     const-string v2, "ActivityManager"
52729     new-instance v3, Ljava/lang/StringBuilder;
52731     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
52733     const-string v4, "Failed making new process record for "
52735     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52737     move-result-object v3
52739     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52741     move-result-object v3
52743     const-string v4, "/"
52745     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52747     move-result-object v3
52749     iget v4, p2, Landroid/content/pm/ApplicationInfo;->uid:I
52751     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
52753     move-result-object v3
52755     const-string v4, " isolated="
52757     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
52759     move-result-object v3
52761     invoke-virtual {v3, p8}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
52763     move-result-object v3
52765     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
52767     move-result-object v3
52769     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
52771     const/4 v2, 0x0
52773     goto/16 :goto_1a
52775     :cond_be
52776     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessNames:Lcom/android/server/ProcessMap;
52778     iget v3, v0, Lcom/android/server/am/ProcessRecord;->uid:I
52780     invoke-virtual {v2, p1, v3, v0}, Lcom/android/server/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
52782     if-eqz p8, :cond_ce
52784     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mIsolatedProcesses:Landroid/util/SparseArray;
52786     iget v3, v0, Lcom/android/server/am/ProcessRecord;->uid:I
52788     invoke-virtual {v2, v3, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
52790     :cond_ce
52791     :goto_ce
52792     iget-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
52794     if-nez v2, :cond_f0
52796     invoke-virtual {p0, p2}, Lcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
52798     move-result v2
52800     if-nez v2, :cond_f0
52802     if-nez p7, :cond_f0
52804     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
52806     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
52808     move-result v2
52810     if-nez v2, :cond_e7
52812     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesOnHold:Ljava/util/ArrayList;
52814     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
52816     :cond_e7
52817     move-object v2, v0
52819     goto/16 :goto_1a
52821     :cond_ea
52822     iget-object v2, p2, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
52824     invoke-virtual {v0, v2}, Lcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;)Z
52826     goto :goto_ce
52828     :cond_f0
52829     invoke-direct {p0, v0, p5, v1}, Lcom/android/server/am/ActivityManagerService;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
52831     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
52833     if-eqz v2, :cond_fa
52835     move-object v2, v0
52837     goto/16 :goto_1a
52839     :cond_fa
52840     const/4 v2, 0x0
52842     goto/16 :goto_1a
52843 .end method
52845 .method public final startRunning(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
52846     .registers 7
52848     const/4 v1, 0x0
52850     monitor-enter p0
52852     :try_start_2
52853     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
52855     if-eqz v0, :cond_8
52857     monitor-exit p0
52859     :goto_7
52860     return-void
52862     :cond_8
52863     const/4 v0, 0x1
52865     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
52867     if-eqz p1, :cond_25
52869     if-eqz p2, :cond_25
52871     new-instance v0, Landroid/content/ComponentName;
52873     invoke-direct {v0, p1, p2}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
52875     :goto_14
52876     iput-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
52878     if-eqz p3, :cond_27
52880     :goto_18
52881     iput-object p3, p0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
52883     iput-object p4, p0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
52885     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
52887     if-nez v0, :cond_2a
52889     monitor-exit p0
52891     goto :goto_7
52893     :catchall_22
52894     move-exception v0
52896     monitor-exit p0
52897     :try_end_24
52898     .catchall {:try_start_2 .. :try_end_24} :catchall_22
52900     throw v0
52902     :cond_25
52903     move-object v0, v1
52905     goto :goto_14
52907     :cond_27
52908     :try_start_27
52909     const-string p3, "android.intent.action.MAIN"
52911     goto :goto_18
52913     :cond_2a
52914     monitor-exit p0
52915     :try_end_2b
52916     .catchall {:try_start_27 .. :try_end_2b} :catchall_22
52918     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->systemReady(Ljava/lang/Runnable;)V
52920     goto :goto_7
52921 .end method
52923 .method public startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/ComponentName;
52924     .registers 15
52926     const-string v0, "startService"
52928     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
52930     if-eqz p2, :cond_16
52932     invoke-virtual {p2}, Landroid/content/Intent;->hasFileDescriptors()Z
52934     move-result v0
52936     const/4 v1, 0x1
52938     if-ne v0, v1, :cond_16
52940     new-instance v0, Ljava/lang/IllegalArgumentException;
52942     const-string v1, "File descriptors passed in Intent"
52944     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
52946     throw v0
52948     :cond_16
52949     monitor-enter p0
52951     :try_start_17
52952     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
52954     move-result v4
52956     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
52958     move-result v5
52960     invoke-direct {p0, v5, p4}, Lcom/android/server/am/ActivityManagerService;->checkValidCaller(II)V
52962     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
52964     move-result-wide v7
52966     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
52968     move-object v1, p1
52970     move-object v2, p2
52972     move-object v3, p3
52974     move v6, p4
52976     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/ComponentName;
52978     move-result-object v9
52980     invoke-static {v7, v8}, Landroid/os/Binder;->restoreCallingIdentity(J)V
52982     monitor-exit p0
52984     return-object v9
52986     :catchall_35
52987     move-exception v0
52989     monitor-exit p0
52990     :try_end_37
52991     .catchall {:try_start_17 .. :try_end_37} :catchall_35
52993     throw v0
52994 .end method
52996 .method startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;I)Landroid/content/ComponentName;
52997     .registers 15
52999     monitor-enter p0
53001     :try_start_1
53002     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
53004     move-result-wide v7
53006     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
53008     const/4 v1, 0x0
53010     const/4 v4, -0x1
53012     move-object v2, p2
53014     move-object v3, p3
53016     move v5, p1
53018     move v6, p4
53020     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/ComponentName;
53022     move-result-object v9
53024     invoke-static {v7, v8}, Landroid/os/Binder;->restoreCallingIdentity(J)V
53026     monitor-exit p0
53028     return-object v9
53030     :catchall_16
53031     move-exception v0
53033     monitor-exit p0
53034     :try_end_18
53035     .catchall {:try_start_1 .. :try_end_18} :catchall_16
53037     throw v0
53038 .end method
53040 .method startSetupActivityLocked()V
53041     .registers 23
53043     move-object/from16 v0, p0
53045     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mCheckedForSetup:Z
53047     if-eqz v2, :cond_7
53049     :cond_6
53050     :goto_6
53051     return-void
53053     :cond_7
53054     move-object/from16 v0, p0
53056     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
53058     invoke-virtual {v2}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
53060     move-result-object v18
53062     move-object/from16 v0, p0
53064     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
53066     const/4 v3, 0x1
53068     if-eq v2, v3, :cond_6
53070     const-string v2, "device_provisioned"
53072     const/4 v3, 0x0
53074     move-object/from16 v0, v18
53076     invoke-static {v0, v2, v3}, Landroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
53078     move-result v2
53080     if-eqz v2, :cond_6
53082     const/4 v2, 0x1
53084     move-object/from16 v0, p0
53086     iput-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mCheckedForSetup:Z
53088     new-instance v4, Landroid/content/Intent;
53090     const-string v2, "android.intent.action.UPGRADE_SETUP"
53092     invoke-direct {v4, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
53094     sget-object v2, Lcom/android/server/am/ActivityManagerService;->mSelf:Lcom/android/server/am/ActivityManagerService;
53096     iget-object v2, v2, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
53098     invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
53100     move-result-object v2
53102     const/16 v3, 0x80
53104     invoke-virtual {v2, v4, v3}, Landroid/content/pm/PackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
53106     move-result-object v20
53108     const/16 v19, 0x0
53110     const/16 v16, 0x0
53112     :goto_3f
53113     if-eqz v20, :cond_67
53115     invoke-interface/range {v20 .. v20}, Ljava/util/List;->size()I
53117     move-result v2
53119     move/from16 v0, v16
53121     if-ge v0, v2, :cond_67
53123     move-object/from16 v0, v20
53125     move/from16 v1, v16
53127     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
53129     move-result-object v2
53131     check-cast v2, Landroid/content/pm/ResolveInfo;
53133     iget-object v2, v2, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
53135     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
53137     iget v2, v2, Landroid/content/pm/ApplicationInfo;->flags:I
53139     and-int/lit8 v2, v2, 0x1
53141     if-eqz v2, :cond_dc
53143     move-object/from16 v0, v20
53145     move/from16 v1, v16
53147     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
53149     move-result-object v19
53151     check-cast v19, Landroid/content/pm/ResolveInfo;
53153     :cond_67
53154     if-eqz v19, :cond_6
53156     move-object/from16 v0, v19
53158     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
53160     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->metaData:Landroid/os/Bundle;
53162     if-eqz v2, :cond_e0
53164     move-object/from16 v0, v19
53166     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
53168     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->metaData:Landroid/os/Bundle;
53170     const-string v3, "android.SETUP_VERSION"
53172     invoke-virtual {v2, v3}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String;
53174     move-result-object v21
53176     :goto_7d
53177     if-nez v21, :cond_97
53179     move-object/from16 v0, v19
53181     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
53183     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
53185     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->metaData:Landroid/os/Bundle;
53187     if-eqz v2, :cond_97
53189     move-object/from16 v0, v19
53191     iget-object v2, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
53193     iget-object v2, v2, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
53195     iget-object v2, v2, Landroid/content/pm/ApplicationInfo;->metaData:Landroid/os/Bundle;
53197     const-string v3, "android.SETUP_VERSION"
53199     invoke-virtual {v2, v3}, Landroid/os/Bundle;->getString(Ljava/lang/String;)Ljava/lang/String;
53201     move-result-object v21
53203     :cond_97
53204     const-string v2, "last_setup_shown"
53206     move-object/from16 v0, v18
53208     invoke-static {v0, v2}, Landroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
53210     move-result-object v17
53212     if-eqz v21, :cond_6
53214     move-object/from16 v0, v21
53216     move-object/from16 v1, v17
53218     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
53220     move-result v2
53222     if-nez v2, :cond_6
53224     const/high16 v2, 0x1000
53226     invoke-virtual {v4, v2}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;
53228     new-instance v2, Landroid/content/ComponentName;
53230     move-object/from16 v0, v19
53232     iget-object v3, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
53234     iget-object v3, v3, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
53236     move-object/from16 v0, v19
53238     iget-object v5, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
53240     iget-object v5, v5, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
53242     invoke-direct {v2, v3, v5}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
53244     invoke-virtual {v4, v2}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
53246     move-object/from16 v0, p0
53248     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
53250     const/4 v3, 0x0
53252     const/4 v5, 0x0
53254     move-object/from16 v0, v19
53256     iget-object v6, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
53258     const/4 v7, 0x0
53260     const/4 v8, 0x0
53262     const/4 v9, 0x0
53264     const/4 v10, 0x0
53266     const/4 v11, 0x0
53268     const/4 v12, 0x0
53270     const/4 v13, 0x0
53272     const/4 v14, 0x0
53274     const/4 v15, 0x0
53276     invoke-virtual/range {v2 .. v15}, Lcom/android/server/am/ActivityStack;->startActivityLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;Ljava/lang/String;IIIILandroid/os/Bundle;Z[Lcom/android/server/am/ActivityRecord;)I
53278     goto/16 :goto_6
53280     :cond_dc
53281     add-int/lit8 v16, v16, 0x1
53283     goto/16 :goto_3f
53285     :cond_e0
53286     const/16 v21, 0x0
53288     goto :goto_7d
53289 .end method
53291 .method public stopAppSwitches()V
53292     .registers 6
53294     const-wide/16 v3, 0x1388
53296     const-string v1, "android.permission.STOP_APP_SWITCHES"
53298     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
53300     move-result v1
53302     if-eqz v1, :cond_12
53304     new-instance v1, Ljava/lang/SecurityException;
53306     const-string v2, "Requires permission android.permission.STOP_APP_SWITCHES"
53308     invoke-direct {v1, v2}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
53310     throw v1
53312     :cond_12
53313     monitor-enter p0
53315     :try_start_13
53316     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
53318     move-result-wide v1
53320     add-long/2addr v1, v3
53322     iput-wide v1, p0, Lcom/android/server/am/ActivityManagerService;->mAppSwitchesAllowedTime:J
53324     const/4 v1, 0x0
53326     iput-boolean v1, p0, Lcom/android/server/am/ActivityManagerService;->mDidAppSwitch:Z
53328     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53330     const/16 v2, 0x15
53332     invoke-virtual {v1, v2}, Landroid/os/Handler;->removeMessages(I)V
53334     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53336     const/16 v2, 0x15
53338     invoke-virtual {v1, v2}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
53340     move-result-object v0
53342     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53344     const-wide/16 v2, 0x1388
53346     invoke-virtual {v1, v0, v2, v3}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
53348     monitor-exit p0
53350     return-void
53352     :catchall_35
53353     move-exception v1
53355     monitor-exit p0
53356     :try_end_37
53357     .catchall {:try_start_13 .. :try_end_37} :catchall_35
53359     throw v1
53360 .end method
53362 .method public stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
53363     .registers 7
53365     const-string v0, "stopService"
53367     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
53369     if-eqz p2, :cond_16
53371     invoke-virtual {p2}, Landroid/content/Intent;->hasFileDescriptors()Z
53373     move-result v0
53375     const/4 v1, 0x1
53377     if-ne v0, v1, :cond_16
53379     new-instance v0, Ljava/lang/IllegalArgumentException;
53381     const-string v1, "File descriptors passed in Intent"
53383     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
53385     throw v0
53387     :cond_16
53388     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
53390     move-result v0
53392     invoke-direct {p0, v0, p4}, Lcom/android/server/am/ActivityManagerService;->checkValidCaller(II)V
53394     monitor-enter p0
53396     :try_start_1e
53397     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
53399     invoke-virtual {v0, p1, p2, p3, p4}, Lcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
53401     move-result v0
53403     monitor-exit p0
53405     return v0
53407     :catchall_26
53408     move-exception v0
53410     monitor-exit p0
53411     :try_end_28
53412     .catchall {:try_start_1e .. :try_end_28} :catchall_26
53414     throw v0
53415 .end method
53417 .method public stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
53418     .registers 5
53420     monitor-enter p0
53422     :try_start_1
53423     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
53425     invoke-virtual {v0, p1, p2, p3}, Lcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
53427     move-result v0
53429     monitor-exit p0
53431     return v0
53433     :catchall_9
53434     move-exception v0
53436     monitor-exit p0
53437     :try_end_b
53438     .catchall {:try_start_1 .. :try_end_b} :catchall_9
53440     throw v0
53441 .end method
53443 .method public stopUser(ILandroid/app/IStopUserCallback;)I
53444     .registers 7
53446     const-string v1, "android.permission.INTERACT_ACROSS_USERS_FULL"
53448     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
53450     move-result v1
53452     if-eqz v1, :cond_44
53454     new-instance v1, Ljava/lang/StringBuilder;
53456     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
53458     const-string v2, "Permission Denial: switchUser() from pid="
53460     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53462     move-result-object v1
53464     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
53466     move-result v2
53468     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
53470     move-result-object v1
53472     const-string v2, ", uid="
53474     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53476     move-result-object v1
53478     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
53480     move-result v2
53482     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
53484     move-result-object v1
53486     const-string v2, " requires "
53488     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53490     move-result-object v1
53492     const-string v2, "android.permission.INTERACT_ACROSS_USERS_FULL"
53494     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53496     move-result-object v1
53498     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
53500     move-result-object v0
53502     const-string v1, "ActivityManager"
53504     invoke-static {v1, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
53506     new-instance v1, Ljava/lang/SecurityException;
53508     invoke-direct {v1, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
53510     throw v1
53512     :cond_44
53513     if-gtz p1, :cond_5f
53515     new-instance v1, Ljava/lang/IllegalArgumentException;
53517     new-instance v2, Ljava/lang/StringBuilder;
53519     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
53521     const-string v3, "Can\'t stop primary user "
53523     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53525     move-result-object v2
53527     invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
53529     move-result-object v2
53531     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
53533     move-result-object v2
53535     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
53537     throw v1
53539     :cond_5f
53540     monitor-enter p0
53542     :try_start_60
53543     invoke-direct {p0, p1, p2}, Lcom/android/server/am/ActivityManagerService;->stopUserLocked(ILandroid/app/IStopUserCallback;)I
53545     move-result v1
53547     monitor-exit p0
53549     return v1
53551     :catchall_66
53552     move-exception v1
53554     monitor-exit p0
53555     :try_end_68
53556     .catchall {:try_start_60 .. :try_end_68} :catchall_66
53558     throw v1
53559 .end method
53561 .method public switchUser(I)Z
53562     .registers 29
53564     const-string v3, "android.permission.INTERACT_ACROSS_USERS_FULL"
53566     move-object/from16 v0, p0
53568     invoke-virtual {v0, v3}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
53570     move-result v3
53572     if-eqz v3, :cond_4a
53574     new-instance v3, Ljava/lang/StringBuilder;
53576     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
53578     const-string v4, "Permission Denial: switchUser() from pid="
53580     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53582     move-result-object v3
53584     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
53586     move-result v4
53588     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
53590     move-result-object v3
53592     const-string v4, ", uid="
53594     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53596     move-result-object v3
53598     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
53600     move-result v4
53602     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
53604     move-result-object v3
53606     const-string v4, " requires "
53608     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53610     move-result-object v3
53612     const-string v4, "android.permission.INTERACT_ACROSS_USERS_FULL"
53614     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53616     move-result-object v3
53618     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
53620     move-result-object v21
53622     const-string v3, "ActivityManager"
53624     move-object/from16 v0, v21
53626     invoke-static {v3, v0}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
53628     new-instance v3, Ljava/lang/SecurityException;
53630     move-object/from16 v0, v21
53632     invoke-direct {v3, v0}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
53634     throw v3
53636     :cond_4a
53637     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
53639     move-result-wide v19
53641     :try_start_4e
53642     monitor-enter p0
53643     :try_end_4f
53644     .catchall {:try_start_4e .. :try_end_4f} :catchall_8d
53646     :try_start_4f
53647     move-object/from16 v0, p0
53649     iget v0, v0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
53651     move/from16 v23, v0
53653     move/from16 v0, v23
53655     move/from16 v1, p1
53657     if-ne v0, v1, :cond_61
53659     const/4 v3, 0x1
53661     monitor-exit p0
53662     :try_end_5d
53663     .catchall {:try_start_4f .. :try_end_5d} :catchall_8a
53665     :goto_5d
53666     invoke-static/range {v19 .. v20}, Landroid/os/Binder;->restoreCallingIdentity(J)V
53668     :goto_60
53669     return v3
53671     :cond_61
53672     :try_start_61
53673     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->getUserManagerLocked()Lcom/android/server/pm/UserManagerService;
53675     move-result-object v3
53677     move/from16 v0, p1
53679     invoke-virtual {v3, v0}, Lcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
53681     move-result-object v25
53683     if-nez v25, :cond_92
53685     const-string v3, "ActivityManager"
53687     new-instance v4, Ljava/lang/StringBuilder;
53689     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
53691     const-string v5, "No user info for user #"
53693     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
53695     move-result-object v4
53697     move/from16 v0, p1
53699     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
53701     move-result-object v4
53703     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
53705     move-result-object v4
53707     invoke-static {v3, v4}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
53709     const/4 v3, 0x0
53711     monitor-exit p0
53713     goto :goto_5d
53715     :catchall_8a
53716     move-exception v3
53718     monitor-exit p0
53719     :try_end_8c
53720     .catchall {:try_start_61 .. :try_end_8c} :catchall_8a
53722     :try_start_8c
53723     throw v3
53724     :try_end_8d
53725     .catchall {:try_start_8c .. :try_end_8d} :catchall_8d
53727     :catchall_8d
53728     move-exception v3
53730     invoke-static/range {v19 .. v20}, Landroid/os/Binder;->restoreCallingIdentity(J)V
53732     throw v3
53734     :cond_92
53735     :try_start_92
53736     move-object/from16 v0, p0
53738     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
53740     const v4, 0x10a0050
53742     const v5, 0x10a004f
53744     invoke-virtual {v3, v4, v5}, Lcom/android/server/wm/WindowManagerService;->startFreezingScreen(II)V
53746     const/16 v22, 0x0
53748     move-object/from16 v0, p0
53750     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
53752     move/from16 v0, p1
53754     invoke-virtual {v3, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
53756     move-result-object v3
53758     if-nez v3, :cond_c8
53760     move-object/from16 v0, p0
53762     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
53764     new-instance v4, Lcom/android/server/am/UserStartedState;
53766     new-instance v5, Landroid/os/UserHandle;
53768     move/from16 v0, p1
53770     invoke-direct {v5, v0}, Landroid/os/UserHandle;-><init>(I)V
53772     const/4 v7, 0x0
53774     invoke-direct {v4, v5, v7}, Lcom/android/server/am/UserStartedState;-><init>(Landroid/os/UserHandle;Z)V
53776     move/from16 v0, p1
53778     invoke-virtual {v3, v0, v4}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
53780     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateStartedUserArrayLocked()V
53782     const/16 v22, 0x1
53784     :cond_c8
53785     move/from16 v0, p1
53787     move-object/from16 v1, p0
53789     iput v0, v1, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
53791     const/4 v3, 0x1
53793     new-array v3, v3, [I
53795     const/4 v4, 0x0
53797     aput p1, v3, v4
53799     move-object/from16 v0, p0
53801     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserArray:[I
53803     invoke-static/range {p1 .. p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
53805     move-result-object v24
53807     move-object/from16 v0, p0
53809     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
53811     move-object/from16 v0, v24
53813     invoke-virtual {v3, v0}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
53815     move-object/from16 v0, p0
53817     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mUserLru:Ljava/util/ArrayList;
53819     move-object/from16 v0, v24
53821     invoke-virtual {v3, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
53823     move-object/from16 v0, p0
53825     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
53827     move/from16 v0, p1
53829     invoke-virtual {v3, v0}, Lcom/android/server/wm/WindowManagerService;->setCurrentUser(I)V
53831     move-object/from16 v0, p0
53833     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
53835     sget-object v4, Lcom/android/internal/widget/LockPatternUtils;->USER_SWITCH_LOCK_OPTIONS:Landroid/os/Bundle;
53837     invoke-virtual {v3, v4}, Lcom/android/server/wm/WindowManagerService;->lockNow(Landroid/os/Bundle;)V
53839     move-object/from16 v0, p0
53841     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mStartedUsers:Landroid/util/SparseArray;
53843     move/from16 v0, p1
53845     invoke-virtual {v3, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
53847     move-result-object v26
53849     check-cast v26, Lcom/android/server/am/UserStartedState;
53851     move-object/from16 v0, v26
53853     iget v3, v0, Lcom/android/server/am/UserStartedState;->mState:I
53855     const/4 v4, 0x2
53857     if-ne v3, v4, :cond_21c
53859     const/4 v3, 0x1
53861     move-object/from16 v0, v26
53863     iput v3, v0, Lcom/android/server/am/UserStartedState;->mState:I
53865     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateStartedUserArrayLocked()V
53867     const/16 v22, 0x1
53869     :cond_11d
53870     :goto_11d
53871     move-object/from16 v0, p0
53873     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53875     const/16 v4, 0x22
53877     invoke-virtual {v3, v4}, Landroid/os/Handler;->removeMessages(I)V
53879     move-object/from16 v0, p0
53881     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53883     const/16 v4, 0x24
53885     invoke-virtual {v3, v4}, Landroid/os/Handler;->removeMessages(I)V
53887     move-object/from16 v0, p0
53889     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53891     move-object/from16 v0, p0
53893     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53895     const/16 v5, 0x22
53897     move/from16 v0, v23
53899     move/from16 v1, p1
53901     move-object/from16 v2, v26
53903     invoke-virtual {v4, v5, v0, v1, v2}, Landroid/os/Handler;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;
53905     move-result-object v4
53907     invoke-virtual {v3, v4}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
53909     move-object/from16 v0, p0
53911     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53913     move-object/from16 v0, p0
53915     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
53917     const/16 v5, 0x24
53919     move/from16 v0, v23
53921     move/from16 v1, p1
53923     move-object/from16 v2, v26
53925     invoke-virtual {v4, v5, v0, v1, v2}, Landroid/os/Handler;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;
53927     move-result-object v4
53929     const-wide/16 v7, 0x7d0
53931     invoke-virtual {v3, v4, v7, v8}, Landroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z
53933     if-eqz v22, :cond_189
53935     new-instance v6, Landroid/content/Intent;
53937     const-string v3, "android.intent.action.USER_STARTED"
53939     invoke-direct {v6, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
53941     const/high16 v3, 0x5000
53943     invoke-virtual {v6, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
53945     const-string v3, "android.intent.extra.user_handle"
53947     move/from16 v0, p1
53949     invoke-virtual {v6, v3, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
53951     const/4 v4, 0x0
53953     const/4 v5, 0x0
53955     const/4 v7, 0x0
53957     const/4 v8, 0x0
53959     const/4 v9, 0x0
53961     const/4 v10, 0x0
53963     const/4 v11, 0x0
53965     const/4 v12, 0x0
53967     const/4 v13, 0x0
53969     const/4 v14, 0x0
53971     sget v15, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
53973     const/16 v16, 0x3e8
53975     move-object/from16 v3, p0
53977     move/from16 v17, p1
53979     invoke-direct/range {v3 .. v17}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
53981     :cond_189
53982     move-object/from16 v0, v25
53984     iget v3, v0, Landroid/content/pm/UserInfo;->flags:I
53986     and-int/lit8 v3, v3, 0x10
53988     if-nez v3, :cond_1c1
53990     if-eqz p1, :cond_22f
53992     new-instance v6, Landroid/content/Intent;
53994     const-string v3, "android.intent.action.USER_INITIALIZE"
53996     invoke-direct {v6, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
53998     const/high16 v3, 0x1000
54000     invoke-virtual {v6, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
54002     const/4 v4, 0x0
54004     const/4 v5, 0x0
54006     const/4 v7, 0x0
54008     new-instance v8, Lcom/android/server/am/ActivityManagerService$16;
54010     move-object/from16 v0, p0
54012     move-object/from16 v1, v26
54014     invoke-direct {v8, v0, v1}, Lcom/android/server/am/ActivityManagerService$16;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/UserStartedState;)V
54016     const/4 v9, 0x0
54018     const/4 v10, 0x0
54020     const/4 v11, 0x0
54022     const/4 v12, 0x0
54024     const/4 v13, 0x1
54026     const/4 v14, 0x0
54028     sget v15, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
54030     const/16 v16, 0x3e8
54032     move-object/from16 v3, p0
54034     move/from16 v17, p1
54036     invoke-direct/range {v3 .. v17}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
54038     const/4 v3, 0x1
54040     move-object/from16 v0, v26
54042     iput-boolean v3, v0, Lcom/android/server/am/UserStartedState;->initializing:Z
54044     :cond_1c1
54045     :goto_1c1
54046     move-object/from16 v0, p0
54048     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
54050     move/from16 v0, p1
54052     move-object/from16 v1, v26
54054     invoke-virtual {v3, v0, v1}, Lcom/android/server/am/ActivityStack;->switchUserLocked(ILcom/android/server/am/UserStartedState;)Z
54056     move-result v18
54058     if-nez v18, :cond_1d2
54060     invoke-virtual/range {p0 .. p1}, Lcom/android/server/am/ActivityManagerService;->startHomeActivityLocked(I)Z
54062     :cond_1d2
54063     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->getUserManagerLocked()Lcom/android/server/pm/UserManagerService;
54065     move-result-object v3
54067     move/from16 v0, p1
54069     invoke-virtual {v3, v0}, Lcom/android/server/pm/UserManagerService;->userForeground(I)V
54071     move-object/from16 v0, p0
54073     move/from16 v1, v23
54075     move/from16 v2, p1
54077     invoke-virtual {v0, v1, v2}, Lcom/android/server/am/ActivityManagerService;->sendUserSwitchBroadcastsLocked(II)V
54079     if-eqz v22, :cond_215
54081     new-instance v6, Landroid/content/Intent;
54083     const-string v3, "android.intent.action.USER_STARTING"
54085     invoke-direct {v6, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
54087     const/high16 v3, 0x4000
54089     invoke-virtual {v6, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
54091     const-string v3, "android.intent.extra.user_handle"
54093     move/from16 v0, p1
54095     invoke-virtual {v6, v3, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
54097     const/4 v4, 0x0
54099     const/4 v5, 0x0
54101     const/4 v7, 0x0
54103     new-instance v8, Lcom/android/server/am/ActivityManagerService$17;
54105     move-object/from16 v0, p0
54107     invoke-direct {v8, v0}, Lcom/android/server/am/ActivityManagerService$17;-><init>(Lcom/android/server/am/ActivityManagerService;)V
54109     const/4 v9, 0x0
54111     const/4 v10, 0x0
54113     const/4 v11, 0x0
54115     const-string v12, "android.permission.INTERACT_ACROSS_USERS"
54117     const/4 v13, 0x0
54119     const/4 v14, 0x0
54121     sget v15, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
54123     const/16 v16, 0x3e8
54125     const/16 v17, -0x1
54127     move-object/from16 v3, p0
54129     invoke-direct/range {v3 .. v17}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
54131     :cond_215
54132     monitor-exit p0
54133     :try_end_216
54134     .catchall {:try_start_92 .. :try_end_216} :catchall_8a
54136     invoke-static/range {v19 .. v20}, Landroid/os/Binder;->restoreCallingIdentity(J)V
54138     const/4 v3, 0x1
54140     goto/16 :goto_60
54142     :cond_21c
54143     :try_start_21c
54144     move-object/from16 v0, v26
54146     iget v3, v0, Lcom/android/server/am/UserStartedState;->mState:I
54148     const/4 v4, 0x3
54150     if-ne v3, v4, :cond_11d
54152     const/4 v3, 0x0
54154     move-object/from16 v0, v26
54156     iput v3, v0, Lcom/android/server/am/UserStartedState;->mState:I
54158     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->updateStartedUserArrayLocked()V
54160     const/16 v22, 0x1
54162     goto/16 :goto_11d
54164     :cond_22f
54165     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->getUserManagerLocked()Lcom/android/server/pm/UserManagerService;
54167     move-result-object v3
54169     move-object/from16 v0, v25
54171     iget v4, v0, Landroid/content/pm/UserInfo;->id:I
54173     invoke-virtual {v3, v4}, Lcom/android/server/pm/UserManagerService;->makeInitialized(I)V
54174     :try_end_23a
54175     .catchall {:try_start_21c .. :try_end_23a} :catchall_8a
54177     goto :goto_1c1
54178 .end method
54180 .method public systemReady(Ljava/lang/Runnable;)V
54181     .registers 46
54183     monitor-enter p0
54185     :try_start_1
54186     move-object/from16 v0, p0
54188     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
54190     if-eqz v3, :cond_e
54192     if-eqz p1, :cond_c
54194     invoke-interface/range {p1 .. p1}, Ljava/lang/Runnable;->run()V
54196     :cond_c
54197     monitor-exit p0
54199     :goto_d
54200     return-void
54202     :cond_e
54203     move-object/from16 v0, p0
54205     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mDidUpdate:Z
54207     if-nez v3, :cond_15d
54209     move-object/from16 v0, p0
54211     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
54213     if-eqz v3, :cond_1f
54215     monitor-exit p0
54217     goto :goto_d
54219     :catchall_1c
54220     move-exception v3
54222     monitor-exit p0
54223     :try_end_1e
54224     .catchall {:try_start_1 .. :try_end_1e} :catchall_1c
54226     throw v3
54228     :cond_1f
54229     :try_start_1f
54230     new-instance v6, Landroid/content/Intent;
54232     const-string v3, "android.intent.action.PRE_BOOT_COMPLETED"
54234     invoke-direct {v6, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
54235     :try_end_26
54236     .catchall {:try_start_1f .. :try_end_26} :catchall_1c
54238     const/16 v42, 0x0
54240     :try_start_28
54241     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
54243     move-result-object v3
54245     const/4 v4, 0x0
54247     const/4 v5, 0x0
54249     const/4 v7, 0x0
54251     invoke-interface {v3, v6, v4, v5, v7}, Landroid/content/pm/IPackageManager;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
54252     :try_end_32
54253     .catchall {:try_start_28 .. :try_end_32} :catchall_1c
54254     .catch Landroid/os/RemoteException; {:try_start_28 .. :try_end_32} :catch_3af
54256     move-result-object v42
54258     :goto_33
54259     if-eqz v42, :cond_14f
54261     :try_start_35
54262     invoke-interface/range {v42 .. v42}, Ljava/util/List;->size()I
54264     move-result v3
54266     add-int/lit8 v31, v3, -0x1
54268     :goto_3b
54269     if-ltz v31, :cond_5b
54271     move-object/from16 v0, v42
54273     move/from16 v1, v31
54275     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
54277     move-result-object v3
54279     check-cast v3, Landroid/content/pm/ResolveInfo;
54281     iget-object v3, v3, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
54283     iget-object v3, v3, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
54285     iget v3, v3, Landroid/content/pm/ApplicationInfo;->flags:I
54287     and-int/lit8 v3, v3, 0x1
54289     if-nez v3, :cond_58
54291     move-object/from16 v0, v42
54293     move/from16 v1, v31
54295     invoke-interface {v0, v1}, Ljava/util/List;->remove(I)Ljava/lang/Object;
54297     :cond_58
54298     add-int/lit8 v31, v31, -0x1
54300     goto :goto_3b
54302     :cond_5b
54303     const/high16 v3, 0x400
54305     invoke-virtual {v6, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
54307     invoke-static {}, Lcom/android/server/am/ActivityManagerService;->readLastDonePreBootReceivers()Ljava/util/ArrayList;
54309     move-result-object v36
54311     new-instance v29, Ljava/util/ArrayList;
54313     invoke-direct/range {v29 .. v29}, Ljava/util/ArrayList;-><init>()V
54315     const/16 v31, 0x0
54317     :goto_6b
54318     invoke-interface/range {v42 .. v42}, Ljava/util/List;->size()I
54320     move-result v3
54322     move/from16 v0, v31
54324     if-ge v0, v3, :cond_a6
54326     move-object/from16 v0, v42
54328     move/from16 v1, v31
54330     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
54332     move-result-object v3
54334     check-cast v3, Landroid/content/pm/ResolveInfo;
54336     iget-object v0, v3, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
54338     move-object/from16 v25, v0
54340     new-instance v28, Landroid/content/ComponentName;
54342     move-object/from16 v0, v25
54344     iget-object v3, v0, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
54346     move-object/from16 v0, v25
54348     iget-object v4, v0, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
54350     move-object/from16 v0, v28
54352     invoke-direct {v0, v3, v4}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
54354     move-object/from16 v0, v36
54356     move-object/from16 v1, v28
54358     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->contains(Ljava/lang/Object;)Z
54360     move-result v3
54362     if-eqz v3, :cond_a3
54364     move-object/from16 v0, v42
54366     move/from16 v1, v31
54368     invoke-interface {v0, v1}, Ljava/util/List;->remove(I)Ljava/lang/Object;
54370     add-int/lit8 v31, v31, -0x1
54372     :cond_a3
54373     add-int/lit8 v31, v31, 0x1
54375     goto :goto_6b
54377     :cond_a6
54378     invoke-virtual/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->getUsersLocked()[I
54380     move-result-object v43
54382     const/16 v31, 0x0
54384     :goto_ac
54385     invoke-interface/range {v42 .. v42}, Ljava/util/List;->size()I
54387     move-result v3
54389     move/from16 v0, v31
54391     if-ge v0, v3, :cond_14f
54393     move-object/from16 v0, v42
54395     move/from16 v1, v31
54397     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
54399     move-result-object v3
54401     check-cast v3, Landroid/content/pm/ResolveInfo;
54403     iget-object v0, v3, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
54405     move-object/from16 v25, v0
54407     new-instance v28, Landroid/content/ComponentName;
54409     move-object/from16 v0, v25
54411     iget-object v3, v0, Landroid/content/pm/ActivityInfo;->packageName:Ljava/lang/String;
54413     move-object/from16 v0, v25
54415     iget-object v4, v0, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
54417     move-object/from16 v0, v28
54419     invoke-direct {v0, v3, v4}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
54421     move-object/from16 v0, v29
54423     move-object/from16 v1, v28
54425     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
54427     move-object/from16 v0, v28
54429     invoke-virtual {v6, v0}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
54431     const/16 v35, 0x0
54433     :goto_df
54434     move-object/from16 v0, v43
54436     array-length v3, v0
54438     move/from16 v0, v35
54440     if-ge v0, v3, :cond_14b
54442     const/4 v8, 0x0
54444     invoke-interface/range {v42 .. v42}, Ljava/util/List;->size()I
54446     move-result v3
54448     add-int/lit8 v3, v3, -0x1
54450     move/from16 v0, v31
54452     if-ne v0, v3, :cond_105
54454     move-object/from16 v0, v43
54456     array-length v3, v0
54458     add-int/lit8 v3, v3, -0x1
54460     move/from16 v0, v35
54462     if-ne v0, v3, :cond_105
54464     new-instance v8, Lcom/android/server/am/ActivityManagerService$9;
54466     move-object/from16 v0, p0
54468     move-object/from16 v1, v29
54470     move-object/from16 v2, p1
54472     invoke-direct {v8, v0, v1, v2}, Lcom/android/server/am/ActivityManagerService$9;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/util/ArrayList;Ljava/lang/Runnable;)V
54474     :cond_105
54475     const-string v3, "ActivityManager"
54477     new-instance v4, Ljava/lang/StringBuilder;
54479     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
54481     const-string v5, "Sending system update to "
54483     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
54485     move-result-object v4
54487     invoke-virtual {v6}, Landroid/content/Intent;->getComponent()Landroid/content/ComponentName;
54489     move-result-object v5
54491     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
54493     move-result-object v4
54495     const-string v5, " for user "
54497     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
54499     move-result-object v4
54501     aget v5, v43, v35
54503     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
54505     move-result-object v4
54507     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
54509     move-result-object v4
54511     invoke-static {v3, v4}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
54513     const/4 v4, 0x0
54515     const/4 v5, 0x0
54517     const/4 v7, 0x0
54519     const/4 v9, 0x0
54521     const/4 v10, 0x0
54523     const/4 v11, 0x0
54525     const/4 v12, 0x0
54527     const/4 v13, 0x1
54529     const/4 v14, 0x0
54531     sget v15, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
54533     const/16 v16, 0x3e8
54535     aget v17, v43, v35
54537     move-object/from16 v3, p0
54539     invoke-direct/range {v3 .. v17}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
54541     if-eqz v8, :cond_148
54543     const/4 v3, 0x1
54545     move-object/from16 v0, p0
54547     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
54549     :cond_148
54550     add-int/lit8 v35, v35, 0x1
54552     goto :goto_df
54554     :cond_14b
54555     add-int/lit8 v31, v31, 0x1
54557     goto/16 :goto_ac
54559     :cond_14f
54560     move-object/from16 v0, p0
54562     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mWaitingUpdate:Z
54564     if-eqz v3, :cond_158
54566     monitor-exit p0
54568     goto/16 :goto_d
54570     :cond_158
54571     const/4 v3, 0x1
54573     move-object/from16 v0, p0
54575     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mDidUpdate:Z
54577     :cond_15d
54578     const/4 v3, 0x1
54580     move-object/from16 v0, p0
54582     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
54584     move-object/from16 v0, p0
54586     iget-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mStartRunning:Z
54588     if-nez v3, :cond_16b
54590     monitor-exit p0
54592     goto/16 :goto_d
54594     :cond_16b
54595     monitor-exit p0
54596     :try_end_16c
54597     .catchall {:try_start_35 .. :try_end_16c} :catchall_1c
54599     const/16 v39, 0x0
54601     move-object/from16 v0, p0
54603     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
54605     monitor-enter v4
54607     :try_start_173
54608     move-object/from16 v0, p0
54610     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
54612     invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
54613     :try_end_17a
54614     .catchall {:try_start_173 .. :try_end_17a} :catchall_1ea
54616     move-result v3
54618     add-int/lit8 v31, v3, -0x1
54620     move-object/from16 v40, v39
54622     :goto_17f
54623     if-ltz v31, :cond_1ac
54625     :try_start_181
54626     move-object/from16 v0, p0
54628     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
54630     move/from16 v0, v31
54632     invoke-virtual {v3, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
54634     move-result-object v38
54636     check-cast v38, Lcom/android/server/am/ProcessRecord;
54638     move-object/from16 v0, v38
54640     iget-object v3, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
54642     move-object/from16 v0, p0
54644     invoke-virtual {v0, v3}, Lcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
54646     move-result v3
54648     if-nez v3, :cond_3b6
54650     if-nez v40, :cond_3b2
54652     new-instance v39, Ljava/util/ArrayList;
54654     invoke-direct/range {v39 .. v39}, Ljava/util/ArrayList;-><init>()V
54655     :try_end_1a0
54656     .catchall {:try_start_181 .. :try_end_1a0} :catchall_3aa
54658     :goto_1a0
54659     :try_start_1a0
54660     move-object/from16 v0, v39
54662     move-object/from16 v1, v38
54664     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
54665     :try_end_1a7
54666     .catchall {:try_start_1a0 .. :try_end_1a7} :catchall_1ea
54668     :goto_1a7
54669     add-int/lit8 v31, v31, -0x1
54671     move-object/from16 v40, v39
54673     goto :goto_17f
54675     :cond_1ac
54676     :try_start_1ac
54677     monitor-exit v4
54678     :try_end_1ad
54679     .catchall {:try_start_1ac .. :try_end_1ad} :catchall_3aa
54681     monitor-enter p0
54683     if-eqz v40, :cond_1ed
54685     :try_start_1b0
54686     invoke-virtual/range {v40 .. v40}, Ljava/util/ArrayList;->size()I
54688     move-result v3
54690     add-int/lit8 v31, v3, -0x1
54692     :goto_1b6
54693     if-ltz v31, :cond_1ed
54695     move-object/from16 v0, v40
54697     move/from16 v1, v31
54699     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
54701     move-result-object v38
54703     check-cast v38, Lcom/android/server/am/ProcessRecord;
54705     const-string v3, "ActivityManager"
54707     new-instance v4, Ljava/lang/StringBuilder;
54709     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
54711     const-string v5, "Removing system update proc: "
54713     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
54715     move-result-object v4
54717     move-object/from16 v0, v38
54719     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
54721     move-result-object v4
54723     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
54725     move-result-object v4
54727     invoke-static {v3, v4}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
54729     const/4 v3, 0x1
54731     const/4 v4, 0x0
54733     const-string v5, "system update done"
54735     move-object/from16 v0, p0
54737     move-object/from16 v1, v38
54739     invoke-direct {v0, v1, v3, v4, v5}, Lcom/android/server/am/ActivityManagerService;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
54740     :try_end_1e7
54741     .catchall {:try_start_1b0 .. :try_end_1e7} :catchall_2ce
54743     add-int/lit8 v31, v31, -0x1
54745     goto :goto_1b6
54747     :catchall_1ea
54748     move-exception v3
54750     :goto_1eb
54751     :try_start_1eb
54752     monitor-exit v4
54753     :try_end_1ec
54754     .catchall {:try_start_1eb .. :try_end_1ec} :catchall_1ea
54756     throw v3
54758     :cond_1ed
54759     const/4 v3, 0x1
54761     :try_start_1ee
54762     move-object/from16 v0, p0
54764     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
54766     monitor-exit p0
54767     :try_end_1f3
54768     .catchall {:try_start_1ee .. :try_end_1f3} :catchall_2ce
54770     const-string v3, "ActivityManager"
54772     const-string v4, "System now ready"
54774     invoke-static {v3, v4}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
54776     const/16 v3, 0xbe0
54778     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
54780     move-result-wide v4
54782     invoke-static {v3, v4, v5}, Landroid/util/EventLog;->writeEvent(IJ)I
54784     monitor-enter p0
54786     :try_start_204
54787     move-object/from16 v0, p0
54789     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
54791     const/4 v4, 0x1
54793     if-ne v3, v4, :cond_282
54795     move-object/from16 v0, p0
54797     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
54799     invoke-virtual {v3}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
54801     move-result-object v3
54803     new-instance v4, Landroid/content/Intent;
54805     const-string v5, "android.intent.action.FACTORY_TEST"
54807     invoke-direct {v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
54809     const/16 v5, 0x400
54811     invoke-virtual {v3, v4, v5}, Landroid/content/pm/PackageManager;->resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;
54813     move-result-object v41
54815     const/16 v30, 0x0
54817     if-eqz v41, :cond_2e2
54819     move-object/from16 v0, v41
54821     iget-object v0, v0, Landroid/content/pm/ResolveInfo;->activityInfo:Landroid/content/pm/ActivityInfo;
54823     move-object/from16 v25, v0
54825     move-object/from16 v0, v25
54827     iget-object v0, v0, Landroid/content/pm/ActivityInfo;->applicationInfo:Landroid/content/pm/ApplicationInfo;
54829     move-object/from16 v26, v0
54831     move-object/from16 v0, v26
54833     iget v3, v0, Landroid/content/pm/ApplicationInfo;->flags:I
54835     and-int/lit8 v3, v3, 0x1
54837     if-eqz v3, :cond_2d1
54839     const-string v3, "android.intent.action.FACTORY_TEST"
54841     move-object/from16 v0, p0
54843     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
54845     const/4 v3, 0x0
54847     move-object/from16 v0, p0
54849     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
54851     new-instance v3, Landroid/content/ComponentName;
54853     move-object/from16 v0, v26
54855     iget-object v4, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
54857     move-object/from16 v0, v25
54859     iget-object v5, v0, Landroid/content/pm/ActivityInfo;->name:Ljava/lang/String;
54861     invoke-direct {v3, v4, v5}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
54863     move-object/from16 v0, p0
54865     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
54867     :goto_254
54868     if-eqz v30, :cond_282
54870     const/4 v3, 0x0
54872     move-object/from16 v0, p0
54874     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopAction:Ljava/lang/String;
54876     const/4 v3, 0x0
54878     move-object/from16 v0, p0
54880     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopData:Ljava/lang/String;
54882     const/4 v3, 0x0
54884     move-object/from16 v0, p0
54886     iput-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mTopComponent:Landroid/content/ComponentName;
54888     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
54890     move-result-object v37
54892     const/4 v3, 0x3
54894     move-object/from16 v0, v37
54896     iput v3, v0, Landroid/os/Message;->what:I
54898     invoke-virtual/range {v37 .. v37}, Landroid/os/Message;->getData()Landroid/os/Bundle;
54900     move-result-object v3
54902     const-string v4, "msg"
54904     move-object/from16 v0, v30
54906     invoke-virtual {v3, v4, v0}, Landroid/os/Bundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V
54908     move-object/from16 v0, p0
54910     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
54912     move-object/from16 v0, v37
54914     invoke-virtual {v3, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
54916     :cond_282
54917     monitor-exit p0
54918     :try_end_283
54919     .catchall {:try_start_204 .. :try_end_283} :catchall_2f3
54921     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->retrieveSettings()V
54923     if-eqz p1, :cond_28b
54925     invoke-interface/range {p1 .. p1}, Ljava/lang/Runnable;->run()V
54927     :cond_28b
54928     monitor-enter p0
54930     :try_start_28c
54931     move-object/from16 v0, p0
54933     iget v3, v0, Lcom/android/server/am/ActivityManagerService;->mFactoryTest:I
54934     :try_end_290
54935     .catchall {:try_start_28c .. :try_end_290} :catchall_39f
54937     const/4 v4, 0x1
54939     if-eq v3, v4, :cond_2f7
54941     :try_start_293
54942     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
54944     move-result-object v3
54946     const/16 v4, 0x400
54948     invoke-interface {v3, v4}, Landroid/content/pm/IPackageManager;->getPersistentApplications(I)Ljava/util/List;
54950     move-result-object v27
54952     if-eqz v27, :cond_2f7
54954     invoke-interface/range {v27 .. v27}, Ljava/util/List;->size()I
54956     move-result v24
54958     const/16 v31, 0x0
54960     :goto_2a5
54961     move/from16 v0, v31
54963     move/from16 v1, v24
54965     if-ge v0, v1, :cond_2f7
54967     move-object/from16 v0, v27
54969     move/from16 v1, v31
54971     invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
54973     move-result-object v34
54975     check-cast v34, Landroid/content/pm/ApplicationInfo;
54977     if-eqz v34, :cond_2cb
54979     move-object/from16 v0, v34
54981     iget-object v3, v0, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
54983     const-string v4, "android"
54985     invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
54987     move-result v3
54989     if-nez v3, :cond_2cb
54991     const/4 v3, 0x0
54993     move-object/from16 v0, p0
54995     move-object/from16 v1, v34
54997     invoke-virtual {v0, v1, v3}, Lcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
54998     :try_end_2cb
54999     .catchall {:try_start_293 .. :try_end_2cb} :catchall_39f
55000     .catch Landroid/os/RemoteException; {:try_start_293 .. :try_end_2cb} :catch_2f6
55002     :cond_2cb
55003     add-int/lit8 v31, v31, 0x1
55005     goto :goto_2a5
55007     :catchall_2ce
55008     move-exception v3
55010     :try_start_2cf
55011     monitor-exit p0
55012     :try_end_2d0
55013     .catchall {:try_start_2cf .. :try_end_2d0} :catchall_2ce
55015     throw v3
55017     :cond_2d1
55018     :try_start_2d1
55019     move-object/from16 v0, p0
55021     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
55023     invoke-virtual {v3}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
55025     move-result-object v3
55027     const v4, 0x1040358
55029     invoke-virtual {v3, v4}, Landroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;
55031     move-result-object v30
55033     goto/16 :goto_254
55035     :cond_2e2
55036     move-object/from16 v0, p0
55038     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mContext:Landroid/content/Context;
55040     invoke-virtual {v3}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
55042     move-result-object v3
55044     const v4, 0x1040359
55046     invoke-virtual {v3, v4}, Landroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;
55048     move-result-object v30
55050     goto/16 :goto_254
55052     :catchall_2f3
55053     move-exception v3
55055     monitor-exit p0
55056     :try_end_2f5
55057     .catchall {:try_start_2d1 .. :try_end_2f5} :catchall_2f3
55059     throw v3
55061     :catch_2f6
55062     move-exception v3
55064     :cond_2f7
55065     const/4 v3, 0x1
55067     :try_start_2f8
55068     move-object/from16 v0, p0
55070     iput-boolean v3, v0, Lcom/android/server/am/ActivityManagerService;->mBooting:Z
55071     :try_end_2fc
55072     .catchall {:try_start_2f8 .. :try_end_2fc} :catchall_39f
55074     :try_start_2fc
55075     invoke-static {}, Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
55077     move-result-object v3
55079     invoke-interface {v3}, Landroid/content/pm/IPackageManager;->hasSystemUidErrors()Z
55081     move-result v3
55083     if-eqz v3, :cond_319
55085     invoke-static {}, Landroid/os/Message;->obtain()Landroid/os/Message;
55087     move-result-object v37
55089     const/16 v3, 0xe
55091     move-object/from16 v0, v37
55093     iput v3, v0, Landroid/os/Message;->what:I
55095     move-object/from16 v0, p0
55097     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
55099     move-object/from16 v0, v37
55101     invoke-virtual {v3, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
55102     :try_end_319
55103     .catchall {:try_start_2fc .. :try_end_319} :catchall_39f
55104     .catch Landroid/os/RemoteException; {:try_start_2fc .. :try_end_319} :catch_3a7
55106     :cond_319
55107     :goto_319
55108     :try_start_319
55109     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
55110     :try_end_31c
55111     .catchall {:try_start_319 .. :try_end_31c} :catchall_39f
55113     move-result-wide v32
55115     :try_start_31d
55116     new-instance v6, Landroid/content/Intent;
55118     const-string v3, "android.intent.action.USER_STARTED"
55120     invoke-direct {v6, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
55122     const/high16 v3, 0x5000
55124     invoke-virtual {v6, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
55126     const-string v3, "android.intent.extra.user_handle"
55128     move-object/from16 v0, p0
55130     iget v4, v0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
55132     invoke-virtual {v6, v3, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
55134     const/4 v10, 0x0
55136     const/4 v11, 0x0
55138     const/4 v13, 0x0
55140     const/4 v14, 0x0
55142     const/4 v15, 0x0
55144     const/16 v16, 0x0
55146     const/16 v17, 0x0
55148     const/16 v18, 0x0
55150     const/16 v19, 0x0
55152     const/16 v20, 0x0
55154     sget v21, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
55156     const/16 v22, 0x3e8
55158     move-object/from16 v0, p0
55160     iget v0, v0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
55162     move/from16 v23, v0
55164     move-object/from16 v9, p0
55166     move-object v12, v6
55168     invoke-direct/range {v9 .. v23}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
55170     new-instance v6, Landroid/content/Intent;
55172     const-string v3, "android.intent.action.USER_STARTING"
55174     invoke-direct {v6, v3}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
55176     const/high16 v3, 0x4000
55178     invoke-virtual {v6, v3}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
55180     const-string v3, "android.intent.extra.user_handle"
55182     move-object/from16 v0, p0
55184     iget v4, v0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
55186     invoke-virtual {v6, v3, v4}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
55188     const/4 v10, 0x0
55190     const/4 v11, 0x0
55192     const/4 v13, 0x0
55194     new-instance v14, Lcom/android/server/am/ActivityManagerService$10;
55196     move-object/from16 v0, p0
55198     invoke-direct {v14, v0}, Lcom/android/server/am/ActivityManagerService$10;-><init>(Lcom/android/server/am/ActivityManagerService;)V
55200     const/4 v15, 0x0
55202     const/16 v16, 0x0
55204     const/16 v17, 0x0
55206     const-string v18, "android.permission.INTERACT_ACROSS_USERS"
55208     const/16 v19, 0x0
55210     const/16 v20, 0x0
55212     sget v21, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
55214     const/16 v22, 0x3e8
55216     const/16 v23, -0x1
55218     move-object/from16 v9, p0
55220     move-object v12, v6
55222     invoke-direct/range {v9 .. v23}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
55223     :try_end_387
55224     .catchall {:try_start_31d .. :try_end_387} :catchall_3a2
55226     :try_start_387
55227     invoke-static/range {v32 .. v33}, Landroid/os/Binder;->restoreCallingIdentity(J)V
55229     move-object/from16 v0, p0
55231     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
55233     const/4 v4, 0x0
55235     invoke-virtual {v3, v4}, Lcom/android/server/am/ActivityStack;->resumeTopActivityLocked(Lcom/android/server/am/ActivityRecord;)Z
55237     const/4 v3, -0x1
55239     move-object/from16 v0, p0
55241     iget v4, v0, Lcom/android/server/am/ActivityManagerService;->mCurrentUserId:I
55243     move-object/from16 v0, p0
55245     invoke-virtual {v0, v3, v4}, Lcom/android/server/am/ActivityManagerService;->sendUserSwitchBroadcastsLocked(II)V
55247     monitor-exit p0
55249     goto/16 :goto_d
55251     :catchall_39f
55252     move-exception v3
55254     monitor-exit p0
55255     :try_end_3a1
55256     .catchall {:try_start_387 .. :try_end_3a1} :catchall_39f
55258     throw v3
55260     :catchall_3a2
55261     move-exception v3
55263     :try_start_3a3
55264     invoke-static/range {v32 .. v33}, Landroid/os/Binder;->restoreCallingIdentity(J)V
55266     throw v3
55267     :try_end_3a7
55268     .catchall {:try_start_3a3 .. :try_end_3a7} :catchall_39f
55270     :catch_3a7
55271     move-exception v3
55273     goto/16 :goto_319
55275     :catchall_3aa
55276     move-exception v3
55278     move-object/from16 v39, v40
55280     goto/16 :goto_1eb
55282     :catch_3af
55283     move-exception v3
55285     goto/16 :goto_33
55287     :cond_3b2
55288     move-object/from16 v39, v40
55290     goto/16 :goto_1a0
55292     :cond_3b6
55293     move-object/from16 v39, v40
55295     goto/16 :goto_1a7
55296 .end method
55298 .method public targetTaskAffinityMatchesActivity(Landroid/os/IBinder;Ljava/lang/String;)Z
55299     .registers 5
55301     invoke-static {p1}, Lcom/android/server/am/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/am/ActivityRecord;
55303     move-result-object v0
55305     if-eqz v0, :cond_18
55307     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
55309     iget-object v1, v1, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
55311     if-eqz v1, :cond_18
55313     iget-object v1, v0, Lcom/android/server/am/ActivityRecord;->task:Lcom/android/server/am/TaskRecord;
55315     iget-object v1, v1, Lcom/android/server/am/TaskRecord;->affinity:Ljava/lang/String;
55317     invoke-virtual {v1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
55319     move-result v1
55321     if-eqz v1, :cond_18
55323     const/4 v1, 0x1
55325     :goto_17
55326     return v1
55328     :cond_18
55329     const/4 v1, 0x0
55331     goto :goto_17
55332 .end method
55334 .method public testIsSystemReady()Z
55335     .registers 2
55337     iget-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mSystemReady:Z
55339     return v0
55340 .end method
55342 .method timeoutUserSwitch(Lcom/android/server/am/UserStartedState;II)V
55343     .registers 7
55345     monitor-enter p0
55347     :try_start_1
55348     const-string v0, "ActivityManager"
55350     new-instance v1, Ljava/lang/StringBuilder;
55352     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
55354     const-string v2, "User switch timeout: from "
55356     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55358     move-result-object v1
55360     invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
55362     move-result-object v1
55364     const-string v2, " to "
55366     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55368     move-result-object v1
55370     invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
55372     move-result-object v1
55374     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
55376     move-result-object v1
55378     invoke-static {v0, v1}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
55380     invoke-virtual {p0, p1, p2, p3}, Lcom/android/server/am/ActivityManagerService;->sendContinueUserSwitchLocked(Lcom/android/server/am/UserStartedState;II)V
55382     monitor-exit p0
55384     return-void
55386     :catchall_28
55387     move-exception v0
55389     monitor-exit p0
55390     :try_end_2a
55391     .catchall {:try_start_1 .. :try_end_2a} :catchall_28
55393     throw v0
55394 .end method
55396 .method final trimApplications()V
55397     .registers 7
55399     monitor-enter p0
55401     :try_start_1
55402     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
55404     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
55406     move-result v2
55408     add-int/lit8 v1, v2, -0x1
55410     :goto_9
55411     if-ltz v1, :cond_be
55413     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
55415     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
55417     move-result-object v0
55419     check-cast v0, Lcom/android/server/am/ProcessRecord;
55421     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->activities:Ljava/util/ArrayList;
55423     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
55425     move-result v2
55427     if-nez v2, :cond_b0
55429     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->curReceiver:Lcom/android/server/am/BroadcastRecord;
55431     if-nez v2, :cond_b0
55433     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
55435     invoke-virtual {v2}, Ljava/util/HashSet;->size()I
55437     move-result v2
55439     if-nez v2, :cond_b0
55441     const-string v3, "ActivityManager"
55443     new-instance v2, Ljava/lang/StringBuilder;
55445     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
55447     const-string v4, "Exiting empty application process "
55449     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55451     move-result-object v2
55453     iget-object v4, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
55455     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55457     move-result-object v2
55459     const-string v4, " ("
55461     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55463     move-result-object v4
55465     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
55467     if-eqz v2, :cond_b4
55469     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
55471     invoke-interface {v2}, Landroid/app/IApplicationThread;->asBinder()Landroid/os/IBinder;
55473     move-result-object v2
55475     :goto_4a
55476     invoke-virtual {v4, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
55478     move-result-object v2
55480     const-string v4, ")\n"
55482     invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55484     move-result-object v2
55486     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
55488     move-result-object v2
55490     invoke-static {v3, v2}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
55492     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
55494     if-lez v2, :cond_b6
55496     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
55498     sget v3, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
55500     if-eq v2, v3, :cond_b6
55502     const/16 v2, 0x7547
55504     const/4 v3, 0x5
55506     new-array v3, v3, [Ljava/lang/Object;
55508     const/4 v4, 0x0
55510     iget v5, v0, Lcom/android/server/am/ProcessRecord;->userId:I
55512     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
55514     move-result-object v5
55516     aput-object v5, v3, v4
55518     const/4 v4, 0x1
55520     iget v5, v0, Lcom/android/server/am/ProcessRecord;->pid:I
55522     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
55524     move-result-object v5
55526     aput-object v5, v3, v4
55528     const/4 v4, 0x2
55530     iget-object v5, v0, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
55532     aput-object v5, v3, v4
55534     const/4 v4, 0x3
55536     iget v5, v0, Lcom/android/server/am/ProcessRecord;->setAdj:I
55538     invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
55540     move-result-object v5
55542     aput-object v5, v3, v4
55544     const/4 v4, 0x4
55546     const-string v5, "empty"
55548     aput-object v5, v3, v4
55550     invoke-static {v2, v3}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
55552     iget v2, v0, Lcom/android/server/am/ProcessRecord;->pid:I
55554     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
55556     :goto_97
55557     const/4 v2, 0x0
55559     const/4 v3, 0x1
55561     const/4 v4, -0x1
55563     invoke-direct {p0, v0, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZI)V
55565     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mRemovedProcesses:Ljava/util/ArrayList;
55567     invoke-virtual {v2, v1}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
55569     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
55571     if-eqz v2, :cond_b0
55573     iget-boolean v2, v0, Lcom/android/server/am/ProcessRecord;->persistent:Z
55575     if-eqz v2, :cond_b0
55577     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->info:Landroid/content/pm/ApplicationInfo;
55579     const/4 v3, 0x0
55581     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Z)Lcom/android/server/am/ProcessRecord;
55582     :try_end_b0
55583     .catchall {:try_start_1 .. :try_end_b0} :catchall_c3
55585     :cond_b0
55586     add-int/lit8 v1, v1, -0x1
55588     goto/16 :goto_9
55590     :cond_b4
55591     const/4 v2, 0x0
55593     goto :goto_4a
55595     :cond_b6
55596     :try_start_b6
55597     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
55599     invoke-interface {v2}, Landroid/app/IApplicationThread;->scheduleExit()V
55600     :try_end_bb
55601     .catchall {:try_start_b6 .. :try_end_bb} :catchall_c3
55602     .catch Ljava/lang/Exception; {:try_start_b6 .. :try_end_bb} :catch_bc
55604     goto :goto_97
55606     :catch_bc
55607     move-exception v2
55609     goto :goto_97
55611     :cond_be
55612     :try_start_be
55613     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
55615     monitor-exit p0
55617     return-void
55619     :catchall_c3
55620     move-exception v2
55622     monitor-exit p0
55623     :try_end_c5
55624     .catchall {:try_start_be .. :try_end_c5} :catchall_c3
55626     throw v2
55627 .end method
55629 .method public unbindBackupAgent(Landroid/content/pm/ApplicationInfo;)V
55630     .registers 7
55632     if-nez p1, :cond_a
55634     const-string v2, "ActivityManager"
55636     const-string v3, "unbind backup agent for null app"
55638     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
55640     :goto_9
55641     return-void
55643     :cond_a
55644     monitor-enter p0
55646     :try_start_b
55647     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
55649     if-nez v2, :cond_21
55651     const-string v2, "ActivityManager"
55653     const-string v3, "Unbinding backup agent with no active backup"
55655     invoke-static {v2, v3}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
55656     :try_end_16
55657     .catchall {:try_start_b .. :try_end_16} :catchall_79
55659     const/4 v2, 0x0
55661     :try_start_17
55662     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
55664     const/4 v2, 0x0
55666     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
55668     monitor-exit p0
55670     goto :goto_9
55672     :catchall_1e
55673     move-exception v2
55675     monitor-exit p0
55676     :try_end_20
55677     .catchall {:try_start_17 .. :try_end_20} :catchall_1e
55679     throw v2
55681     :cond_21
55682     :try_start_21
55683     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
55685     iget-object v3, p1, Landroid/content/pm/ApplicationInfo;->packageName:Ljava/lang/String;
55687     invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
55689     move-result v2
55691     if-nez v2, :cond_51
55693     const-string v2, "ActivityManager"
55695     new-instance v3, Ljava/lang/StringBuilder;
55697     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
55699     const-string v4, "Unbind of "
55701     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55703     move-result-object v3
55705     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
55707     move-result-object v3
55709     const-string v4, " but is not the current backup target"
55711     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55713     move-result-object v3
55715     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
55717     move-result-object v3
55719     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
55720     :try_end_49
55721     .catchall {:try_start_21 .. :try_end_49} :catchall_79
55723     const/4 v2, 0x0
55725     :try_start_4a
55726     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
55728     const/4 v2, 0x0
55730     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
55732     monitor-exit p0
55733     :try_end_50
55734     .catchall {:try_start_4a .. :try_end_50} :catchall_1e
55736     goto :goto_9
55738     :cond_51
55739     :try_start_51
55740     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
55742     iget-object v1, v2, Lcom/android/server/am/BackupRecord;->app:Lcom/android/server/am/ProcessRecord;
55744     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
55746     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
55747     :try_end_5a
55748     .catchall {:try_start_51 .. :try_end_5a} :catchall_79
55750     if-eqz v2, :cond_65
55752     :try_start_5c
55753     iget-object v2, v1, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
55755     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
55757     move-result-object v3
55759     invoke-interface {v2, p1, v3}, Landroid/app/IApplicationThread;->scheduleDestroyBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;)V
55760     :try_end_65
55761     .catchall {:try_start_5c .. :try_end_65} :catchall_79
55762     .catch Ljava/lang/Exception; {:try_start_5c .. :try_end_65} :catch_6d
55764     :cond_65
55765     :goto_65
55766     const/4 v2, 0x0
55768     :try_start_66
55769     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
55771     const/4 v2, 0x0
55773     iput-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
55775     monitor-exit p0
55776     :try_end_6c
55777     .catchall {:try_start_66 .. :try_end_6c} :catchall_1e
55779     goto :goto_9
55781     :catch_6d
55782     move-exception v0
55784     :try_start_6e
55785     const-string v2, "ActivityManager"
55787     const-string v3, "Exception when unbinding backup agent:"
55789     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
55791     invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V
55792     :try_end_78
55793     .catchall {:try_start_6e .. :try_end_78} :catchall_79
55795     goto :goto_65
55797     :catchall_79
55798     move-exception v2
55800     const/4 v3, 0x0
55802     :try_start_7b
55803     iput-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mBackupTarget:Lcom/android/server/am/BackupRecord;
55805     const/4 v3, 0x0
55807     iput-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mBackupAppName:Ljava/lang/String;
55809     throw v2
55810     :try_end_81
55811     .catchall {:try_start_7b .. :try_end_81} :catchall_1e
55812 .end method
55814 .method public unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V
55815     .registers 6
55817     if-eqz p2, :cond_11
55819     invoke-virtual {p2}, Landroid/content/Intent;->hasFileDescriptors()Z
55821     move-result v0
55823     const/4 v1, 0x1
55825     if-ne v0, v1, :cond_11
55827     new-instance v0, Ljava/lang/IllegalArgumentException;
55829     const-string v1, "File descriptors passed in Intent"
55831     invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
55833     throw v0
55835     :cond_11
55836     monitor-enter p0
55838     :try_start_12
55839     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
55841     check-cast p1, Lcom/android/server/am/ServiceRecord;
55843     invoke-virtual {v0, p1, p2, p3}, Lcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V
55845     monitor-exit p0
55847     return-void
55849     :catchall_1b
55850     move-exception v0
55852     monitor-exit p0
55853     :try_end_1d
55854     .catchall {:try_start_12 .. :try_end_1d} :catchall_1b
55856     throw v0
55857 .end method
55859 .method public unbindService(Landroid/app/IServiceConnection;)Z
55860     .registers 3
55862     monitor-enter p0
55864     :try_start_1
55865     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mServices:Lcom/android/server/am/ActiveServices;
55867     invoke-virtual {v0, p1}, Lcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z
55869     move-result v0
55871     monitor-exit p0
55873     return v0
55875     :catchall_9
55876     move-exception v0
55878     monitor-exit p0
55879     :try_end_b
55880     .catchall {:try_start_1 .. :try_end_b} :catchall_9
55882     throw v0
55883 .end method
55885 .method public final unbroadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;I)V
55886     .registers 18
55888     if-eqz p2, :cond_11
55890     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->hasFileDescriptors()Z
55892     move-result v1
55894     const/4 v2, 0x1
55896     if-ne v1, v2, :cond_11
55898     new-instance v1, Ljava/lang/IllegalArgumentException;
55900     const-string v2, "File descriptors passed in Intent"
55902     invoke-direct {v1, v2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
55904     throw v1
55906     :cond_11
55907     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
55909     move-result v2
55911     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
55913     move-result v3
55915     const/4 v5, 0x1
55917     const/4 v6, 0x0
55919     const-string v7, "removeStickyBroadcast"
55921     const/4 v8, 0x0
55923     move-object v1, p0
55925     move/from16 v4, p3
55927     invoke-virtual/range {v1 .. v8}, Lcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
55929     move-result p3
55931     monitor-enter p0
55933     :try_start_26
55934     const-string v1, "android.permission.BROADCAST_STICKY"
55936     invoke-virtual {p0, v1}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
55938     move-result v1
55940     if-eqz v1, :cond_6d
55942     new-instance v1, Ljava/lang/StringBuilder;
55944     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
55946     const-string v2, "Permission Denial: unbroadcastIntent() from pid="
55948     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55950     move-result-object v1
55952     invoke-static {}, Landroid/os/Binder;->getCallingPid()I
55954     move-result v2
55956     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
55958     move-result-object v1
55960     const-string v2, ", uid="
55962     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55964     move-result-object v1
55966     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
55968     move-result v2
55970     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
55972     move-result-object v1
55974     const-string v2, " requires "
55976     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55978     move-result-object v1
55980     const-string v2, "android.permission.BROADCAST_STICKY"
55982     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
55984     move-result-object v1
55986     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
55988     move-result-object v12
55990     const-string v1, "ActivityManager"
55992     invoke-static {v1, v12}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
55994     new-instance v1, Ljava/lang/SecurityException;
55996     invoke-direct {v1, v12}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
55998     throw v1
56000     :catchall_6a
56001     move-exception v1
56003     monitor-exit p0
56004     :try_end_6c
56005     .catchall {:try_start_26 .. :try_end_6c} :catchall_6a
56007     throw v1
56009     :cond_6d
56010     :try_start_6d
56011     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
56013     move/from16 v0, p3
56015     invoke-virtual {v1, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
56017     move-result-object v13
56019     check-cast v13, Ljava/util/HashMap;
56021     if-eqz v13, :cond_b7
56023     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;
56025     move-result-object v1
56027     invoke-virtual {v13, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
56029     move-result-object v11
56031     check-cast v11, Ljava/util/ArrayList;
56033     if-eqz v11, :cond_aa
56035     invoke-virtual {v11}, Ljava/util/ArrayList;->size()I
56037     move-result v9
56039     const/4 v10, 0x0
56041     :goto_8a
56042     if-ge v10, v9, :cond_9d
56044     invoke-virtual {v11, v10}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
56046     move-result-object v1
56048     check-cast v1, Landroid/content/Intent;
56050     move-object/from16 v0, p2
56052     invoke-virtual {v0, v1}, Landroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
56054     move-result v1
56056     if-eqz v1, :cond_b9
56058     invoke-virtual {v11, v10}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
56060     :cond_9d
56061     invoke-virtual {v11}, Ljava/util/ArrayList;->size()I
56063     move-result v1
56065     if-gtz v1, :cond_aa
56067     invoke-virtual/range {p2 .. p2}, Landroid/content/Intent;->getAction()Ljava/lang/String;
56069     move-result-object v1
56071     invoke-virtual {v13, v1}, Ljava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
56073     :cond_aa
56074     invoke-virtual {v13}, Ljava/util/HashMap;->size()I
56076     move-result v1
56078     if-gtz v1, :cond_b7
56080     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mStickyBroadcasts:Landroid/util/SparseArray;
56082     move/from16 v0, p3
56084     invoke-virtual {v1, v0}, Landroid/util/SparseArray;->remove(I)V
56086     :cond_b7
56087     monitor-exit p0
56088     :try_end_b8
56089     .catchall {:try_start_6d .. :try_end_b8} :catchall_6a
56091     return-void
56093     :cond_b9
56094     add-int/lit8 v10, v10, 0x1
56096     goto :goto_8a
56097 .end method
56099 .method public unhandledBack()V
56100     .registers 11
56102     const/4 v2, 0x1
56104     const-string v0, "android.permission.FORCE_BACK"
56106     const-string v1, "unhandledBack()"
56108     invoke-virtual {p0, v0, v1}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
56110     monitor-enter p0
56112     :try_start_9
56113     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
56115     iget-object v0, v0, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
56117     invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
56119     move-result v7
56121     if-le v7, v2, :cond_32
56123     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
56125     move-result-wide v8
56127     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
56129     iget-object v1, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
56131     iget-object v1, v1, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
56133     add-int/lit8 v2, v7, -0x1
56135     invoke-virtual {v1, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
56137     move-result-object v1
56139     check-cast v1, Lcom/android/server/am/ActivityRecord;
56141     add-int/lit8 v2, v7, -0x1
56143     const/4 v3, 0x0
56145     const/4 v4, 0x0
56147     const-string v5, "unhandled-back"
56149     const/4 v6, 0x1
56151     invoke-virtual/range {v0 .. v6}, Lcom/android/server/am/ActivityStack;->finishActivityLocked(Lcom/android/server/am/ActivityRecord;IILandroid/content/Intent;Ljava/lang/String;Z)Z
56153     invoke-static {v8, v9}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56155     :cond_32
56156     monitor-exit p0
56158     return-void
56160     :catchall_34
56161     move-exception v0
56163     monitor-exit p0
56164     :try_end_36
56165     .catchall {:try_start_9 .. :try_end_36} :catchall_34
56167     throw v0
56168 .end method
56170 .method public unregisterProcessObserver(Landroid/app/IProcessObserver;)V
56171     .registers 3
56173     monitor-enter p0
56175     :try_start_1
56176     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mProcessObservers:Landroid/os/RemoteCallbackList;
56178     invoke-virtual {v0, p1}, Landroid/os/RemoteCallbackList;->unregister(Landroid/os/IInterface;)Z
56180     monitor-exit p0
56182     return-void
56184     :catchall_8
56185     move-exception v0
56187     monitor-exit p0
56188     :try_end_a
56189     .catchall {:try_start_1 .. :try_end_a} :catchall_8
56191     throw v0
56192 .end method
56194 .method public unregisterReceiver(Landroid/content/IIntentReceiver;)V
56195     .registers 15
56197     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
56199     move-result-wide v9
56201     const/4 v8, 0x0
56203     :try_start_5
56204     monitor-enter p0
56205     :try_end_6
56206     .catchall {:try_start_5 .. :try_end_6} :catchall_61
56208     :try_start_6
56209     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mRegisteredReceivers:Ljava/util/HashMap;
56211     invoke-interface {p1}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
56213     move-result-object v1
56215     invoke-virtual {v0, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
56217     move-result-object v12
56219     check-cast v12, Lcom/android/server/am/ReceiverList;
56221     if-eqz v12, :cond_54
56223     iget-object v0, v12, Lcom/android/server/am/ReceiverList;->curBroadcast:Lcom/android/server/am/BroadcastRecord;
56225     if-eqz v0, :cond_35
56227     iget-object v11, v12, Lcom/android/server/am/ReceiverList;->curBroadcast:Lcom/android/server/am/BroadcastRecord;
56229     invoke-interface {p1}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
56231     move-result-object v1
56233     iget v2, v11, Lcom/android/server/am/BroadcastRecord;->resultCode:I
56235     iget-object v3, v11, Lcom/android/server/am/BroadcastRecord;->resultData:Ljava/lang/String;
56237     iget-object v4, v11, Lcom/android/server/am/BroadcastRecord;->resultExtras:Landroid/os/Bundle;
56239     iget-boolean v5, v11, Lcom/android/server/am/BroadcastRecord;->resultAbort:Z
56241     const/4 v6, 0x1
56243     move-object v0, p0
56245     invoke-direct/range {v0 .. v6}, Lcom/android/server/am/ActivityManagerService;->finishReceiverLocked(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
56247     move-result v7
56249     if-eqz v7, :cond_35
56251     const/4 v8, 0x1
56253     iget-object v0, v11, Lcom/android/server/am/BroadcastRecord;->queue:Lcom/android/server/am/BroadcastQueue;
56255     const/4 v1, 0x0
56257     invoke-virtual {v0, v1}, Lcom/android/server/am/BroadcastQueue;->processNextBroadcast(Z)V
56259     :cond_35
56260     iget-object v0, v12, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
56262     if-eqz v0, :cond_40
56264     iget-object v0, v12, Lcom/android/server/am/ReceiverList;->app:Lcom/android/server/am/ProcessRecord;
56266     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->receivers:Ljava/util/HashSet;
56268     invoke-virtual {v0, v12}, Ljava/util/HashSet;->remove(Ljava/lang/Object;)Z
56270     :cond_40
56271     invoke-virtual {p0, v12}, Lcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
56273     iget-boolean v0, v12, Lcom/android/server/am/ReceiverList;->linkedToDeath:Z
56275     if-eqz v0, :cond_54
56277     const/4 v0, 0x0
56279     iput-boolean v0, v12, Lcom/android/server/am/ReceiverList;->linkedToDeath:Z
56281     iget-object v0, v12, Lcom/android/server/am/ReceiverList;->receiver:Landroid/content/IIntentReceiver;
56283     invoke-interface {v0}, Landroid/content/IIntentReceiver;->asBinder()Landroid/os/IBinder;
56285     move-result-object v0
56287     const/4 v1, 0x0
56289     invoke-interface {v0, v12, v1}, Landroid/os/IBinder;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z
56291     :cond_54
56292     monitor-exit p0
56293     :try_end_55
56294     .catchall {:try_start_6 .. :try_end_55} :catchall_5e
56296     if-eqz v8, :cond_5a
56298     :try_start_57
56299     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->trimApplications()V
56300     :try_end_5a
56301     .catchall {:try_start_57 .. :try_end_5a} :catchall_61
56303     :cond_5a
56304     invoke-static {v9, v10}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56306     return-void
56308     :catchall_5e
56309     move-exception v0
56311     :try_start_5f
56312     monitor-exit p0
56313     :try_end_60
56314     .catchall {:try_start_5f .. :try_end_60} :catchall_5e
56316     :try_start_60
56317     throw v0
56318     :try_end_61
56319     .catchall {:try_start_60 .. :try_end_61} :catchall_61
56321     :catchall_61
56322     move-exception v0
56324     invoke-static {v9, v10}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56326     throw v0
56327 .end method
56329 .method public unregisterUserSwitchObserver(Landroid/app/IUserSwitchObserver;)V
56330     .registers 3
56332     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUserSwitchObservers:Landroid/os/RemoteCallbackList;
56334     invoke-virtual {v0, p1}, Landroid/os/RemoteCallbackList;->unregister(Landroid/os/IInterface;)Z
56336     return-void
56337 .end method
56339 .method public unstableProviderDied(Landroid/os/IBinder;)V
56340     .registers 13
56342     :try_start_0
56343     move-object v0, p1
56345     check-cast v0, Lcom/android/server/am/ContentProviderConnection;
56347     move-object v1, v0
56348     :try_end_4
56349     .catch Ljava/lang/ClassCastException; {:try_start_0 .. :try_end_4} :catch_e
56351     if-nez v1, :cond_33
56353     new-instance v8, Ljava/lang/NullPointerException;
56355     const-string v9, "connection is null"
56357     invoke-direct {v8, v9}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
56359     throw v8
56361     :catch_e
56362     move-exception v2
56364     new-instance v8, Ljava/lang/StringBuilder;
56366     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
56368     const-string v9, "refContentProvider: "
56370     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56372     move-result-object v8
56374     invoke-virtual {v8, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
56376     move-result-object v8
56378     const-string v9, " not a ContentProviderConnection"
56380     invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56382     move-result-object v8
56384     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
56386     move-result-object v5
56388     const-string v8, "ActivityManager"
56390     invoke-static {v8, v5}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
56392     new-instance v8, Ljava/lang/IllegalArgumentException;
56394     invoke-direct {v8, v5}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
56396     throw v8
56398     :cond_33
56399     monitor-enter p0
56401     :try_start_34
56402     iget-object v8, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
56404     iget-object v7, v8, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
56406     monitor-exit p0
56408     if-nez v7, :cond_3f
56410     :goto_3b
56411     return-void
56413     :catchall_3c
56414     move-exception v8
56416     monitor-exit p0
56417     :try_end_3e
56418     .catchall {:try_start_34 .. :try_end_3e} :catchall_3c
56420     throw v8
56422     :cond_3f
56423     invoke-interface {v7}, Landroid/content/IContentProvider;->asBinder()Landroid/os/IBinder;
56425     move-result-object v8
56427     invoke-interface {v8}, Landroid/os/IBinder;->pingBinder()Z
56429     move-result v8
56431     if-eqz v8, :cond_7b
56433     monitor-enter p0
56435     :try_start_4a
56436     const-string v8, "ActivityManager"
56438     new-instance v9, Ljava/lang/StringBuilder;
56440     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
56442     const-string v10, "unstableProviderDied: caller "
56444     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56446     move-result-object v9
56448     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
56450     move-result v10
56452     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
56454     move-result-object v9
56456     const-string v10, " says "
56458     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56460     move-result-object v9
56462     invoke-virtual {v9, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
56464     move-result-object v9
56466     const-string v10, " died, but we don\'t agree"
56468     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56470     move-result-object v9
56472     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
56474     move-result-object v9
56476     invoke-static {v8, v9}, Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
56478     monitor-exit p0
56480     goto :goto_3b
56482     :catchall_78
56483     move-exception v8
56485     monitor-exit p0
56486     :try_end_7a
56487     .catchall {:try_start_4a .. :try_end_7a} :catchall_78
56489     throw v8
56491     :cond_7b
56492     monitor-enter p0
56494     :try_start_7c
56495     iget-object v8, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
56497     iget-object v8, v8, Lcom/android/server/am/ContentProviderRecord;->provider:Landroid/content/IContentProvider;
56499     if-eq v8, v7, :cond_87
56501     monitor-exit p0
56503     goto :goto_3b
56505     :catchall_84
56506     move-exception v8
56508     monitor-exit p0
56509     :try_end_86
56510     .catchall {:try_start_7c .. :try_end_86} :catchall_84
56512     throw v8
56514     :cond_87
56515     :try_start_87
56516     iget-object v8, v1, Lcom/android/server/am/ContentProviderConnection;->provider:Lcom/android/server/am/ContentProviderRecord;
56518     iget-object v6, v8, Lcom/android/server/am/ContentProviderRecord;->proc:Lcom/android/server/am/ProcessRecord;
56520     if-eqz v6, :cond_91
56522     iget-object v8, v6, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
56524     if-nez v8, :cond_93
56526     :cond_91
56527     monitor-exit p0
56529     goto :goto_3b
56531     :cond_93
56532     const-string v8, "ActivityManager"
56534     new-instance v9, Ljava/lang/StringBuilder;
56536     invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
56538     const-string v10, "Process "
56540     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56542     move-result-object v9
56544     iget-object v10, v6, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
56546     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56548     move-result-object v9
56550     const-string v10, " (pid "
56552     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56554     move-result-object v9
56556     iget v10, v6, Lcom/android/server/am/ProcessRecord;->pid:I
56558     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
56560     move-result-object v9
56562     const-string v10, ") early provider death"
56564     invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56566     move-result-object v9
56568     invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
56570     move-result-object v9
56572     invoke-static {v8, v9}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
56574     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
56575     :try_end_c2
56576     .catchall {:try_start_87 .. :try_end_c2} :catchall_84
56578     move-result-wide v3
56580     :try_start_c3
56581     iget v8, v6, Lcom/android/server/am/ProcessRecord;->pid:I
56583     iget-object v9, v6, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
56585     invoke-virtual {p0, v6, v8, v9}, Lcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
56586     :try_end_ca
56587     .catchall {:try_start_c3 .. :try_end_ca} :catchall_d0
56589     :try_start_ca
56590     invoke-static {v3, v4}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56592     monitor-exit p0
56594     goto/16 :goto_3b
56596     :catchall_d0
56597     move-exception v8
56599     invoke-static {v3, v4}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56601     throw v8
56602     :try_end_d5
56603     .catchall {:try_start_ca .. :try_end_d5} :catchall_84
56604 .end method
56606 .method public updateConfiguration(Landroid/content/res/Configuration;)V
56607     .registers 7
56609     const-string v2, "android.permission.CHANGE_CONFIGURATION"
56611     const-string v3, "updateConfiguration()"
56613     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
56615     monitor-enter p0
56617     if-nez p1, :cond_14
56619     :try_start_a
56620     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
56622     if-eqz v2, :cond_14
56624     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
56626     invoke-virtual {v2}, Lcom/android/server/wm/WindowManagerService;->computeNewConfiguration()Landroid/content/res/Configuration;
56628     move-result-object p1
56630     :cond_14
56631     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
56633     if-eqz v2, :cond_1f
56635     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessList:Lcom/android/server/am/ProcessList;
56637     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
56639     invoke-virtual {v2, v3}, Lcom/android/server/am/ProcessList;->applyDisplaySize(Lcom/android/server/wm/WindowManagerService;)V
56641     :cond_1f
56642     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
56644     move-result-wide v0
56646     if-eqz p1, :cond_28
56648     invoke-static {p1}, Landroid/provider/Settings$System;->clearConfiguration(Landroid/content/res/Configuration;)V
56650     :cond_28
56651     const/4 v2, 0x0
56653     const/4 v3, 0x0
56655     const/4 v4, 0x0
56657     invoke-virtual {p0, p1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
56659     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
56661     monitor-exit p0
56663     return-void
56665     :catchall_33
56666     move-exception v2
56668     monitor-exit p0
56669     :try_end_35
56670     .catchall {:try_start_a .. :try_end_35} :catchall_33
56672     throw v2
56673 .end method
56675 .method updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
56676     .registers 30
56678     move-object/from16 v0, p0
56680     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mHeadless:Z
56682     if-eqz v2, :cond_9
56684     const/16 v22, 0x1
56686     :cond_8
56687     :goto_8
56688     return v22
56690     :cond_9
56691     const/16 v19, 0x0
56693     const/16 v22, 0x1
56695     if-eqz p1, :cond_170
56697     new-instance v24, Landroid/content/res/Configuration;
56699     move-object/from16 v0, p0
56701     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
56703     move-object/from16 v0, v24
56705     invoke-direct {v0, v2}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
56707     move-object/from16 v0, v24
56709     move-object/from16 v1, p1
56711     invoke-virtual {v0, v1}, Landroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I
56713     move-result v19
56715     if-eqz v19, :cond_170
56717     const/16 v2, 0xa9f
56719     move/from16 v0, v19
56721     invoke-static {v2, v0}, Landroid/util/EventLog;->writeEvent(II)I
56723     move-object/from16 v0, p1
56725     iget-object v2, v0, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
56727     if-eqz v2, :cond_51
56729     if-nez p4, :cond_51
56731     move-object/from16 v0, p1
56733     iget-object v3, v0, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
56735     move-object/from16 v0, p1
56737     iget-object v2, v0, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
56739     move-object/from16 v0, p0
56741     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
56743     iget-object v4, v4, Landroid/content/res/Configuration;->locale:Ljava/util/Locale;
56745     invoke-virtual {v2, v4}, Ljava/util/Locale;->equals(Ljava/lang/Object;)Z
56747     move-result v2
56749     if-nez v2, :cond_124
56751     const/4 v2, 0x1
56753     :goto_48
56754     move-object/from16 v0, p1
56756     iget-boolean v4, v0, Landroid/content/res/Configuration;->userSetLocale:Z
56758     move-object/from16 v0, p0
56760     invoke-direct {v0, v3, v2, v4}, Lcom/android/server/am/ActivityManagerService;->saveLocaleLocked(Ljava/util/Locale;ZZ)V
56762     :cond_51
56763     move-object/from16 v0, p1
56765     iget-object v2, v0, Landroid/content/res/Configuration;->customTheme:Landroid/content/res/CustomTheme;
56767     if-eqz v2, :cond_71
56769     move-object/from16 v0, p1
56771     iget-object v3, v0, Landroid/content/res/Configuration;->customTheme:Landroid/content/res/CustomTheme;
56773     move-object/from16 v0, p1
56775     iget-object v2, v0, Landroid/content/res/Configuration;->customTheme:Landroid/content/res/CustomTheme;
56777     move-object/from16 v0, p0
56779     iget-object v4, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
56781     iget-object v4, v4, Landroid/content/res/Configuration;->customTheme:Landroid/content/res/CustomTheme;
56783     invoke-virtual {v2, v4}, Landroid/content/res/CustomTheme;->equals(Ljava/lang/Object;)Z
56785     move-result v2
56787     if-nez v2, :cond_127
56789     const/4 v2, 0x1
56791     :goto_6c
56792     move-object/from16 v0, p0
56794     invoke-direct {v0, v3, v2}, Lcom/android/server/am/ActivityManagerService;->saveThemeResourceLocked(Landroid/content/res/CustomTheme;Z)V
56796     :cond_71
56797     move-object/from16 v0, p0
56799     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
56801     add-int/lit8 v2, v2, 0x1
56803     move-object/from16 v0, p0
56805     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
56807     move-object/from16 v0, p0
56809     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
56811     if-gtz v2, :cond_86
56813     const/4 v2, 0x1
56815     move-object/from16 v0, p0
56817     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
56819     :cond_86
56820     move-object/from16 v0, p0
56822     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfigurationSeq:I
56824     move-object/from16 v0, v24
56826     iput v2, v0, Landroid/content/res/Configuration;->seq:I
56828     move-object/from16 v0, v24
56830     move-object/from16 v1, p0
56832     iput-object v0, v1, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
56834     const-string v2, "ActivityManager"
56836     new-instance v3, Ljava/lang/StringBuilder;
56838     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
56840     const-string v4, "Config changed: "
56842     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
56844     move-result-object v3
56846     move-object/from16 v0, v24
56848     invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
56850     move-result-object v3
56852     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
56854     move-result-object v3
56856     invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
56858     new-instance v20, Landroid/content/res/Configuration;
56860     move-object/from16 v0, p0
56862     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
56864     move-object/from16 v0, v20
56866     invoke-direct {v0, v2}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
56868     invoke-static/range {v24 .. v24}, Lcom/android/server/am/ActivityManagerService;->shouldShowDialogs(Landroid/content/res/Configuration;)Z
56870     move-result v2
56872     move-object/from16 v0, p0
56874     iput-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mShowDialogs:Z
56876     invoke-static {}, Lcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache;
56878     move-result-object v17
56880     if-eqz v17, :cond_ce
56882     move-object/from16 v0, v17
56884     move-object/from16 v1, v20
56886     invoke-virtual {v0, v1}, Lcom/android/server/AttributeCache;->updateConfiguration(Landroid/content/res/Configuration;)V
56888     :cond_ce
56889     sget-object v2, Lcom/android/server/am/ActivityManagerService;->mSystemThread:Landroid/app/ActivityThread;
56891     move-object/from16 v0, v20
56893     invoke-virtual {v2, v0}, Landroid/app/ActivityThread;->applyConfigurationToResources(Landroid/content/res/Configuration;)V
56895     if-eqz p3, :cond_fa
56897     invoke-static/range {v19 .. v19}, Landroid/provider/Settings$System;->hasInterestingConfigurationChanges(I)Z
56899     move-result v2
56901     if-eqz v2, :cond_fa
56903     move-object/from16 v0, p0
56905     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
56907     const/4 v3, 0x4
56909     invoke-virtual {v2, v3}, Landroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
56911     move-result-object v23
56913     new-instance v2, Landroid/content/res/Configuration;
56915     move-object/from16 v0, v20
56917     invoke-direct {v2, v0}, Landroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
56919     move-object/from16 v0, v23
56921     iput-object v2, v0, Landroid/os/Message;->obj:Ljava/lang/Object;
56923     move-object/from16 v0, p0
56925     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHandler:Landroid/os/Handler;
56927     move-object/from16 v0, v23
56929     invoke-virtual {v2, v0}, Landroid/os/Handler;->sendMessage(Landroid/os/Message;)Z
56931     :cond_fa
56932     move-object/from16 v0, p0
56934     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
56936     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
56938     move-result v2
56940     add-int/lit8 v21, v2, -0x1
56942     :goto_104
56943     if-ltz v21, :cond_12a
56945     move-object/from16 v0, p0
56947     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
56949     move/from16 v0, v21
56951     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
56953     move-result-object v18
56955     check-cast v18, Lcom/android/server/am/ProcessRecord;
56957     :try_start_112
56958     move-object/from16 v0, v18
56960     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
56962     if-eqz v2, :cond_121
56964     move-object/from16 v0, v18
56966     iget-object v2, v0, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
56968     move-object/from16 v0, v20
56970     invoke-interface {v2, v0}, Landroid/app/IApplicationThread;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V
56971     :try_end_121
56972     .catch Ljava/lang/Exception; {:try_start_112 .. :try_end_121} :catch_1ab
56974     :cond_121
56975     :goto_121
56976     add-int/lit8 v21, v21, -0x1
56978     goto :goto_104
56980     :cond_124
56981     const/4 v2, 0x0
56983     goto/16 :goto_48
56985     :cond_127
56986     const/4 v2, 0x0
56988     goto/16 :goto_6c
56990     :cond_12a
56991     new-instance v5, Landroid/content/Intent;
56993     const-string v2, "android.intent.action.CONFIGURATION_CHANGED"
56995     invoke-direct {v5, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
56997     const/high16 v2, 0x7000
56999     invoke-virtual {v5, v2}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
57001     const/4 v3, 0x0
57003     const/4 v4, 0x0
57005     const/4 v6, 0x0
57007     const/4 v7, 0x0
57009     const/4 v8, 0x0
57011     const/4 v9, 0x0
57013     const/4 v10, 0x0
57015     const/4 v11, 0x0
57017     const/4 v12, 0x0
57019     const/4 v13, 0x0
57021     sget v14, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
57023     const/16 v15, 0x3e8
57025     const/16 v16, -0x1
57027     move-object/from16 v2, p0
57029     invoke-direct/range {v2 .. v16}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
57031     and-int/lit8 v2, v19, 0x4
57033     if-eqz v2, :cond_170
57035     new-instance v5, Landroid/content/Intent;
57037     const-string v2, "android.intent.action.LOCALE_CHANGED"
57039     invoke-direct {v5, v2}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
57041     const/high16 v2, 0x1000
57043     invoke-virtual {v5, v2}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
57045     const/4 v3, 0x0
57047     const/4 v4, 0x0
57049     const/4 v6, 0x0
57051     const/4 v7, 0x0
57053     const/4 v8, 0x0
57055     const/4 v9, 0x0
57057     const/4 v10, 0x0
57059     const/4 v11, 0x0
57061     const/4 v12, 0x0
57063     const/4 v13, 0x0
57065     sget v14, Lcom/android/server/am/ActivityManagerService;->MY_PID:I
57067     const/16 v15, 0x3e8
57069     const/16 v16, -0x1
57071     move-object/from16 v2, p0
57073     invoke-direct/range {v2 .. v16}, Lcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;ZZIII)I
57075     :cond_170
57076     if-eqz v19, :cond_17d
57078     if-nez p2, :cond_17d
57080     move-object/from16 v0, p0
57082     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
57084     const/4 v3, 0x0
57086     invoke-virtual {v2, v3}, Lcom/android/server/am/ActivityStack;->topRunningActivityLocked(Lcom/android/server/am/ActivityRecord;)Lcom/android/server/am/ActivityRecord;
57088     move-result-object p2
57090     :cond_17d
57091     if-eqz p2, :cond_196
57093     move-object/from16 v0, p0
57095     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
57097     move-object/from16 v0, p2
57099     move/from16 v1, v19
57101     invoke-virtual {v2, v0, v1}, Lcom/android/server/am/ActivityStack;->ensureActivityConfigurationLocked(Lcom/android/server/am/ActivityRecord;I)Z
57103     move-result v22
57105     move-object/from16 v0, p0
57107     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
57109     move-object/from16 v0, p2
57111     move/from16 v1, v19
57113     invoke-virtual {v2, v0, v1}, Lcom/android/server/am/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/am/ActivityRecord;I)V
57115     :cond_196
57116     if-eqz p1, :cond_8
57118     move-object/from16 v0, p0
57120     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
57122     if-eqz v2, :cond_8
57124     move-object/from16 v0, p0
57126     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mWindowManager:Lcom/android/server/wm/WindowManagerService;
57128     move-object/from16 v0, p0
57130     iget-object v3, v0, Lcom/android/server/am/ActivityManagerService;->mConfiguration:Landroid/content/res/Configuration;
57132     invoke-virtual {v2, v3}, Lcom/android/server/wm/WindowManagerService;->setNewConfiguration(Landroid/content/res/Configuration;)V
57134     goto/16 :goto_8
57136     :catch_1ab
57137     move-exception v2
57139     goto/16 :goto_121
57140 .end method
57142 .method updateCpuStats()V
57143     .registers 7
57145     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
57147     move-result-wide v0
57149     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
57151     invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
57153     move-result-wide v2
57155     const-wide/16 v4, 0x1388
57157     sub-long v4, v0, v4
57159     cmp-long v2, v2, v4
57161     if-ltz v2, :cond_13
57163     :cond_12
57164     :goto_12
57165     return-void
57167     :cond_13
57168     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsMutexFree:Ljava/util/concurrent/atomic/AtomicBoolean;
57170     const/4 v3, 0x1
57172     const/4 v4, 0x0
57174     invoke-virtual {v2, v3, v4}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z
57176     move-result v2
57178     if-eqz v2, :cond_12
57180     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
57182     monitor-enter v3
57184     :try_start_20
57185     iget-object v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
57187     invoke-virtual {v2}, Ljava/lang/Object;->notify()V
57189     monitor-exit v3
57191     goto :goto_12
57193     :catchall_27
57194     move-exception v2
57196     monitor-exit v3
57197     :try_end_29
57198     .catchall {:try_start_20 .. :try_end_29} :catchall_27
57200     throw v2
57201 .end method
57203 .method updateCpuStatsNow()V
57204     .registers 33
57206     move-object/from16 v0, p0
57208     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsThread:Ljava/lang/Thread;
57210     move-object/from16 v26, v0
57212     monitor-enter v26
57214     :try_start_7
57215     move-object/from16 v0, p0
57217     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStatsMutexFree:Ljava/util/concurrent/atomic/AtomicBoolean;
57219     move-object/from16 v25, v0
57221     const/16 v27, 0x0
57223     move-object/from16 v0, v25
57225     move/from16 v1, v27
57227     invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
57229     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
57231     move-result-wide v11
57233     const/4 v6, 0x0
57235     move-object/from16 v0, p0
57237     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
57239     move-object/from16 v25, v0
57241     invoke-virtual/range {v25 .. v25}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
57243     move-result-wide v27
57245     const-wide/16 v29, 0x1388
57247     sub-long v29, v11, v29
57249     cmp-long v25, v27, v29
57251     if-gez v25, :cond_ff
57253     move-object/from16 v0, p0
57255     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastCpuTime:Ljava/util/concurrent/atomic/AtomicLong;
57257     move-object/from16 v25, v0
57259     move-object/from16 v0, v25
57261     invoke-virtual {v0, v11, v12}, Ljava/util/concurrent/atomic/AtomicLong;->set(J)V
57263     const/4 v6, 0x1
57265     move-object/from16 v0, p0
57267     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57269     move-object/from16 v25, v0
57271     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->update()V
57273     const-string v25, "true"
57275     const-string v27, "events.cpu"
57277     invoke-static/range {v27 .. v27}, Landroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
57279     move-result-object v27
57281     move-object/from16 v0, v25
57283     move-object/from16 v1, v27
57285     invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
57287     move-result v25
57289     if-eqz v25, :cond_ff
57291     move-object/from16 v0, p0
57293     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57295     move-object/from16 v25, v0
57297     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastUserTime()I
57299     move-result v24
57301     move-object/from16 v0, p0
57303     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57305     move-object/from16 v25, v0
57307     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastSystemTime()I
57309     move-result v20
57311     move-object/from16 v0, p0
57313     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57315     move-object/from16 v25, v0
57317     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastIoWaitTime()I
57319     move-result v9
57321     move-object/from16 v0, p0
57323     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57325     move-object/from16 v25, v0
57327     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastIrqTime()I
57329     move-result v10
57331     move-object/from16 v0, p0
57333     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57335     move-object/from16 v25, v0
57337     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastSoftIrqTime()I
57339     move-result v18
57341     move-object/from16 v0, p0
57343     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57345     move-object/from16 v25, v0
57347     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastIdleTime()I
57349     move-result v8
57351     add-int v25, v24, v20
57353     add-int v25, v25, v9
57355     add-int v25, v25, v10
57357     add-int v25, v25, v18
57359     add-int v21, v25, v8
57361     if-nez v21, :cond_9e
57363     const/16 v21, 0x1
57365     :cond_9e
57366     const/16 v25, 0xaa1
57368     const/16 v27, 0x6
57370     move/from16 v0, v27
57372     new-array v0, v0, [Ljava/lang/Object;
57374     move-object/from16 v27, v0
57376     const/16 v28, 0x0
57378     add-int v29, v24, v20
57380     add-int v29, v29, v9
57382     add-int v29, v29, v10
57384     add-int v29, v29, v18
57386     mul-int/lit8 v29, v29, 0x64
57388     div-int v29, v29, v21
57390     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
57392     move-result-object v29
57394     aput-object v29, v27, v28
57396     const/16 v28, 0x1
57398     mul-int/lit8 v29, v24, 0x64
57400     div-int v29, v29, v21
57402     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
57404     move-result-object v29
57406     aput-object v29, v27, v28
57408     const/16 v28, 0x2
57410     mul-int/lit8 v29, v20, 0x64
57412     div-int v29, v29, v21
57414     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
57416     move-result-object v29
57418     aput-object v29, v27, v28
57420     const/16 v28, 0x3
57422     mul-int/lit8 v29, v9, 0x64
57424     div-int v29, v29, v21
57426     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
57428     move-result-object v29
57430     aput-object v29, v27, v28
57432     const/16 v28, 0x4
57434     mul-int/lit8 v29, v10, 0x64
57436     div-int v29, v29, v21
57438     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
57440     move-result-object v29
57442     aput-object v29, v27, v28
57444     const/16 v28, 0x5
57446     mul-int/lit8 v29, v18, 0x64
57448     div-int v29, v29, v21
57450     invoke-static/range {v29 .. v29}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
57452     move-result-object v29
57454     aput-object v29, v27, v28
57456     move/from16 v0, v25
57458     move-object/from16 v1, v27
57460     invoke-static {v0, v1}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
57462     :cond_ff
57463     move-object/from16 v0, p0
57465     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57467     move-object/from16 v25, v0
57469     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->getLastCpuSpeedTimes()[J
57471     move-result-object v5
57473     move-object/from16 v0, p0
57475     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
57477     move-object/from16 v25, v0
57479     invoke-virtual/range {v25 .. v25}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
57481     move-result-object v4
57483     monitor-enter v4
57484     :try_end_114
57485     .catchall {:try_start_7 .. :try_end_114} :catchall_1cf
57487     :try_start_114
57488     move-object/from16 v0, p0
57490     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
57492     move-object/from16 v27, v0
57494     monitor-enter v27
57495     :try_end_11b
57496     .catchall {:try_start_114 .. :try_end_11b} :catchall_1cc
57498     if-eqz v6, :cond_20f
57500     :try_start_11d
57501     move-object/from16 v0, p0
57503     iget-boolean v0, v0, Lcom/android/server/am/ActivityManagerService;->mOnBattery:Z
57505     move/from16 v25, v0
57507     if-eqz v25, :cond_20f
57509     invoke-virtual {v4}, Lcom/android/internal/os/BatteryStatsImpl;->startAddingCpuLocked()I
57511     move-result v15
57513     const/16 v23, 0x0
57515     const/16 v22, 0x0
57517     move-object/from16 v0, p0
57519     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57521     move-object/from16 v25, v0
57523     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/ProcessStats;->countStats()I
57525     move-result v3
57527     const/4 v7, 0x0
57529     :goto_138
57530     if-ge v7, v3, :cond_208
57532     move-object/from16 v0, p0
57534     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mProcessStats:Lcom/android/internal/os/ProcessStats;
57536     move-object/from16 v25, v0
57538     move-object/from16 v0, v25
57540     invoke-virtual {v0, v7}, Lcom/android/internal/os/ProcessStats;->getStats(I)Lcom/android/internal/os/ProcessStats$Stats;
57542     move-result-object v19
57544     move-object/from16 v0, v19
57546     iget-boolean v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->working:Z
57548     move/from16 v25, v0
57550     if-nez v25, :cond_151
57552     :cond_14e
57553     :goto_14e
57554     add-int/lit8 v7, v7, 0x1
57556     goto :goto_138
57558     :cond_151
57559     move-object/from16 v0, p0
57561     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mPidsSelfLocked:Landroid/util/SparseArray;
57563     move-object/from16 v25, v0
57565     move-object/from16 v0, v19
57567     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->pid:I
57569     move/from16 v28, v0
57571     move-object/from16 v0, v25
57573     move/from16 v1, v28
57575     invoke-virtual {v0, v1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
57577     move-result-object v16
57579     check-cast v16, Lcom/android/server/am/ProcessRecord;
57581     move-object/from16 v0, v19
57583     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_utime:I
57585     move/from16 v25, v0
57587     mul-int v25, v25, v15
57589     div-int/lit8 v14, v25, 0x64
57591     move-object/from16 v0, v19
57593     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_stime:I
57595     move/from16 v25, v0
57597     mul-int v25, v25, v15
57599     div-int/lit8 v13, v25, 0x64
57601     add-int v23, v23, v14
57603     add-int v22, v22, v13
57605     if-eqz v16, :cond_1d2
57607     move-object/from16 v0, v16
57609     iget-object v0, v0, Lcom/android/server/am/ProcessRecord;->batteryStats:Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
57611     move-object/from16 v17, v0
57613     move-object/from16 v0, v19
57615     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_utime:I
57617     move/from16 v25, v0
57619     sub-int v25, v25, v14
57621     move-object/from16 v0, v19
57623     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_stime:I
57625     move/from16 v28, v0
57627     sub-int v28, v28, v13
57629     move-object/from16 v0, v17
57631     move/from16 v1, v25
57633     move/from16 v2, v28
57635     invoke-virtual {v0, v1, v2}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(II)V
57637     move-object/from16 v0, v17
57639     invoke-virtual {v0, v5}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addSpeedStepTimes([J)V
57641     move-object/from16 v0, v16
57643     iget-wide v0, v0, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
57645     move-wide/from16 v28, v0
57647     move-object/from16 v0, v19
57649     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_utime:I
57651     move/from16 v25, v0
57653     move-object/from16 v0, v19
57655     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_stime:I
57657     move/from16 v30, v0
57659     add-int v25, v25, v30
57661     mul-int/lit8 v25, v25, 0xa
57663     move/from16 v0, v25
57665     int-to-long v0, v0
57667     move-wide/from16 v30, v0
57669     add-long v28, v28, v30
57671     move-wide/from16 v0, v28
57673     move-object/from16 v2, v16
57675     iput-wide v0, v2, Lcom/android/server/am/ProcessRecord;->curCpuTime:J
57677     goto :goto_14e
57679     :catchall_1c9
57680     move-exception v25
57682     monitor-exit v27
57683     :try_end_1cb
57684     .catchall {:try_start_11d .. :try_end_1cb} :catchall_1c9
57686     :try_start_1cb
57687     throw v25
57689     :catchall_1cc
57690     move-exception v25
57692     monitor-exit v4
57693     :try_end_1ce
57694     .catchall {:try_start_1cb .. :try_end_1ce} :catchall_1cc
57696     :try_start_1ce
57697     throw v25
57699     :catchall_1cf
57700     move-exception v25
57702     monitor-exit v26
57703     :try_end_1d1
57704     .catchall {:try_start_1ce .. :try_end_1d1} :catchall_1cf
57706     throw v25
57708     :cond_1d2
57709     :try_start_1d2
57710     move-object/from16 v0, v19
57712     iget-object v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->name:Ljava/lang/String;
57714     move-object/from16 v25, v0
57716     move-object/from16 v0, v19
57718     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->pid:I
57720     move/from16 v28, v0
57722     move-object/from16 v0, v25
57724     move/from16 v1, v28
57726     invoke-virtual {v4, v0, v1}, Lcom/android/internal/os/BatteryStatsImpl;->getProcessStatsLocked(Ljava/lang/String;I)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
57728     move-result-object v17
57730     if-eqz v17, :cond_14e
57732     move-object/from16 v0, v19
57734     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_utime:I
57736     move/from16 v25, v0
57738     sub-int v25, v25, v14
57740     move-object/from16 v0, v19
57742     iget v0, v0, Lcom/android/internal/os/ProcessStats$Stats;->rel_stime:I
57744     move/from16 v28, v0
57746     sub-int v28, v28, v13
57748     move-object/from16 v0, v17
57750     move/from16 v1, v25
57752     move/from16 v2, v28
57754     invoke-virtual {v0, v1, v2}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(II)V
57756     move-object/from16 v0, v17
57758     invoke-virtual {v0, v5}, Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addSpeedStepTimes([J)V
57760     goto/16 :goto_14e
57762     :cond_208
57763     move/from16 v0, v23
57765     move/from16 v1, v22
57767     invoke-virtual {v4, v15, v0, v1, v5}, Lcom/android/internal/os/BatteryStatsImpl;->finishAddingCpuLocked(III[J)V
57769     :cond_20f
57770     monitor-exit v27
57771     :try_end_210
57772     .catchall {:try_start_1d2 .. :try_end_210} :catchall_1c9
57774     :try_start_210
57775     move-object/from16 v0, p0
57777     iget-wide v0, v0, Lcom/android/server/am/ActivityManagerService;->mLastWriteTime:J
57779     move-wide/from16 v27, v0
57781     const-wide/32 v29, 0x1b7740
57783     sub-long v29, v11, v29
57785     cmp-long v25, v27, v29
57787     if-gez v25, :cond_230
57789     move-object/from16 v0, p0
57791     iput-wide v11, v0, Lcom/android/server/am/ActivityManagerService;->mLastWriteTime:J
57793     move-object/from16 v0, p0
57795     iget-object v0, v0, Lcom/android/server/am/ActivityManagerService;->mBatteryStatsService:Lcom/android/server/am/BatteryStatsService;
57797     move-object/from16 v25, v0
57799     invoke-virtual/range {v25 .. v25}, Lcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/internal/os/BatteryStatsImpl;
57801     move-result-object v25
57803     invoke-virtual/range {v25 .. v25}, Lcom/android/internal/os/BatteryStatsImpl;->writeAsyncLocked()V
57805     :cond_230
57806     monitor-exit v4
57807     :try_end_231
57808     .catchall {:try_start_210 .. :try_end_231} :catchall_1cc
57810     :try_start_231
57811     monitor-exit v26
57812     :try_end_232
57813     .catchall {:try_start_231 .. :try_end_232} :catchall_1cf
57815     return-void
57816 .end method
57818 .method final updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;Z)V
57819     .registers 4
57821     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
57823     add-int/lit8 v0, v0, 0x1
57825     iput v0, p0, Lcom/android/server/am/ActivityManagerService;->mLruSeq:I
57827     const/4 v0, 0x0
57829     invoke-direct {p0, p1, v0}, Lcom/android/server/am/ActivityManagerService;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;I)V
57831     if-eqz p2, :cond_f
57833     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
57835     :cond_f
57836     return-void
57837 .end method
57839 .method final updateOomAdjLocked()V
57840     .registers 39
57842     invoke-direct/range {p0 .. p0}, Lcom/android/server/am/ActivityManagerService;->resumedAppLocked()Lcom/android/server/am/ActivityRecord;
57844     move-result-object v10
57846     if-eqz v10, :cond_200
57848     iget-object v7, v10, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
57850     :goto_8
57851     invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
57853     move-result-wide v34
57855     const-wide/32 v36, 0x1b7740
57857     sub-long v29, v34, v36
57859     move-object/from16 v0, p0
57861     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
57863     add-int/lit8 v2, v2, 0x1
57865     move-object/from16 v0, p0
57867     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
57869     const/4 v2, 0x0
57871     move-object/from16 v0, p0
57873     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
57875     move-object/from16 v0, p0
57877     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessLimit:I
57879     if-gtz v2, :cond_203
57881     const/16 v17, 0x0
57883     move/from16 v13, v17
57885     :goto_2a
57886     sget v2, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
57888     rsub-int/lit8 v2, v2, 0xf
57890     add-int/lit8 v2, v2, 0x1
57892     div-int/lit8 v27, v2, 0x2
57894     move-object/from16 v0, p0
57896     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
57898     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
57900     move-result v2
57902     move-object/from16 v0, p0
57904     iget v8, v0, Lcom/android/server/am/ActivityManagerService;->mNumNonHiddenProcs:I
57906     sub-int/2addr v2, v8
57908     move-object/from16 v0, p0
57910     iget v8, v0, Lcom/android/server/am/ActivityManagerService;->mNumHiddenProcs:I
57912     sub-int v24, v2, v8
57914     move/from16 v0, v24
57916     move/from16 v1, v17
57918     if-le v0, v1, :cond_4d
57920     move/from16 v24, v17
57922     :cond_4d
57923     div-int v12, v24, v27
57925     const/4 v2, 0x1
57927     if-ge v12, v2, :cond_53
57929     const/4 v12, 0x1
57931     :cond_53
57932     move-object/from16 v0, p0
57934     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mNumHiddenProcs:I
57936     if-lez v2, :cond_21f
57938     move-object/from16 v0, p0
57940     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mNumHiddenProcs:I
57942     :goto_5d
57943     div-int v16, v2, v27
57945     const/4 v2, 0x1
57947     move/from16 v0, v16
57949     if-ge v0, v2, :cond_66
57951     const/16 v16, 0x1
57953     :cond_66
57954     const/16 v33, 0x0
57956     const/16 v32, 0x0
57958     const/16 v25, 0x0
57960     const/16 v23, 0x0
57962     const/16 v28, 0x0
57964     const/4 v2, 0x0
57966     move-object/from16 v0, p0
57968     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mNumNonHiddenProcs:I
57970     const/4 v2, 0x0
57972     move-object/from16 v0, p0
57974     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mNumHiddenProcs:I
57976     move-object/from16 v0, p0
57978     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
57980     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
57982     move-result v18
57984     sget v4, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
57986     add-int/lit8 v22, v4, 0x1
57988     sget v6, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
57990     add-int/lit8 v21, v6, 0x2
57992     move v5, v6
57994     :cond_8b
57995     :goto_8b
57996     if-lez v18, :cond_3a2
57998     add-int/lit8 v18, v18, -0x1
58000     move-object/from16 v0, p0
58002     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
58004     move/from16 v0, v18
58006     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
58008     move-result-object v3
58010     check-cast v3, Lcom/android/server/am/ProcessRecord;
58012     const/4 v8, 0x1
58014     move-object/from16 v2, p0
58016     invoke-direct/range {v2 .. v8}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;IIILcom/android/server/am/ProcessRecord;Z)Z
58018     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
58020     if-nez v2, :cond_8b
58022     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
58024     if-ne v2, v4, :cond_222
58026     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->hasActivities:Z
58028     if-eqz v2, :cond_222
58030     move-object/from16 v0, p0
58032     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mNumHiddenProcs:I
58034     add-int/lit8 v2, v2, 0x1
58036     move-object/from16 v0, p0
58038     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mNumHiddenProcs:I
58040     move/from16 v0, v22
58042     if-eq v4, v0, :cond_db
58044     add-int/lit8 v33, v33, 0x1
58046     move/from16 v0, v33
58048     move/from16 v1, v16
58050     if-lt v0, v1, :cond_db
58052     const/16 v33, 0x0
58054     move/from16 v4, v22
58056     add-int/lit8 v22, v22, 0x2
58058     const/16 v2, 0xf
58060     move/from16 v0, v22
58062     if-le v0, v2, :cond_d1
58064     const/16 v22, 0xf
58066     :cond_d1
58067     if-gt v5, v4, :cond_db
58069     add-int/lit8 v5, v4, 0x1
58071     const/16 v2, 0xf
58073     if-le v5, v2, :cond_db
58075     const/16 v5, 0xf
58077     :cond_db
58078     add-int/lit8 v25, v25, 0x1
58080     move/from16 v0, v25
58082     move/from16 v1, v17
58084     if-le v0, v1, :cond_165
58086     const-string v2, "ActivityManager"
58088     new-instance v8, Ljava/lang/StringBuilder;
58090     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
58092     const-string v34, "No longer want "
58094     move-object/from16 v0, v34
58096     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58098     move-result-object v8
58100     iget-object v0, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58102     move-object/from16 v34, v0
58104     move-object/from16 v0, v34
58106     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58108     move-result-object v8
58110     const-string v34, " (pid "
58112     move-object/from16 v0, v34
58114     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58116     move-result-object v8
58118     iget v0, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58120     move/from16 v34, v0
58122     move/from16 v0, v34
58124     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
58126     move-result-object v8
58128     const-string v34, "): hidden #"
58130     move-object/from16 v0, v34
58132     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58134     move-result-object v8
58136     move/from16 v0, v25
58138     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
58140     move-result-object v8
58142     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
58144     move-result-object v8
58146     invoke-static {v2, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
58148     const/16 v2, 0x7547
58150     const/4 v8, 0x5
58152     new-array v8, v8, [Ljava/lang/Object;
58154     const/16 v34, 0x0
58156     iget v0, v3, Lcom/android/server/am/ProcessRecord;->userId:I
58158     move/from16 v35, v0
58160     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58162     move-result-object v35
58164     aput-object v35, v8, v34
58166     const/16 v34, 0x1
58168     iget v0, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58170     move/from16 v35, v0
58172     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58174     move-result-object v35
58176     aput-object v35, v8, v34
58178     const/16 v34, 0x2
58180     iget-object v0, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58182     move-object/from16 v35, v0
58184     aput-object v35, v8, v34
58186     const/16 v34, 0x3
58188     iget v0, v3, Lcom/android/server/am/ProcessRecord;->setAdj:I
58190     move/from16 v35, v0
58192     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58194     move-result-object v35
58196     aput-object v35, v8, v34
58198     const/16 v34, 0x4
58200     const-string v35, "too many background"
58202     aput-object v35, v8, v34
58204     invoke-static {v2, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
58206     const/4 v2, 0x1
58208     iput-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
58210     iget v2, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58212     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
58214     :cond_165
58215     :goto_165
58216     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->isolated:Z
58218     if-eqz v2, :cond_1ed
58220     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->services:Ljava/util/HashSet;
58222     invoke-virtual {v2}, Ljava/util/HashSet;->size()I
58224     move-result v2
58226     if-gtz v2, :cond_1ed
58228     const-string v2, "ActivityManager"
58230     new-instance v8, Ljava/lang/StringBuilder;
58232     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
58234     const-string v34, "Isolated process "
58236     move-object/from16 v0, v34
58238     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58240     move-result-object v8
58242     iget-object v0, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58244     move-object/from16 v34, v0
58246     move-object/from16 v0, v34
58248     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58250     move-result-object v8
58252     const-string v34, " (pid "
58254     move-object/from16 v0, v34
58256     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58258     move-result-object v8
58260     iget v0, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58262     move/from16 v34, v0
58264     move/from16 v0, v34
58266     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
58268     move-result-object v8
58270     const-string v34, ") no longer needed"
58272     move-object/from16 v0, v34
58274     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58276     move-result-object v8
58278     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
58280     move-result-object v8
58282     invoke-static {v2, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
58284     const/16 v2, 0x7547
58286     const/4 v8, 0x5
58288     new-array v8, v8, [Ljava/lang/Object;
58290     const/16 v34, 0x0
58292     iget v0, v3, Lcom/android/server/am/ProcessRecord;->userId:I
58294     move/from16 v35, v0
58296     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58298     move-result-object v35
58300     aput-object v35, v8, v34
58302     const/16 v34, 0x1
58304     iget v0, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58306     move/from16 v35, v0
58308     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58310     move-result-object v35
58312     aput-object v35, v8, v34
58314     const/16 v34, 0x2
58316     iget-object v0, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58318     move-object/from16 v35, v0
58320     aput-object v35, v8, v34
58322     const/16 v34, 0x3
58324     iget v0, v3, Lcom/android/server/am/ProcessRecord;->setAdj:I
58326     move/from16 v35, v0
58328     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58330     move-result-object v35
58332     aput-object v35, v8, v34
58334     const/16 v34, 0x4
58336     const-string v35, "isolated not needed"
58338     aput-object v35, v8, v34
58340     invoke-static {v2, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
58342     const/4 v2, 0x1
58344     iput-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
58346     iget v2, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58348     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
58350     :cond_1ed
58351     iget v2, v3, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
58353     const/4 v8, 0x6
58355     if-lt v2, v8, :cond_8b
58357     iget v2, v3, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
58359     const/16 v8, 0x8
58361     if-eq v2, v8, :cond_8b
58363     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
58365     if-nez v2, :cond_8b
58367     add-int/lit8 v28, v28, 0x1
58369     goto/16 :goto_8b
58371     :cond_200
58372     const/4 v7, 0x0
58374     goto/16 :goto_8
58376     :cond_203
58377     move-object/from16 v0, p0
58379     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessLimit:I
58381     const/4 v8, 0x1
58383     if-ne v2, v8, :cond_20f
58385     const/4 v13, 0x1
58387     const/16 v17, 0x0
58389     goto/16 :goto_2a
58391     :cond_20f
58392     move-object/from16 v0, p0
58394     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessLimit:I
58396     mul-int/lit8 v2, v2, 0x2
58398     div-int/lit8 v13, v2, 0x3
58400     move-object/from16 v0, p0
58402     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mProcessLimit:I
58404     sub-int v17, v2, v13
58406     goto/16 :goto_2a
58408     :cond_21f
58409     const/4 v2, 0x1
58411     goto/16 :goto_5d
58413     :cond_222
58414     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
58416     if-ne v2, v4, :cond_234
58418     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->hasClientActivities:Z
58420     if-eqz v2, :cond_234
58422     add-int/lit8 v5, v5, 0x1
58424     const/16 v2, 0xf
58426     if-le v5, v2, :cond_165
58428     const/16 v5, 0xf
58430     goto/16 :goto_165
58432     :cond_234
58433     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
58435     if-eq v2, v6, :cond_23c
58437     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
58439     if-ne v2, v4, :cond_306
58441     :cond_23c
58442     move/from16 v0, v21
58444     if-eq v6, v0, :cond_254
58446     add-int/lit8 v32, v32, 0x1
58448     move/from16 v0, v32
58450     if-lt v0, v12, :cond_254
58452     const/16 v32, 0x0
58454     move/from16 v6, v21
58456     add-int/lit8 v21, v21, 0x2
58458     const/16 v2, 0xf
58460     move/from16 v0, v21
58462     if-le v0, v2, :cond_254
58464     const/16 v21, 0xf
58466     :cond_254
58467     :goto_254
58468     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curAdj:I
58470     sget v8, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
58472     if-lt v2, v8, :cond_165
58474     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->hasClientActivities:Z
58476     if-nez v2, :cond_165
58478     const/4 v2, 0x3
58480     move/from16 v0, v23
58482     if-le v0, v2, :cond_318
58484     iget-wide v0, v3, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
58486     move-wide/from16 v34, v0
58488     cmp-long v2, v34, v29
58490     if-gez v2, :cond_318
58492     const-string v2, "ActivityManager"
58494     new-instance v8, Ljava/lang/StringBuilder;
58496     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
58498     const-string v34, "No longer want "
58500     move-object/from16 v0, v34
58502     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58504     move-result-object v8
58506     iget-object v0, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58508     move-object/from16 v34, v0
58510     move-object/from16 v0, v34
58512     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58514     move-result-object v8
58516     const-string v34, " (pid "
58518     move-object/from16 v0, v34
58520     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58522     move-result-object v8
58524     iget v0, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58526     move/from16 v34, v0
58528     move/from16 v0, v34
58530     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
58532     move-result-object v8
58534     const-string v34, "): empty for "
58536     move-object/from16 v0, v34
58538     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58540     move-result-object v8
58542     const-wide/32 v34, 0x1b7740
58544     add-long v34, v34, v29
58546     iget-wide v0, v3, Lcom/android/server/am/ProcessRecord;->lastActivityTime:J
58548     move-wide/from16 v36, v0
58550     sub-long v34, v34, v36
58552     const-wide/16 v36, 0x3e8
58554     div-long v34, v34, v36
58556     move-wide/from16 v0, v34
58558     invoke-virtual {v8, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
58560     move-result-object v8
58562     const-string v34, "s"
58564     move-object/from16 v0, v34
58566     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58568     move-result-object v8
58570     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
58572     move-result-object v8
58574     invoke-static {v2, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
58576     const/16 v2, 0x7547
58578     const/4 v8, 0x5
58580     new-array v8, v8, [Ljava/lang/Object;
58582     const/16 v34, 0x0
58584     iget v0, v3, Lcom/android/server/am/ProcessRecord;->userId:I
58586     move/from16 v35, v0
58588     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58590     move-result-object v35
58592     aput-object v35, v8, v34
58594     const/16 v34, 0x1
58596     iget v0, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58598     move/from16 v35, v0
58600     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58602     move-result-object v35
58604     aput-object v35, v8, v34
58606     const/16 v34, 0x2
58608     iget-object v0, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58610     move-object/from16 v35, v0
58612     aput-object v35, v8, v34
58614     const/16 v34, 0x3
58616     iget v0, v3, Lcom/android/server/am/ProcessRecord;->setAdj:I
58618     move/from16 v35, v0
58620     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58622     move-result-object v35
58624     aput-object v35, v8, v34
58626     const/16 v34, 0x4
58628     const-string v35, "old background process"
58630     aput-object v35, v8, v34
58632     invoke-static {v2, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
58634     const/4 v2, 0x1
58636     iput-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
58638     iget v2, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58640     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
58642     goto/16 :goto_165
58644     :cond_306
58645     iget v2, v3, Lcom/android/server/am/ProcessRecord;->curRawAdj:I
58647     sget v8, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
58649     if-ge v2, v8, :cond_254
58651     move-object/from16 v0, p0
58653     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mNumNonHiddenProcs:I
58655     add-int/lit8 v2, v2, 0x1
58657     move-object/from16 v0, p0
58659     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mNumNonHiddenProcs:I
58661     goto/16 :goto_254
58663     :cond_318
58664     add-int/lit8 v23, v23, 0x1
58666     move/from16 v0, v23
58668     if-le v0, v13, :cond_165
58670     const-string v2, "ActivityManager"
58672     new-instance v8, Ljava/lang/StringBuilder;
58674     invoke-direct {v8}, Ljava/lang/StringBuilder;-><init>()V
58676     const-string v34, "No longer want "
58678     move-object/from16 v0, v34
58680     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58682     move-result-object v8
58684     iget-object v0, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58686     move-object/from16 v34, v0
58688     move-object/from16 v0, v34
58690     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58692     move-result-object v8
58694     const-string v34, " (pid "
58696     move-object/from16 v0, v34
58698     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58700     move-result-object v8
58702     iget v0, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58704     move/from16 v34, v0
58706     move/from16 v0, v34
58708     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
58710     move-result-object v8
58712     const-string v34, "): empty #"
58714     move-object/from16 v0, v34
58716     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
58718     move-result-object v8
58720     move/from16 v0, v23
58722     invoke-virtual {v8, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
58724     move-result-object v8
58726     invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
58728     move-result-object v8
58730     invoke-static {v2, v8}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
58732     const/16 v2, 0x7547
58734     const/4 v8, 0x5
58736     new-array v8, v8, [Ljava/lang/Object;
58738     const/16 v34, 0x0
58740     iget v0, v3, Lcom/android/server/am/ProcessRecord;->userId:I
58742     move/from16 v35, v0
58744     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58746     move-result-object v35
58748     aput-object v35, v8, v34
58750     const/16 v34, 0x1
58752     iget v0, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58754     move/from16 v35, v0
58756     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58758     move-result-object v35
58760     aput-object v35, v8, v34
58762     const/16 v34, 0x2
58764     iget-object v0, v3, Lcom/android/server/am/ProcessRecord;->processName:Ljava/lang/String;
58766     move-object/from16 v35, v0
58768     aput-object v35, v8, v34
58770     const/16 v34, 0x3
58772     iget v0, v3, Lcom/android/server/am/ProcessRecord;->setAdj:I
58774     move/from16 v35, v0
58776     invoke-static/range {v35 .. v35}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
58778     move-result-object v35
58780     aput-object v35, v8, v34
58782     const/16 v34, 0x4
58784     const-string v35, "too many background"
58786     aput-object v35, v8, v34
58788     invoke-static {v2, v8}, Landroid/util/EventLog;->writeEvent(I[Ljava/lang/Object;)I
58790     const/4 v2, 0x1
58792     iput-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
58794     iget v2, v3, Lcom/android/server/am/ProcessRecord;->pid:I
58796     invoke-static {v2}, Landroid/os/Process;->killProcessQuiet(I)V
58798     goto/16 :goto_165
58800     :cond_3a2
58801     move-object/from16 v0, p0
58803     iget v2, v0, Lcom/android/server/am/ActivityManagerService;->mNewNumServiceProcs:I
58805     move-object/from16 v0, p0
58807     iput v2, v0, Lcom/android/server/am/ActivityManagerService;->mNumServiceProcs:I
58809     const/4 v2, 0x3
58811     move/from16 v0, v25
58813     if-gt v0, v2, :cond_47f
58815     const/4 v2, 0x3
58817     move/from16 v0, v23
58819     if-gt v0, v2, :cond_47f
58821     add-int v26, v25, v23
58823     move-object/from16 v0, p0
58825     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
58827     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
58829     move-result v9
58831     div-int/lit8 v14, v28, 0x3
58833     const/16 v20, 0x2
58835     move-object/from16 v0, p0
58837     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mHomeProcess:Lcom/android/server/am/ProcessRecord;
58839     if-eqz v2, :cond_3ca
58841     add-int/lit8 v20, v20, 0x1
58843     :cond_3ca
58844     move-object/from16 v0, p0
58846     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mPreviousProcess:Lcom/android/server/am/ProcessRecord;
58848     if-eqz v2, :cond_3d2
58850     add-int/lit8 v20, v20, 0x1
58852     :cond_3d2
58853     move/from16 v0, v20
58855     if-ge v14, v0, :cond_3d8
58857     move/from16 v14, v20
58859     :cond_3d8
58860     const/16 v31, 0x0
58862     const/4 v2, 0x3
58864     move/from16 v0, v26
58866     if-gt v0, v2, :cond_421
58868     const/16 v15, 0xf
58870     :goto_3e1
58871     const/16 v11, 0x50
58873     const/16 v18, 0x0
58875     :goto_3e5
58876     move/from16 v0, v18
58878     if-ge v0, v9, :cond_4c0
58880     move-object/from16 v0, p0
58882     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
58884     move/from16 v0, v18
58886     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
58888     move-result-object v3
58890     check-cast v3, Lcom/android/server/am/ProcessRecord;
58892     iget v2, v3, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
58894     const/4 v8, 0x6
58896     if-lt v2, v8, :cond_431
58898     iget v2, v3, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
58900     const/16 v8, 0x8
58902     if-eq v2, v8, :cond_431
58904     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->killedBackground:Z
58906     if-nez v2, :cond_431
58908     iget v2, v3, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
58910     if-ge v2, v11, :cond_411
58912     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
58914     if-eqz v2, :cond_411
58916     :try_start_40c
58917     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
58919     invoke-interface {v2, v11}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
58920     :try_end_411
58921     .catch Landroid/os/RemoteException; {:try_start_40c .. :try_end_411} :catch_4e0
58923     :cond_411
58924     :goto_411
58925     iput v11, v3, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
58927     add-int/lit8 v31, v31, 0x1
58929     move/from16 v0, v31
58931     if-lt v0, v14, :cond_41e
58933     const/16 v31, 0x0
58935     sparse-switch v11, :sswitch_data_4e4
58937     :cond_41e
58938     :goto_41e
58939     add-int/lit8 v18, v18, 0x1
58941     goto :goto_3e5
58943     :cond_421
58944     const/4 v2, 0x5
58946     move/from16 v0, v26
58948     if-gt v0, v2, :cond_429
58950     const/16 v15, 0xa
58952     goto :goto_3e1
58954     :cond_429
58955     const/4 v15, 0x5
58957     goto :goto_3e1
58959     :sswitch_42b
58960     const/16 v11, 0x3c
58962     goto :goto_41e
58964     :sswitch_42e
58965     const/16 v11, 0x28
58967     goto :goto_41e
58969     :cond_431
58970     iget v2, v3, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
58972     const/4 v8, 0x3
58974     if-ne v2, v8, :cond_44c
58976     iget v2, v3, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
58978     const/16 v8, 0x28
58980     if-ge v2, v8, :cond_447
58982     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
58984     if-eqz v2, :cond_447
58986     :try_start_440
58987     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
58989     const/16 v8, 0x28
58991     invoke-interface {v2, v8}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
58992     :try_end_447
58993     .catch Landroid/os/RemoteException; {:try_start_440 .. :try_end_447} :catch_4dd
58995     :cond_447
58996     :goto_447
58997     const/16 v2, 0x28
58999     iput v2, v3, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
59001     goto :goto_41e
59003     :cond_44c
59004     iget v2, v3, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
59006     const/4 v8, 0x1
59008     if-gt v2, v8, :cond_455
59010     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
59012     if-eqz v2, :cond_46f
59014     :cond_455
59015     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
59017     if-eqz v2, :cond_46f
59019     const/16 v19, 0x14
59021     iget v2, v3, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
59023     const/16 v8, 0x14
59025     if-ge v2, v8, :cond_46c
59027     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59029     if-eqz v2, :cond_46c
59031     :try_start_465
59032     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59034     const/16 v8, 0x14
59036     invoke-interface {v2, v8}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
59037     :try_end_46c
59038     .catch Landroid/os/RemoteException; {:try_start_465 .. :try_end_46c} :catch_4db
59040     :cond_46c
59041     :goto_46c
59042     const/4 v2, 0x0
59044     iput-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
59046     :cond_46f
59047     iget v2, v3, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
59049     if-ge v2, v15, :cond_47c
59051     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59053     if-eqz v2, :cond_47c
59055     :try_start_477
59056     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59058     invoke-interface {v2, v15}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
59059     :try_end_47c
59060     .catch Landroid/os/RemoteException; {:try_start_477 .. :try_end_47c} :catch_4d9
59062     :cond_47c
59063     :goto_47c
59064     iput v15, v3, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
59066     goto :goto_41e
59068     :cond_47f
59069     move-object/from16 v0, p0
59071     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
59073     invoke-virtual {v2}, Ljava/util/ArrayList;->size()I
59075     move-result v9
59077     const/16 v18, 0x0
59079     :goto_489
59080     move/from16 v0, v18
59082     if-ge v0, v9, :cond_4c0
59084     move-object/from16 v0, p0
59086     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mLruProcesses:Ljava/util/ArrayList;
59088     move/from16 v0, v18
59090     invoke-virtual {v2, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
59092     move-result-object v3
59094     check-cast v3, Lcom/android/server/am/ProcessRecord;
59096     iget v2, v3, Lcom/android/server/am/ProcessRecord;->nonStoppingAdj:I
59098     const/4 v8, 0x1
59100     if-gt v2, v8, :cond_4a2
59102     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->systemNoUi:Z
59104     if-eqz v2, :cond_4ba
59106     :cond_4a2
59107     iget-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
59109     if-eqz v2, :cond_4ba
59111     iget v2, v3, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
59113     const/16 v8, 0x14
59115     if-ge v2, v8, :cond_4b7
59117     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59119     if-eqz v2, :cond_4b7
59121     :try_start_4b0
59122     iget-object v2, v3, Lcom/android/server/am/ProcessRecord;->thread:Landroid/app/IApplicationThread;
59124     const/16 v8, 0x14
59126     invoke-interface {v2, v8}, Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V
59127     :try_end_4b7
59128     .catch Landroid/os/RemoteException; {:try_start_4b0 .. :try_end_4b7} :catch_4d7
59130     :cond_4b7
59131     :goto_4b7
59132     const/4 v2, 0x0
59134     iput-boolean v2, v3, Lcom/android/server/am/ProcessRecord;->pendingUiClean:Z
59136     :cond_4ba
59137     const/4 v2, 0x0
59139     iput v2, v3, Lcom/android/server/am/ProcessRecord;->trimMemoryLevel:I
59141     add-int/lit8 v18, v18, 0x1
59143     goto :goto_489
59145     :cond_4c0
59146     move-object/from16 v0, p0
59148     iget-boolean v2, v0, Lcom/android/server/am/ActivityManagerService;->mAlwaysFinishActivities:Z
59150     if-eqz v2, :cond_4d6
59152     move-object/from16 v0, p0
59154     iget-object v2, v0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
59156     const/4 v8, 0x0
59158     const/16 v34, 0x0
59160     const-string v35, "always-finish"
59162     move/from16 v0, v34
59164     move-object/from16 v1, v35
59166     invoke-virtual {v2, v8, v0, v1}, Lcom/android/server/am/ActivityStack;->scheduleDestroyActivities(Lcom/android/server/am/ProcessRecord;ZLjava/lang/String;)V
59168     :cond_4d6
59169     return-void
59171     :catch_4d7
59172     move-exception v2
59174     goto :goto_4b7
59176     :catch_4d9
59177     move-exception v2
59179     goto :goto_47c
59181     :catch_4db
59182     move-exception v2
59184     goto :goto_46c
59186     :catch_4dd
59187     move-exception v2
59189     goto/16 :goto_447
59191     :catch_4e0
59192     move-exception v2
59194     goto/16 :goto_411
59196     nop
59198     :sswitch_data_4e4
59199     .sparse-switch
59200         0x3c -> :sswitch_42e
59201         0x50 -> :sswitch_42b
59202     .end sparse-switch
59203 .end method
59205 .method final updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;)Z
59206     .registers 16
59208     const/16 v13, 0xf
59210     const/4 v12, 0x1
59212     const/4 v6, 0x0
59214     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->resumedAppLocked()Lcom/android/server/am/ActivityRecord;
59216     move-result-object v7
59218     if-eqz v7, :cond_38
59220     iget-object v5, v7, Lcom/android/server/am/ActivityRecord;->app:Lcom/android/server/am/ProcessRecord;
59222     :goto_c
59223     iget v8, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
59225     sget v0, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
59227     if-lt v8, v0, :cond_3a
59229     if-gt v8, v13, :cond_3a
59231     move v11, v12
59233     :goto_15
59234     iget v0, p0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
59236     add-int/lit8 v0, v0, 0x1
59238     iput v0, p0, Lcom/android/server/am/ActivityManagerService;->mAdjSeq:I
59240     iget v2, p1, Lcom/android/server/am/ProcessRecord;->hiddenAdj:I
59242     iget v3, p1, Lcom/android/server/am/ProcessRecord;->clientHiddenAdj:I
59244     iget v4, p1, Lcom/android/server/am/ProcessRecord;->emptyAdj:I
59246     move-object v0, p0
59248     move-object v1, p1
59250     invoke-direct/range {v0 .. v6}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;IIILcom/android/server/am/ProcessRecord;Z)Z
59252     move-result v10
59254     iget v0, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
59256     sget v1, Lcom/android/server/am/ProcessList;->HIDDEN_APP_MIN_ADJ:I
59258     if-lt v0, v1, :cond_3c
59260     iget v0, p1, Lcom/android/server/am/ProcessRecord;->curAdj:I
59262     if-gt v0, v13, :cond_3c
59264     move v9, v12
59266     :goto_32
59267     if-eq v9, v11, :cond_37
59269     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
59271     :cond_37
59272     return v10
59274     :cond_38
59275     const/4 v5, 0x0
59277     goto :goto_c
59279     :cond_3a
59280     move v11, v6
59282     goto :goto_15
59284     :cond_3c
59285     move v9, v6
59287     goto :goto_32
59288 .end method
59290 .method public updatePersistentConfiguration(Landroid/content/res/Configuration;)V
59291     .registers 7
59293     const-string v2, "android.permission.CHANGE_CONFIGURATION"
59295     const-string v3, "updateConfiguration()"
59297     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
59299     const-string v2, "android.permission.WRITE_SETTINGS"
59301     const-string v3, "updateConfiguration()"
59303     invoke-virtual {p0, v2, v3}, Lcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
59305     if-nez p1, :cond_18
59307     new-instance v2, Ljava/lang/NullPointerException;
59309     const-string v3, "Configuration must not be null"
59311     invoke-direct {v2, v3}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
59313     throw v2
59315     :cond_18
59316     monitor-enter p0
59318     :try_start_19
59319     invoke-static {}, Landroid/os/Binder;->clearCallingIdentity()J
59321     move-result-wide v0
59323     const/4 v2, 0x0
59325     const/4 v3, 0x1
59327     const/4 v4, 0x0
59329     invoke-virtual {p0, p1, v2, v3, v4}, Lcom/android/server/am/ActivityManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/am/ActivityRecord;ZZ)Z
59331     invoke-static {v0, v1}, Landroid/os/Binder;->restoreCallingIdentity(J)V
59333     monitor-exit p0
59335     return-void
59337     :catchall_28
59338     move-exception v2
59340     monitor-exit p0
59341     :try_end_2a
59342     .catchall {:try_start_19 .. :try_end_2a} :catchall_28
59344     throw v2
59345 .end method
59347 .method updateUsageStats(Lcom/android/server/am/ActivityRecord;Z)V
59348     .registers 5
59350     if-eqz p2, :cond_a
59352     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
59354     iget-object v1, p1, Lcom/android/server/am/ActivityRecord;->realActivity:Landroid/content/ComponentName;
59356     invoke-virtual {v0, v1}, Lcom/android/server/am/UsageStatsService;->noteResumeComponent(Landroid/content/ComponentName;)V
59358     :goto_9
59359     return-void
59361     :cond_a
59362     iget-object v0, p0, Lcom/android/server/am/ActivityManagerService;->mUsageStatsService:Lcom/android/server/am/UsageStatsService;
59364     iget-object v1, p1, Lcom/android/server/am/ActivityRecord;->realActivity:Landroid/content/ComponentName;
59366     invoke-virtual {v0, v1}, Lcom/android/server/am/UsageStatsService;->notePauseComponent(Landroid/content/ComponentName;)V
59368     goto :goto_9
59369 .end method
59371 .method userInitialized(Lcom/android/server/am/UserStartedState;)V
59372     .registers 4
59374     monitor-enter p0
59376     :try_start_1
59377     invoke-virtual {p0}, Lcom/android/server/am/ActivityManagerService;->getUserManagerLocked()Lcom/android/server/pm/UserManagerService;
59379     move-result-object v0
59381     iget-object v1, p1, Lcom/android/server/am/UserStartedState;->mHandle:Landroid/os/UserHandle;
59383     invoke-virtual {v1}, Landroid/os/UserHandle;->getIdentifier()I
59385     move-result v1
59387     invoke-virtual {v0, v1}, Lcom/android/server/pm/UserManagerService;->makeInitialized(I)V
59389     const/4 v0, 0x0
59391     iput-boolean v0, p1, Lcom/android/server/am/UserStartedState;->initializing:Z
59393     invoke-virtual {p0, p1}, Lcom/android/server/am/ActivityManagerService;->completeSwitchAndInitalizeLocked(Lcom/android/server/am/UserStartedState;)V
59395     monitor-exit p0
59397     return-void
59399     :catchall_16
59400     move-exception v0
59402     monitor-exit p0
59403     :try_end_18
59404     .catchall {:try_start_1 .. :try_end_18} :catchall_16
59406     throw v0
59407 .end method
59409 .method final verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
59410     .registers 7
59412     const/high16 v4, 0x4000
59414     if-eqz p1, :cond_13
59416     invoke-virtual {p1}, Landroid/content/Intent;->hasFileDescriptors()Z
59418     move-result v2
59420     const/4 v3, 0x1
59422     if-ne v2, v3, :cond_13
59424     new-instance v2, Ljava/lang/IllegalArgumentException;
59426     const-string v3, "File descriptors passed in Intent"
59428     invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
59430     throw v2
59432     :cond_13
59433     invoke-virtual {p1}, Landroid/content/Intent;->getFlags()I
59435     move-result v0
59437     iget-boolean v2, p0, Lcom/android/server/am/ActivityManagerService;->mProcessesReady:Z
59439     if-nez v2, :cond_29
59441     const/high16 v2, 0x800
59443     and-int/2addr v2, v0
59445     if-eqz v2, :cond_36
59447     new-instance v1, Landroid/content/Intent;
59449     invoke-direct {v1, p1}, Landroid/content/Intent;-><init>(Landroid/content/Intent;)V
59451     invoke-virtual {v1, v4}, Landroid/content/Intent;->addFlags(I)Landroid/content/Intent;
59453     move-object p1, v1
59455     :cond_29
59456     const/high16 v2, 0x400
59458     and-int/2addr v2, v0
59460     if-eqz v2, :cond_60
59462     new-instance v2, Ljava/lang/IllegalArgumentException;
59464     const-string v3, "Can\'t use FLAG_RECEIVER_BOOT_UPGRADE here"
59466     invoke-direct {v2, v3}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
59468     throw v2
59470     :cond_36
59471     and-int v2, v0, v4
59473     if-nez v2, :cond_29
59475     const-string v2, "ActivityManager"
59477     new-instance v3, Ljava/lang/StringBuilder;
59479     invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
59481     const-string v4, "Attempt to launch receivers of broadcast intent "
59483     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59485     move-result-object v3
59487     invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
59489     move-result-object v3
59491     const-string v4, " before boot completion"
59493     invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
59495     move-result-object v3
59497     invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
59499     move-result-object v3
59501     invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
59503     new-instance v2, Ljava/lang/IllegalStateException;
59505     const-string v3, "Cannot broadcast before boot completed"
59507     invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
59509     throw v2
59511     :cond_60
59512     return-object p1
59513 .end method
59515 .method public wakingUp()V
59516     .registers 3
59518     const-string v0, "android.permission.DEVICE_POWER"
59520     invoke-virtual {p0, v0}, Lcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
59522     move-result v0
59524     if-eqz v0, :cond_10
59526     new-instance v0, Ljava/lang/SecurityException;
59528     const-string v1, "Requires permission android.permission.DEVICE_POWER"
59530     invoke-direct {v0, v1}, Ljava/lang/SecurityException;-><init>(Ljava/lang/String;)V
59532     throw v0
59534     :cond_10
59535     monitor-enter p0
59537     const/4 v0, 0x0
59539     :try_start_12
59540     iput-boolean v0, p0, Lcom/android/server/am/ActivityManagerService;->mWentToSleep:Z
59542     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->updateEventDispatchingLocked()V
59544     invoke-direct {p0}, Lcom/android/server/am/ActivityManagerService;->comeOutOfSleepIfNeededLocked()V
59546     monitor-exit p0
59548     return-void
59550     :catchall_1c
59551     move-exception v0
59553     monitor-exit p0
59554     :try_end_1e
59555     .catchall {:try_start_12 .. :try_end_1e} :catchall_1c
59557     throw v0
59558 .end method
59560 .method public willActivityBeVisible(Landroid/os/IBinder;)Z
59561     .registers 6
59563     const/4 v2, 0x1
59565     monitor-enter p0
59567     :try_start_2
59568     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
59570     iget-object v3, v3, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
59572     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
59574     move-result v3
59576     add-int/lit8 v0, v3, -0x1
59578     :goto_c
59579     if-ltz v0, :cond_2f
59581     iget-object v3, p0, Lcom/android/server/am/ActivityManagerService;->mMainStack:Lcom/android/server/am/ActivityStack;
59583     iget-object v3, v3, Lcom/android/server/am/ActivityStack;->mHistory:Ljava/util/ArrayList;
59585     invoke-virtual {v3, v0}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
59587     move-result-object v1
59589     check-cast v1, Lcom/android/server/am/ActivityRecord;
59591     iget-object v3, v1, Lcom/android/server/am/ActivityRecord;->appToken:Landroid/view/IApplicationToken$Stub;
59593     if-ne v3, p1, :cond_1e
59595     monitor-exit p0
59597     :goto_1d
59598     return v2
59600     :cond_1e
59601     iget-boolean v3, v1, Lcom/android/server/am/ActivityRecord;->fullscreen:Z
59603     if-eqz v3, :cond_2c
59605     iget-boolean v3, v1, Lcom/android/server/am/ActivityRecord;->finishing:Z
59607     if-nez v3, :cond_2c
59609     const/4 v2, 0x0
59611     monitor-exit p0
59613     goto :goto_1d
59615     :catchall_29
59616     move-exception v2
59618     monitor-exit p0
59619     :try_end_2b
59620     .catchall {:try_start_2 .. :try_end_2b} :catchall_29
59622     throw v2
59624     :cond_2c
59625     add-int/lit8 v0, v0, -0x1
59627     goto :goto_c
59629     :cond_2f
59630     :try_start_2f
59631     monitor-exit p0
59632     :try_end_30
59633     .catchall {:try_start_2f .. :try_end_30} :catchall_29
59635     goto :goto_1d
59636 .end method