There were six more generated HTML pages left over from the removal of 
Profile Mode.

This takes care of them.

Pushed.

Gerald


Commit 544be2beb1fa in 2019 remove Profile Mode and associated docs.
Now also remove generated HTML files.

libstdc++-v3:
        * doc/html/manual/profile_mode.html: Delete.
        * doc/html/manual/profile_mode_api.html: Ditto.
        * doc/html/manual/profile_mode_cost_model.html: Ditto.
        * doc/html/manual/profile_mode_design.html: Ditto.
        * doc/html/manual/profile_mode_devel.html: Ditto.
        * doc/html/manual/profile_mode_impl.html: Ditto.
---
 .../doc/html/manual/profile_mode.html         | 145 ------------------
 .../doc/html/manual/profile_mode_api.html     |   9 --
 .../html/manual/profile_mode_cost_model.html  |  17 --
 .../doc/html/manual/profile_mode_design.html  | 121 ---------------
 .../doc/html/manual/profile_mode_devel.html   |  67 --------
 .../doc/html/manual/profile_mode_impl.html    |  50 ------
 6 files changed, 409 deletions(-)
 delete mode 100644 libstdc++-v3/doc/html/manual/profile_mode.html
 delete mode 100644 libstdc++-v3/doc/html/manual/profile_mode_api.html
 delete mode 100644 libstdc++-v3/doc/html/manual/profile_mode_cost_model.html
 delete mode 100644 libstdc++-v3/doc/html/manual/profile_mode_design.html
 delete mode 100644 libstdc++-v3/doc/html/manual/profile_mode_devel.html
 delete mode 100644 libstdc++-v3/doc/html/manual/profile_mode_impl.html

diff --git a/libstdc++-v3/doc/html/manual/profile_mode.html 
b/libstdc++-v3/doc/html/manual/profile_mode.html
deleted file mode 100644
index 39c732180ac..00000000000
--- a/libstdc++-v3/doc/html/manual/profile_mode.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Chapter??19.??Profile 
Mode</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" 
/><meta name="keywords" content="C++, library, profile" /><meta name="keywords" 
content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, 
library" /><link rel="home" href="../index.html" title="The GNU C++ Library" 
/><link rel="up" href="extensions.html" title="Part??III.?? Extensions" /><link 
rel="prev" href="parallel_mode_test.html" title="Testing" /><link rel="next" 
href="profile_mode_design.html" title="Design" /></head><body><div 
class="navheader"><table width="100%" summary="Navigation header"><tr><th 
colspan="3" align="center">Chapter??19.??Profile Mode</th></tr><tr><td 
width="20%" align="left"><a accesskey="p" href
 ="parallel_mode_test.html">Prev</a>??</td><th width="60%" 
align="center">Part??III.??
-  Extensions
-  
-</th><td width="20%" align="right">??<a accesskey="n" 
href="profile_mode_design.html">Next</a></td></tr></table><hr /></div><div 
class="chapter"><div class="titlepage"><div><div><h2 class="title"><a 
id="manual.ext.profile_mode"></a>Chapter??19.??Profile 
Mode</h2></div></div></div><div class="toc"><p><strong>Table of 
Contents</strong></p><dl class="toc"><dt><span class="section"><a 
href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span
 class="section"><a 
href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile 
Mode</a></span></dt><dt><span class="section"><a 
href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile 
Mode</a></span></dt></dl></dd><dt><span class="section"><a 
href="profile_mode_design.html">Design</a></span></dt><dd><dl><dt><span 
class="section"><a 
href="profile_mode_design.html#manual.ext.profile_mode.design.wrapper">Wrapper 
Model</a></span></dt><dt><span class="section"><a href="profile_mode_desig
 
n.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span
 class="section"><a 
href="profile_mode_design.html#manual.ext.profile_mode.design.rtlib">Run Time 
Behavior</a></span></dt><dt><span class="section"><a 
href="profile_mode_design.html#manual.ext.profile_mode.design.analysis">Analysis
 and Diagnostics</a></span></dt><dt><span class="section"><a 
href="profile_mode_design.html#manual.ext.profile_mode.design.cost-model">Cost 
Model</a></span></dt><dt><span class="section"><a 
href="profile_mode_design.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span
 class="section"><a 
href="profile_mode_design.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span
 class="section"><a href="profile_mode_api.html">Extensions for Custom 
Containers</a></span></dt><dt><span class="section"><a 
href="profile_mode_cost_model.html">Empirical Cost 
Model</a></span></dt><dt><span class="section"><a href="profile_mode
 _impl.html">Implementation Issues</a></span></dt><dd><dl><dt><span 
class="section"><a 
href="profile_mode_impl.html#manual.ext.profile_mode.implementation.stack">Stack
 Traces</a></span></dt><dt><span class="section"><a 
href="profile_mode_impl.html#manual.ext.profile_mode.implementation.symbols">Symbolization
 of Instruction Addresses</a></span></dt><dt><span class="section"><a 
href="profile_mode_impl.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span
 class="section"><a 
href="profile_mode_impl.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using
 the Standard Library in the Instrumentation 
Implementation</a></span></dt><dt><span class="section"><a 
href="profile_mode_impl.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc
 Hooks</a></span></dt><dt><span class="section"><a 
href="profile_mode_impl.html#manual.ext.profile_mode.implementation.construction-destruction">Construction
 and Destruction of Global Objects</a></s
 pan></dt></dl></dd><dt><span class="section"><a 
