Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 26c1b89d authored by Chih-Yu Huang's avatar Chih-Yu Huang
Browse files

Store track name inside ProcessStateRecord

This CL changes to pass the track name to ProcessStateRecord at the
constructor instead of querying the process name and uid when sending
trace.

It slightly reduces the dependency from ProcessStateRecord to the
ProcessRecord.

Bug: 425766486
Test: mmm frameworks/base/services/
Test: atest MockingOomAdjusterTests
Flag: EXEMPT pure refactor
Change-Id: I49de8eebf9ca59996b9732f6c55f456e4f5d89e3
parent fb0d9121
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -627,7 +627,7 @@ class ProcessRecord implements WindowProcessListener {
        mProviders = new ProcessProviderRecord(this);
        mReceivers = new ProcessReceiverRecord(this);
        mErrorState = new ProcessErrorStateRecord(this);
        mState = new ProcessStateRecord(this);
        mState = new ProcessStateRecord(processName, uid, this);
        mOptRecord = new ProcessCachedOptimizerRecord(this);
        final long now = SystemClock.uptimeMillis();
        mProfile.init(now);
+21 −7
Original line number Diff line number Diff line
@@ -50,6 +50,10 @@ final class ProcessStateRecord {
    // Enable this to trace all OomAdjuster state transitions
    private static final boolean TRACE_OOM_ADJ = false;

    private final String mProcessName;
    private final int mUid;
    private String mTrackName;

    private final ProcessRecord mApp;
    private final ActivityManagerService mService;
    private final ActivityManagerGlobalLock mProcLock;
@@ -438,7 +442,9 @@ final class ProcessStateRecord {
    @GuardedBy("mService")
    private long mFollowupUpdateUptimeMs = Long.MAX_VALUE;

    ProcessStateRecord(ProcessRecord app) {
    ProcessStateRecord(String processName, int uid, ProcessRecord app) {
        mProcessName = processName;
        mUid = uid;
        mApp = app;
        mService = app.mService;
        mProcLock = mService.mProcLock;
@@ -882,10 +888,9 @@ final class ProcessStateRecord {
    @GuardedBy("mService")
    void setAdjType(String adjType) {
        if (TRACE_OOM_ADJ) {
            Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER,
                    "oom:" + mApp.processName + "/u" + mApp.uid, 0);
            Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER,
                    "oom:" + mApp.processName + "/u" + mApp.uid, adjType, 0);
            Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, getTrackName(), 0);
            Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, getTrackName(),
                    adjType, 0);
        }
        mAdjType = adjType;
    }
@@ -1221,8 +1226,7 @@ final class ProcessStateRecord {
    @GuardedBy({"mService", "mProcLock"})
    void onCleanupApplicationRecordLSP() {
        if (TRACE_OOM_ADJ) {
            Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER,
                    "oom:" + mApp.processName + "/u" + mApp.uid, 0);
            Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER, getTrackName(), 0);
        }
        setHasForegroundActivities(false);
        mHasShownUi = false;
@@ -1321,6 +1325,16 @@ final class ProcessStateRecord {
        return mCacheOomRankerRssTimeMs;
    }

    /**
     * Lazily initiate and return the track name.
     */
    private String getTrackName() {
        if (mTrackName == null) {
            mTrackName = "oom:" + mProcessName + "/u" + mUid;
        }
        return mTrackName;
    }

    @GuardedBy({"mService", "mProcLock"})
    void dump(PrintWriter pw, String prefix, long nowUptime) {
        if (mReportedInteraction || mFgInteractionTime != 0) {