Bug 1166598 (part 5) - Use PLDHashTable2 in InMemoryDataSource. r=froydnj.
This commit is contained in:
@@ -250,8 +250,8 @@ protected:
|
|||||||
// nsIRDFResource object per unique URI). The value of an entry is
|
// nsIRDFResource object per unique URI). The value of an entry is
|
||||||
// an Assertion struct, which is a linked list of (subject
|
// an Assertion struct, which is a linked list of (subject
|
||||||
// predicate object) triples.
|
// predicate object) triples.
|
||||||
PLDHashTable mForwardArcs;
|
PLDHashTable2 mForwardArcs;
|
||||||
PLDHashTable mReverseArcs;
|
PLDHashTable2 mReverseArcs;
|
||||||
|
|
||||||
nsCOMArray<nsIRDFObserver> mObservers;
|
nsCOMArray<nsIRDFObserver> mObservers;
|
||||||
uint32_t mNumObservers;
|
uint32_t mNumObservers;
|
||||||
@@ -286,7 +286,6 @@ protected:
|
|||||||
|
|
||||||
explicit InMemoryDataSource(nsISupports* aOuter);
|
explicit InMemoryDataSource(nsISupports* aOuter);
|
||||||
virtual ~InMemoryDataSource();
|
virtual ~InMemoryDataSource();
|
||||||
nsresult Init();
|
|
||||||
|
|
||||||
friend nsresult
|
friend nsresult
|
||||||
NS_NewRDFInMemoryDataSource(nsISupports* aOuter, const nsIID& aIID, void** aResult);
|
NS_NewRDFInMemoryDataSource(nsISupports* aOuter, const nsIID& aIID, void** aResult);
|
||||||
@@ -752,16 +751,11 @@ NS_NewRDFInMemoryDataSource(nsISupports* aOuter, const nsIID& aIID, void** aResu
|
|||||||
}
|
}
|
||||||
|
|
||||||
InMemoryDataSource* datasource = new InMemoryDataSource(aOuter);
|
InMemoryDataSource* datasource = new InMemoryDataSource(aOuter);
|
||||||
if (! datasource)
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
NS_ADDREF(datasource);
|
NS_ADDREF(datasource);
|
||||||
|
|
||||||
nsresult rv = datasource->Init();
|
datasource->fAggregated.AddRef();
|
||||||
if (NS_SUCCEEDED(rv)) {
|
nsresult rv = datasource->AggregatedQueryInterface(aIID, aResult); // This'll AddRef()
|
||||||
datasource->fAggregated.AddRef();
|
datasource->fAggregated.Release();
|
||||||
rv = datasource->AggregatedQueryInterface(aIID, aResult); // This'll AddRef()
|
|
||||||
datasource->fAggregated.Release();
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_RELEASE(datasource);
|
NS_RELEASE(datasource);
|
||||||
return rv;
|
return rv;
|
||||||
@@ -769,25 +763,18 @@ NS_NewRDFInMemoryDataSource(nsISupports* aOuter, const nsIID& aIID, void** aResu
|
|||||||
|
|
||||||
|
|
||||||
InMemoryDataSource::InMemoryDataSource(nsISupports* aOuter)
|
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);
|
NS_INIT_AGGREGATED(aOuter);
|
||||||
|
|
||||||
mPropagateChanges = true;
|
mPropagateChanges = true;
|
||||||
MOZ_COUNT_CTOR(InMemoryDataSource);
|
MOZ_COUNT_CTOR(InMemoryDataSource);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
InMemoryDataSource::Init()
|
|
||||||
{
|
|
||||||
PL_DHashTableInit(&mForwardArcs, PL_DHashGetStubOps(), sizeof(Entry));
|
|
||||||
PL_DHashTableInit(&mReverseArcs, PL_DHashGetStubOps(), sizeof(Entry));
|
|
||||||
|
|
||||||
if (! gLog)
|
if (! gLog)
|
||||||
gLog = PR_NewLogModule("InMemoryDataSource");
|
gLog = PR_NewLogModule("InMemoryDataSource");
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -798,16 +785,13 @@ InMemoryDataSource::~InMemoryDataSource()
|
|||||||
fprintf(stdout, "%d - RDF: InMemoryDataSource\n", gInstanceCount);
|
fprintf(stdout, "%d - RDF: InMemoryDataSource\n", gInstanceCount);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (mForwardArcs.IsInitialized()) {
|
if (mForwardArcs.EntryCount() > 0) {
|
||||||
// This'll release all of the Assertion objects that are
|
// This'll release all of the Assertion objects that are
|
||||||
// associated with this data source. We only need to do this
|
// associated with this data source. We only need to do this
|
||||||
// for the forward arcs, because the reverse arcs table
|
// for the forward arcs, because the reverse arcs table
|
||||||
// indexes the exact same set of resources.
|
// indexes the exact same set of resources.
|
||||||
PL_DHashTableEnumerate(&mForwardArcs, DeleteForwardArcsEntry, nullptr);
|
PL_DHashTableEnumerate(&mForwardArcs, DeleteForwardArcsEntry, nullptr);
|
||||||
PL_DHashTableFinish(&mForwardArcs);
|
|
||||||
}
|
}
|
||||||
if (mReverseArcs.IsInitialized())
|
|
||||||
PL_DHashTableFinish(&mReverseArcs);
|
|
||||||
|
|
||||||
MOZ_LOG(gLog, PR_LOG_NOTICE,
|
MOZ_LOG(gLog, PR_LOG_NOTICE,
|
||||||
("InMemoryDataSource(%p): destroyed.", this));
|
("InMemoryDataSource(%p): destroyed.", this));
|
||||||
|
|||||||
Reference in New Issue
Block a user