mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-28 12:45:27 +00:00
Bug 1183754, part 3 - Use a UniquePtr for XPCWrappedNativeChunk::mNextChunk. r=bholley
This commit is contained in:
parent
1e279f4968
commit
85a621294b
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
/***************************************************************************/
|
||||
|
Loading…
Reference in New Issue
Block a user