# # Copyright (C) 2022 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # A list of methods that are found to be latency sensitive. We have this manual # due to current limitations of our boot image profiling, where knowing what # methods are latency sensitive is difficult. For example, this method is executed # in the system server, not on the UI thread of an app. HSPLandroid/graphics/Color;->luminance()F # TODO(shayba): remove the below once the generated profile is updated. # See: b/419605355 HSPLandroid/os/MessageQueue$EnqueueOrder;->* # Concurrent MessageQueue uses ConcurrentSkipListMap. # See: b/415954362 # TODO(shayba): clean up redundant entries after ag/33686358 is merged. HSPLjava/util/concurrent/ConcurrentSkipListMap;->* HSPLjava/util/concurrent/ConcurrentSkipListMap$KeyIterator;->* HSPLjava/util/concurrent/ConcurrentSkipListMap$KeySet;->* HSPLjava/util/concurrent/ConcurrentSkipListSet;->* # For now, also compile all method in the 'com.android.internal.dev.perfetto.sdk' Perfetto Trace API. # Similar to the existing Trace APIs, these new APIs can impact the performance # of many subsystems including MessageQueue. This also keeps benchmark # comparisons between both APIs fair. # The list is generated from the # 'out/soong/.intermediates/external/perfetto/perfetto_trace_lib_framework_java/android_common/jarjar/perfetto_trace_lib_framework_java.jar' # jar file, using the following command: # ``` # jar tvf \ # out/soong/.intermediates/external/perfetto/perfetto_trace_lib_framework_java/android_common/jarjar/perfetto_trace_lib_framework_java.jar \ # | awk '$8 ~ /\.class$/ {sub(/\.class$/, "", $8); print "HSPL" $8 ";->*"}' # ``` HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$Proto;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$PerfettoPointer;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$NamedTrack;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$Flow;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$FieldString;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$FieldNested;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$FieldInt64;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$FieldDouble;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$FieldContainer;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$CounterTrack;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$CounterInt64;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$CounterDouble;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$ArgString;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$ArgInt64;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$ArgDouble;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventExtra$ArgBool;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventBuilder;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventBuilder$RingBuffer;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventBuilder$Pool;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventBuilder$ObjectsPool;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventBuilder$ObjectsCache;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrackEventBuilder$LazyInitObjects;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrace;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrace$Session;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoTrace$Category;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoNativeMemoryCleaner;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoNativeMemoryCleaner$FreeNativeMemoryRunnable;->* HSPLcom/android/internal/dev/perfetto/sdk/PerfettoNativeMemoryCleaner$AllocationStats;->* # DeliQueue MessageQueue classes # TODO(shayba): remove the below once they're in the generated boot-image-profile.txt HSPLandroid/os/MessageHeap;->* HSPLandroid/os/MessageStack;->* HSPLandroid/os/WaitState;->* HSPLandroid/os/Message;->compareMessages(Landroid/os/Message;Landroid/os/Message;)I # While the SystemFeaturesMetadata static cache isn't heavyweight, ensure it's # pre-initialized in the boot image to avoid redundant per-process overhead. # TODO(b/326623529): Consider removing this after the feature has fully ramped # and is captured with the boot image profiling pipeline. HSPLcom/android/internal/pm/SystemFeaturesMetadata;->* Lcom/android/internal/pm/SystemFeaturesMetadata; # These methods were previously direct `native` JNI calls, but were made into # Java wrappers with a recent change. Ensure they're compiled to avoid # regressions on any hot paths. # TOOD(b/417492941): Remove after inclusion in generated boot-image-profile.txt. HSPLandroid/os/Process;->setThreadPriority(II)V HSPLandroid/os/Process;->setThreadPriority(I)V # TODO: remove after the generated profile is updated. HSPLcom/android/internal/util/StringCache;->*