Skip to content

Commit 96a06f7

Browse files
author
David Major
committed
Bug 1344629 - Part 9: Bonus fix: Remove heap allocation in nsChromeTreeOwner. r=dbaron
Now that nsLiteralStrings are "free", they can just be static globals. MozReview-Commit-ID: 4d4ZObxiHF8 --HG-- extra : rebase_source : 184e8a41b959550df217732cb4c605b302e2a1ac
1 parent 96a4158 commit 96a06f7

File tree

3 files changed

+21
-70
lines changed

3 files changed

+21
-70
lines changed

xpfe/appshell/nsAppShellFactory.cpp

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,26 +31,10 @@ static const mozilla::Module::ContractIDEntry kAppShellContracts[] = {
3131
{ nullptr }
3232
};
3333

34-
static nsresult
35-
nsAppShellModuleConstructor()
36-
{
37-
return nsChromeTreeOwner::InitGlobals();
38-
}
39-
40-
static void
41-
nsAppShellModuleDestructor()
42-
{
43-
nsChromeTreeOwner::FreeGlobals();
44-
}
45-
4634
static const mozilla::Module kAppShellModule = {
4735
mozilla::Module::kVersion,
4836
kAppShellCIDs,
4937
kAppShellContracts,
50-
nullptr,
51-
nullptr,
52-
nsAppShellModuleConstructor,
53-
nsAppShellModuleDestructor
5438
};
5539

5640
NSMODULE_DEFN(appshell) = &kAppShellModule;

xpfe/appshell/nsChromeTreeOwner.cpp

Lines changed: 21 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -35,43 +35,13 @@ using namespace mozilla;
3535
// nsChromeTreeOwner string literals
3636
//*****************************************************************************
3737

38-
struct nsChromeTreeOwnerLiterals
39-
{
40-
const nsLiteralString kPersist;
41-
const nsLiteralString kScreenX;
42-
const nsLiteralString kScreenY;
43-
const nsLiteralString kWidth;
44-
const nsLiteralString kHeight;
45-
const nsLiteralString kSizemode;
46-
const nsLiteralString kSpace;
47-
48-
nsChromeTreeOwnerLiterals()
49-
: NS_LITERAL_STRING_INIT(kPersist,"persist")
50-
, NS_LITERAL_STRING_INIT(kScreenX,"screenX")
51-
, NS_LITERAL_STRING_INIT(kScreenY,"screenY")
52-
, NS_LITERAL_STRING_INIT(kWidth,"width")
53-
, NS_LITERAL_STRING_INIT(kHeight,"height")
54-
, NS_LITERAL_STRING_INIT(kSizemode,"sizemode")
55-
, NS_LITERAL_STRING_INIT(kSpace," ")
56-
{}
57-
};
58-
59-
static nsChromeTreeOwnerLiterals *gLiterals;
60-
61-
nsresult
62-
nsChromeTreeOwner::InitGlobals()
63-
{
64-
NS_ASSERTION(gLiterals == nullptr, "already initialized");
65-
gLiterals = new nsChromeTreeOwnerLiterals();
66-
return NS_OK;
67-
}
68-
69-
void
70-
nsChromeTreeOwner::FreeGlobals()
71-
{
72-
delete gLiterals;
73-
gLiterals = nullptr;
74-
}
38+
const nsLiteralString kPersist(u"persist");
39+
const nsLiteralString kScreenX(u"screenX");
40+
const nsLiteralString kScreenY(u"screenY");
41+
const nsLiteralString kWidth(u"width");
42+
const nsLiteralString kHeight(u"height");
43+
const nsLiteralString kSizemode(u"sizemode");
44+
const nsLiteralString kSpace(u" ");
7545

7646
//*****************************************************************************
7747
//*** nsChromeTreeOwner: Object Management
@@ -229,7 +199,7 @@ nsChromeTreeOwner::SetPersistence(bool aPersistPosition,
229199
return NS_ERROR_FAILURE;
230200

231201
nsAutoString persistString;
232-
docShellElement->GetAttribute(gLiterals->kPersist, persistString);
202+
docShellElement->GetAttribute(kPersist, persistString);
233203

234204
bool saveString = false;
235205
int32_t index;
@@ -240,18 +210,18 @@ nsChromeTreeOwner::SetPersistence(bool aPersistPosition,
240210
persistString.Cut(index, aString.Length()); \
241211
saveString = true; \
242212
} else if (aCond && index == kNotFound) { \
243-
persistString.Append(gLiterals->kSpace + aString); \
213+
persistString.Append(kSpace + aString); \
244214
saveString = true; \
245215
}
246-
FIND_PERSIST_STRING(gLiterals->kScreenX, aPersistPosition);
247-
FIND_PERSIST_STRING(gLiterals->kScreenY, aPersistPosition);
248-
FIND_PERSIST_STRING(gLiterals->kWidth, aPersistSize);
249-
FIND_PERSIST_STRING(gLiterals->kHeight, aPersistSize);
250-
FIND_PERSIST_STRING(gLiterals->kSizemode, aPersistSizeMode);
216+
FIND_PERSIST_STRING(kScreenX, aPersistPosition);
217+
FIND_PERSIST_STRING(kScreenY, aPersistPosition);
218+
FIND_PERSIST_STRING(kWidth, aPersistSize);
219+
FIND_PERSIST_STRING(kHeight, aPersistSize);
220+
FIND_PERSIST_STRING(kSizemode, aPersistSizeMode);
251221

252222
ErrorResult rv;
253223
if (saveString) {
254-
docShellElement->SetAttribute(gLiterals->kPersist, persistString, rv);
224+
docShellElement->SetAttribute(kPersist, persistString, rv);
255225
}
256226

257227
return NS_OK;
@@ -268,18 +238,18 @@ nsChromeTreeOwner::GetPersistence(bool* aPersistPosition,
268238
return NS_ERROR_FAILURE;
269239

270240
nsAutoString persistString;
271-
docShellElement->GetAttribute(gLiterals->kPersist, persistString);
241+
docShellElement->GetAttribute(kPersist, persistString);
272242

273243
// data structure doesn't quite match the question, but it's close enough
274244
// for what we want (since this method is never actually called...)
275245
if (aPersistPosition)
276-
*aPersistPosition = persistString.Find(gLiterals->kScreenX) > kNotFound ||
277-
persistString.Find(gLiterals->kScreenY) > kNotFound;
246+
*aPersistPosition = persistString.Find(kScreenX) > kNotFound ||
247+
persistString.Find(kScreenY) > kNotFound;
278248
if (aPersistSize)
279-
*aPersistSize = persistString.Find(gLiterals->kWidth) > kNotFound ||
280-
persistString.Find(gLiterals->kHeight) > kNotFound;
249+
*aPersistSize = persistString.Find(kWidth) > kNotFound ||
250+
persistString.Find(kHeight) > kNotFound;
281251
if (aPersistSizeMode)
282-
*aPersistSizeMode = persistString.Find(gLiterals->kSizemode) > kNotFound;
252+
*aPersistSizeMode = persistString.Find(kSizemode) > kNotFound;
283253

284254
return NS_OK;
285255
}

xpfe/appshell/nsChromeTreeOwner.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ friend class nsXULWindow;
3636
NS_DECL_NSIDOCSHELLTREEOWNER
3737
NS_DECL_NSIWEBPROGRESSLISTENER
3838

39-
static nsresult InitGlobals();
40-
static void FreeGlobals();
41-
4239
protected:
4340
nsChromeTreeOwner();
4441
virtual ~nsChromeTreeOwner();

0 commit comments

Comments
 (0)