ART: Relayout ProfilingInfo
Order the fields by size to save 8B (32B to 24B) for 64-bit libart.
Bug: 79365543
Test: m test-art-host
Change-Id: Ia452524caf31b0fd42c44e666fc95d07fef444b3
diff --git a/runtime/jit/profiling_info.cc b/runtime/jit/profiling_info.cc
index 9126bea..2cb569c 100644
--- a/runtime/jit/profiling_info.cc
+++ b/runtime/jit/profiling_info.cc
@@ -26,12 +26,12 @@
namespace art {
ProfilingInfo::ProfilingInfo(ArtMethod* method, const std::vector<uint32_t>& entries)
- : number_of_inline_caches_(entries.size()),
- method_(method),
- is_method_being_compiled_(false),
- is_osr_method_being_compiled_(false),
+ : method_(method),
+ saved_entry_point_(nullptr),
+ number_of_inline_caches_(entries.size()),
current_inline_uses_(0),
- saved_entry_point_(nullptr) {
+ is_method_being_compiled_(false),
+ is_osr_method_being_compiled_(false) {
memset(&cache_, 0, number_of_inline_caches_ * sizeof(InlineCache));
for (size_t i = 0; i < number_of_inline_caches_; ++i) {
cache_[i].dex_pc_ = entries[i];
diff --git a/runtime/jit/profiling_info.h b/runtime/jit/profiling_info.h
index 788fa1f..a3dae83 100644
--- a/runtime/jit/profiling_info.h
+++ b/runtime/jit/profiling_info.h
@@ -132,28 +132,28 @@
private:
ProfilingInfo(ArtMethod* method, const std::vector<uint32_t>& entries);
- // Number of instructions we are profiling in the ArtMethod.
- const uint32_t number_of_inline_caches_;
-
// Method this profiling info is for.
// Not 'const' as JVMTI introduces obsolete methods that we implement by creating new ArtMethods.
// See JitCodeCache::MoveObsoleteMethod.
ArtMethod* method_;
+ // Entry point of the corresponding ArtMethod, while the JIT code cache
+ // is poking for the liveness of compiled code.
+ const void* saved_entry_point_;
+
+ // Number of instructions we are profiling in the ArtMethod.
+ const uint32_t number_of_inline_caches_;
+
+ // When the compiler inlines the method associated to this ProfilingInfo,
+ // it updates this counter so that the GC does not try to clear the inline caches.
+ uint16_t current_inline_uses_;
+
// Whether the ArtMethod is currently being compiled. This flag
// is implicitly guarded by the JIT code cache lock.
// TODO: Make the JIT code cache lock global.
bool is_method_being_compiled_;
bool is_osr_method_being_compiled_;
- // When the compiler inlines the method associated to this ProfilingInfo,
- // it updates this counter so that the GC does not try to clear the inline caches.
- uint16_t current_inline_uses_;
-
- // Entry point of the corresponding ArtMethod, while the JIT code cache
- // is poking for the liveness of compiled code.
- const void* saved_entry_point_;
-
// Dynamically allocated array of size `number_of_inline_caches_`.
InlineCache cache_[0];