1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-17 00:30:37 -08:00
emacs/mps/manual/html/glossary/w.html
Gareth Rees 06057a4d52 Bring html up to date.
Copied from Perforce
 Change: 181168
 ServerID: perforce.ravenbrook.com
2013-03-18 15:13:54 +00:00

456 lines
No EOL
34 KiB
HTML

<!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>Memory Management Glossary: W &mdash; Memory Pool System 1.111.0 documentation</title>
<link rel="stylesheet" href="../_static/mps.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '1.111.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
<link rel="up" title="Memory Management Glossary" href="index.html" />
<link rel="next" title="Memory Management Glossary: Z" href="z.html" />
<link rel="prev" title="Memory Management Glossary: V" href="v.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="z.html" title="Memory Management Glossary: Z"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="v.html" title="Memory Management Glossary: V"
accesskey="P">previous</a> |</li>
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Memory Management Glossary</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="memory-management-glossary-w">
<span id="glossary-w"></span><h1>Memory Management Glossary: W<a class="headerlink" href="#memory-management-glossary-w" title="Permalink to this headline"></a></h1>
<p class="glossary-alphabet"><a class="reference internal" href="a.html#glossary-a"><em>A</em></a>
| <a class="reference internal" href="b.html#glossary-b"><em>B</em></a>
| <a class="reference internal" href="c.html#glossary-c"><em>C</em></a>
| <a class="reference internal" href="d.html#glossary-d"><em>D</em></a>
| <a class="reference internal" href="e.html#glossary-e"><em>E</em></a>
| <a class="reference internal" href="f.html#glossary-f"><em>F</em></a>
| <a class="reference internal" href="g.html#glossary-g"><em>G</em></a>
| <a class="reference internal" href="h.html#glossary-h"><em>H</em></a>
| <a class="reference internal" href="i.html#glossary-i"><em>I</em></a>
| J
| <a class="reference internal" href="k.html#glossary-k"><em>K</em></a>
| <a class="reference internal" href="l.html#glossary-l"><em>L</em></a>
| <a class="reference internal" href="m.html#glossary-m"><em>M</em></a>
| <a class="reference internal" href="n.html#glossary-n"><em>N</em></a>
| <a class="reference internal" href="o.html#glossary-o"><em>O</em></a>
| <a class="reference internal" href="p.html#glossary-p"><em>P</em></a>
| <a class="reference internal" href="q.html#glossary-q"><em>Q</em></a>
| <a class="reference internal" href="r.html#glossary-r"><em>R</em></a>
| <a class="reference internal" href="s.html#glossary-s"><em>S</em></a>
| <a class="reference internal" href="t.html#glossary-t"><em>T</em></a>
| <a class="reference internal" href="u.html#glossary-u"><em>U</em></a>
| <a class="reference internal" href="v.html#glossary-v"><em>V</em></a>
| <a class="reference internal" href="#glossary-w"><em>W</em></a>
| X
| Y
| <a class="reference internal" href="z.html#glossary-z"><em>Z</em></a></p>
<dl class="glossary docutils">
<dt id="term-weak-key-hash-table">weak-key hash table</dt>
<dd><p class="first">A hash table which has <a class="reference internal" href="#term-weak-reference-1"><em class="xref std std-term">weak references<sup>(1)</sup></em></a> to its
keys. If the key dies, the value for that key is automatically
deleted from the table too. It can be used to store extra
information about objects without keeping them alive.</p>
<div class="admonition-similar-term admonition">
<p class="first admonition-title">Similar terms</p>
<p class="last"><a class="reference internal" href="d.html#term-doubly-weak-hash-table"><em class="xref std std-term">doubly weak hash table</em></a>, <a class="reference internal" href="#term-weak-value-hash-table"><em class="xref std std-term">weak-value hash table</em></a>.</p>
</div>
<div class="admonition-in-the-mps last admonition">
<p class="first admonition-title">In the MPS</p>
<p class="last">See <a class="reference internal" href="../pool/awl.html#pool-awl"><em>AWL (Automatic Weak Linked)</em></a>.</p>
</div>
</dd>
<dt id="term-weak-value-hash-table">weak-value hash table</dt>
<dd><p class="first">A hash table which has <a class="reference internal" href="#term-weak-reference-1"><em class="xref std std-term">weak references<sup>(1)</sup></em></a> to its
value. If the value dies, any keys that refer to that value
are automatically deleted from the table too. It can be used
to index a set of objects without keeping them alive.</p>
<div class="admonition-similar-term admonition">
<p class="first admonition-title">Similar terms</p>
<p class="last"><a class="reference internal" href="d.html#term-doubly-weak-hash-table"><em class="xref std std-term">doubly weak hash table</em></a>, <a class="reference internal" href="#term-weak-key-hash-table"><em class="xref std std-term">weak-key hash table</em></a>.</p>
</div>
<div class="admonition-in-the-mps last admonition">
<p class="first admonition-title">In the MPS</p>
<p class="last">See <a class="reference internal" href="../pool/awl.html#pool-awl"><em>AWL (Automatic Weak Linked)</em></a>.</p>
</div>
</dd>
<dt id="term-weak-hash-table">weak hash table</dt>
<dd>A <a class="reference internal" href="#term-weak-key-hash-table"><em class="xref std std-term">weak-key</em></a> or <a class="reference internal" href="#term-weak-value-hash-table"><em class="xref std std-term">weak-value
hash table</em></a> (usually the former).</dd>
<dt id="term-weak-reference-1">weak reference<sup>(1)</sup></dt>
<dd><p class="first">In <a class="reference internal" href="t.html#term-tracing-garbage-collection"><em class="xref std std-term">tracing garbage collection</em></a>, a weak reference is a
<a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a> that does not keep the <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a> it
refers to <a class="reference internal" href="l.html#term-live"><em class="xref std std-term">alive</em></a>.</p>
<p>A weak reference does not keep the referent alive, but it will
continue to refer to the object as long as it remains
otherwise alive. When only weak references to the object
remain, the weak references can be deleted (&#8220;splatted&#8221; or
&#8220;cleared&#8221;) and the object <a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclaimed</em></a>.</p>
<p><a class="reference internal" href="../mmref/lang.html#term-java"><em class="xref std std-term">Java</em></a> offers three kinds of weak references, called
<a class="reference internal" href="s.html#term-soft-reference"><em class="xref std std-term">soft references</em></a>, <a class="reference internal" href="#term-weak-reference-2"><em class="xref std std-term">weak references<sup>(2)</sup></em></a>, and
<a class="reference internal" href="p.html#term-phantom-reference"><em class="xref std std-term">phantom references</em></a>, in order of increasing weakness.</p>
<div class="admonition-opposite-term admonition">
<p class="first admonition-title">Opposite term</p>
<p class="last"><a class="reference internal" href="s.html#term-strong-reference"><em class="xref std std-term">strong reference</em></a>.</p>
</div>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="#term-weak-root"><em class="xref std std-term">weak root</em></a>.</p>
</div>
</dd>
<dt id="term-weak-reference-2">weak reference<sup>(2)</sup></dt>
<dd><p class="first">In <a class="reference internal" href="../mmref/lang.html#term-java"><em class="xref std std-term">Java</em></a> terminology, <em>weak reference</em> is used to mean
a <a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a> encapsulated in a <a class="reference internal" href="r.html#term-reference-object"><em class="xref std std-term">reference object</em></a>
of class <tt class="docutils literal"><span class="pre">WeakReference</span></tt>.</p>
<p>Weak references form one of three kinds of <a class="reference internal" href="#term-weak-reference-1"><em class="xref std std-term">weak
reference<sup>(1)</sup></em></a> in Java. They are handy for associating extra
data with objects when you cannot store it in the objects
themselves.</p>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="#term-weakly-reachable"><em class="xref std std-term">weakly reachable</em></a>.</p>
</div>
<div class="admonition-related-link last admonition">
<p class="first admonition-title">Related links</p>
<p class="last"><a class="reference external" href="http://download.java.net/jdk8/docs/api/java/lang/ref/WeakReference.html">Class java.lang.ref.WeakReference</a>, <a class="reference external" href="http://pawlan.com/monica/articles/refobjs/">Reference Objects and Garbage Collection</a>.</p>
</div>
</dd>
<dt id="term-weak-root">weak root</dt>
<dd><p class="first">A weak root is a <a class="reference internal" href="r.html#term-root"><em class="xref std std-term">root</em></a>, such that all
<a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">references</em></a> in it are <a class="reference internal" href="#term-weak-reference-1"><em class="xref std std-term">weak references<sup>(1)</sup></em></a>; that
is, they do not affect the <a class="reference internal" href="l.html#term-live"><em class="xref std std-term">liveness</em></a> of the
<a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a> referred to.</p>
<div class="admonition-opposite-term admonition">
<p class="first admonition-title">Opposite term</p>
<p class="last"><a class="reference internal" href="s.html#term-strong-root"><em class="xref std std-term">strong root</em></a>.</p>
</div>
<div class="admonition-in-the-mps last admonition">
<p class="first admonition-title">In the MPS</p>
<p class="last">A weak root has <a class="reference internal" href="r.html#term-rank"><em class="xref std std-term">rank</em></a> <a class="reference internal" href="../topic/root.html#mps_rank_weak" title="mps_rank_weak"><tt class="xref c c-func docutils literal"><span class="pre">mps_rank_weak()</span></tt></a>.</p>
</div>
</dd>
<dt id="term-weak-tri-color-invariant"><span id="term-weak-tri-colour-invariant"></span><span id="term-weak-tricolor-invariant"></span><span id="term-weak-tricolour-invariant"></span>weak tri-color invariant<br />weak tri-colour invariant<br />weak tricolor invariant<br />weak tricolour invariant</dt>
<dd><p class="first">The weak <a class="reference internal" href="t.html#term-tri-color-invariant"><em class="xref std std-term">tri-color invariant</em></a> is the property of a
<a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a> <a class="reference internal" href="g.html#term-graph"><em class="xref std std-term">graph</em></a> that all <a class="reference internal" href="#term-white"><em class="xref std std-term">white</em></a>
<a class="reference internal" href="n.html#term-node"><em class="xref std std-term">nodes</em></a> pointed to by a <a class="reference internal" href="b.html#term-black"><em class="xref std std-term">black</em></a> node are
also <a class="reference internal" href="r.html#term-reachable"><em class="xref std std-term">reachable</em></a> from some <a class="reference internal" href="g.html#term-gray"><em class="xref std std-term">gray</em></a> node through a
chain of white nodes.</p>
<p>By preserving this property throughout <a class="reference internal" href="t.html#term-tri-color-marking"><em class="xref std std-term">tri-color
marking</em></a>, a <a class="reference internal" href="t.html#term-trace"><em class="xref std std-term">tracing</em></a> algorithm can ensure that
the <a class="reference internal" href="c.html#term-collector-2"><em class="xref std std-term">collector<sup>(2)</sup></em></a> will not miss reachable objects,
even if the <a class="reference internal" href="m.html#term-mutator"><em class="xref std std-term">mutator</em></a> manipulates the graph during the
collection. Mutator actions might need to change the
<a class="reference internal" href="c.html#term-color"><em class="xref std std-term">color</em></a> of the nodes affected in order to preserve the
invariant.</p>
<p>Algorithms using this invariant are
<a class="reference internal" href="s.html#term-snapshot-at-the-beginning"><em class="xref std std-term">snapshot-at-the-beginning</em></a>
algorithms.</p>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="b.html#term-barrier-1"><em class="xref std std-term">barrier<sup>(1)</sup></em></a>, <a class="reference internal" href="s.html#term-strong-tri-color-invariant"><em class="xref std std-term">strong tri-color invariant</em></a>.</p>
</div>
<div class="admonition-related-publication last admonition">
<p class="first admonition-title">Related publications</p>
<p class="last"><a class="reference internal" href="../mmref/bib.html#johnstone97"><em>Johnstone (1997)</em></a>, <a class="reference internal" href="../mmref/bib.html#pirinen98"><em>Pirinen (1998)</em></a>.</p>
</div>
</dd>
<dt id="term-weakly-reachable">weakly reachable</dt>
<dd><p class="first">In <a class="reference internal" href="../mmref/lang.html#term-java"><em class="xref std std-term">Java</em></a>, an object is <em>weakly reachable</em> if it is
neither <a class="reference internal" href="s.html#term-strongly-reachable"><em class="xref std std-term">strongly</em></a> nor
<a class="reference internal" href="s.html#term-softly-reachable"><em class="xref std std-term">softly reachable</em></a> and there is a path from the
<a class="reference internal" href="r.html#term-root"><em class="xref std std-term">roots</em></a> to it that contains at least one
<a class="reference internal" href="#term-weak-reference-2"><em class="xref std std-term">weak reference<sup>(2)</sup></em></a> but no <a class="reference internal" href="p.html#term-phantom-reference"><em class="xref std std-term">phantom references</em></a>.</p>
<p>When the Java <a class="reference internal" href="c.html#term-collector-1"><em class="xref std std-term">collector<sup>(1)</sup></em></a> determines that an object
is weakly reachable, it clears all the weak references
involved, and declares the object <a class="reference internal" href="f.html#term-finalization"><em class="xref std std-term">finalizable</em></a>. (Operationally, finalization works as if it
was implemented by a class of &#8220;final references&#8221; that stand
between weak and phantom references.) Also, the
<a class="reference internal" href="r.html#term-reference-object"><em class="xref std std-term">reference objects</em></a> containing the
weak references are enqueued, if they were registered with a
queue.</p>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="r.html#term-reachable"><em class="xref std std-term">reachability</em></a>, <a class="reference internal" href="p.html#term-phantom-reachable"><em class="xref std std-term">phantom reachable</em></a>.</p>
</div>
<div class="admonition-related-link last admonition">
<p class="first admonition-title">Related link</p>
<p class="last"><a class="reference external" href="http://download.java.net/jdk8/docs/api/java/lang/ref/WeakReference.html">Class java.lang.ref.WeakReference</a>, <a class="reference external" href="http://pawlan.com/monica/articles/refobjs/">Reference Objects and Garbage Collection</a>.</p>
</div>
</dd>
<dt id="term-weighted-buddies">weighted buddies</dt>
<dd><p class="first">A <a class="reference internal" href="b.html#term-buddy-system"><em class="xref std std-term">buddy system</em></a> <a class="reference internal" href="a.html#term-allocation-mechanism"><em class="xref std std-term">allocation mechanism</em></a> using two
series of size classes: <a class="reference internal" href="b.html#term-binary-buddies"><em class="xref std std-term">binary buddies</em></a> (2, 4, 8, …)
and three-times-power-of-two (3, 6, 12, …). A block that is
in the latter series may be <a class="reference internal" href="s.html#term-split"><em class="xref std std-term">split</em></a> in two different
ways. Thus a block of size 12 may be split into two blocks of
size 6 or one block of size 4 and one block of size 8. The
same applies for <a class="reference internal" href="c.html#term-coalesce"><em class="xref std std-term">coalescing</em></a>. This gives
this system more flexibility than a regular buddy system.</p>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="b.html#term-buddy-system"><em class="xref std std-term">buddy system</em></a>, <a class="reference internal" href="a.html#term-allocation-mechanism"><em class="xref std std-term">allocation mechanism</em></a>, <a class="reference internal" href="b.html#term-binary-buddies"><em class="xref std std-term">binary buddies</em></a>.</p>
</div>
<div class="admonition-related-publication last admonition">
<p class="first admonition-title">Related publication</p>
<p class="last"><a class="reference internal" href="../mmref/bib.html#wil95"><em>Wilson et al. (1995)</em></a>.</p>
</div>
</dd>
<dt id="term-weighted-reference-counting">weighted reference counting</dt>
<dd><p class="first">A technique for <a class="reference internal" href="r.html#term-reference-counting"><em class="xref std std-term">reference counting</em></a> which is in common
use for <a class="reference internal" href="d.html#term-distributed-garbage-collection"><em class="xref std std-term">distributed garbage collection</em></a> because of the
low level of inter-process communication it requires.</p>
<p class="last">Inter-process <a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">references</em></a> to <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a> are
counted, but instead of simply counting the number of
references, each reference is given a weight. When an object
is created, the initial pointer to it is assigned a weight,
which is usually a power of 2 for easy division. The object
records the sum of all the weights of all of its references.
Whenever a reference is copied, its weight is divided equally
between the new and original copies. Since this operation
preserves the weighted reference sum, there is no need for
communication with the object at this time. When a reference
is deleted, the weighted reference sum is decremented by the
weight of the reference. This is communicated to the object by
sending it a message. When the object detects that the
weighted reference sum has dropped to zero, it may be
<a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclaimed</em></a>. The algorithm is tolerant of communication
protocols which don&#8217;t guarantee order of arrival of deletion
messages.</p>
</dd>
<dt id="term-white">white</dt>
<dd><p class="first">In a <a class="reference internal" href="t.html#term-tri-color-marking"><em class="xref std std-term">tri-color marking</em></a> scheme, white <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a>
are objects that were <a class="reference internal" href="c.html#term-condemned-set"><em class="xref std std-term">condemned</em></a> at the
beginning of the <a class="reference internal" href="c.html#term-collection-cycle"><em class="xref std std-term">collection cycle</em></a> and have not been
shown to be <a class="reference internal" href="r.html#term-reachable"><em class="xref std std-term">reachable</em></a>. When <a class="reference internal" href="t.html#term-trace"><em class="xref std std-term">tracing</em></a> is
complete, white objects will be subject to <a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclamation</em></a>.</p>
<div class="admonition-opposite-term last admonition">
<p class="first admonition-title">Opposite terms</p>
<p class="last"><a class="reference internal" href="g.html#term-gray"><em class="xref std std-term">gray</em></a>, <a class="reference internal" href="b.html#term-black"><em class="xref std std-term">black</em></a>.</p>
</div>
</dd>
<dt id="term-word">word</dt>
<dd><div class="admonition-also-known-as first admonition">
<p class="first admonition-title">Also known as</p>
<p class="last"><em>machine word</em>.</p>
</div>
<p>Almost all processor architectures have a characteristic data
size that is handled most efficiently. This is known as the
<em>word size</em>, and data of that size are known as <em>words</em>. The
word size is usually a power of two multiple of <a class="reference internal" href="b.html#term-byte-2"><em class="xref std std-term">bytes<sup>(2)</sup></em></a>.</p>
<p>Often the platform&#8217;s word size is used to characterize the
architecture by quoting the number of bits in it. For example,
a 32-bit platform has a word size of four bytes and a 64-bit
platform has eight-byte words (assuming 8-bit bytes).
Typically, <a class="reference internal" href="p.html#term-pointer"><em class="xref std std-term">pointers</em></a> are the size of a word,
and traditionally this determined the word size. Nowadays,
word size is usually driven by the need for more accuracy and
range in mathematical calculations.</p>
<div class="admonition-historical-note admonition">
<p class="first admonition-title">Historical note</p>
<p class="last">In the past, the convenience of dealing with powers of two was not as significant, and word sizes such as 36- or 72-bits were not unknown.</p>
</div>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="a.html#term-alignment"><em class="xref std std-term">alignment</em></a>, <a class="reference internal" href="g.html#term-grain"><em class="xref std std-term">grain</em></a>.</p>
</div>
</dd>
<dt id="term-working-set">working set</dt>
<dd><p class="first">The working set of a program or system is that <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> or set of <a class="reference internal" href="a.html#term-address"><em class="xref std std-term">addresses</em></a> which it will use
in the near future.</p>
<p>This term is generally used when discussing <a class="reference internal" href="m.html#term-miss-rate"><em class="xref std std-term">miss rates</em></a>
at some <a class="reference internal" href="s.html#term-storage-level"><em class="xref std std-term">storage level</em></a>; the time scale of &#8220;near future&#8221;
depends upon the cost of a <a class="reference internal" href="m.html#term-miss"><em class="xref std std-term">miss</em></a>. The working set
should fit in the storage level; otherwise the system may
<a class="reference internal" href="t.html#term-thrash"><em class="xref std std-term">thrash</em></a>.</p>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="r.html#term-resident-set"><em class="xref std std-term">resident set</em></a>, <a class="reference internal" href="c.html#term-cache-2"><em class="xref std std-term">cache<sup>(2)</sup></em></a>, <a class="reference internal" href="s.html#term-storage-hierarchy"><em class="xref std std-term">storage hierarchy</em></a>.</p>
</div>
<div class="admonition-related-publication last admonition">
<p class="first admonition-title">Related publication</p>
<p class="last"><a class="reference internal" href="../mmref/bib.html#ds72"><em>Denning &amp; Schwartz (1972)</em></a>.</p>
</div>
</dd>
<dt id="term-worst-fit">worst fit</dt>
<dd><p class="first">The <a class="reference internal" href="a.html#term-allocation-policy"><em class="xref std std-term">allocation policy</em></a> that always allocates from the
largest <a class="reference internal" href="f.html#term-free-block"><em class="xref std std-term">free block</em></a>. Commonly implemented using a
size-ordered <a class="reference internal" href="f.html#term-free-block-chain"><em class="xref std std-term">free block chain</em></a> (largest first).</p>
<p>In practice, this tends to work quite badly because it
eliminates all large blocks, so large requests cannot be met.</p>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="a.html#term-allocation-policy"><em class="xref std std-term">allocation policy</em></a>, <a class="reference internal" href="f.html#term-first-fit"><em class="xref std std-term">first fit</em></a>, <a class="reference internal" href="b.html#term-best-fit"><em class="xref std std-term">best fit</em></a>.</p>
</div>
<div class="admonition-related-publication last admonition">
<p class="first admonition-title">Related publication</p>
<p class="last"><a class="reference internal" href="../mmref/bib.html#wil95"><em>Wilson et al. (1995)</em></a>.</p>
</div>
</dd>
<dt id="term-wrapped">wrapped</dt>
<dd><p class="first">A value is wrapped if it is encoded with type information.</p>
<div class="admonition-opposite-term admonition">
<p class="first admonition-title">Opposite term</p>
<p class="last"><a class="reference internal" href="u.html#term-unwrapped"><em class="xref std std-term">unwrapped</em></a>.</p>
</div>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="#term-wrapper"><em class="xref std std-term">wrapper</em></a>, <a class="reference internal" href="b.html#term-boxed"><em class="xref std std-term">boxed</em></a>, <a class="reference internal" href="t.html#term-tag"><em class="xref std std-term">tag</em></a>.</p>
</div>
<div class="admonition-related-publication last admonition">
<p class="first admonition-title">Related publication</p>
<p class="last"><a class="reference internal" href="../mmref/bib.html#gudeman93"><em>Gudeman (1993)</em></a>.</p>
</div>
</dd>
<dt id="term-wrapper">wrapper</dt>
<dd><p class="first">A wrapper is that part of a <a class="reference internal" href="#term-wrapped"><em class="xref std std-term">wrapped</em></a> representation
that is copied when the value is passed by value.</p>
<p>The wrapper does not include parts of the representation that
are accessed indirectly, and are not copied when the value is
passed.</p>
<p>For instance, a <a class="reference internal" href="../mmref/lang.html#term-lisp"><em class="xref std std-term">Lisp</em></a> implementation might use the top
two bits of a value representation as a <a class="reference internal" href="t.html#term-tag"><em class="xref std std-term">tag</em></a> to
distinguish between integers and <a class="reference internal" href="c.html#term-cons-1"><em class="xref std std-term">cons<sup>(1)</sup></em></a> cells,
setting these bits to 01 for a <a class="reference internal" href="p.html#term-pointer"><em class="xref std std-term">pointer</em></a> to a cons cell
and 11 for an integer. Then the wrapped value of the number 4
would have binary representation 11000…00100, and the
wrapper for this number is the whole of this wrapped value.
The pointer to a cons cell stored at location 4 would have
binary representation 01000…00100. The wrapped value of the
cons cell is the combination of this pointer and the cons cell
in memory itself. The wrapper of the cons cell is just the
pointer; when the cons cell is passed as a function argument,
just the pointer is passed.</p>
<div class="admonition-see-also admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="#term-wrapped"><em class="xref std std-term">wrapped</em></a>, <a class="reference internal" href="b.html#term-boxed"><em class="xref std std-term">boxed</em></a>.</p>
</div>
<div class="admonition-related-publication last admonition">
<p class="first admonition-title">Related publication</p>
<p class="last"><a class="reference internal" href="../mmref/bib.html#gudeman93"><em>Gudeman (1993)</em></a>.</p>
</div>
</dd>
<dt id="term-write-barrier">write barrier</dt>
<dd><p class="first">A write <a class="reference internal" href="b.html#term-barrier-1"><em class="xref std std-term">barrier<sup>(1)</sup></em></a> is a block on writing to certain
<a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> <a class="reference internal" href="m.html#term-memory-location"><em class="xref std std-term">locations</em></a> by
certain threads or processes.</p>
<div class="admonition-relevance-to-memory-management admonition">
<p class="first admonition-title">Relevance to memory management</p>
<p class="last">Write barriers are used for <a class="reference internal" href="i.html#term-incremental-garbage-collection"><em class="xref std std-term">incremental</em></a> or <a class="reference internal" href="p.html#term-parallel-garbage-collection"><em class="xref std std-term">concurrent</em></a> <a class="reference internal" href="g.html#term-garbage-collection"><em class="xref std std-term">garbage collection</em></a>.
They are also used to maintain <a class="reference internal" href="r.html#term-remembered-set"><em class="xref std std-term">remembered sets</em></a> for
<a class="reference internal" href="g.html#term-generational-garbage-collection"><em class="xref std std-term">generational</em></a>
<a class="reference internal" href="g.html#term-garbage-collector"><em class="xref std std-term">collectors<sup>(1)</sup></em></a>.</p>
</div>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="r.html#term-read-barrier"><em class="xref std std-term">read barrier</em></a>.</p>
</div>
</dd>
<dt id="term-write-fault">write fault</dt>
<dd><p class="first">An exception which occurs when writing to an address in
<a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a>.</p>
<p>This is probably either a <a class="reference internal" href="p.html#term-page-fault"><em class="xref std std-term">page fault</em></a>, an
<a class="reference internal" href="i.html#term-invalid-page-fault"><em class="xref std std-term">invalid page fault</em></a> or a <a class="reference internal" href="p.html#term-protection-fault"><em class="xref std std-term">protection fault</em></a>.</p>
<div class="admonition-similar-term admonition">
<p class="first admonition-title">Similar term</p>
<p class="last"><a class="reference internal" href="s.html#term-segmentation-violation"><em class="xref std std-term">segmentation violation</em></a>.</p>
</div>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="r.html#term-read-fault"><em class="xref std std-term">read fault</em></a>.</p>
</div>
</dd>
</dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/logo.png" alt="Logo"/>
</a></p>
<h4>Previous topic</h4>
<p class="topless"><a href="v.html"
title="previous chapter">Memory Management Glossary: V</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="z.html"
title="next chapter">Memory Management Glossary: Z</a></p><h4>Downloads</h4>
<p class="topless">
<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
<a href="http://www.ravenbrook.com/project/mps/release/">All MPS Kit releases</a>
</p>
<h4>Issues</h4>
<p class="topless">
<a href="http://www.ravenbrook.com/project/mps/issue/?action=list&amp;view=status%3dopen&amp;display=Job:Priority:Title&amp;sort=Priority">Known issues</a><br>
<a href="http://www.ravenbrook.com/project/mps/issue/?action=fixed&release_fixed=1.111.0">Issues fixed in release 1.111.0</a>
</p><h4>Contact us</h4>
<p class="topless"><a href="mailto:mps-questions@ravenbrook.com">mps-questions@ravenbrook.com</a></p>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="z.html" title="Memory Management Glossary: Z"
>next</a> |</li>
<li class="right" >
<a href="v.html" title="Memory Management Glossary: V"
>previous</a> |</li>
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
<li><a href="index.html" >Memory Management Glossary</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">Copyright</a> 2013, Ravenbrook Limited.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>