href="profile_mode_devel.html">Developer 
Information</a></span></dt><dd><dl><dt><span class="section"><a 
href="profile_mode_devel.html#manual.ext.profile_mode.developer.bigpic">Big 
Picture</a></span></dt><dt><span class="section"><a 
href="profile_mode_devel.html#manual.ext.profile_mode.developer.howto">How To 
Add A Diagnostic</a></span></dt></dl></dd><dt><span class="section"><a 
href="profile_mode_diagnostics.html">Diagnostics</a></span></dt><dd><dl><dt><span
 class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.template">Diagnostic
 Template</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dd><dl><dt><span
 class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_too_small">Hashtable
 Too Small</a></span></dt><dt><span class="section"><a href="profile_mode_diagno
 stics.html#manual.ext.profile_mode.analysis.hashtable_too_large">Hashtable Too 
Large</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.inefficient_hash">Inefficient
 Hash</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_small">Vector
 Too Small</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_too_large">Vector
 Too Large</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_hashtable">Vector
 to Hashtable</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.hashtable_to_vector">Hashtable
 to Vector</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.vector_to_list">Vector
 to List</a></span></dt><
 dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_vector">List
 to Vector</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.list_to_slist">List
 to Forward List (Slist)</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.assoc_ord_to_unord">Ordered
 to Unordered Associative Container</a></span></dt></dl></dd><dt><span 
class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dd><dl><dt><span
 class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.algorithms.sort">Sort
 Algorithm Performance</a></span></dt></dl></dd><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality">Data
 Locality</a></span></dt><dd><dl><dt><span class="section"><a 
href="profile_mode_diagnos
 tics.html#manual.ext.profile_mode.analysis.locality.sw_prefetch">Need Software 
Prefetch</a></span></dt><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.locality.linked">Linked
 Structure Locality</a></span></dt></dl></dd><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread">Multithreaded
 Data Access</a></span></dt><dd><dl><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.ddtest">Data
 Dependence Violations at Container Level</a></span></dt><dt><span 
class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.mthread.false_share">False
 Sharing</a></span></dt></dl></dd><dt><span class="section"><a 
href="profile_mode_diagnostics.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span
 class="bibliography"><a 
href="profile_mode.html#profile_mode.biblio">Bibliography</
 a></span></dt></dl></div><div class="section"><div 
