mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-03 10:33:33 +00:00
Bug 735262. Make leaf address printing saner. r=bgirard
We don't need to store an mLeafAddress field for each profile entry. Instead just add a 'l' tag for the leaf entries. --HG-- extra : rebase_source : e8e578d000a672f8d198541b4c00ff8ab570d95e
This commit is contained in:
parent
f94702d5d2
commit
4b50b945c5
@ -119,33 +119,27 @@ class ProfileEntry
|
|||||||
public:
|
public:
|
||||||
ProfileEntry()
|
ProfileEntry()
|
||||||
: mTagData(NULL)
|
: mTagData(NULL)
|
||||||
, mLeafAddress(0)
|
|
||||||
, mTagName(0)
|
, mTagName(0)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
// aTagData must not need release (i.e. be a string from the text segment)
|
// aTagData must not need release (i.e. be a string from the text segment)
|
||||||
ProfileEntry(char aTagName, const char *aTagData)
|
ProfileEntry(char aTagName, const char *aTagData)
|
||||||
: mTagData(aTagData)
|
: mTagData(aTagData)
|
||||||
, mLeafAddress(0)
|
|
||||||
, mTagName(aTagName)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
// aTagData must not need release (i.e. be a string from the text segment)
|
|
||||||
ProfileEntry(char aTagName, const char *aTagData, Address aLeafAddress)
|
|
||||||
: mTagData(aTagData)
|
|
||||||
, mLeafAddress(aLeafAddress)
|
|
||||||
, mTagName(aTagName)
|
, mTagName(aTagName)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
ProfileEntry(char aTagName, double aTagFloat)
|
ProfileEntry(char aTagName, double aTagFloat)
|
||||||
: mTagFloat(aTagFloat)
|
: mTagFloat(aTagFloat)
|
||||||
, mLeafAddress(0)
|
|
||||||
, mTagName(aTagName)
|
, mTagName(aTagName)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
ProfileEntry(char aTagName, uintptr_t aTagOffset)
|
ProfileEntry(char aTagName, uintptr_t aTagOffset)
|
||||||
: mTagOffset(aTagOffset)
|
: mTagOffset(aTagOffset)
|
||||||
, mLeafAddress(0)
|
, mTagName(aTagName)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
ProfileEntry(char aTagName, Address aTagAddress)
|
||||||
|
: mTagAddress(aTagAddress)
|
||||||
, mTagName(aTagName)
|
, mTagName(aTagName)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -159,7 +153,6 @@ private:
|
|||||||
Address mTagAddress;
|
Address mTagAddress;
|
||||||
uintptr_t mTagOffset;
|
uintptr_t mTagOffset;
|
||||||
};
|
};
|
||||||
Address mLeafAddress;
|
|
||||||
char mTagName;
|
char mTagName;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -567,7 +560,7 @@ void TableTicker::doBacktrace(ThreadProfile &aProfile, TickSample* aSample)
|
|||||||
pc_array[count++] = reinterpret_cast<void*> (ip);
|
pc_array[count++] = reinterpret_cast<void*> (ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
aProfile.addTag(ProfileEntry('s', "(root)", 0));
|
aProfile.addTag(ProfileEntry('s', "(root)"));
|
||||||
for (size_t i = count; i > 0; --i) {
|
for (size_t i = count; i > 0; --i) {
|
||||||
aProfile.addTag(ProfileEntry('l', reinterpret_cast<const char*>(pc_array[i - 1])));
|
aProfile.addTag(ProfileEntry('l', reinterpret_cast<const char*>(pc_array[i - 1])));
|
||||||
}
|
}
|
||||||
@ -582,15 +575,17 @@ void doSampleStackTrace(ProfileStack *aStack, ThreadProfile &aProfile, TickSampl
|
|||||||
// followed by 0 or more 'c' tags.
|
// followed by 0 or more 'c' tags.
|
||||||
for (mozilla::sig_safe_t i = 0; i < aStack->mStackPointer; i++) {
|
for (mozilla::sig_safe_t i = 0; i < aStack->mStackPointer; i++) {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
Address pc = 0;
|
aProfile.addTag(ProfileEntry('s', aStack->mStack[i]));
|
||||||
if (sample) {
|
|
||||||
pc = sample->pc;
|
|
||||||
}
|
|
||||||
aProfile.addTag(ProfileEntry('s', aStack->mStack[i], pc));
|
|
||||||
} else {
|
} else {
|
||||||
aProfile.addTag(ProfileEntry('c', aStack->mStack[i]));
|
aProfile.addTag(ProfileEntry('c', aStack->mStack[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef ENABLE_SPS_LEAF_DATA
|
||||||
|
if (sample) {
|
||||||
|
Address pc = sample->pc;
|
||||||
|
aProfile.addTag(ProfileEntry('l', sample->pc));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* used to keep track of the last event that we sampled during */
|
/* used to keep track of the last event that we sampled during */
|
||||||
@ -679,12 +674,6 @@ std::ostream& operator<<(std::ostream& stream, const ProfileEntry& entry)
|
|||||||
} else {
|
} else {
|
||||||
stream << entry.mTagName << "-" << entry.mTagData << "\n";
|
stream << entry.mTagName << "-" << entry.mTagData << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_SPS_LEAF_DATA
|
|
||||||
if (entry.mLeafAddress) {
|
|
||||||
stream << entry.mTagName << "-" << entry.mLeafAddress << "\n";
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user