XPCOMGC: Difference between revisions
Jump to navigation
Jump to search
(Build instructions) |
m (Correct markup) |
||
Line 49: | Line 49: | ||
/builds/xpcomgc/src $ python client.py checkout --skip-mozilla --skip-tamarin | /builds/xpcomgc/src $ python client.py checkout --skip-mozilla --skip-tamarin | ||
/builds/xpcomgc/src $ autoconf-2.13 | /builds/xpcomgc/src $ autoconf-2.13 | ||
</pre> | |||
This will get you to a state before automatic patching occurs. This tree should build correctly, if you pass <tt>WARNINGS_AS_ERRORS=</tt> on the make command line. You can generate and apply the automatic patches using the script: | This will get you to a state before automatic patching occurs. This tree should build correctly, if you pass <tt>WARNINGS_AS_ERRORS=</tt> on the make command line. You can generate and apply the automatic patches using the script: |
Revision as of 17:37, 1 April 2008
XPCOMGC is the Mozilla 2 project to convert the XPCOM object model from reference counting to use MMgc garbage collection.
General Info
TODO: collect/format information from the newsgroup discussion.
Tasks
- Add the request model threadsafety to MMgc bug 395962
- Give MMgc the ability to recognize "inner" pointers to objects as typically used by C++ multiple inheritance bug 388070
- Make the world depend on a common MMgc
- Rewrite XPCOM addref/release handling
- Remove the cycle collector
- Use textual search/replace to remove most calls to NS_ADDREF/NS_RELEASE
- Use automatic finding to identify remaining references for manual cleanup
- Make all COM objects inherit from GCObject
- Rewrite nsCOMPtr+friends to be a lightweight wrapper for GC writebarriers
- Make stack pointers raw pointers
- Fix some COM-holding utility classes:
- nsCOMArray
- hashtables: nsInterfaceHashtable and nsInterfaceHashKey
- Rewrite XPCOM weakrefs to be GCWeakRefs
- And remove those that can be regular GC references
- Identify and deal with multi-threading, especially
- Initialize and suspend requests around blocking activity
- Analyze code for deadlock possibilities.
- Set up a static checker based on GCC to enforce common invariants
Building XPCOMGC
The XPCOMGC work is currently taking place in mercurial patch queues on top of the ActionMonkey repositories. Follow the instructions below to build:
~ $ builddir=/builds/xpcomgc ~ $ cd $builddir /builds/xpcomgc $ hg clone http://hg.mozilla.org/actionmonkey/ src /builds/xpcomgc $ cd src /builds/xpcomgc/src $ hg clone http://hg.mozilla.org/users/bsmedberg_mozilla.com/xpcomgc-patches/ .hg/patches /builds/xpcomgc/src $ head .hg/patches/series # Currently based against actionmonkey revision AA112233 /builds/xpcomgc/src $ hg up AA112233 /builds/xpcomgc/src $ hg qpush -a /builds/xpcomgc/src $ hg clone http://hg.mozilla.org/actionmonkey-tamarin js/tamarin /builds/xpcomgc/src/js/tamarin $ cd js/tamarin /builds/xpcomgc/src/js/tamarin $ hg clone http://hg.mozilla.org/users/bsmedberg_mozilla.com/xpcomgc-tamarin-patches .hg/patches /builds/xpcomgc/src/js/tamarin $ head .hg/patches/series # Currently based against actionmonkey-tamarin revision BB445566 /builds/xpcomgc/src/js/tamarin $ hg up BB445566 /builds/xpcomgc/src/js/tamarin $ cd $builddir/src /builds/xpcomgc/src $ python client.py checkout --skip-mozilla --skip-tamarin /builds/xpcomgc/src $ autoconf-2.13
This will get you to a state before automatic patching occurs. This tree should build correctly, if you pass WARNINGS_AS_ERRORS= on the make command line. You can generate and apply the automatic patches using the script:
/builds/xpcomgc/src/.hg/patches/generate-automatic-patches.sh
You will need the oink stack and pork-barrel installed, and may need to edit paths in that file to match your local system.