diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java index c0e2864d1993c..9bc7ffdef26ee 100644 --- a/core/java/android/os/PowerManager.java +++ b/core/java/android/os/PowerManager.java @@ -2913,6 +2913,7 @@ public final class PowerManager { private int mFlags; @UnsupportedAppUsage private String mTag; + private int mTagHash; private final String mPackageName; private final IBinder mToken; private int mInternalCount; @@ -2921,7 +2922,6 @@ public final class PowerManager { private boolean mHeld; private WorkSource mWorkSource; private String mHistoryTag; - private final String mTraceName; private final int mDisplayId; private WakeLockStateListener mListener; private IWakeLockCallback mCallback; @@ -2931,9 +2931,9 @@ public final class PowerManager { WakeLock(int flags, String tag, String packageName, int displayId) { mFlags = flags; mTag = tag; + mTagHash = mTag.hashCode(); mPackageName = packageName; mToken = new Binder(); - mTraceName = "WakeLock (" + mTag + ")"; mDisplayId = displayId; } @@ -2942,7 +2942,8 @@ public final class PowerManager { synchronized (mToken) { if (mHeld) { Log.wtf(TAG, "WakeLock finalized while still held: " + mTag); - Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0); + Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_POWER, + "WakeLocks", mTagHash); try { mService.releaseWakeLock(mToken, 0); } catch (RemoteException e) { @@ -3012,7 +3013,8 @@ public final class PowerManager { // should immediately acquire the wake lock once again despite never having // been explicitly released by the keyguard. mHandler.removeCallbacks(mReleaser); - Trace.asyncTraceBegin(Trace.TRACE_TAG_POWER, mTraceName, 0); + Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_POWER, + "WakeLocks", mTag, mTagHash); try { mService.acquireWakeLock(mToken, mFlags, mTag, mPackageName, mWorkSource, mHistoryTag, mDisplayId, mCallback); @@ -3060,7 +3062,8 @@ public final class PowerManager { if (!mRefCounted || mInternalCount == 0) { mHandler.removeCallbacks(mReleaser); if (mHeld) { - Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0); + Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_POWER, + "WakeLocks", mTagHash); try { mService.releaseWakeLock(mToken, flags); } catch (RemoteException e) { @@ -3137,6 +3140,7 @@ public final class PowerManager { /** @hide */ public void setTag(String tag) { mTag = tag; + mTagHash = mTag.hashCode(); } /** @hide */ diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 2d22b8fc32721..f9352cb2b30fc 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -5316,7 +5316,7 @@ public final class PowerManagerService extends SystemService private final class SuspendBlockerImpl implements SuspendBlocker { private static final String UNKNOWN_ID = "unknown"; private final String mName; - private final String mTraceName; + private final int mNameHash; private int mReferenceCount; // Maps suspend blocker IDs to a list (LongArray) of open acquisitions for the suspend @@ -5325,7 +5325,7 @@ public final class PowerManagerService extends SystemService public SuspendBlockerImpl(String name) { mName = name; - mTraceName = "SuspendBlocker (" + name + ")"; + mNameHash = mName.hashCode(); } @Override @@ -5336,7 +5336,8 @@ public final class PowerManagerService extends SystemService + "\" was finalized without being released!"); mReferenceCount = 0; mNativeWrapper.nativeReleaseSuspendBlocker(mName); - Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0); + Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_POWER, + "SuspendBlockers", mNameHash); } } finally { super.finalize(); @@ -5357,7 +5358,8 @@ public final class PowerManagerService extends SystemService if (DEBUG_SPEW) { Slog.d(TAG, "Acquiring suspend blocker \"" + mName + "\"."); } - Trace.asyncTraceBegin(Trace.TRACE_TAG_POWER, mTraceName, 0); + Trace.asyncTraceForTrackBegin(Trace.TRACE_TAG_POWER, + "SuspendBlockers", mName, mNameHash); mNativeWrapper.nativeAcquireSuspendBlocker(mName); } } @@ -5378,7 +5380,10 @@ public final class PowerManagerService extends SystemService Slog.d(TAG, "Releasing suspend blocker \"" + mName + "\"."); } mNativeWrapper.nativeReleaseSuspendBlocker(mName); - Trace.asyncTraceEnd(Trace.TRACE_TAG_POWER, mTraceName, 0); + if (Trace.isTagEnabled(Trace.TRACE_TAG_POWER)) { + Trace.asyncTraceForTrackEnd(Trace.TRACE_TAG_POWER, + "SuspendBlockers", mNameHash); + } } else if (mReferenceCount < 0) { Slog.wtf(TAG, "Suspend blocker \"" + mName + "\" was released without being acquired!", new Throwable());