class="titlepage"><div><div><h2 class="title" style="clear: both"><a 
id="manual.ext.profile_mode.intro"></a>Intro</h2></div></div></div><p>
-  <span class="emphasis"><em>Goal: </em></span>Give performance improvement 
advice based on
-  recognition of suboptimal usage patterns of the standard library.
-  </p><p>
-  <span class="emphasis"><em>Method: </em></span>Wrap the standard library 
code.  Insert
-  calls to an instrumentation library to record the internal state of
-  various components at interesting entry/exit points to/from the standard
-  library.  Process trace, recognize suboptimal patterns, give advice.
-  For details, see the
-  <a class="link" href="https://ieeexplore.ieee.org/document/4907670/"; 
target="_top">Perflint
-  paper presented at CGO 2009</a>.
-  </p><p>
-  <span class="emphasis"><em>Strengths: </em></span>
-</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: 
disc; "><li class="listitem"><p>
-  Unintrusive solution.  The application code does not require any
-  modification.
-  </p></li><li class="listitem"><p> The advice is call context sensitive, thus 
capable of
-  identifying precisely interesting dynamic performance behavior.
-  </p></li><li class="listitem"><p>
-  The overhead model is pay-per-view.  When you turn off a diagnostic class
-  at compile time, its overhead disappears.
-  </p></li></ul></div><p>
-  </p><p>
-  <span class="emphasis"><em>Drawbacks: </em></span>
-</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: 
disc; "><li class="listitem"><p>
-  You must recompile the application code with custom options.
-  </p></li><li class="listitem"><p>You must run the application on 
representative input.
-  The advice is input dependent.
-  </p></li><li class="listitem"><p>
-  The execution time will increase, in some cases by factors.
-  </p></li></ul></div><p>
-  </p><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a id="manual.ext.profile_mode.using"></a>Using the Profile 
Mode</h3></div></div></div><p>
-  This is the anticipated common workflow for program <code 
class="code">foo.cc</code>:
-</p><pre class="programlisting">
-$ cat foo.cc
-#include &lt;vector&gt;
-int main() {
-  vector&lt;int&gt; v;
-  for (int k = 0; k &lt; 1024; ++k) v.insert(v.begin(), k);
-}
-
-$ g++ -D_GLIBCXX_PROFILE foo.cc
-$ ./a.out
-$ cat libstdcxx-profile.txt
-vector-to-list: improvement = 5: call stack = 0x804842c ...
-    : advice = change std::vector to std::list
-vector-size: improvement = 3: call stack = 0x804842c ...
-    : advice = change initial container size from 0 to 1024
-</pre><p>
-  </p><p>
-  Anatomy of a warning:
-  </p><div class="itemizedlist"><ul class="itemizedlist" 
style="list-style-type: disc; "><li class="listitem"><p>
-  Warning id.  This is a short descriptive string for the class
-  that this warning belongs to.  E.g., "vector-to-list".
-  </p></li><li class="listitem"><p>
-  Estimated improvement.  This is an approximation of the benefit expected
-  from implementing the change suggested by the warning.  It is given on
-  a log10 scale.  Negative values mean that the alternative would actually
-  do worse than the current choice.
-  In the example above, 5 comes from the fact that the overhead of
-  inserting at the beginning of a vector vs. a list is around 1024 * 1024 / 2,
-  which is around 10e5.  The improvement from setting the initial size to
-  1024 is in the range of 10e3, since the overhead of dynamic resizing is
-  linear in this case.
-  </p></li><li class="listitem"><p>
-  Call stack.  Currently, the addresses are printed without
-  symbol name or code location attribution.
-  Users are expected to postprocess the output using, for instance, addr2line.
-  </p></li><li class="listitem"><p>
-  The warning message.  For some warnings, this is static text, e.g.,
-  "change vector to list".  For other warnings, such as the one above,
-  the message contains numeric advice, e.g., the suggested initial size
-  of the vector.
-  </p></li></ul></div><p>
-  </p><p>Three files are generated.  <code 
class="code">libstdcxx-profile.txt</code>
-   contains human readable advice.  <code 
class="code">libstdcxx-profile.raw</code>
-   contains implementation specific data about each diagnostic.
-   Their format is not documented.  They are sufficient to generate
-   all the advice given in <code class="code">libstdcxx-profile.txt</code>.  
The advantage
-   of keeping this raw format is that traces from multiple executions can
-   be aggregated simply by concatenating the raw traces.  We intend to
-   offer an external utility program that can issue advice from a trace.
-   <code class="code">libstdcxx-profile.conf.out</code> lists the actual 
diagnostic
-   parameters used.  To alter parameters, edit this file and rename it to
-   <code class="code">libstdcxx-profile.conf</code>.
-  </p><p>Advice is given regardless whether the transformation is valid.
-  For instance, we advise changing a map to an unordered_map even if the
-  application semantics require that data be ordered.
-  We believe such warnings can help users understand the performance
-  behavior of their application better, which can lead to changes
-  at a higher abstraction level.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a id="manual.ext.profile_mode.tuning"></a>Tuning the Profile 
Mode</h3></div></div></div><p>Compile time switches and environment variables 
(see also file
-   profiler.h).  Unless specified otherwise, they can be set at compile time
-   using -D_&lt;name&gt; or by setting variable &lt;name&gt;
-   in the environment where the program is run, before starting execution.
-  </p><div class="itemizedlist"><ul class="itemizedlist" 
style="list-style-type: disc; "><li class="listitem"><p>
-   <code class="code">_GLIBCXX_PROFILE_NO_&lt;diagnostic&gt;</code>:
-   disable specific diagnostics.
-   See section Diagnostics for possible values.
-   (Environment variables not supported.)
-   </p></li><li class="listitem"><p>
-   <code class="code">_GLIBCXX_PROFILE_TRACE_PATH_ROOT</code>: set an 
alternative root
-   path for the output files.
-   </p></li><li class="listitem"><p>_GLIBCXX_PROFILE_MAX_WARN_COUNT: set it to 
the maximum
-   number of warnings desired.  The default value is 10.</p></li><li 
class="listitem"><p>
-   <code class="code">_GLIBCXX_PROFILE_MAX_STACK_DEPTH</code>: if set to 0,
-   the advice will
-   be collected and reported for the program as a whole, and not for each
-   call context.
-   This could also be used in continuous regression tests, where you
-   just need to know whether there is a regression or not.
-   The default value is 32.
-   </p></li><li class="listitem"><p>
-   <code class="code">_GLIBCXX_PROFILE_MEM_PER_DIAGNOSTIC</code>:
-   set a limit on how much memory to use for the accounting tables for each
-   diagnostic type.  When this limit is reached, new events are ignored
-   until the memory usage decreases under the limit.  Generally, this means
-   that newly created containers will not be instrumented until some
-   live containers are deleted.  The default is 128 MB.
-   </p></li><li class="listitem"><p>
-   <code class="code">_GLIBCXX_PROFILE_NO_THREADS</code>:
-   Make the library not use threads.  If thread local storage (TLS) is not
-   available, you will get a preprocessor error asking you to set
-   -D_GLIBCXX_PROFILE_NO_THREADS if your program is single-threaded.
-   Multithreaded execution without TLS is not supported.
-   (Environment variable not supported.)
-   </p></li><li class="listitem"><p>
-   <code class="code">_GLIBCXX_HAVE_EXECINFO_H</code>:
-   This name should be defined automatically at library configuration time.
-   If your library was configured without <code 
class="code">execinfo.h</code>, but
-   you have it in your include path, you can define it explicitly.  Without
-   it, advice is collected for the program as a whole, and not for each
-   call context.
-   (Environment variable not supported.)
-   </p></li></ul></div><p>
-  </p></div></div><div class="bibliography"><div 
class="titlepage"><div><div><h2 class="title"><a 
id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div 
class="biblioentry"><a id="id-1.3.5.6.9.2"></a><p><span class="citetitle"><em 
class="citetitle">
-      Perflint: A Context Sensitive Performance Advisor for C++ Programs
-    </em>. </span><span class="author"><span class="firstname">Lixia</span> 
<span class="surname">Liu</span>. </span><span class="author"><span 
class="firstname">Silvius</span> <span class="surname">Rus</span>. </span><span 
class="copyright">Copyright ?? 2009 . </span><span class="publisher"><span 
class="publishername">
-       Proceedings of the 2009 International Symposium on Code Generation
-       and Optimization
-      . </span></span></p></div></div></div><div class="navfooter"><hr 
/><table width="100%" summary="Navigation footer"><tr><td width="40%" 
align="left"><a accesskey="p" href="parallel_mode_test.html">Prev</a>??</td><td 
width="20%" align="center"><a accesskey="u" 
href="extensions.html">Up</a></td><td width="40%" align="right">??<a 
accesskey="n" href="profile_mode_design.html">Next</a></td></tr><tr><td 
width="40%" align="left" valign="top">Testing??</td><td width="20%" 
align="center"><a accesskey="h" href="../index.html">Home</a></td><td 
width="40%" align="right" 
valign="top">??Design</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/html/manual/profile_mode_api.html 
b/libstdc++-v3/doc/html/manual/profile_mode_api.html
deleted file mode 100644
index e63bd5701c6..00000000000
--- a/libstdc++-v3/doc/html/manual/profile_mode_api.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Extensions for Custom 
Containers</title><meta name="generator" content="DocBook XSL Stylesheets 
Vsnapshot" /><meta name="keywords" content="C++, library, profile" /><meta 
name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO 
C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU 
C++ Library" /><link rel="up" href="profile_mode.html" 
title="Chapter??19.??Profile Mode" /><link rel="prev" 
href="profile_mode_design.html" title="Design" /><link rel="next" 
href="profile_mode_cost_model.html" title="Empirical Cost Model" 
/></head><body><div class="navheader"><table width="100%" summary="Navigation 
header"><tr><th colspan="3" align="center">Extensions for Custom 
Containers</th></tr><tr><td width="20%"
  align="left"><a accesskey="p" 
