Bug 1183754, part 3 - Use a UniquePtr for XPCWrappedNativeChunk::mNextChunk. r=bholley

This commit is contained in:
Andrew McCreight 2016-02-03 08:30:14 -08:00
parent 1e279f4968
commit 85a621294b
3 changed files with 12 additions and 12 deletions

View File

@ -538,7 +538,7 @@ inline void
XPCWrappedNative::SweepTearOffs()
{
XPCWrappedNativeTearOffChunk* chunk;
for (chunk = &mFirstChunk; chunk; chunk = chunk->mNextChunk) {
for (chunk = &mFirstChunk; chunk; chunk = chunk->mNextChunk.get()) {
XPCWrappedNativeTearOff* to = &chunk->mTearOff;
bool marked = to->IsMarked();
to->Unmark();

View File

@ -114,7 +114,7 @@ XPCWrappedNative::NoteTearoffs(nsCycleCollectionTraversalCallback& cb)
// then the tearoff is only reachable through the XPCWrappedNative, so we
// record an edge here.
XPCWrappedNativeTearOffChunk* chunk;
for (chunk = &mFirstChunk; chunk; chunk = chunk->mNextChunk) {
for (chunk = &mFirstChunk; chunk; chunk = chunk->mNextChunk.get()) {
XPCWrappedNativeTearOff* to = &chunk->mTearOff;
JSObject* jso = to->GetJSObjectPreserveColor();
if (!jso) {
@ -899,7 +899,7 @@ XPCWrappedNative::FlatJSObjectFinalized()
// JSObjects are about to be finalized too.
XPCWrappedNativeTearOffChunk* chunk;
for (chunk = &mFirstChunk; chunk; chunk = chunk->mNextChunk) {
for (chunk = &mFirstChunk; chunk; chunk = chunk->mNextChunk.get()) {
XPCWrappedNativeTearOff* to = &chunk->mTearOff;
JSObject* jso = to->GetJSObjectPreserveColor();
if (jso) {
@ -989,7 +989,7 @@ XPCWrappedNative::SystemIsBeingShutDown()
// Cleanup the tearoffs.
XPCWrappedNativeTearOffChunk* chunk;
for (chunk = &mFirstChunk; chunk; chunk = chunk->mNextChunk) {
for (chunk = &mFirstChunk; chunk; chunk = chunk->mNextChunk.get()) {
XPCWrappedNativeTearOff* to = &chunk->mTearOff;
if (JSObject* jso = to->GetJSObjectPreserveColor()) {
JS_SetPrivate(jso, nullptr);
@ -1056,7 +1056,7 @@ XPCWrappedNative::FindTearOff(XPCNativeInterface* aInterface,
XPCWrappedNativeTearOffChunk* chunk;
for (lastChunk = chunk = &mFirstChunk;
chunk;
lastChunk = chunk, chunk = chunk->mNextChunk) {
lastChunk = chunk, chunk = chunk->mNextChunk.get()) {
to = &chunk->mTearOff;
if (to->GetInterface() == aInterface) {
if (needJSObject && !to->GetJSObjectPreserveColor()) {
@ -1083,9 +1083,8 @@ XPCWrappedNative::FindTearOff(XPCNativeInterface* aInterface,
to = firstAvailable;
if (!to) {
auto newChunk = new XPCWrappedNativeTearOffChunk();
lastChunk->mNextChunk = newChunk;
to = &newChunk->mTearOff;
lastChunk->mNextChunk = MakeUnique<XPCWrappedNativeTearOffChunk>();
to = &lastChunk->mNextChunk->mTearOff;
}
{

View File

@ -85,6 +85,7 @@
#include "mozilla/MemoryReporting.h"
#include "mozilla/Preferences.h"
#include "mozilla/TimeStamp.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/dom/ScriptSettings.h"
@ -1992,13 +1993,13 @@ private:
class XPCWrappedNativeTearOffChunk
{
friend class XPCWrappedNative;
private:
XPCWrappedNativeTearOffChunk() : mNextChunk(nullptr) {}
~XPCWrappedNativeTearOffChunk() {delete mNextChunk;}
public:
XPCWrappedNativeTearOffChunk() {}
~XPCWrappedNativeTearOffChunk() {}
private:
XPCWrappedNativeTearOff mTearOff;
XPCWrappedNativeTearOffChunk* mNextChunk;
mozilla::UniquePtr<XPCWrappedNativeTearOffChunk> mNextChunk;
};
/***************************************************************************/