Add a aggregation count section to profile.
This section is used on server side.
The format is defined on server and it is:
***************
uint16 profile_aggregation_count
uint16 aggregation_count_for_each_dex_file_size
aggregation_count_for_each_dex_file[]
The format of aggregation_count_for_each_dex_file is:
uint16 profile_index
uint16 class_aggregation_count_size
uint16 class_aggregation_count[]
uint16 method_aggregation_count_size
uint16 method_aggregation_count[]
***************
The aggregation count for classes/methods are in the ascending order of their indices.
Bug: 188071742
Test: m
Change-Id: I683b296699e2a80a8c6dc167c84b4d592a0f26fc
diff --git a/libprofile/profile/profile_compilation_info.cc b/libprofile/profile/profile_compilation_info.cc
index 5c95608..da54bc6 100644
--- a/libprofile/profile/profile_compilation_info.cc
+++ b/libprofile/profile/profile_compilation_info.cc
@@ -218,8 +218,12 @@
// Methods included in the profile, their hotness flags and inline caches.
kMethods = 3,
+ // The aggregation counts of the profile, classes and methods. This section is
+ // an optional reserved section not implemented on client yet.
+ kAggregationCounts = 4,
+
// The number of known sections.
- kNumberOfSections = 4
+ kNumberOfSections = 5
};
class ProfileCompilationInfo::FileSectionInfo {
@@ -874,6 +878,7 @@
* ExtraDescriptors - optional, zipped
* Classes - optional, zipped
* Methods - optional, zipped
+ * AggregationCounts - optional, zipped, server-side
*
* DexFiles:
* number_of_dex_files
@@ -1792,6 +1797,9 @@
*source, section_info, dex_profile_index_remap, extra_descriptors_remap, error);
}
break;
+ case FileSectionType::kAggregationCounts:
+ // This section is only used on server side.
+ break;
default:
// Unknown section. Skip it. New versions of ART are allowed
// to add sections that shall be ignored by old versions.