Skip to content
This repository has been archived by the owner on Jul 23, 2024. It is now read-only.

Commit

Permalink
Bug 1166598 (part 5) - Use PLDHashTable2 in InMemoryDataSource. r=fro…
Browse files Browse the repository at this point in the history
…ydnj.

--HG--
extra : rebase_source : abacc7bb778bf312f7e15495046e4e68af334c3b
  • Loading branch information
nnethercote committed May 6, 2015
1 parent 2d482a5 commit 8cecb0d
Showing 1 changed file with 10 additions and 26 deletions.
36 changes: 10 additions & 26 deletions rdf/base/nsInMemoryDataSource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,8 +250,8 @@ class InMemoryDataSource : public nsIRDFDataSource,
// nsIRDFResource object per unique URI). The value of an entry is
// an Assertion struct, which is a linked list of (subject
// predicate object) triples.
PLDHashTable mForwardArcs;
PLDHashTable mReverseArcs;
PLDHashTable2 mForwardArcs;
PLDHashTable2 mReverseArcs;

nsCOMArray<nsIRDFObserver> mObservers;
uint32_t mNumObservers;
Expand Down Expand Up @@ -286,7 +286,6 @@ class InMemoryDataSource : public nsIRDFDataSource,

explicit InMemoryDataSource(nsISupports* aOuter);
virtual ~InMemoryDataSource();
nsresult Init();

friend nsresult
NS_NewRDFInMemoryDataSource(nsISupports* aOuter, const nsIID& aIID, void** aResult);
Expand Down Expand Up @@ -752,42 +751,30 @@ NS_NewRDFInMemoryDataSource(nsISupports* aOuter, const nsIID& aIID, void** aResu
}

InMemoryDataSource* datasource = new InMemoryDataSource(aOuter);
if (! datasource)
return NS_ERROR_OUT_OF_MEMORY;
NS_ADDREF(datasource);

nsresult rv = datasource->Init();
if (NS_SUCCEEDED(rv)) {
datasource->fAggregated.AddRef();
rv = datasource->AggregatedQueryInterface(aIID, aResult); // This'll AddRef()
datasource->fAggregated.Release();
}
datasource->fAggregated.AddRef();
nsresult rv = datasource->AggregatedQueryInterface(aIID, aResult); // This'll AddRef()
datasource->fAggregated.Release();

NS_RELEASE(datasource);
return rv;
}


InMemoryDataSource::InMemoryDataSource(nsISupports* aOuter)
: mNumObservers(0), mReadCount(0)
: mForwardArcs(PL_DHashGetStubOps(), sizeof(Entry))
, mReverseArcs(PL_DHashGetStubOps(), sizeof(Entry))
, mNumObservers(0)
, mReadCount(0)
{
NS_INIT_AGGREGATED(aOuter);

mPropagateChanges = true;
MOZ_COUNT_CTOR(InMemoryDataSource);
}


nsresult
InMemoryDataSource::Init()
{
PL_DHashTableInit(&mForwardArcs, PL_DHashGetStubOps(), sizeof(Entry));
PL_DHashTableInit(&mReverseArcs, PL_DHashGetStubOps(), sizeof(Entry));

if (! gLog)
gLog = PR_NewLogModule("InMemoryDataSource");

return NS_OK;
}


Expand All @@ -798,16 +785,13 @@ InMemoryDataSource::~InMemoryDataSource()
fprintf(stdout, "%d - RDF: InMemoryDataSource\n", gInstanceCount);
#endif

if (mForwardArcs.IsInitialized()) {
if (mForwardArcs.EntryCount() > 0) {
// This'll release all of the Assertion objects that are
// associated with this data source. We only need to do this
// for the forward arcs, because the reverse arcs table
// indexes the exact same set of resources.
PL_DHashTableEnumerate(&mForwardArcs, DeleteForwardArcsEntry, nullptr);
PL_DHashTableFinish(&mForwardArcs);
}
if (mReverseArcs.IsInitialized())
PL_DHashTableFinish(&mReverseArcs);

MOZ_LOG(gLog, PR_LOG_NOTICE,
("InMemoryDataSource(%p): destroyed.", this));
Expand Down

0 comments on commit 8cecb0d

Please sign in to comment.