Bug 711491. Switch profile export to StringBuilder.

This should help performance some.

--HG--
extra : rebase_source : 53aa5b61e95745475283940dd8cd053c84d2bd74
This commit is contained in:
Jeff Muizelaar 2011-12-16 09:03:54 -05:00
parent 8e52a1df42
commit 8435995c3d

View File

@ -44,8 +44,10 @@
#include "nsThreadUtils.h"
#include "prenv.h"
#include "shared-libraries.h"
#include "mozilla/StringBuilder.h"
using std::string;
using namespace mozilla;
#ifdef XP_WIN
#include <windows.h>
@ -158,7 +160,7 @@ public:
}
}
void ToString(string* profile)
void ToString(StringBuilder &profile)
{
if (mNeedsSharedLibraryInfo) {
// Can't be called from signal because
@ -166,10 +168,9 @@ public:
mSharedLibraryInfo = SharedLibraryInfo::GetInfoForSelf();
}
*profile = "";
int oldReadPos = mReadPos;
while (mReadPos != mWritePos) {
*profile += mEntries[mReadPos].TagToString(this);
profile.Append(mEntries[mReadPos].TagToString(this).c_str());
mReadPos = (mReadPos + 1) % mEntrySize;
}
mReadPos = oldReadPos;
@ -456,11 +457,11 @@ char* mozilla_sampler_get_profile() {
return NULL;
}
string profile;
t->GetProfile()->ToString(&profile);
StringBuilder profile;
t->GetProfile()->ToString(profile);
char *rtn = (char*)malloc( (strlen(profile.c_str())+1) * sizeof(char) );
strcpy(rtn, profile.c_str());
char *rtn = (char*)malloc( (profile.Length()+1) * sizeof(char) );
strcpy(rtn, profile.Buffer());
return rtn;
}