-
Notifications
You must be signed in to change notification settings - Fork 14.3k
mmapForContinuousMode: Align Linux's impl to __APPLE__'s more. NFC. #95702
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-pgo Author: NAKAMURA Takumi (chapuni) ChangesFull diff: https://github.com/llvm/llvm-project/pull/95702.diff 1 Files Affected:
diff --git a/compiler-rt/lib/profile/InstrProfilingFile.c b/compiler-rt/lib/profile/InstrProfilingFile.c
index b88e0b4b0b2ab..9faee36e5b815 100644
--- a/compiler-rt/lib/profile/InstrProfilingFile.c
+++ b/compiler-rt/lib/profile/InstrProfilingFile.c
@@ -237,24 +237,46 @@ static int mmapForContinuousMode(uint64_t CurrentFileOffset, FILE *File) {
const char *CountersEnd = __llvm_profile_end_counters();
const char *BitmapBegin = __llvm_profile_begin_bitmap();
const char *BitmapEnd = __llvm_profile_end_bitmap();
+ const char *NamesBegin = __llvm_profile_begin_names();
+ const char *NamesEnd = __llvm_profile_end_names();
+ const uint64_t NamesSize = (NamesEnd - NamesBegin) * sizeof(char);
uint64_t DataSize = __llvm_profile_get_data_size(DataBegin, DataEnd);
+ uint64_t CountersSize =
+ __llvm_profile_get_counters_size(CountersBegin, CountersEnd);
+ uint64_t NumBitmapBytes =
+ __llvm_profile_get_num_bitmap_bytes(BitmapBegin, BitmapEnd);
/* Get the file size. */
uint64_t FileSize = 0;
if (getProfileFileSizeForMerging(File, &FileSize))
return 1;
+ int Fileno = fileno(File);
+ /* Determine how much padding is needed before/after the counters and
+ * after the names. */
+ uint64_t PaddingBytesBeforeCounters, PaddingBytesAfterCounters,
+ PaddingBytesAfterNames, PaddingBytesAfterBitmapBytes,
+ PaddingBytesAfterVTable, PaddingBytesAfterVNames;
+ __llvm_profile_get_padding_sizes_for_counters(
+ DataSize, CountersSize, NumBitmapBytes, NamesSize, /*VTableSize=*/0,
+ /*VNameSize=*/0, &PaddingBytesBeforeCounters, &PaddingBytesAfterCounters,
+ &PaddingBytesAfterBitmapBytes, &PaddingBytesAfterNames,
+ &PaddingBytesAfterVTable, &PaddingBytesAfterVNames);
+
+ CurrentFileOffset = 0;
+ uint64_t FileOffsetToCounters = CurrentFileOffset +
+ sizeof(__llvm_profile_header) + DataSize +
+ PaddingBytesBeforeCounters;
+
/* Map the profile. */
char *Profile = (char *)mmap(NULL, FileSize, PROT_READ | PROT_WRITE,
- MAP_SHARED, fileno(File), 0);
+ MAP_SHARED, Fileno, 0);
if (Profile == MAP_FAILED) {
PROF_ERR("Unable to mmap profile: %s\n", strerror(errno));
return 1;
}
- const uint64_t CountersOffsetInBiasMode =
- sizeof(__llvm_profile_header) + __llvm_write_binary_ids(NULL) + DataSize;
/* Update the profile fields based on the current mapping. */
INSTR_PROF_PROFILE_COUNTER_BIAS_VAR =
- (intptr_t)Profile - (uintptr_t)CountersBegin + CountersOffsetInBiasMode;
+ (intptr_t)Profile - (uintptr_t)CountersBegin + FileOffsetToCounters;
/* Return the memory allocated for counters to OS. */
lprofReleaseMemoryPagesToOS((uintptr_t)CountersBegin, (uintptr_t)CountersEnd);
|
Why? |
"I want to introduce bitmap bias w/o posting RFC." Rather than appending similar changes (but with different variables) into linux impl, I think it'd be better to align blocks with same variable for possible commonization in the future. It can also make simpler to explain the difference of bitmap between APPLE and bias mode. To introduce bitmap in biased continuous mode, the bias for counters cannot be reused since the layout of I thought actual commonization would be too early since it would be intrusive. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
We're seeing test failures after this patch. Can you please take a look? Error:
|
@ilovepi Thanks for reporting. I've reverted this and I'll rework with less-intrusive way. |
Thanks. |
… a little. I've made this small cosmetic changes, `s/CountersOffsetInBiasMode/FileOffsetToCounters/`
…. NFC. (llvm#95702)" This reverts commit 7cf84d3. (llvmorg-19-init-14939-g7cf84d3b0bc5) This has my wrong assumptions possibly. This was failing fuchsia.
…__'s a little. I've made this small cosmetic changes, `s/CountersOffsetInBiasMode/FileOffsetToCounters/`
No description provided.