XPCOMGC

From MozillaWiki
Revision as of 00:58, 13 September 2007 by Brendan (talk | contribs)
Jump to navigation Jump to search

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
  • 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.