href="profile_mode_design.html">Prev</a>??</td><th width="60%" 
align="center">Chapter??19.??Profile Mode</th><td width="20%" 
align="right">??<a accesskey="n" 
href="profile_mode_cost_model.html">Next</a></td></tr></table><hr /></div><div 
class="section"><div class="titlepage"><div><div><h2 class="title" 
style="clear: both"><a id="manual.ext.profile_mode.api"></a>Extensions for 
Custom Containers</h2></div></div></div><p>
-  Many large projects use their own data structures instead of the ones in the
-  standard library.  If these data structures are similar in functionality
-  to the standard library, they can be instrumented with the same hooks
-  that are used to instrument the standard library.
-  The instrumentation API is exposed in file
-  <code class="code">profiler.h</code> (look for "Instrumentation hooks").
-  </p></div><div class="navfooter"><hr /><table width="100%" 
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" 
href="profile_mode_design.html">Prev</a>??</td><td width="20%" 
align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td 
width="40%" align="right">??<a accesskey="n" 
href="profile_mode_cost_model.html">Next</a></td></tr><tr><td width="40%" 
align="left" valign="top">Design??</td><td width="20%" align="center"><a 
accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" 
valign="top">??Empirical Cost Model</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/html/manual/profile_mode_cost_model.html 
b/libstdc++-v3/doc/html/manual/profile_mode_cost_model.html
deleted file mode 100644
index bc87048b4df..00000000000
--- a/libstdc++-v3/doc/html/manual/profile_mode_cost_model.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Empirical Cost Model</title><meta 
name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta 
name="keywords" content="C++, library, profile" /><meta name="keywords" 
content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, 
library" /><link rel="home" href="../index.html" title="The GNU C++ Library" 
/><link rel="up" href="profile_mode.html" title="Chapter??19.??Profile Mode" 
/><link rel="prev" href="profile_mode_api.html" title="Extensions for Custom 
Containers" /><link rel="next" href="profile_mode_impl.html" 
title="Implementation Issues" /></head><body><div class="navheader"><table 
width="100%" summary="Navigation header"><tr><th colspan="3" 
align="center">Empirical Cost Model</th></tr><tr><td width="20%" align
 ="left"><a accesskey="p" href="profile_mode_api.html">Prev</a>??</td><th 
width="60%" align="center">Chapter??19.??Profile Mode</th><td width="20%" 
align="right">??<a accesskey="n" 
href="profile_mode_impl.html">Next</a></td></tr></table><hr /></div><div 
class="section"><div class="titlepage"><div><div><h2 class="title" 
style="clear: both"><a id="manual.ext.profile_mode.cost_model"></a>Empirical 
Cost Model</h2></div></div></div><p>
-  Currently, the cost model uses formulas with predefined relative weights
-  for alternative containers or container implementations.  For instance,
-  iterating through a vector is X times faster than iterating through a list.
-  </p><p>
-  (Under development.)
-  We are working on customizing this to a particular machine by providing
-  an automated way to compute the actual relative weights for operations
-  on the given machine.
-  </p><p>
-  (Under development.)
-  We plan to provide a performance parameter database format that can be
-  filled in either by hand or by an automated training mechanism.
-  The analysis module will then use this database instead of the built in.
-  generic parameters.
-  </p></div><div class="navfooter"><hr /><table width="100%" 
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" 
href="profile_mode_api.html">Prev</a>??</td><td width="20%" align="center"><a 
accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" 
align="right">??<a accesskey="n" 
href="profile_mode_impl.html">Next</a></td></tr><tr><td width="40%" 
align="left" valign="top">Extensions for Custom Containers??</td><td 
width="20%" align="center"><a accesskey="h" 
href="../index.html">Home</a></td><td width="40%" align="right" 
valign="top">??Implementation Issues</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/html/manual/profile_mode_design.html 
b/libstdc++-v3/doc/html/manual/profile_mode_design.html
deleted file mode 100644
index 8ce51c88950..00000000000
--- a/libstdc++-v3/doc/html/manual/profile_mode_design.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Design</title><meta 
name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta 
name="keywords" content="C++, library, profile" /><meta name="keywords" 
content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, 
library" /><link rel="home" href="../index.html" title="The GNU C++ Library" 
/><link rel="up" href="profile_mode.html" title="Chapter??19.??Profile Mode" 
/><link rel="prev" href="profile_mode.html" title="Chapter??19.??Profile Mode" 
/><link rel="next" href="profile_mode_api.html" title="Extensions for Custom 
Containers" /></head><body><div class="navheader"><table width="100%" 
summary="Navigation header"><tr><th colspan="3" 
align="center">Design</th></tr><tr><td width="20%" align="left"><a 
accesskey="p" hre
 f="profile_mode.html">Prev</a>??</td><th width="60%" 
