XPCOMGC/Stack Pointers: Difference between revisions

Jump to navigation Jump to search
no edit summary
mNo edit summary
No edit summary
Line 35: Line 35:
<pre>
<pre>
sed 's/.home.tglek.work.actionmonkey.//' /tmp/nsgenerichtmlelement.diff |filterdiff -x xpcom/glue/nsCOMPtr.h -x xpcom/glue/nsIWeakReferenceUtils.h -x xpcom/glue/nsThreadUtils.h -x xpcom/threads/nsThread.h -x /\* |patch -p0 --dry-run</pre>
sed 's/.home.tglek.work.actionmonkey.//' /tmp/nsgenerichtmlelement.diff |filterdiff -x xpcom/glue/nsCOMPtr.h -x xpcom/glue/nsIWeakReferenceUtils.h -x xpcom/glue/nsThreadUtils.h -x xpcom/threads/nsThread.h -x /\* |patch -p0 --dry-run</pre>
Functions that take COMPtr& parameters make life difficult(especially if those are templated).
Given <pre>template<class T> void getter(nsCOMPtr<T>& ptr) </pre>
rewrite it to <pre>template<class T> void getter(T*& ptr) </pre>
Then rewrite code in the function as usual.
However callers now turn into 2 cases.
a) Being called with a stack variable -> change code as usual
b) Called with a heap var -> wrap with getter_AddRefs (This way write barrier will be triggered).
Confirmed users
381

edits

Navigation menu