gecko-dev/xpcom/base
Andrew McCreight cb5234676d Bug 1005500 - Use a separate linear scan pass to mark nodes white in ScanRoots. r=smaug
The existing code for ScanRoots looks at all traversal roots in the graph,
and floods white or black from them. This can take up a large chunk of the
Scan/Unlink slice of ICC, maybe because graph traversal has poor locality.

Outside of a leak, the cycle collector graph is usually only large when
there is a lot of garbage (95% or more of the graph), so we want to
speed up white marking.

To do this, I add a new pass that scans every node and directly sets the
color of any node that should be white, without flooding. This is very
fast. Then a second pass floods black from any remaining grey nodes.

On the page close CC for a real page, I measured a 10x improvement in
ScanRoots() time with this algorithm, from 3ms to 0.3ms.
2014-05-08 11:28:03 -07:00
..
AvailableMemoryTracker.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
AvailableMemoryTracker.h
ClearOnShutdown.cpp
ClearOnShutdown.h Bug 784739 - Switch from NULL to nullptr in xpcom/ (1/3); r=ehsan 2013-10-10 16:41:00 -04:00
CycleCollectedJSRuntime.cpp Bug 1004017 - Rename CycleCollectedJSRuntime::NeedCollect() and Collect(). r=smaug 2014-05-06 17:25:26 -07:00
CycleCollectedJSRuntime.h Bug 1005232 - Log number of incremental cycle collector slices. r=smaug 2014-05-06 17:25:26 -07:00
Debug.cpp Backed out changeset d7d447cac91b (bug 969762) for tp5 regression. 2014-02-12 06:01:29 +09:00
Debug.h Backed out changeset d7d447cac91b (bug 969762) for tp5 regression. 2014-02-12 06:01:29 +09:00
ErrorList.h Bug 968148 - Implement PointerCapture for pointer events. r=smaug 2014-04-04 10:09:10 -07:00
Makefile.in Bug 973142 - Get rid of the MOZILLA_INTERNAL_API makefile variable; r=glandium 2014-02-18 01:56:51 -05:00
StackWalk.h
StaticMutex.h
StaticPtr.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
SystemMemoryReporter.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
SystemMemoryReporter.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
VisualEventTracer.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
VisualEventTracer.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
moz.build Bug 106787 - Fix: Remove nsIAllocator and it's references. r=bsmedberg 2014-04-14 17:20:45 +02:00
nsAgg.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsAllocator.h Bug 106787 - Fix: Remove nsIAllocator and it's references. r=bsmedberg 2014-04-14 17:20:45 +02:00
nsAutoPtr.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsAutoRef.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsCom.h
nsConsoleMessage.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsConsoleMessage.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsConsoleService.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsConsoleService.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsCrashOnException.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsCrashOnException.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsCycleCollector.cpp Bug 1005500 - Use a separate linear scan pass to mark nodes white in ScanRoots. r=smaug 2014-05-08 11:28:03 -07:00
nsCycleCollector.h Bug 958353 - Add finishCC() and ccSlice() methods for testing incremental cycle collection. r=smaug 2014-05-06 17:25:26 -07:00
nsDebugImpl.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsDebugImpl.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsDumpUtils.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsDumpUtils.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsError.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsErrorAssertsC.c
nsErrorService.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsErrorService.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsGZFileWriter.cpp Bug 900908 - Part 3: Change uses of numbered macros in nsIClassInfoImpl.h/nsISupportsImpl.h to the variadic variants. r=froydnj 2014-04-27 03:06:00 -04:00
nsGZFileWriter.h Bug 936912 - Build xpcom in unified mode; r=froydnj 2013-11-18 21:34:00 -05:00
nsIConsoleListener.idl
nsIConsoleMessage.idl
nsIConsoleService.idl
nsICycleCollectorListener.idl Bug 951855: Add omitted doc fix requested by smaug in patch review. DONTBUILD r=smaug 2014-04-01 21:30:42 -07:00
nsIDebug.idl
nsIDebug2.idl
nsIErrorService.idl Bug 978486 - Remove nsErrorService::mErrorStringBundleKeyMap. r=froydnj 2014-03-04 09:49:40 -08:00
nsIException.idl Bug 995047. Change out stack/exception APIs to hand out AString instead of AUTF8String for filename/functionname, so we end up with fewer string conversions in practice. r=smaug 2014-04-11 22:20:40 -04:00
nsIGZFileWriter.idl
nsIID.h
nsIInterfaceRequestor.idl
nsIMacUtils.idl
nsIMemory.idl
nsIMemoryInfoDumper.idl Bug 946407 - Reimplement DumpMemoryInfoToTempDir in terms of GetReports. r=njn 2014-03-04 18:27:13 -08:00
nsIMemoryReporter.idl Bug 590790 part 2 - Add memory reporter for VectorImage's SVGDocumentWrapper's document. r=dholbert, r=njn, r=seth 2014-05-08 10:53:00 +01:00
nsIMessageLoop.idl
nsIMutable.idl
nsIProgrammingLanguage.idl Bug 969757 - Remove the dead code in our tree which pretends to support OS/2; r=roc,mcmanus,gps,jorendorf,bsmedberg sr=bsmedberg 2014-02-10 17:57:01 -05:00
nsISecurityConsoleMessage.idl
nsISizeOf.h
nsIStatusReporter.idl Bug 900908 - Part 3: Change uses of numbered macros in nsIClassInfoImpl.h/nsISupportsImpl.h to the variadic variants. r=froydnj 2014-04-27 03:06:00 -04:00
nsISupports.idl
nsISupportsBase.h Bug 798158 - Part 1: Use a pointer-sized type to store refcounts internally; r=bsmedberg 2014-03-27 16:38:33 -04:00
nsISupportsObsolete.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsIUUIDGenerator.idl
nsIVersionComparator.idl
nsIVisualEventTracer.idl
nsIWeakReference.idl
nsInterfaceRequestorAgg.cpp Bug 900908 - Part 3: Change uses of numbered macros in nsIClassInfoImpl.h/nsISupportsImpl.h to the variadic variants. r=froydnj 2014-04-27 03:06:00 -04:00
nsInterfaceRequestorAgg.h
nsMacUtilsImpl.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsMacUtilsImpl.h
nsMemoryImpl.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsMemoryImpl.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsMemoryInfoDumper.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsMemoryInfoDumper.h Bug 964636 - Part 1: Move common classes and functions out of nsMemoryInfoDumper. r=dhylands 2014-03-20 15:29:51 +08:00
nsMemoryReporterManager.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsMemoryReporterManager.h Bug 991791 - Fix some timing-dependent edge cases in nsMemoryReporterManager child handling. r=njn 2014-04-07 13:33:00 +02:00
nsMessageLoop.cpp Bug 900908 - Part 3: Change uses of numbered macros in nsIClassInfoImpl.h/nsISupportsImpl.h to the variadic variants. r=froydnj 2014-04-27 03:06:00 -04:00
nsMessageLoop.h
nsObjCExceptions.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsSecurityConsoleMessage.cpp Bug 900908 - Part 3: Change uses of numbered macros in nsIClassInfoImpl.h/nsISupportsImpl.h to the variadic variants. r=froydnj 2014-04-27 03:06:00 -04:00
nsSecurityConsoleMessage.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsSetDllDirectory.h Bug 784739 - Switch from NULL to nullptr in xpcom/ (1/3); r=ehsan 2013-10-10 16:41:00 -04:00
nsStackWalk.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsStackWalk.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsStackWalkPrivate.h
nsStatusReporterManager.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsStatusReporterManager.h Bug 964636 - Part 2: Implement "about:service" framework core. r=dhylands 2014-03-20 10:52:11 +08:00
nsSystemInfo.cpp Fix incorrect resolution of merge conflicts between bug 995730 and bug 1001542 (no bug; CLOSED TREE) 2014-05-06 09:00:06 +01:00
nsSystemInfo.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsTraceRefcnt.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsTraceRefcnt.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsUUIDGenerator.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsUUIDGenerator.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsVersionComparatorImpl.cpp Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsVersionComparatorImpl.h
nsWeakPtr.h
nsWindowsHelpers.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nscore.h Bug 995730 - Change xpcom/base/ to use 2 space indentation 2014-05-05 20:30:39 +03:00
nsrootidl.idl Bug 927728 - Part 1: Replace PRUnichar with char16_t; r=roc 2014-01-04 10:02:17 -05:00
pure.h
pure_api.c