align="center">Chapter??19.??Profile Mode</th><td width="20%" 
align="right">??<a accesskey="n" 
href="profile_mode_api.html">Next</a></td></tr></table><hr /></div><div 
class="section"><div class="titlepage"><div><div><h2 class="title" 
style="clear: both"><a 
id="manual.ext.profile_mode.design"></a>Design</h2></div></div></div><p>
-</p><div class="table"><a id="table.profile_code_loc"></a><p 
class="title"><strong>Table??19.1.??Profile Code Location</strong></p><div 
class="table-contents"><table class="table" summary="Profile Code Location" 
border="1"><colgroup><col align="left" class="c1" /><col align="left" 
class="c2" /></colgroup><thead><tr><th align="left">Code Location</th><th 
align="left">Use</th></tr></thead><tbody><tr><td align="left"><code 
class="code">libstdc++-v3/include/std/*</code></td><td 
align="left">Preprocessor code to redirect to profile extension 
headers.</td></tr><tr><td align="left"><code 
class="code">libstdc++-v3/include/profile/*</code></td><td align="left">Profile 
extension public headers (map, vector, ...).</td></tr><tr><td 
align="left"><code 
class="code">libstdc++-v3/include/profile/impl/*</code></td><td 
align="left">Profile extension internals.  Implementation files are
-     only included from <code class="code">impl/profiler.h</code>, which is 
the only
-     file included from the public 
headers.</td></tr></tbody></table></div></div><br class="table-break" /><p>
-</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a 
id="manual.ext.profile_mode.design.wrapper"></a>Wrapper 
Model</h3></div></div></div><p>
-  In order to get our instrumented library version included instead of the
-  release one,
-  we use the same wrapper model as the debug mode.
-  We subclass entities from the release version.  Wherever
-  <code class="code">_GLIBCXX_PROFILE</code> is defined, the release namespace 
is
-  <code class="code">std::__norm</code>, whereas the profile namespace is
-  <code class="code">std::__profile</code>.  Using plain <code 
class="code">std</code> translates
-  into <code class="code">std::__profile</code>.
-  </p><p>
-  Whenever possible, we try to wrap at the public interface level, e.g.,
-  in <code class="code">unordered_set</code> rather than in <code 
class="code">hashtable</code>,
-  in order not to depend on implementation.
-  </p><p>
-  Mixing object files built with and without the profile mode must
-  not affect the program execution.  However, there are no guarantees to
-  the accuracy of diagnostics when using even a single object not built with
-  <code class="code">-D_GLIBCXX_PROFILE</code>.
-  Currently, mixing the profile mode with debug and parallel extensions is
-  not allowed.  Mixing them at compile time will result in preprocessor errors.
-  Mixing them at link time is undefined.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a 
id="manual.ext.profile_mode.design.instrumentation"></a>Instrumentation</h3></div></div></div><p>
-  Instead of instrumenting every public entry and exit point,
-  we chose to add instrumentation on demand, as needed
-  by individual diagnostics.
-  The main reason is that some diagnostics require us to extract bits of
-  internal state that are particular only to that diagnostic.
-  We plan to formalize this later, after we learn more about the requirements
-  of several diagnostics.
-  </p><p>
-  All the instrumentation points can be switched on and off using
-  <code class="code">-D[_NO]_GLIBCXX_PROFILE_&lt;diagnostic&gt;</code> options.
-  With all the instrumentation calls off, there should be negligible
-  overhead over the release version.  This property is needed to support
-  diagnostics based on timing of internal operations.  For such diagnostics,
-  we anticipate turning most of the instrumentation off in order to prevent
-  profiling overhead from polluting time measurements, and thus diagnostics.
-  </p><p>
-  All the instrumentation on/off compile time switches live in
-  <code class="code">include/profile/profiler.h</code>.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a id="manual.ext.profile_mode.design.rtlib"></a>Run Time 
Behavior</h3></div></div></div><p>
-  For practical reasons, the instrumentation library processes the trace
-  partially
-  rather than dumping it to disk in raw form.  Each event is processed when
-  it occurs.  It is usually attached a cost and it is aggregated into
-  the database of a specific diagnostic class.  The cost model
-  is based largely on the standard performance guarantees, but in some
-  cases we use knowledge about GCC's standard library implementation.
-  </p><p>
-  Information is indexed by (1) call stack and (2) instance id or address
-  to be able to understand and summarize precise creation-use-destruction
-  dynamic chains.  Although the analysis is sensitive to dynamic instances,
-  the reports are only sensitive to call context.  Whenever a dynamic instance
-  is destroyed, we accumulate its effect to the corresponding entry for the
-  call stack of its constructor location.
-  </p><p>
-  For details, see
-   <a class="link" href="https://ieeexplore.ieee.org/document/4907670/"; 
target="_top">paper presented at
-   CGO 2009</a>.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a id="manual.ext.profile_mode.design.analysis"></a>Analysis and 
Diagnostics</h3></div></div></div><p>
-  Final analysis takes place offline, and it is based entirely on the
-  generated trace and debugging info in the application binary.
-  See section Diagnostics for a list of analysis types that we plan to support.
-  </p><p>
-  The input to the analysis is a table indexed by profile type and call stack.
-  The data type for each entry depends on the profile type.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a id="manual.ext.profile_mode.design.cost-model"></a>Cost 
Model</h3></div></div></div><p>
-  While it is likely that cost models become complex as we get into
-  more sophisticated analysis, we will try to follow a simple set of rules
-  at the beginning.
-  </p><div class="itemizedlist"><ul class="itemizedlist" 
style="list-style-type: disc; "><li class="listitem"><p><span 
class="emphasis"><em>Relative benefit estimation:</em></span>
-  The idea is to estimate or measure the cost of all operations
-  in the original scenario versus the scenario we advise to switch to.
-  For instance, when advising to change a vector to a list, an occurrence
-  of the <code class="code">insert</code> method will generally count as a 
benefit.
-  Its magnitude depends on (1) the number of elements that get shifted
-  and (2) whether it triggers a reallocation.
-  </p></li><li class="listitem"><p><span class="emphasis"><em>Synthetic 
measurements:</em></span>
-  We will measure the relative difference between similar operations on
-  different containers.  We plan to write a battery of small tests that
-  compare the times of the executions of similar methods on different
-  containers.  The idea is to run these tests on the target machine.
-  If this training phase is very quick, we may decide to perform it at
-  library initialization time.  The results can be cached on disk and reused
-  across runs.
-  </p></li><li class="listitem"><p><span 
class="emphasis"><em>Timers:</em></span>
-  We plan to use timers for operations of larger granularity, such as sort.
-  For instance, we can switch between different sort methods on the fly
-  and report the one that performs best for each call context.
-  </p></li><li class="listitem"><p><span class="emphasis"><em>Show 
stoppers:</em></span>
-  We may decide that the presence of an operation nullifies the advice.
-  For instance, when considering switching from <code class="code">set</code> 
to
-  <code class="code">unordered_set</code>, if we detect use of operator <code 
class="code">++</code>,
-  we will simply not issue the advice, since this could signal that the use
-  care require a sorted container.</p></li></ul></div></div><div 
class="section"><div class="titlepage"><div><div><h3 class="title"><a 
id="manual.ext.profile_mode.design.reports"></a>Reports</h3></div></div></div><p>
-There are two types of reports.  First, if we recognize a pattern for which
-we have a substitute that is likely to give better performance, we print
-the advice and estimated performance gain.  The advice is usually associated
-to a code position and possibly a call stack.
-  </p><p>
-Second, we report performance characteristics for which we do not have
-a clear solution for improvement.  For instance, we can point to the user
-the top 10 <code class="code">multimap</code> locations
-which have the worst data locality in actual traversals.
-Although this does not offer a solution,
-it helps the user focus on the key problems and ignore the uninteresting ones.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a 
id="manual.ext.profile_mode.design.testing"></a>Testing</h3></div></div></div><p>
-  First, we want to make sure we preserve the behavior of the release mode.
-  You can just type <code class="code">"make check-profile"</code>, which
-  builds and runs the whole test suite in profile mode.
-  </p><p>
-  Second, we want to test the correctness of each diagnostic.
-  We created a <code class="code">profile</code> directory in the test suite.
-  Each diagnostic must come with at least two tests, one for false positives
-  and one for false negatives.
-  </p></div></div><div class="navfooter"><hr /><table width="100%" 
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" 
href="profile_mode.html">Prev</a>??</td><td width="20%" align="center"><a 
accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" 
align="right">??<a accesskey="n" 
href="profile_mode_api.html">Next</a></td></tr><tr><td width="40%" align="left" 
valign="top">Chapter??19.??Profile Mode??</td><td width="20%" align="center"><a 
accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" 
valign="top">??Extensions for Custom 
Containers</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/html/manual/profile_mode_devel.html 
b/libstdc++-v3/doc/html/manual/profile_mode_devel.html
deleted file mode 100644
index 768c610ba80..00000000000
--- a/libstdc++-v3/doc/html/manual/profile_mode_devel.html
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Developer Information</title><meta 
name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta 
name="keywords" content="C++, library, profile" /><meta name="keywords" 
content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, 
library" /><link rel="home" href="../index.html" title="The GNU C++ Library" 
/><link rel="up" href="profile_mode.html" title="Chapter??19.??Profile Mode" 
/><link rel="prev" href="profile_mode_impl.html" title="Implementation Issues" 
/><link rel="next" href="profile_mode_diagnostics.html" title="Diagnostics" 
/></head><body><div class="navheader"><table width="100%" summary="Navigation 
header"><tr><th colspan="3" align="center">Developer 
Information</th></tr><tr><td width="20%" align="left"><a 
 accesskey="p" href="profile_mode_impl.html">Prev</a>??</td><th width="60%" 
align="center">Chapter??19.??Profile Mode</th><td width="20%" 
align="right">??<a accesskey="n" 
href="profile_mode_diagnostics.html">Next</a></td></tr></table><hr /></div><div 
class="section"><div class="titlepage"><div><div><h2 class="title" 
style="clear: both"><a id="manual.ext.profile_mode.developer"></a>Developer 
Information</h2></div></div></div><div class="section"><div 
class="titlepage"><div><div><h3 class="title"><a 
id="manual.ext.profile_mode.developer.bigpic"></a>Big 
Picture</h3></div></div></div><p>The profile mode headers are included with
-   <code class="code">-D_GLIBCXX_PROFILE</code> through preprocessor 
directives in
-   <code class="code">include/std/*</code>.
-  </p><p>Instrumented implementations are provided in
-   <code class="code">include/profile/*</code>.  All instrumentation hooks are 
macros
-   defined in <code class="code">include/profile/profiler.h</code>.
-  </p><p>All the implementation of the instrumentation hooks is in
-   <code class="code">include/profile/impl/*</code>.  Although all the code 
gets included,
-   thus is publicly visible, only a small number of functions are called from
-   outside this directory.  All calls to hook implementations must be
-   done through macros defined in <code class="code">profiler.h</code>.  The 
macro
-   must ensure (1) that the call is guarded against reentrance and
-   (2) that the call can be turned off at compile time using a
-   <code class="code">-D_GLIBCXX_PROFILE_...</code> compiler option.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a id="manual.ext.profile_mode.developer.howto"></a>How To Add A 
Diagnostic</h3></div></div></div><p>Let's say the diagnostic name is "magic".
-  </p><p>If you need to instrument a header not already under
-   <code class="code">include/profile/*</code>, first edit the corresponding 
header
-   under <code class="code">include/std/</code> and add a preprocessor 
directive such
-   as the one in <code class="code">include/std/vector</code>:
-</p><pre class="programlisting">
-#ifdef _GLIBCXX_PROFILE
-# include &lt;profile/vector&gt;
-#endif
-</pre><p>
-  </p><p>If the file you need to instrument is not yet under
-   <code class="code">include/profile/</code>, make a copy of the one in
-   <code class="code">include/debug</code>, or the main implementation.
-   You'll need to include the main implementation and inherit the classes
-   you want to instrument.  Then define the methods you want to instrument,
-   define the instrumentation hooks and add calls to them.
-   Look at <code class="code">include/profile/vector</code> for an example.
-  </p><p>Add macros for the instrumentation hooks in
-   <code class="code">include/profile/impl/profiler.h</code>.
-   Hook names must start with <code class="code">__profcxx_</code>.
-   Make sure they transform
-   in no code with <code class="code">-D_NO_GLIBCXX_PROFILE_MAGIC</code>.
-   Make sure all calls to any method in namespace <code 
class="code">__gnu_profile</code>
-   is protected against reentrance using macro
-   <code class="code">_GLIBCXX_PROFILE_REENTRANCE_GUARD</code>.
-   All names of methods in namespace <code class="code">__gnu_profile</code> 
called from
-   <code class="code">profiler.h</code> must start with <code 
class="code">__trace_magic_</code>.
-  </p><p>Add the implementation of the diagnostic.
-   </p><div class="itemizedlist"><ul class="itemizedlist" 
style="list-style-type: disc; "><li class="listitem"><p>
-      Create new file <code 
class="code">include/profile/impl/profiler_magic.h</code>.
-     </p></li><li class="listitem"><p>
-      Define class <code class="code">__magic_info: public 
__object_info_base</code>.
-      This is the representation of a line in the object table.
-      The <code class="code">__merge</code> method is used to aggregate 
information
-      across all dynamic instances created at the same call context.
-      The <code class="code">__magnitude</code> must return the estimation of 
the benefit
-      as a number of small operations, e.g., number of words copied.
-      The <code class="code">__write</code> method is used to produce the raw 
trace.
-      The <code class="code">__advice</code> method is used to produce the 
advice string.
-     </p></li><li class="listitem"><p>
-      Define class <code class="code">__magic_stack_info: public 
__magic_info</code>.
-      This defines the content of a line in the stack table.
-     </p></li><li class="listitem"><p>
-      Define class <code class="code">__trace_magic: public 
__trace_base&lt;__magic_info,
-      __magic_stack_info&gt;</code>.
-      It defines the content of the trace associated with this diagnostic.
-     </p></li></ul></div><p>
-  </p><p>Add initialization and reporting calls in
-   <code class="code">include/profile/impl/profiler_trace.h</code>.  Use
-   <code class="code">__trace_vector_to_list</code> as an example.
-  </p><p>Add documentation in file <code 
class="code">doc/xml/manual/profile_mode.xml</code>.
-  </p></div></div><div class="navfooter"><hr /><table width="100%" 
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" 
href="profile_mode_impl.html">Prev</a>??</td><td width="20%" align="center"><a 
accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" 
align="right">??<a accesskey="n" 
href="profile_mode_diagnostics.html">Next</a></td></tr><tr><td width="40%" 
align="left" valign="top">Implementation Issues??</td><td width="20%" 
align="center"><a accesskey="h" href="../index.html">Home</a></td><td 
width="40%" align="right" 
valign="top">??Diagnostics</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/libstdc++-v3/doc/html/manual/profile_mode_impl.html 
b/libstdc++-v3/doc/html/manual/profile_mode_impl.html
deleted file mode 100644
index e9495273d52..00000000000
--- a/libstdc++-v3/doc/html/manual/profile_mode_impl.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";><html 
xmlns="http://www.w3.org/1999/xhtml";><head><meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8" /><title>Implementation Issues</title><meta 
name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta 
name="keywords" content="C++, library, profile" /><meta name="keywords" 
content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, 
library" /><link rel="home" href="../index.html" title="The GNU C++ Library" 
/><link rel="up" href="profile_mode.html" title="Chapter??19.??Profile Mode" 
/><link rel="prev" href="profile_mode_cost_model.html" title="Empirical Cost 
Model" /><link rel="next" href="profile_mode_devel.html" title="Developer 
Information" /></head><body><div class="navheader"><table width="100%" 
summary="Navigation header"><tr><th colspan="3" align="center">Implementation 
Issues</th></tr><tr><td width="20%" align="
 left"><a accesskey="p" href="profile_mode_cost_model.html">Prev</a>??</td><th 
width="60%" align="center">Chapter??19.??Profile Mode</th><td width="20%" 
align="right">??<a accesskey="n" 
href="profile_mode_devel.html">Next</a></td></tr></table><hr /></div><div 
class="section"><div class="titlepage"><div><div><h2 class="title" 
style="clear: both"><a 
id="manual.ext.profile_mode.implementation"></a>Implementation 
Issues</h2></div></div></div><div class="section"><div 
class="titlepage"><div><div><h3 class="title"><a 
id="manual.ext.profile_mode.implementation.stack"></a>Stack 
Traces</h3></div></div></div><p>
-  Accurate stack traces are needed during profiling since we group events by
-  call context and dynamic instance.  Without accurate traces, diagnostics
-  may be hard to interpret.  For instance, when giving advice to the user
-  it is imperative to reference application code, not library code.
-  </p><p>
-  Currently we are using the libc <code class="code">backtrace</code> routine 
to get
-  stack traces.
-  <code class="code">_GLIBCXX_PROFILE_STACK_DEPTH</code> can be set
-  to 0 if you are willing to give up call context information, or to a small
-  positive value to reduce run time overhead.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a 
id="manual.ext.profile_mode.implementation.symbols"></a>Symbolization of 
Instruction Addresses</h3></div></div></div><p>
-  The profiling and analysis phases use only instruction addresses.
-  An external utility such as addr2line is needed to postprocess the result.
-  We do not plan to add symbolization support in the profile extension.
-  This would require access to symbol tables, debug information tables,
-  external programs or libraries and other system dependent information.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a 
id="manual.ext.profile_mode.implementation.concurrency"></a>Concurrency</h3></div></div></div><p>
-  Our current model is simplistic, but precise.
-  We cannot afford to approximate because some of our diagnostics require
-  precise matching of operations to container instance and call context.
-  During profiling, we keep a single information table per diagnostic.
-  There is a single lock per information table.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a 
id="manual.ext.profile_mode.implementation.stdlib-in-proflib"></a>Using the 
Standard Library in the Instrumentation Implementation</h3></div></div></div><p>
-  As much as we would like to avoid uses of libstdc++ within our
-  instrumentation library, containers such as unordered_map are very
-  appealing.  We plan to use them as long as they are named properly
-  to avoid ambiguity.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a 
id="manual.ext.profile_mode.implementation.malloc-hooks"></a>Malloc 
Hooks</h3></div></div></div><p>
-  User applications/libraries can provide malloc hooks.
-  When the implementation of the malloc hooks uses stdlibc++, there can
-  be an infinite cycle between the profile mode instrumentation and the
-  malloc hook code.
-  </p><p>
-  We protect against reentrance to the profile mode instrumentation code,
-  which should avoid this problem in most cases.
-  The protection mechanism is thread safe and exception safe.
-  This mechanism does not prevent reentrance to the malloc hook itself,
-  which could still result in deadlock, if, for instance, the malloc hook
-  uses non-recursive locks.
-  XXX: A definitive solution to this problem would be for the profile extension
-  to use a custom allocator internally, and perhaps not to use libstdc++.
-  </p></div><div class="section"><div class="titlepage"><div><div><h3 
class="title"><a 
id="manual.ext.profile_mode.implementation.construction-destruction"></a>Construction
 and Destruction of Global Objects</h3></div></div></div><p>
-  The profiling library state is initialized at the first call to a profiling
-  method.  This allows us to record the construction of all global objects.
-  However, we cannot do the same at destruction time.  The trace is written
-  by a function registered by <code class="code">atexit</code>, thus invoked by
-  <code class="code">exit</code>.
-  </p></div></div><div class="navfooter"><hr /><table width="100%" 
summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" 
href="profile_mode_cost_model.html">Prev</a>??</td><td width="20%" 
align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td 
width="40%" align="right">??<a accesskey="n" 
href="profile_mode_devel.html">Next</a></td></tr><tr><td width="40%" 
align="left" valign="top">Empirical Cost Model??</td><td width="20%" 
align="center"><a accesskey="h" href="../index.html">Home</a></td><td 
width="40%" align="right" valign="top">??Developer 
Information</td></tr></table></div></body></html>
\ No newline at end of file
-- 
2.47.0

Reply via email to