From fe13d8ecfbe21548ddbdb1c6a19f2152822ef9ab Mon Sep 17 00:00:00 2001 From: Jared Duke Date: Thu, 16 Nov 2023 21:16:14 +0000 Subject: Optimize AppOpsManager.getFormattedStackTrace Avoid redundant toString() calls for a given StackTraceElement when fetching the formatted stack trace for an Op. This call is not trivially cheap, and shows up in system stack samples, so make sure it only happens once. Bug: 308786093 Test: m + presubmit Change-Id: I463addc4995b1553ff4b22e712208557ab4a663c --- core/java/android/app/AppOpsManager.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index a99dfa605407..ba1fb0b0f4bc 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -9931,10 +9931,11 @@ public class AppOpsManager { if (i != firstInteresting) { sb.append('\n'); } - if (!sFullLog && sb.length() + trace[i].toString().length() > 600) { + final String traceString = trace[i].toString(); + if (!sFullLog && sb.length() + traceString.length() > 600) { break; } - sb.append(trace[i]); + sb.append(traceString); } return sb.toString(); -- cgit v1.2.3-59-g8ed1b