diff options
author | 2023-12-04 12:05:00 +0000 | |
---|---|---|
committer | 2024-01-03 14:48:12 +0000 | |
commit | 41c5dde40d1c75d36a7f984c8d72ec65fbff3111 (patch) | |
tree | 7fda2cbd5c320582b3f7b65a394d33bf9d7fed58 /compiler/optimizing/profiling_info_builder.h | |
parent | c4aff3d48d3040b9b5a42b9f807e7d2671e138c0 (diff) |
Run optimizations with baseline compilation.
And introduce inlined inline caches, which customize an inline cache for
the top-level method being compiled.
Reduces jank on compose view scrolling for 20 seconds:
- For Go Mokey:
- Before: ~525 frames drawn / ~14.64% janky frames
- After: ~891 frames drawn / ~4.74% janky frames
- For Pixel 8 pro:
- Before: ~2443 frames drawn / ~0.91% janky frames
- After: ~2447 frames drawn / ~0.65% janky frames
Bug: 313040662
Test: test.py
Change-Id: Ibaa746c6bd3c665b18ec9cd29cb477cf21023467
Diffstat (limited to 'compiler/optimizing/profiling_info_builder.h')
-rw-r--r-- | compiler/optimizing/profiling_info_builder.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/compiler/optimizing/profiling_info_builder.h b/compiler/optimizing/profiling_info_builder.h index 2185b0eed3..c8dc59a03c 100644 --- a/compiler/optimizing/profiling_info_builder.h +++ b/compiler/optimizing/profiling_info_builder.h @@ -24,6 +24,7 @@ namespace art HIDDEN { class CodeGenerator; class CompilerOptions; +class HInliner; class InlineCache; class ProfilingInfo; @@ -42,8 +43,13 @@ class ProfilingInfoBuilder : public HGraphDelegateVisitor { static constexpr const char* kProfilingInfoBuilderPassName = "profiling_info_builder"; - static InlineCache* GetInlineCache(ProfilingInfo* info, HInvoke* invoke); + static InlineCache* GetInlineCache(ProfilingInfo* info, + const CompilerOptions& compiler_options, + HInvoke* invoke); static bool IsInlineCacheUseful(HInvoke* invoke, CodeGenerator* codegen); + static uint32_t EncodeInlinedDexPc( + const HInliner* inliner, const CompilerOptions& compiler_options, HInvoke* invoke) + REQUIRES_SHARED(Locks::mutator_lock_); private: void VisitInvokeVirtual(HInvokeVirtual* invoke) override; @@ -52,7 +58,7 @@ class ProfilingInfoBuilder : public HGraphDelegateVisitor { void HandleInvoke(HInvoke* invoke); CodeGenerator* codegen_; - [[maybe_unused]] const CompilerOptions& compiler_options_; + const CompilerOptions& compiler_options_; std::vector<uint32_t> inline_caches_; DISALLOW_COPY_AND_ASSIGN(ProfilingInfoBuilder); |