pjs/tools/trace-malloc/rules.txt

332 строки
6.0 KiB
Plaintext

# Categorization rules for spacetrace
#
# This file defines the stack frame rules that will categorize
# allocations that spacetrace processes. The format of this file is
#
# <categoryname>
# initial string match for stack frame n
# initial string match for stack frame n+1
# initial string match for stack frame n+2
#
# The key in the matching rule is that for every rule, we provide a
# snippet of the stack frame - contiguous substring matches.
# categorynames and rules substring matches are case sensitive
#
# Predefined Categories
# "All" - All allocations [default]
# "uncategorized" - All allocations that dont match any category
#
#
# Suresh Duddi <dp@netscape.com>
###########################################################################
# NOTE: This is still under definition
###########################################################################
# General principle of categorization:
#
# - Each category, in general, denotes a module or feature.
#
# - We assign each allocation to the module/feature that directly
# caused the allocation irrespective of which higher level module
# caused the allocation. There are very few exceptions usually when
# an allocation belongs both to a feature-category and to a
# module-category.
#
# bookmarks
# Bookmarks. Mainly initialization. Does not include menu cost.
# css
# Cascading style sheets
# dom
# Memory held by DOM.
# font
# All font stuff
# global-history
# html
# html parsing and layout
# images
# All images.
# jar
# jar, zip
# js
# javascript
# necko
# All protocol and uri stuff. All urls created accounted here
# preferences
# Preferences stuff. All js cost for preferences is included here.
## rdf
# Most of the rdf allocations. rdf cost from xul, chromeregistry,
# is assigned to xul.
# xbl
# xbl stuff. Includes js in xbl.
# xpcom
# xpcom, xpt. Allocations for creations of objects are assigned
# onto the respective modules
# xul
# XUL parsing and layout. Includes rdf overhead from xul like
# nsChromeRegistry
#
#
# ===========================================================================
# Leaf rules. We cagegorize them out first.
# These are generally functions or classes that we know cause an
# allocation at specified category and no other category an intervene
# ===========================================================================
<js>
nsXULPrototypeScript::Deserialize
<images>
gfxImageFrame::Init
<images>
gif_write
<necko>
nsHttpChannel::AsyncOpen
<jar>
nsZipArchive::BuildFileList
<jar>
nsZipArchive::ReadInit
<jar>
nsJARChannel::Open
<necko>
nsDiskCacheDevice::Init
<necko>
nsCacheEntryDescriptor::nsTransportWrapper::OpenOutputStream
<necko>
nsSocketTransport::
<necko-cache>
nsCacheService::
<xpcom>
NS_InitXPCOM2
# xpt file loads
<xpcom>
xptiInterfaceInfoManager::LoadFile
<xpcom>
nsGenericModule::Initialize
<xul>
nsXULElement::Create
<xul>
nsXULAttribute::Create
<xul>
nsXULDocument::AddElementToMap
<xul>
XULContentSinkImpl::AddAttributes
<xul>
XULContentSinkImpl::CreateElement
<xul>
nsXULElement::SetAttr
<xul>
nsXULDocument::InsertElement
<xul>
NS_NewXULContentBuilder
<xul>
nsXULElement::AppendChildTo
<xbl>
nsXBLPrototypeHandler::AppendHandlerText(
<html>
FrameArena::AllocateFrame
<global-history>
nsGlobalHistory::OpenDB
<font>
nsFontCache::
<font>
nsFontMetricsGTK::
<font>
nsFont::nsFont
<gtk>
gtk_init
<rdf>
RDFServiceImpl::GetResource
<rdf>
RDFContentSinkImpl::AddProperties
<rdf>
RDFContainerImpl::AppendElement
<rdf>
RDFXMLDataSourceImpl::Assert
<rdf>
NS_NewRDFInMemoryDataSource
<css>
CSSParserImpl::Parse(
<css>
NS_NewCSS
<css>
RuleHash::AppendRule
<css>
nsRuleNode::GetStyleData
<css>
CSSRuleProcessor::RulesMatching
<css>
CSSStyleSheetImpl::Clone
<necko>
nsIOService::NewURI
<necko>
nsIOService::NewChannelFromURI
<necko>
nsHttpHeaderArray::
<html>
nsScanner::Append
<html>
nsHTMLTokenizer::
<html>
NS_NewHTMLTokenizer
<html>
nsSlidingString::
<intl>
nsStringBundle::
<intl>
nsLocale::
<intl>
nsCharsetConverterManager::
# ======================================================================
# Rules that match higher up on the stack
# These go later.
# ======================================================================
<preferences>
PREF_
<bookmarks>
nsBookmarksService::
<xbl>
nsXBLService::LoadBindings
<xbl>
nsXBLBinding::ExecuteAttachedHandler
<js>
nsXULDocument::LoadScript
<js>
nsXULDocument::ExecuteScript
<xul>
XULContentSinkImpl::Open
<rdf>
RDFContentSinkImpl::HandleEndElement
<html>
HTMLContentSink::AddAttributes
<html>
HTMLContentSink::OpenContainer
<html>
HTMLContentSink::CloseContainer
# XXX whom to account LoadImage to? I am going with images.
<images>
imgLoader::LoadImage
<html>
StackArena::
# ======================================================================
# Even more genralized rules. There could be lots of activity that
# happens below them in the stack. But we are sure we have categorized
# a lot of them by using the rules above and know the category of the
# most of the rest.
# ======================================================================
<rdf>
RDFContentSinkImpl::
<dom>
nsGenericDOMDataNode::
<dom>
nsDOMClassInfo::
<dom>
nsDOMSOFactory::
<xul>
nsXULTemplateBuilder::
<xul>
XULContentSinkImpl::HandleEndElement
<xul>
nsChromeRegistry::
<js>
nsJSContext::EvaluateString
# Almost all of what is left with XULContentSink belongs to xul
# Also, this was roughly 0.3% of startup memory
<xul>
XULContentSinkImpl::
# XXX this is a wild guess -> html What remains here is about
# XXX 1.5% of startup footprint
<html>
HTMLContentSink::
<xbl>
nsXBLContentSink::
<xbl>
nsXBLStreamListener::OnDataAvailable
# Catchalls to help categorize
# ----------------------------------------------------------------------
<js-catchall>
js_
# Everything else
# ----------------------------------------------------------------------
# <uncategorized>
# This is a predefined category. Dont create it yourself.