aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGareth Rees2013-05-11 20:07:28 +0100
committerGareth Rees2013-05-11 20:07:28 +0100
commiteaad4493d48f015c98331b92ff73434e100bcf09 (patch)
treed31caa2abbe84c9151069510bd2ed01ab4a536b7
parente03ccc98ac3a29acd2856ba8f6022b23b0131665 (diff)
downloademacs-eaad4493d48f015c98331b92ff73434e100bcf09.tar.gz
emacs-eaad4493d48f015c98331b92ff73434e100bcf09.zip
Bring html up to date.
Copied from Perforce Change: 181731 ServerID: perforce.ravenbrook.com
-rw-r--r--mps/manual/html/_downloads/scheme-advanced.c46
-rw-r--r--mps/manual/html/_downloads/scheme.c17
-rw-r--r--mps/manual/html/_sources/design/cbs.txt695
-rw-r--r--mps/manual/html/_sources/design/check.txt106
-rw-r--r--mps/manual/html/_sources/glossary/c.txt33
-rw-r--r--mps/manual/html/_sources/glossary/k.txt11
-rw-r--r--mps/manual/html/_sources/guide/advanced.txt29
-rw-r--r--mps/manual/html/_sources/guide/lang.txt41
-rw-r--r--mps/manual/html/_sources/mmref/bib.txt8
-rw-r--r--mps/manual/html/_sources/mmref/lang.txt2
-rw-r--r--mps/manual/html/_sources/pool/amc.txt38
-rw-r--r--mps/manual/html/_sources/pool/amcz.txt37
-rw-r--r--mps/manual/html/_sources/pool/ams.txt59
-rw-r--r--mps/manual/html/_sources/pool/awl.txt81
-rw-r--r--mps/manual/html/_sources/pool/lo.txt28
-rw-r--r--mps/manual/html/_sources/pool/mfs.txt48
-rw-r--r--mps/manual/html/_sources/pool/mv.txt72
-rw-r--r--mps/manual/html/_sources/pool/mvff.txt128
-rw-r--r--mps/manual/html/_sources/pool/mvt.txt153
-rw-r--r--mps/manual/html/_sources/pool/snc.txt54
-rw-r--r--mps/manual/html/_sources/topic/allocation.txt33
-rw-r--r--mps/manual/html/_sources/topic/arena.txt151
-rw-r--r--mps/manual/html/_sources/topic/debugging.txt13
-rw-r--r--mps/manual/html/_sources/topic/error.txt2
-rw-r--r--mps/manual/html/_sources/topic/format.txt4
-rw-r--r--mps/manual/html/_sources/topic/index.txt1
-rw-r--r--mps/manual/html/_sources/topic/interface.txt47
-rw-r--r--mps/manual/html/_sources/topic/keyword.txt190
-rw-r--r--mps/manual/html/_sources/topic/pool.txt30
-rw-r--r--mps/manual/html/_static/pygments.css4
-rw-r--r--mps/manual/html/design/arena.html2
-rw-r--r--mps/manual/html/design/bt.html2
-rw-r--r--mps/manual/html/design/config.html10
-rw-r--r--mps/manual/html/genindex.html84
-rw-r--r--mps/manual/html/glossary/c.html39
-rw-r--r--mps/manual/html/glossary/k.html10
-rw-r--r--mps/manual/html/guide/advanced.html135
-rw-r--r--mps/manual/html/guide/debug.html8
-rw-r--r--mps/manual/html/guide/lang.html151
-rw-r--r--mps/manual/html/index.html37
-rw-r--r--mps/manual/html/mmref/bib.html4
-rw-r--r--mps/manual/html/mmref/lang.html2
-rw-r--r--mps/manual/html/objects.invbin21989 -> 22212 bytes
-rw-r--r--mps/manual/html/pool/amc.html41
-rw-r--r--mps/manual/html/pool/amcz.html40
-rw-r--r--mps/manual/html/pool/ams.html63
-rw-r--r--mps/manual/html/pool/awl.html95
-rw-r--r--mps/manual/html/pool/index.html8
-rw-r--r--mps/manual/html/pool/lo.html31
-rw-r--r--mps/manual/html/pool/mfs.html45
-rw-r--r--mps/manual/html/pool/mv.html74
-rw-r--r--mps/manual/html/pool/mvff.html113
-rw-r--r--mps/manual/html/pool/mvt.html119
-rw-r--r--mps/manual/html/pool/snc.html60
-rw-r--r--mps/manual/html/searchindex.js2
-rw-r--r--mps/manual/html/topic/allocation.html132
-rw-r--r--mps/manual/html/topic/arena.html185
-rw-r--r--mps/manual/html/topic/cache.html36
-rw-r--r--mps/manual/html/topic/collection.html42
-rw-r--r--mps/manual/html/topic/critical.html12
-rw-r--r--mps/manual/html/topic/debugging.html37
-rw-r--r--mps/manual/html/topic/error.html42
-rw-r--r--mps/manual/html/topic/finalization.html40
-rw-r--r--mps/manual/html/topic/format.html90
-rw-r--r--mps/manual/html/topic/frame.html20
-rw-r--r--mps/manual/html/topic/index.html231
-rw-r--r--mps/manual/html/topic/interface.html21
-rw-r--r--mps/manual/html/topic/keyword.html369
-rw-r--r--mps/manual/html/topic/location.html64
-rw-r--r--mps/manual/html/topic/message.html48
-rw-r--r--mps/manual/html/topic/pattern.html26
-rw-r--r--mps/manual/html/topic/plinth.html4
-rw-r--r--mps/manual/html/topic/pool.html65
-rw-r--r--mps/manual/html/topic/root.html66
-rw-r--r--mps/manual/html/topic/scanning.html72
-rw-r--r--mps/manual/html/topic/telemetry.html58
-rw-r--r--mps/manual/html/topic/thread.html38
-rw-r--r--mps/manual/html/topic/weak.html20
78 files changed, 2796 insertions, 2258 deletions
diff --git a/mps/manual/html/_downloads/scheme-advanced.c b/mps/manual/html/_downloads/scheme-advanced.c
index 7e6754be1d0..2c86aade2dd 100644
--- a/mps/manual/html/_downloads/scheme-advanced.c
+++ b/mps/manual/html/_downloads/scheme-advanced.c
@@ -4470,9 +4470,9 @@ int main(int argc, char *argv[])
4470 4470
4471 /* Create an MPS arena. There is usually only one of these in a process. 4471 /* Create an MPS arena. There is usually only one of these in a process.
4472 It holds all the MPS "global" state and is where everything happens. */ 4472 It holds all the MPS "global" state and is where everything happens. */
4473 res = mps_arena_create(&arena, 4473 res = mps_arena_create_k(&arena, mps_arena_class_vm(),
4474 mps_arena_class_vm(), 4474 (mps_arg_s[]){{MPS_KEY_ARENA_SIZE, .val.size = 32 * 1024 * 1024},
4475 (size_t)(32ul * 1024 * 1024)); 4475 {MPS_KEY_ARGS_END}});
4476 if (res != MPS_RES_OK) error("Couldn't create arena"); 4476 if (res != MPS_RES_OK) error("Couldn't create arena");
4477 4477
4478 /* Create the object format. */ 4478 /* Create the object format. */
@@ -4488,31 +4488,29 @@ int main(int argc, char *argv[])
4488 4488
4489 /* Create an Automatic Mostly-Copying (AMC) pool to manage the Scheme 4489 /* Create an Automatic Mostly-Copying (AMC) pool to manage the Scheme
4490 objects. This is a kind of copying garbage collector. */ 4490 objects. This is a kind of copying garbage collector. */
4491 res = mps_pool_create(&obj_pool, 4491 res = mps_pool_create_k(&obj_pool, arena, mps_class_amc(),
4492 arena, 4492 (mps_arg_s[]){{MPS_KEY_CHAIN, .val.chain = obj_chain},
4493 mps_class_amc(), 4493 {MPS_KEY_FORMAT, .val.format = obj_fmt},
4494 obj_fmt, 4494 {MPS_KEY_ARGS_END}});
4495 obj_chain);
4496 if (res != MPS_RES_OK) error("Couldn't create obj pool"); 4495 if (res != MPS_RES_OK) error("Couldn't create obj pool");
4497 4496
4498 /* Create an allocation point for fast in-line allocation of objects 4497 /* Create an allocation point for fast in-line allocation of objects
4499 from the `obj_pool`. You'd usually want one of these per thread 4498 from the `obj_pool`. You'd usually want one of these per thread
4500 for your primary pools. This interpreter is single threaded, though, 4499 for your primary pools. This interpreter is single threaded, though,
4501 so we just have it in a global. See topic/allocation. */ 4500 so we just have it in a global. See topic/allocation. */
4502 res = mps_ap_create(&obj_ap, obj_pool); 4501 res = mps_ap_create_k(&obj_ap, obj_pool, mps_args_none);
4503 if (res != MPS_RES_OK) error("Couldn't create obj allocation point"); 4502 if (res != MPS_RES_OK) error("Couldn't create obj allocation point");
4504 4503
4505 /* Create an Automatic Mostly-Copying Zero-rank (AMCZ) pool to 4504 /* Create an Automatic Mostly-Copying Zero-rank (AMCZ) pool to
4506 manage the leaf objects. */ 4505 manage the leaf objects. */
4507 res = mps_pool_create(&leaf_pool, 4506 res = mps_pool_create_k(&leaf_pool, arena, mps_class_amcz(),
4508 arena, 4507 (mps_arg_s[]){{MPS_KEY_CHAIN, .val.chain = obj_chain},
4509 mps_class_amcz(), 4508 {MPS_KEY_FORMAT, .val.format = obj_fmt},
4510 obj_fmt, 4509 {MPS_KEY_ARGS_END}});
4511 obj_chain);
4512 if (res != MPS_RES_OK) error("Couldn't create leaf pool"); 4510 if (res != MPS_RES_OK) error("Couldn't create leaf pool");
4513 4511
4514 /* Create allocation point for leaf objects. */ 4512 /* Create allocation point for leaf objects. */
4515 res = mps_ap_create(&leaf_ap, leaf_pool); 4513 res = mps_ap_create_k(&leaf_ap, leaf_pool, mps_args_none);
4516 if (res != MPS_RES_OK) error("Couldn't create leaf objects allocation point"); 4514 if (res != MPS_RES_OK) error("Couldn't create leaf objects allocation point");
4517 4515
4518 /* Create the buckets format. */ 4516 /* Create the buckets format. */
@@ -4521,17 +4519,21 @@ int main(int argc, char *argv[])
4521 4519
4522 /* Create an Automatic Weak Linked (AWL) pool to manage the hash table 4520 /* Create an Automatic Weak Linked (AWL) pool to manage the hash table
4523 buckets. */ 4521 buckets. */
4524 res = mps_pool_create(&buckets_pool, 4522 res = mps_pool_create_k(&buckets_pool, arena, mps_class_awl(),
4525 arena, 4523 (mps_arg_s[]){{MPS_KEY_FORMAT, .val.format = buckets_fmt},
4526 mps_class_awl(), 4524 {MPS_KEY_AWL_FIND_DEPENDENT,
4527 buckets_fmt, 4525 .val.addr_method = buckets_find_dependent},
4528 buckets_find_dependent); 4526 {MPS_KEY_ARGS_END}});
4529 if (res != MPS_RES_OK) error("Couldn't create buckets pool"); 4527 if (res != MPS_RES_OK) error("Couldn't create buckets pool");
4530 4528
4531 /* Create allocation points for weak and strong buckets. */ 4529 /* Create allocation points for weak and strong buckets. */
4532 res = mps_ap_create(&strong_buckets_ap, buckets_pool, mps_rank_exact()); 4530 res = mps_ap_create_k(&strong_buckets_ap, buckets_pool,
4531 (mps_arg_s[]){{MPS_KEY_RANK, .val.rank = mps_rank_exact()},
4532 {MPS_KEY_ARGS_END}});
4533 if (res != MPS_RES_OK) error("Couldn't create strong buckets allocation point"); 4533 if (res != MPS_RES_OK) error("Couldn't create strong buckets allocation point");
4534 res = mps_ap_create(&weak_buckets_ap, buckets_pool, mps_rank_weak()); 4534 res = mps_ap_create_k(&weak_buckets_ap, buckets_pool,
4535 (mps_arg_s[]){{MPS_KEY_RANK, .val.rank = mps_rank_weak()},
4536 {MPS_KEY_ARGS_END}});
4535 if (res != MPS_RES_OK) error("Couldn't create weak buckets allocation point"); 4537 if (res != MPS_RES_OK) error("Couldn't create weak buckets allocation point");
4536 4538
4537 /* Register the current thread with the MPS. The MPS must sometimes 4539 /* Register the current thread with the MPS. The MPS must sometimes
diff --git a/mps/manual/html/_downloads/scheme.c b/mps/manual/html/_downloads/scheme.c
index 3d595e0f641..2bac9c0042d 100644
--- a/mps/manual/html/_downloads/scheme.c
+++ b/mps/manual/html/_downloads/scheme.c
@@ -4391,9 +4391,9 @@ int main(int argc, char *argv[])
4391 4391
4392 /* Create an MPS arena. There is usually only one of these in a process. 4392 /* Create an MPS arena. There is usually only one of these in a process.
4393 It holds all the MPS "global" state and is where everything happens. */ 4393 It holds all the MPS "global" state and is where everything happens. */
4394 res = mps_arena_create(&arena, 4394 res = mps_arena_create_k(&arena, mps_arena_class_vm(),
4395 mps_arena_class_vm(), 4395 (mps_arg_s[]){{MPS_KEY_ARENA_SIZE, .val.size = 32 * 1024 * 1024},
4396 (size_t)(32 * 1024 * 1024)); 4396 {MPS_KEY_ARGS_END}});
4397 if (res != MPS_RES_OK) error("Couldn't create arena"); 4397 if (res != MPS_RES_OK) error("Couldn't create arena");
4398 4398
4399 /* Create the object format. */ 4399 /* Create the object format. */
@@ -4409,18 +4409,17 @@ int main(int argc, char *argv[])
4409 4409
4410 /* Create an Automatic Mostly-Copying (AMC) pool to manage the Scheme 4410 /* Create an Automatic Mostly-Copying (AMC) pool to manage the Scheme
4411 objects. This is a kind of copying garbage collector. */ 4411 objects. This is a kind of copying garbage collector. */
4412 res = mps_pool_create(&obj_pool, 4412 res = mps_pool_create_k(&obj_pool, arena, mps_class_amc(),
4413 arena, 4413 (mps_arg_s[]){{MPS_KEY_CHAIN, .val.chain = obj_chain},
4414 mps_class_amc(), 4414 {MPS_KEY_FORMAT, .val.format = obj_fmt},
4415 obj_fmt, 4415 {MPS_KEY_ARGS_END}});
4416 obj_chain);
4417 if (res != MPS_RES_OK) error("Couldn't create obj pool"); 4416 if (res != MPS_RES_OK) error("Couldn't create obj pool");
4418 4417
4419 /* Create an allocation point for fast in-line allocation of objects 4418 /* Create an allocation point for fast in-line allocation of objects
4420 from the `obj_pool`. You'd usually want one of these per thread 4419 from the `obj_pool`. You'd usually want one of these per thread
4421 for your primary pools. This interpreter is single threaded, though, 4420 for your primary pools. This interpreter is single threaded, though,
4422 so we just have it in a global. See topic/allocation. */ 4421 so we just have it in a global. See topic/allocation. */
4423 res = mps_ap_create(&obj_ap, obj_pool); 4422 res = mps_ap_create_k(&obj_ap, obj_pool, mps_args_none);
4424 if (res != MPS_RES_OK) error("Couldn't create obj allocation point"); 4423 if (res != MPS_RES_OK) error("Couldn't create obj allocation point");
4425 4424
4426 /* Register the current thread with the MPS. The MPS must sometimes 4425 /* Register the current thread with the MPS. The MPS must sometimes
diff --git a/mps/manual/html/_sources/design/cbs.txt b/mps/manual/html/_sources/design/cbs.txt
deleted file mode 100644
index 0956be703a0..00000000000
--- a/mps/manual/html/_sources/design/cbs.txt
+++ /dev/null
@@ -1,695 +0,0 @@
1.. sources:
2
3 `<https://info.ravenbrook.com/project/mps/master/design/cbs/>`_
4
5
6.. mps:prefix:: design.mps.cbs
7
8Coalescing block structure
9==========================
10
11
12Introduction
13------------
14
15:mps:tag:`intro` This is the design for :mps:ref:`impl.c.cbs`, which
16implements a data structure for the management of non-intersecting
17memory ranges, with eager coalescence.
18
19:mps:tag:`readership` This document is intended for any MM developer.
20
21:mps:tag:`source` :mps:ref:`design.mps.poolmv2`, :mps:ref:`design.mps.poolmvff`.
22
23:mps:tag:`overview` The "coalescing block structure" is a set of
24addresses (or a subset of address space), with provision for efficient
25management of contiguous ranges, including insertion and deletion,
26high level communication with the client about the size of contiguous
27ranges, and detection of protocol violations.
28
29
30History
31-------
32
33:mps:tag:`hist.0` This document was derived from the outline in
34:mps:ref:`design.mps.poolmv2(2)`. Written by Gavin Matthews
351998-05-01.
36
37:mps:tag:`hist.1` Updated by Gavin Matthews 1998-07-22 in response to
38approval comments in :mps:ref:`change.epcore.anchovy.160040` There is
39too much fragmentation in trapping memory.
40
41:mps:tag:`hist.2` Updated by Gavin Matthews (as part of
42:mps:ref:`change.epcore.brisling.160158`: MVFF cannot be instantiated
43with 4-byte alignment) to document new alignment restrictions.
44
45:mps:tag:`hist.3` Converted from MMInfo database design document.
46Richard Brooksby, 2002-06-07.
47
48:mps:tag:`hist.4` Converted to reStructuredText. Gareth Rees,
492013-04-14.
50
51
52Definitions
53-----------
54
55:mps:tag:`def.range` A (contiguous) range of addresses is a semi-open
56interval on address space.
57
58:mps:tag:`def.isolated` A contiguous range is isolated with respect to
59some property it has, if adjacent elements do not have that property.
60
61:mps:tag:`def.interesting` A block is interesting if it is of at least
62the minimum interesting size specified by the client.
63
64
65Requirements
66------------
67
68:mps:tag:`req.set` Must maintain a set of addresses.
69
70:mps:tag:`req.fast` Common operations must have a low amortized cost.
71
72:mps:tag:`req.add` Must be able to add address ranges to the set.
73
74:mps:tag:`req.remove` Must be able to remove address ranges from the set.
75
76:mps:tag:`req.size` Must report concisely to the client when isolated
77contiguous ranges of at least a certain size appear and disappear.
78
79:mps:tag:`req.iterate` Must support the iteration of all isolated
80contiguous ranges. This will not be a common operation.
81
82:mps:tag:`req.protocol` Must detect protocol violations.
83
84:mps:tag:`req.debug` Must support debugging of client code.
85
86:mps:tag:`req.small` Must have a small space overhead for the storage
87of typical subsets of address space and not have abysmal overhead for
88the storage of any subset of address space.
89
90:mps:tag:`req.align` Must support an alignment (the alignment of all
91addresses specifying ranges) of down to ``sizeof(void *)`` without
92losing memory.
93
94
95Interface
96---------
97
98:mps:tag:`header` CBS is used through :mps:ref:`impl.h.cbs`.
99
100
101External types
102..............
103
104.. c:type:: typedef struct CBSStruct CBSStruct, *CBS;
105
106:mps:tag:`type.cbs` :c:type:`CBS` is the main datastructure for
107manipulating a CBS. It is intended that a :c:type:`CBSStruct` be
108embedded in another structure. No convenience functions are provided
109for the allocation or deallocation of the CBS.
110
111.. c:type:: typedef struct CBSBlockStruct CBSBlockStruct, *CBSBlock;
112
113:mps:tag:`type.cbs.block` :c:type:`CBSBlock` is the data-structure
114that represents an isolated contiguous range held by the CBS. It is
115returned by the new and delete methods described below.
116
117:mps:tag:`type.cbs.method` The following methods are provided as
118callbacks to advise the client of certain events. The implementation
119of these functions should not cause any CBS function to be called on
120the same CBS. In this respect, the CBS module is not re-entrant.
121
122.. c:type:: typedef void (*CBSChangeSizeMethod)(CBS cbs, CBSBlock block, Size oldSize, SizeNewSize);
123
124:mps:tag:`type.cbs.change.size.method` :c:type:`CBSChangeSizeMethod`
125is the function pointer type, four instances of which are optionally
126registered via CBSInit.
127
128These callbacks are invoked under :c:func:`CBSInsert`,
129:c:func:`CBSDelete`, or :c:func:`CBSSetMinSize` in certain
130circumstances. Unless otherwise stated, ``oldSize`` and ``newSize``
131will both be non-zero, and different. The accessors
132:c:func:`CBSBlockBase`, :c:func:`CBSBlockLimit`, and
133:c:func:`CBSBlockSize` may be called from within these callbacks,
134except within the delete callback when ``newSize`` is zero. See
135:mps:ref:`.impl.callback` for implementation details.
136
137.. c:type:: typedef Bool (*CBSIterateMethod)(CBS cbs, CBSBlock block, void *closureP, unsigned long closureS);
138
139:mps:tag:`type.cbs.iterate.method` :c:type:`CBSIterateMethod` is a
140function pointer type for a client method invoked by the CBS module
141for every isolated contiguous range in address order, when passed to
142the :c:func:`CBSIterate` or :c:func:`CBSIterateLarge` functions. The
143function returns a boolean indicating whether to continue with the
144iteration.
145
146
147External functions
148..................
149
150.. c:function:: Res CBSInit(Arena arena, CBS cbs, CBSChangeSizeMethod new, CBSChangeSizeMethod delete, CBSChangeSizeMethod grow, CBSChangeSizeMethod shrink, Size minSize, Align alignment, Bool mayUseInline)
151
152:mps:tag:`function.cbs.init` :c:func:`CBSInit` is the function that
153initialises the CBS structure. It performs allocation in the supplied
154arena. Four methods are passed in as function pointers (see
155:mps:ref:`.type.*` above), any of which may be ``NULL``. It receives a
156minimum size, which is used when determining whether to call the
157optional methods. The ``mayUseInline`` Boolean indicates whether the
158CBS may use the memory in the ranges as a low-memory fallback (see
159:mps:ref:`.impl.low-mem`). The alignment indicates the alignment of
160ranges to be maintained. An initialised CBS contains no ranges.
161
162:mps:tag:`function.cbs.init.may-use-inline` If ``mayUseInline`` is
163set, then ``alignment`` must be at least ``sizeof(void *)``. In this
164mode, the CBS will never fail to insert or delete ranges, even if
165memory for control structures becomes short. Note that, in such cases,
166the CBS may defer notification of new/grow events, but will report
167available blocks in :c:func:`CBSFindFirst` and :c:func:`CBSFindLast`.
168Such low memory conditions will be rare and transitory. See
169:mps:ref:`.align` for more details.
170
171.. c:function:: void CBSFinish(CBS cbs)
172
173:mps:tag:`function.cbs.finish` :c:func:`CBSFinish` is the function
174that finishes the CBS structure and discards any other resources
175associated with the CBS.
176
177.. c:function:: Res CBSInsert(CBS cbs, Addr base, Addr limit)
178
179:mps:tag:`function.cbs.insert` :c:func:`CBSInsert` is the function
180used to add a contiguous range specified by ``[base,limit)`` to the
181CBS. If any part of the range is already in the CBS, then
182:c:macro:`ResFAIL` is returned, and the CBS is unchanged. This
183function may cause allocation; if this allocation fails, and any
184contingency mechanism fails, then :c:macro:`ResMEMORY` is returned,
185and the CBS is unchanged.
186
187:mps:tag:`function.cbs.insert.callback` :c:func:`CBSInsert` will invoke callbacks as follows:
188
189* ``new``: when a new block is created that is interesting. ``oldSize == 0; newSize >= minSize``.
190
191* ``new``: when an uninteresting block coalesces to become interesting. ``0 < oldSize < minSize <= newSize``.
192
193* ``delete``: when two interesting blocks are coalesced. ``grow`` will also be invoked in this case on the larger of the two blocks. ``newSize == 0; oldSize >= minSize``.
194
195* ``grow``: when an interesting block grows in size. ``minSize <= oldSize < newSize``.
196
197.. c:function:: Res CBSDelete(CBS cbs, Addr base, Addr limit)
198
199:mps:tag:`function.cbs.delete` :c:func:`CBSDelete` is the function
200used to remove a contiguous range specified by ``[base,limit)`` from
201the CBS. If any part of the range is not in the CBS, then
202:c:macro:`ResFAIL` is returned, and the CBS is unchanged. This
203function may cause allocation; if this allocation fails, and any
204contingency mechanism fails, then :c:macro:`ResMEMORY` is returned,
205and the CBS is unchanged.
206
207:mps:tag:`function.cbs.delete.callback` :c:func:`CBSDelete` will
208invoke callbacks as follows:
209
210* ``delete``: when an interesting block is entirely removed. ``newSize == 0; oldSize >= minSize``.
211* ``delete``: when an interesting block becomes uninteresting. ``0 < newSize < minSize <= oldSize``.
212* ``new``: when a block is split into two blocks, both of which are interesting. ``shrink`` will also be invoked in this case on the larger of the two blocks. ``oldSize == 0; newSize >= minSize``.
213* ``shrink``: when an interesting block shrinks in size, but remains interesting. ``minSize <= newSize < oldSize``.
214
215.. c:function:: void CBSIterate(CBS cbs, CBSIterateMethod iterate, void *closureP, unsigned long closureS)
216
217:mps:tag:`function.cbs.iterate` :c:func:`CBSIterate` is the function
218used to iterate all isolated contiguous ranges in a CBS. It receives a
219pointer, unsigned long closure pair to pass on to the iterator method,
220and an iterator method to invoke on every range in address order. If
221the iterator method returns ``FALSE``, then the iteration is
222terminated.
223
224.. c:function:: void CBSIterateLarge(CBS cbs, CBSIterateMethod iterate, void *closureP, unsigned long closureS)
225
226:mps:tag:`function.cbs.iterate.large` :c:func:`CBSIterateLarge` is the
227function used to iterate all isolated contiguous ranges of size
228greater than or equal to the client indicated minimum size in a CBS.
229It receives a pointer, unsigned long closure pair to pass on to the
230iterator method, and an iterator method to invoke on every large range
231in address order. If the iterator method returns ``FALSE``, then the
232iteration is terminated.
233
234.. c:function:: void CBSSetMinSize(CBS cbs, Size minSize)
235
236:mps:tag:`function.cbs.set.min-size` :c:func:`CBSSetMinSize` is the
237function used to change the minimum size of interest in a CBS. This
238minimum size is used to determine whether to invoke the client
239callbacks from :c:func:`CBSInsert` and :c:func:`CBSDelete`. This
240function will invoke either the ``new`` or ``delete`` callback for all
241blocks that are (in the semi-open interval) between the old and new
242values. ``oldSize`` and ``newSize`` will be the same in these cases.
243
244.. c:function:: Res CBSDescribe(CBS cbs, mps_lib_FILE *stream)
245
246:mps:tag:`function.cbs.describe` :c:func:`CBSDescribe` is a function
247that prints a textual representation of the CBS to the given stream,
248indicating the contiguous ranges in order, as well as the structure of
249the underlying splay tree implementation. It is provided for debugging
250purposes only.
251
252.. c:function:: Addr CBSBlockBase(CBSBlock block)
253
254:mps:tag:`function.cbs.block.base` The :c:func:`CBSBlockBase` function
255returns the base of the range represented by the :c:type:`CBSBlock`.
256This function may not be called from the delete callback when the
257block is being deleted entirely.
258
259.. note::
260
261 The value of the base of a particular :c:type:`CBSBlock` is not
262 guaranteed to remain constant across calls to :c:func:`CBSDelete`
263 and :c:func:`CBSInsert`, regardless of whether a callback is
264 invoked.
265
266.. c:function:: Addr CBSBlockLimit(CBSBlock block)
267
268:mps:tag:`function.cbs.block.limit` The :c:func:`CBSBlockLimit`
269function returns the limit of the range represented by the
270:c:type:`CBSBlock`. This function may not be called from the delete
271callback when the block is being deleted entirely.
272
273.. note::
274
275 The value of the limit of a particular :c:type:`CBSBlock` is not
276 guaranteed to remain constant across calls to :c:func:`CBSDelete`
277 and :c:func:`CBSInsert`, regardless of whether a callback is
278 invoked.
279
280.. c:function:: Size CBSBlockSize(CBSBlock block)
281
282:mps:tag:`function.cbs.block.size` The :c:func:`CBSBlockSize` function
283returns the size of the range represented by the :c:type:`CBSBlock`.
284This function may not be called from the ``delete`` callback when the
285block is being deleted entirely.
286
287.. note::
288
289 The value of the size of a particular :c:type:`CBSBlock` is not
290 guaranteed to remain constant across calls to :c:func:`CBSDelete`
291 and :c:func:`CBSInsert`, regardless of whether a callback is
292 invoked.
293
294.. c:function:: Res CBSBlockDescribe(CBSBlock block, mps_lib_FILE *stream)
295
296:mps:tag:`function.cbs.block.describe` The :c:func:`CBSBlockDescribe`
297function prints a textual representation of the :c:type:`CBSBlock` to
298the given stream. It is provided for debugging purposes only.
299
300.. c:function:: Bool CBSFindFirst(Addr *baseReturn, Addr *limitReturn, CBS cbs, Size size, CBSFindDelete findDelete)
301
302:mps:tag:`function.cbs.find.first` The :c:func:`CBSFindFirst` function
303locates the first block (in address order) within the CBS of at least
304the specified size, and returns its range. If there are no such
305blocks, it returns ``FALSE``. It optionally deletes the top, bottom,
306or all of the found range, depending on the ``findDelete`` argument
307(this saves a separate call to :c:func:`CBSDelete`, and uses the
308knowledge of exactly where we found the range), which must come from
309this enumeration::
310
311 enum {
312 CBSFindDeleteNONE, /* don't delete after finding */
313 CBSFindDeleteLOW, /* delete precise size from low end */
314 CBSFindDeleteHIGH, /* delete precise size from high end */
315 CBSFindDeleteENTIRE /* delete entire range */
316 };
317
318.. c:function:: Bool CBSFindLast(Addr *baseReturn, Addr *limitReturn, CBS cbs, Size size, CBSFindDelete findDelete)
319
320:mps:tag:`function.cbs.find.last` The :c:func:`CBSFindLast` function
321locates the last block (in address order) within the CBS of at least
322the specified size, and returns its range. If there are no such
323blocks, it returns ``FALSE``. Like :c:func:`CBSFindFirst`, it
324optionally deletes the range.
325
326.. c:function:: Bool CBSFindLargest(Addr *baseReturn, Addr *limitReturn, CBS cbs, CBSFindDelete findDelete)
327
328:mps:tag:`function.cbs.find.largest` The :c:func:`CBSFindLargest`
329function locates the largest block within the CBS, and returns its
330range. If there are no blocks, it returns ``FALSE``. Like
331:c:func:`CBSFindFirst`, it optionally deletes the range (specifying
332``CBSFindDeleteLOW`` or ``CBSFindDeleteHIGH`` has the same effect as
333``CBSFindDeleteENTIRE``).
334
335
336Alignment
337---------
338
339:mps:tag:`align` When ``mayUseInline`` is specified to permit inline
340data structures and hence avoid losing memory in low memory
341situations, the alignments that the CBS supports are constrained by
342three requirements:
343
344- The smallest possible range (namely one that is the alignment in
345 size) must be large enough to contain a single ``void *`` pointer (see
346 :mps:ref:`.impl.low-mem.inline.grain`);
347
348- Any larger range (namely one that is at least twice the alignment in
349 size) must be large enough to contain two ``void *`` pointers (see
350 :mps:ref:`.impl.low-mem.inline.block`);
351
352- It must be valid on all platforms to access a ``void *`` pointer
353 stored at the start of an aligned range.
354
355All alignments that meet these requirements are aligned to
356``sizeof(void *)``, so we take that as the minimum alignment.
357
358
359Implementation
360--------------
361
362:mps:tag:`impl` Note that this section is concerned with describing
363various aspects of the implementation. It does not form part of the
364interface definition.
365
366
367Size change callback protocol
368.............................
369
370:mps:tag:`impl.callback` The size change callback protocol concerns
371the mechanism for informing the client of the appearance and
372disappearance of interesting ranges. The intention is that each range
373has an identity (represented by the :c:type:`CBSBlock`). When blocks
374are split, the larger fragment retains the identity. When blocks are
375merged, the new block has the identity of the larger fragment.
376
377:mps:tag:`impl.callback.delete` Consider the case when the minimum
378size is ``minSize``, and :c:func:`CBSDelete` is called to remove a
379range of size ``middle``. The two (possibly non-existant) neighbouring
380ranges have (possibly zero) sizes ``left`` and ``right``. ``middle`` is part
381of the :c:type:`CBSBlock` ``middleBlock``.
382
383:mps:tag:`impl.callback.delete.delete` The ``delete`` callback will be
384called in this case if and only if::
385
386 left + middle + right >= minSize && left < minSize && right < minSize
387
388That is, the combined range is interesting, but neither remaining
389fragment is. It will be called with the following parameters:
390
391* ``block``: ``middleBlock``
392* ``oldSize``: ``left + middle + right``
393* ``newSize``: ``left >= right ? left : right``
394
395:mps:tag:`impl.callback.delete.new` The ``new`` callback will be
396called in this case if and only if::
397
398 left >= minSize && right >= minSize
399
400That is, both remaining fragments are interesting. It will be called
401with the following parameters:
402
403* ``block``: a new block
404* ``oldSize``: ``0``
405* ``newSize``: ``left >= right ? right : left``
406
407:mps:tag:`impl.callback.delete.shrink` The shrink callback will be
408called in this case if and only if::
409
410 left + middle + right >= minSize && (left >= minSize || right >= minSize)
411
412That is, at least one of the remaining fragments is still interesting. It will be called with the following parameters:
413
414* ``block``: ``middleBlock``
415* ``oldSize``: ``left + middle + right``
416* ``newSize``: ``left >= right ? left : right``
417
418:mps:tag:`impl.callback.insert` Consider the case when the minimum
419size is ``minSize``, and :c:func:`CBSInsert` is called to add a range
420of size ``middle``. The two (possibly non-existant) neighbouring
421blocks are ``leftBlock`` and ``rightBlock``, and have (possibly zero)
422sizes ``left`` and ``right``.
423
424:mps:tag:`impl.callback.insert.delete` The ``delete`` callback will be
425called in this case if and only if:
426
427 left >= minSize && right >= minSize
428
429That is, both neighbours were interesting. It will be called with the
430following parameters:
431
432* ``block``: ``left >= right ? rightBlock : leftBlock``
433* ``oldSize``: ``left >= right ? right : left``
434* ``newSize``: ``0``
435
436:mps:tag:`impl.callback.insert.new` The ``new`` callback will be
437called in this case if and only if:
438
439 left + middle + right >= minSize && left < minSize && right < minSize
440
441That is, the combined block is interesting, but neither neighbour was.
442It will be called with the following parameters:
443
444* ``block``: ``left >= right ? leftBlock : rightBlock``
445* ``oldSize``: ``left >= right ? left : right``
446* ``newSize``: ``left + middle + right``
447
448:mps:tag:`impl.callback.insert.grow` The ``grow`` callback will be
449called in this case if and only if::
450
451 left + middle + right >= minSize && (left >= minSize || right >= minSize)
452
453That is, at least one of the neighbours was interesting. It will be
454called with the following parameters:
455
456* ``block``: ``left >= right ? leftBlock : rightBlock``
457* ``oldSize``: ``left >= right ? left : right``
458* ``newSize``: ``left + middle + right``
459
460
461Splay tree
462..........
463
464:mps:tag:`impl.splay` The CBS is principally implemented using a splay
465tree (see :mps:ref:`design.mps.splay`). Each splay tree node is
466embedded in a CBSBlock that represents a semi-open address range. The
467key passed for comparison is the base of another range.
468
469:mps:tag:`impl.splay.fast-find` :c:func:`CBSFindFirst` and
470:c:func:`CBSFindLast` use the update/refresh facility of splay trees
471to store, in each :c:type:`CBSBlock`, an accurate summary of the
472maximum block size in the tree rooted at the corresponding splay node.
473This allows rapid location of the first or last suitable block, and
474very rapid failure if there is no suitable block.
475
476:mps:tag:`impl.find-largest` :c:func:`CBSFindLargest` simply finds out
477the size of the largest block in the CBS from the root of the tree
478(using :c:func:`SplayRoot`), and does :c:func:`SplayFindFirst` for a
479block of that size. This is O(log(*n*)) in the size of the free list,
480so it's about the best you can do without maintaining a separate
481priority queue, just to do :c:func:`CBSFindLargest`. Except when the
482emergency lists (see :mps:ref:`.impl.low-mem`) are in use, they are
483also searched.
484
485
486Low memory behaviour
487....................
488
489:mps:tag:`impl.low-mem` Low memory situations cause problems when the
490CBS tries to allocate a new :c:type:`CBSBlock` structure for a new
491isolated range as a result of either :c:func:`CBSInsert` or
492:c:func:`CBSDelete`, and there is insufficient memory to allocation
493the :c:type:`CBSBlock` structure:
494
495:mps:tag:`impl.low-mem.no-inline` If ``mayUseInline`` is ``FALSE``,
496then the range is not added to the CBS, and the call to
497:c:func:`CBSInsert` or :c:func:`CBSDelete` returns ``ResMEMORY``.
498
499:mps:tag:`impl.low-mem.inline` If ``mayUseInline`` is ``TRUE``:
500
501:mps:tag:`impl.low-mem.inline.block` If the range is large enough to
502contain an inline block descriptor consisting of two pointers, then it
503is kept on an emergency block list. The CBS will eagerly attempt to
504add this block back into the splay tree during subsequent calls to
505:c:func:`CBSInsert` and :c:func:`CBSDelete`. The CBS will also keep
506its emergency block list in address order, and will coalesce this list
507eagerly. Some performance degradation will be seen when the emergency
508block list is in use. Ranges on this emergency block list will not be
509made available to the CBS's client via callbacks. :c:func:`CBSIterate`
510and :c:func:`CBSIterateLarge` will not iterate over ranges on this
511list.
512
513:mps:tag:`impl.low-mem.inline.block.structure` The two pointers stored
514are to the next such block (or ``NULL``), and to the limit of the
515block, in that order.
516
517:mps:tag:`impl.low-mem.inline.grain` Otherwise, the range must be
518large enough to contain an inline grain descriptor consisting of one
519pointer, then it is kept on an emergency grain list. The CBS will
520eagerly attempt to add this grain back into either the splay tree or
521the emergency block list during subsequent calls to
522:c:func:`CBSInsert` and :c:func:`CBSDelete`. The CBS will also keep
523its emergency grain list in address order. Some performance
524degradation will be seen when the emergency grain list is in use.
525Ranges on this emergency grain list will not be made available to the
526CBS's client via callbacks. :c:func:`CBSIterate` and
527:c:func:`CBSIterateLarge` will not iterate over ranges on this list.
528
529:mps:tag:`impl.low-mem.inline.grain.structure` The pointer stored is
530to the next such grain, or ``NULL``.
531
532
533The CBS block
534.............
535
536:mps:tag:`impl.cbs.block` The block contains a base-limit pair and a
537splay tree node.
538
539:mps:tag:`impl.cbs.block.special` The base and limit may be equal if
540the block is halfway through being deleted.
541
542:mps:tag:`impl.cbs.block.special.just` This conflates values and
543status, but is justified because block size is very important.
544
545
546Testing
547-------
548
549:mps:tag:`test` The following testing will be performed on this module:
550
551:mps:tag:`test.cbstest` There is a stress test for this module in
552:mps:ref:`impl.c.cbstest`. This allocates a large block of memory and
553then simulates the allocation and deallocation of ranges within this
554block using both a :c:type:`CBS` and a :c:type:`BT`. It makes both
555valid and invalid requests, and compares the :c:type:`CBS` response to
556the correct behaviour as determined by the :c:type:`BT`. It also
557iterates the ranges in the :c:type:`CBS`, comparing them to the
558:c:type:`BT`. It also invokes the :c:func:`CBSDescribe` method, but
559makes no automatic test of the resulting output. It does not currently
560test the callbacks.
561
562:mps:tag:`test.pool` Several pools (currently :ref:`pool-mvt` and
563:ref:`pool-mvff`) are implemented on top of a CBS. These pool are
564subject to testing in development, QA, and are/will be heavily
565exercised by customers.
566
567
568Notes for future development
569----------------------------
570
571:mps:tag:`future.not-splay` The initial implementation of CBSs is
572based on splay trees. It could be revised to use any other data
573structure that meets the requirements (especially
574:mps:ref:`.req.fast`).
575
576:mps:tag:`future.hybrid` It would be possible to attenuate the problem
577of :mps:ref:`.risk.overhead` (below) by using a single word bit set to
578represent the membership in a (possibly aligned) word-width of grains.
579This might be used for block sizes less than a word-width of grains,
580converting them when they reach all free in the bit set. Note that
581this would make coalescence slightly less eager, by up to
582``(word-width - 1)``.
583
584
585Risks
586-----
587
588:mps:tag:`risk.overhead` Clients should note that the current
589implementation of CBSs has a space overhead proportional to the number
590of isolated contiguous ranges. [Four words per range.] If the CBS
591contains every other grain in an area, then the overhead will be large
592compared to the size of that area. [Four words per two grains.] See
593:mps:ref:`.future.hybrid` for a suggestion to solve this problem. An
594alternative solution is to use CBSs only for managing long ranges.
595
596
597Proposed hybrid implementation
598------------------------------
599
600.. note::
601
602 The following relates to a pending re-design and does not yet
603 relate to any working source version. GavinM 1998-09-25
604
605The CBS system provides its services by combining the services
606provided by three subsidiary CBS modules:
607
608- ``CBSST`` -- Splay Tree: Based on out-of-line splay trees; must
609 allocate to insert isolated, which may therefore fail.
610
611- ``CBSBL`` -- Block List: Based on a singly-linked list of variable
612 sized ranges with inline descriptors; ranges must be at least large
613 enough to store the inline descriptor.
614
615- ``CBSGL`` -- Grain List: Based on a singly-linked list of fixed size
616 ranges with inline descriptors; the ranges must be the alignment of
617 the CBS.
618
619The three sub-modules have a lot in common. Although their methods are
620not invoked via a dispatcher, they have been given consistent
621interfaces, and consistent internal appearance, to aid maintenance.
622
623Methods supported by sub-modules (not all sub-modules support all
624methods):
625
626- ``MergeRange`` -- Finds any ranges in the specific CBS adjacent to
627 the supplied one. If there are any, it extends the ranges, possibly
628 deleting one of them. This cannot fail, but should return ``FALSE``
629 if there is an intersection between the supplied range and a range
630 in the specific CBS.
631
632- ``InsertIsolatedRange`` -- Adds a range to the specific CBS that is
633 not adjacent to any range already in there. Depending on the
634 specific CBS, this may be able to fail for allocation reasons, in
635 which case it should return ``FALSE``. It should :c:func:`AVER` if
636 the range is adjacent to or intersects with a range already there.
637
638- ``RemoveAdjacentRanges`` -- Finds and removes from the specific CBS
639 any ranges that are adjacent to the supplied range. Should return
640 ``FALSE`` if the supplied range intersects with any ranges already
641 there.
642
643- ``DeleteRange`` -- Finds and deletes the supplied range from the
644 specific CBS. Returns a tri-state result:
645
646 - ``Success`` -- The range was successfully deleted. This may have
647 involved the creation of a new range, which should be done via
648 ``CBSInsertIsolatedRange``.
649
650 - ``ProtocolError`` -- Either some non-trivial strict subset of the
651 supplied range was in the specific CBS, or a range adjacent to the
652 supplied range was in the specific CBS. Either of these indicates
653 a protocol error.
654
655 - ``NoIntersection`` -- The supplied range was not found in the CBS.
656 This may or not be a protocol error, depending on the invocation
657 context.
658
659- ``FindFirst`` -- Returns the first (in address order) range in the
660 specific CBS that is at least as large as the supplied size, or
661 ``FALSE`` if there is no such range.
662
663- ``FindFirstBefore`` -- As ``FindFirst``, but only finds ranges prior
664 to the supplied address.
665
666- ``FindLast`` -- As ``FindFirst``, but finds the last such range in
667 address order.
668
669- ``FindLastAfter`` -- ``FindLast`` equivalent of ``FindFirstBefore``.
670
671- ``Init`` -- Initialise the control structure embedded in the CBS.
672
673- ``Finish`` -- Finish the control structure embedded in the CBS.
674
675- ``InlineDescriptorSize`` -- Returns the aligned size of the inline descriptor.
676
677- ``Check`` -- Checks the control structure embedded in the CBS.
678
679The CBS supplies the following utilities:
680
681- ``CBSAlignment`` -- Returns the alignment of the CBS.
682
683- ``CBSMayUseInline`` -- Returns whether the CBS may use the memory in
684 the ranges stored.
685
686- ``CBSInsertIsolatedRange`` -- Wrapper for ``CBS*InsertIsolatedRange``.
687
688Internally, the ``CBS*`` sub-modules each have an internal structure
689``CBS*Block`` that represents an isolated range within the module. It
690supports the following methods (for sub-module internal use):
691
692- ``BlockBase`` -- Returns the base of the associated range;
693- ``BlockLimit``
694- ``BlockRange``
695- ``BlockSize``
diff --git a/mps/manual/html/_sources/design/check.txt b/mps/manual/html/_sources/design/check.txt
deleted file mode 100644
index 5483e0329e3..00000000000
--- a/mps/manual/html/_sources/design/check.txt
+++ /dev/null
@@ -1,106 +0,0 @@
1.. sources:
2
3 `<https://info.ravenbrook.com/project/mps/master/design/check/>`_
4
5.. mps:prefix:: design.mps.check
6
7Checking
8========
9
10
11Introduction
12------------
13
14This documents the design of structure checking within the MPS.
15
16
17History
18-------
19
20:mps:tag:`hist.0` Incomplete design. Gavin Matthews, 1996-08-05.
21
22:mps:tag:`hist.1` Converted from MMInfo database design document.
23Richard Brooksby, 2002-06-07.
24
25:mps:tag:`hist.2` Converted to reStructuredText. Gareth Rees,
262013-03-12.
27
28
29Implementation
30--------------
31
32:mps:tag:`level` There are three levels of checking:
33
341. :mps:tag:`level.sig` The lowest level checks only that the
35 structure has a valid :c:type:`Signature` (see
36 :mps:ref:`design.mps.sig`).
37
382. :mps:tag:`level.shallow` Shallow checking checks all local fields
39 (including signature) and also checks the signatures of any parent
40 or child structures.
41
423. :mps:tag:`level.deep` Deep checking checks all local fields
43 (including signatures), the signatures of any parent structures,
44 and does full recursive checking on any child structures.
45
46:mps:tag:`level.control` Control over the levels of checking is via
47the definition of at most one of the macros
48:c:macro:`TARGET_CHECK_SHALLOW` (which if defined gives
49:mps:ref:`.level.shallow`), :c:macro:`TARGET_CHECK_DEEP` (which if
50defined gives :mps:ref:`.level.deep`). If neither macro is defined
51then :mps:ref:`.level.sig` is used. These macros are not intended to
52be manipulated directly by developers, they should use the interface
53in :mps:ref:`impl.h.target`.
54
55:mps:tag:`order` Because deep checking (:mps:ref:`.level.deep`) uses
56unchecked recursion, it is important that child relationships are
57acyclic (:mps:ref:`.macro.down`).
58
59:mps:tag:`fun` Every abstract data type which is a structure pointer
60should have a function ``<type>Check`` which takes a pointer of type
61``<type>`` and returns a :c:type:`Bool`. It should check all fields in
62order, using one of the macros in :mps:ref:`.macro`, or document why
63not.
64
65:mps:tag:`fun.omit` The only fields which should be omitted from a
66check function are those for which there is no meaningful check (for
67example, an unlimited unsigned integer with no relation to other fields).
68
69:mps:tag:`fun.return` Although the function returns a :c:type:`Bool`,
70if the assert handler returns (or there is no assert handler), then
71this is taken to mean "ignore and continue", and the check function
72hence returns ``TRUE``.
73
74:mps:tag:`macro` Checking is implemented by invoking four macros in :mps:ref:`impl.h.assert`:
75
76* :mps:tag:`macro.sig` ``CHECKS(type, val)`` checks the signature
77 only, and should be called precisely on ``type`` and the received
78 object pointer.
79
80* :mps:tag:`macro.local` ``CHECKL(cond)`` checks a local field
81 (depending on level; see :mps:ref:`.level`), and should be called on
82 each local field that is not an abstract data type structure pointer
83 itself (apart from the signature), with an appropriate normally-true
84 test condition.
85
86* :mps:tag:`macro.up` ``CHECKU(type, val)`` checks a parent abstract
87 data type structure pointer, performing at most signature checks
88 (depending on level; see :mps:ref:`.level`). It should be called
89 with the parent type and pointer.
90
91* :mps:tag:`macro.down` ``CHECKD(type, val)`` checks a child abstract
92 data type structure pointer, possibly invoking ``<type>Check``
93 (depending on level; see :mps:ref:`.level`). It should be called
94 with the child type and pointer.
95
96:mps:tag:`full-type` ``CHECKS``, ``CHECKD``, ``CHECKU``, all operate
97only on fully fledged types. This means the type has to provide a
98function ``Bool TypeCheck(Type type)`` where ``Type`` is substituted
99for the name of the type (for example, :c:func:`PoolCheck`), and the
100expression ``obj->sig`` must be a valid value of type :c:type:`Sig`
101whenever ``obj`` is a valid value of type ``Type``.
102
103:mps:tag:`type.no-sig` This tag is to be referenced in implementations
104whenever the form ``CHECKL(ThingCheck(thing))`` is used instead of
105``CHECK{U,D}(Thing, thing)`` because ``Thing`` is not a fully fledged
106type (:mps:ref:`.full-type`).
diff --git a/mps/manual/html/_sources/glossary/c.txt b/mps/manual/html/_sources/glossary/c.txt
index 514b5305d72..58196b561ec 100644
--- a/mps/manual/html/_sources/glossary/c.txt
+++ b/mps/manual/html/_sources/glossary/c.txt
@@ -8,6 +8,39 @@ Memory Management Glossary: C
8 8
9.. glossary:: 9.. glossary::
10 10
11 C89
12
13 .. see:: :term:`C90`.
14
15 C90
16
17 .. aka:: *C89*.
18
19 A revision of the ANSI/ISO Standard for the :term:`C`
20 programming language. Although more than twenty years old, it
21 remains the only form of Standard C that is supported by all
22 the major compilers, including Microsoft Visual C.
23
24 .. mps:specific::
25
26 The public interface conforms to this standard. See
27 :ref:`topic-interface`.
28
29 .. bibref:: :ref:`ISO/IEC 9899:1990 <C1990>`.
30
31 C99
32
33 A revision of the ANSI/ISO Standard for C the :term:`C`
34 programming language.
35
36 .. mps:specific::
37
38 :term:`Keyword arguments` can be conveniently passed to
39 functions using C99's compound literal syntax. See
40 :ref:`topic-keyword`.
41
42 .. bibref:: :ref:`ISO/IEC 9899:1999 <C1999>`.
43
11 cache (1) 44 cache (1)
12 45
13 .. aka:: *memory cache*, *cache memory*. 46 .. aka:: *memory cache*, *cache memory*.
diff --git a/mps/manual/html/_sources/glossary/k.txt b/mps/manual/html/_sources/glossary/k.txt
index 87b349d527e..b08edafb470 100644
--- a/mps/manual/html/_sources/glossary/k.txt
+++ b/mps/manual/html/_sources/glossary/k.txt
@@ -12,6 +12,17 @@ Memory Management Glossary: K
12 12
13 .. see:: :term:`kilobyte`. 13 .. see:: :term:`kilobyte`.
14 14
15 keyword argument
16
17 An optional argument to a function call, identified by an
18 associated keyword.
19
20 .. mps:specific::
21
22 Keyword arguments are passed to functions in the MPS
23 interface as arrays of structures of type
24 :c:type:`mps_arg_s`. See :ref:`topic-keyword`.
25
15 kilobyte 26 kilobyte
16 27
17 .. aka:: *kB*. 28 .. aka:: *kB*.
diff --git a/mps/manual/html/_sources/guide/advanced.txt b/mps/manual/html/_sources/guide/advanced.txt
index f65de503e9e..7ab02a3141d 100644
--- a/mps/manual/html/_sources/guide/advanced.txt
+++ b/mps/manual/html/_sources/guide/advanced.txt
@@ -712,17 +712,21 @@ Finally, we can create the buckets pool and its allocation points::
712 712
713 /* Create an Automatic Weak Linked (AWL) pool to manage the hash table 713 /* Create an Automatic Weak Linked (AWL) pool to manage the hash table
714 buckets. */ 714 buckets. */
715 res = mps_pool_create(&buckets_pool, 715 res = mps_pool_create_k(&buckets_pool, arena, mps_class_awl(),
716 arena, 716 (mps_arg_s[]){{MPS_KEY_FORMAT, .val.format = buckets_fmt},
717 mps_class_awl(), 717 {MPS_KEY_AWL_FIND_DEPENDENT,
718 buckets_fmt, 718 .val.addr_method = buckets_find_dependent},
719 buckets_find_dependent); 719 {MPS_KEY_ARGS_END}});
720 if (res != MPS_RES_OK) error("Couldn't create buckets pool"); 720 if (res != MPS_RES_OK) error("Couldn't create buckets pool");
721 721
722 /* Create allocation points for weak and strong buckets. */ 722 /* Create allocation points for weak and strong buckets. */
723 res = mps_ap_create(&strong_buckets_ap, buckets_pool, mps_rank_exact()); 723 res = mps_ap_create_k(&strong_buckets_ap, buckets_pool,
724 (mps_arg_s[]){{MPS_KEY_RANK, .val.rank = mps_rank_exact()},
725 {MPS_KEY_ARGS_END}});
724 if (res != MPS_RES_OK) error("Couldn't create strong buckets allocation point"); 726 if (res != MPS_RES_OK) error("Couldn't create strong buckets allocation point");
725 res = mps_ap_create(&weak_buckets_ap, buckets_pool, mps_rank_weak()); 727 res = mps_ap_create_k(&weak_buckets_ap, buckets_pool,
728 (mps_arg_s[]){{MPS_KEY_RANK, .val.rank = mps_rank_weak()},
729 {MPS_KEY_ARGS_END}});
726 if (res != MPS_RES_OK) error("Couldn't create weak buckets allocation point"); 730 if (res != MPS_RES_OK) error("Couldn't create weak buckets allocation point");
727 731
728By adding the line:: 732By adding the line::
@@ -888,15 +892,14 @@ Second, the leaf objects must be allocated on ``leaf_ap`` instead of
888 892
889 /* Create an Automatic Mostly-Copying Zero-rank (AMCZ) pool to 893 /* Create an Automatic Mostly-Copying Zero-rank (AMCZ) pool to
890 manage the leaf objects. */ 894 manage the leaf objects. */
891 res = mps_pool_create(&leaf_pool, 895 res = mps_pool_create_k(&leaf_pool, arena, mps_class_amcz(),
892 arena, 896 (mps_arg_s[]){{MPS_KEY_CHAIN, .val.chain = obj_chain},
893 mps_class_amcz(), 897 {MPS_KEY_FORMAT, .val.format = obj_fmt},
894 obj_fmt, 898 {MPS_KEY_ARGS_END}});
895 obj_chain);
896 if (res != MPS_RES_OK) error("Couldn't create leaf pool"); 899 if (res != MPS_RES_OK) error("Couldn't create leaf pool");
897 900
898 /* Create allocation point for leaf objects. */ 901 /* Create allocation point for leaf objects. */
899 res = mps_ap_create(&leaf_ap, leaf_pool); 902 res = mps_ap_create_k(&leaf_ap, leaf_pool, mps_args_none);
900 if (res != MPS_RES_OK) error("Couldn't create leaf objects allocation point"); 903 if (res != MPS_RES_OK) error("Couldn't create leaf objects allocation point");
901 904
902Note that the new pool shared a :term:`generation chain` with the old 905Note that the new pool shared a :term:`generation chain` with the old
diff --git a/mps/manual/html/_sources/guide/lang.txt b/mps/manual/html/_sources/guide/lang.txt
index 3186774685f..edaee742830 100644
--- a/mps/manual/html/_sources/guide/lang.txt
+++ b/mps/manual/html/_sources/guide/lang.txt
@@ -155,24 +155,32 @@ rather than having to pass it around everywhere::
155 155
156 static mps_arena_t arena; 156 static mps_arena_t arena;
157 157
158Create an arena by calling :c:func:`mps_arena_create`. This function 158Create an arena by calling :c:func:`mps_arena_create_k`. This function
159takes a third argument when creating a virtual memory arena: the size of 159takes a :term:`keyword argument` when creating a virtual memory arena:
160the amount of virtual virtual :term:`address space` (*not* :term:`RAM`), 160the size of virtual :term:`address space` (*not* :term:`RAM`), in
161in bytes, that the arena will reserve initially. The MPS will ask for 161bytes, that the arena will reserve initially. The MPS will ask for
162more address space if it runs out, but the more times it has to extend 162more address space if it runs out, but the more times it has to extend
163its address space, the less efficient garbage collection will become. 163its address space, the less efficient garbage collection will become.
164The MPS works best if you reserve an address space that is several times 164The MPS works best if you reserve an address space that is several
165larger than your peak memory usage. 165times larger than your peak memory usage.
166
167.. note::
168
169 Functions in the MPS interface take :term:`keyword arguments` for
170 arguments that are optional, or are only required in some
171 circumstances. These argument are passed in the form of an array
172 of structures of type :c:type:`mps_arg_s`. See
173 :ref:`topic-keyword` for the full details.
166 174
167Let's reserve 32 megabytes:: 175Let's reserve 32 megabytes::
168 176
169 mps_res_t res; 177 mps_res_t res;
170 res = mps_arena_create(&arena, 178 res = mps_arena_create_k(&arena, mps_arena_class_vm(),
171 mps_arena_class_vm(), 179 (mps_arg_s[]){{MPS_KEY_ARENA_SIZE, .val.size = 32 * 1024 * 1024},
172 (size_t)(32 * 1024 * 1024)); 180 {MPS_KEY_ARGS_END}});
173 if (res != MPS_RES_OK) error("Couldn't create arena"); 181 if (res != MPS_RES_OK) error("Couldn't create arena");
174 182
175:c:func:`mps_arena_create` is typical of functions in the MPS 183:c:func:`mps_arena_create_k` is typical of functions in the MPS
176interface in that it stores its result in a location pointed to by an 184interface in that it stores its result in a location pointed to by an
177:term:`out parameter` (here, ``&arena``) and returns a :term:`result 185:term:`out parameter` (here, ``&arena``) and returns a :term:`result
178code`, which is :c:macro:`MPS_RES_OK` if the function succeeded, or 186code`, which is :c:macro:`MPS_RES_OK` if the function succeeded, or
@@ -762,11 +770,10 @@ Third, the :term:`generation chain`::
762And finally the :term:`pool`:: 770And finally the :term:`pool`::
763 771
764 mps_pool_t obj_pool; 772 mps_pool_t obj_pool;
765 res = mps_pool_create(&obj_pool, 773 res = mps_pool_create_k(&obj_pool, arena, mps_class_amc(),
766 arena, 774 (mps_arg_s[]){{MPS_KEY_CHAIN, .val.chain = obj_chain},
767 mps_class_amc(), 775 {MPS_KEY_FORMAT, .val.format = obj_fmt},
768 obj_fmt, 776 {MPS_KEY_ARGS_END}});
769 obj_chain);
770 if (res != MPS_RES_OK) error("Couldn't create obj pool"); 777 if (res != MPS_RES_OK) error("Couldn't create obj pool");
771 778
772 779
@@ -1080,13 +1087,13 @@ may abort.
1080The MPS solves this problem via the fast, nearly lock-free 1087The MPS solves this problem via the fast, nearly lock-free
1081:ref:`topic-allocation-point-protocol`. This needs an additional 1088:ref:`topic-allocation-point-protocol`. This needs an additional
1082structure, an :term:`allocation point`, to be attached to the pool by 1089structure, an :term:`allocation point`, to be attached to the pool by
1083calling :c:func:`mps_ap_create`:: 1090calling :c:func:`mps_ap_create_k`::
1084 1091
1085 static mps_ap_t obj_ap; 1092 static mps_ap_t obj_ap;
1086 1093
1087 /* ... */ 1094 /* ... */
1088 1095
1089 res = mps_ap_create(&obj_ap, obj_pool, mps_rank_exact()); 1096 res = mps_ap_create_k(&obj_ap, obj_pool, mps_args_none);
1090 if (res != MPS_RES_OK) error("Couldn't create obj allocation point"); 1097 if (res != MPS_RES_OK) error("Couldn't create obj allocation point");
1091 1098
1092And then the constructor can be implemented like this:: 1099And then the constructor can be implemented like this::
diff --git a/mps/manual/html/_sources/mmref/bib.txt b/mps/manual/html/_sources/mmref/bib.txt
index 07845a3701b..aba18413d6e 100644
--- a/mps/manual/html/_sources/mmref/bib.txt
+++ b/mps/manual/html/_sources/mmref/bib.txt
@@ -215,6 +215,14 @@ Bibliography
215 215
216 Richard Brooksby. 2002. "`The Memory Pool System: Thirty person-years of memory management development goes Open Source <http://www.ravenbrook.com/project/mps/doc/2002-01-30/ismm2002-paper/>`_". ISMM'02. 216 Richard Brooksby. 2002. "`The Memory Pool System: Thirty person-years of memory management development goes Open Source <http://www.ravenbrook.com/project/mps/doc/2002-01-30/ismm2002-paper/>`_". ISMM'02.
217 217
218* .. _C1990:
219
220 International Standard ISO/IEC 9899:1990. "Programming languages — C".
221
222* .. _C1999:
223
224 International Standard ISO/IEC 9899:1999. "`Programming languages — C <http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf>`_".
225
218* .. _CGZ94: 226* .. _CGZ94:
219 227
220 Brad Calder, Dirk Grunwald, Benjamin Zorn. 1994. "`Quantifying Behavioral Differences Between C and C++ Programs <http://cseclassic.ucsd.edu/users/calder/papers/JplVersion.pdf>`_". *Journal of Programming Languages.* 2(4):313--351. 228 Brad Calder, Dirk Grunwald, Benjamin Zorn. 1994. "`Quantifying Behavioral Differences Between C and C++ Programs <http://cseclassic.ucsd.edu/users/calder/papers/JplVersion.pdf>`_". *Journal of Programming Languages.* 2(4):313--351.
diff --git a/mps/manual/html/_sources/mmref/lang.txt b/mps/manual/html/_sources/mmref/lang.txt
index fb4473d525e..0d081b82a30 100644
--- a/mps/manual/html/_sources/mmref/lang.txt
+++ b/mps/manual/html/_sources/mmref/lang.txt
@@ -82,7 +82,7 @@ Memory management in various languages
82 82
83 .. seealso:: :term:`automatic storage duration`, :term:`static storage duration`. 83 .. seealso:: :term:`automatic storage duration`, :term:`static storage duration`.
84 84
85 .. bibref:: :ref:`Boehm & Weiser (1988) <BW88>`, :ref:`Daconta (1993) <DACONTA93>`, :ref:`Zorn (1993) <ZORN93>`. 85 .. bibref:: :ref:`ISO/IEC 9899:1990 <C1990>`, :ref:`ISO/IEC 9899:1999 <C1999>`, :ref:`Boehm & Weiser (1988) <BW88>`, :ref:`Daconta (1993) <DACONTA93>`, :ref:`Zorn (1993) <ZORN93>`.
86 86
87 .. link:: 87 .. link::
88 88
diff --git a/mps/manual/html/_sources/pool/amc.txt b/mps/manual/html/_sources/pool/amc.txt
index 99a4e49778e..7c6c9927aec 100644
--- a/mps/manual/html/_sources/pool/amc.txt
+++ b/mps/manual/html/_sources/pool/amc.txt
@@ -100,20 +100,36 @@ AMC interface
100 Return the :term:`pool class` for an AMC (Automatic 100 Return the :term:`pool class` for an AMC (Automatic
101 Mostly-Copying) :term:`pool`. 101 Mostly-Copying) :term:`pool`.
102 102
103 When creating an AMC pool, :c:func:`mps_pool_create` takes two 103 When creating an AMC pool, :c:func:`mps_pool_create_k` requires
104 extra arguments:: 104 two :term:`keyword arguments`:
105 105
106 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 106 * :c:macro:`MPS_KEY_FORMAT` (member ``.val.format``; type
107 mps_class_t mps_class_amc(), 107 :c:type:`mps_fmt_t`) specifies the :term:`object format` for the
108 mps_fmt_t fmt, 108 objects allocated in the pool. The format must provide a
109 mps_chain_t chain) 109 :term:`scan method`, a :term:`skip method`, a :term:`forward
110 method`, an :term:`is-forwarded method` and a :term:`padding
111 method`.
110 112
111 ``fmt`` specifies the :term:`object format` for the objects 113 * :c:macro:`MPS_KEY_CHAIN` (member ``.val.chain``; type
112 allocated in the pool. The format must provide a :term:`scan 114 :c:type:`mps_chain_t`) specifies the :term:`generation chain`
113 method`, a :term:`skip method`, a :term:`forward method`, an 115 for the pool.
114 :term:`is-forwarded method` and a :term:`padding method`.
115 116
116 ``chain`` specifies the :term:`generation chain` for the pool. 117 For example, in :term:`C99`::
118
119 res = mps_pool_create_k(&pool, arena, mps_class_amc(),
120 (mps_arg_s[]){{MPS_KEY_CHAIN, .val.chain = chain},
121 {MPS_KEY_FORMAT, .val.format = fmt},
122 {MPS_KEY_ARGS_END}});
123
124 .. deprecated:: starting with version 1.112.
125
126 When using :c:func:`mps_pool_create`, pass the format and
127 chain like this::
128
129 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
130 mps_class_t mps_class_amc(),
131 mps_fmt_t fmt,
132 mps_chain_t chain)
117 133
118 134
119.. index:: 135.. index::
diff --git a/mps/manual/html/_sources/pool/amcz.txt b/mps/manual/html/_sources/pool/amcz.txt
index 478173001a8..c3a01202532 100644
--- a/mps/manual/html/_sources/pool/amcz.txt
+++ b/mps/manual/html/_sources/pool/amcz.txt
@@ -59,17 +59,32 @@ AMCZ interface
59 Return the :term:`pool class` for an AMCZ (Automatic 59 Return the :term:`pool class` for an AMCZ (Automatic
60 Mostly-Copying Zero-rank) :term:`pool`. 60 Mostly-Copying Zero-rank) :term:`pool`.
61 61
62 When creating an AMCZ pool, :c:func:`mps_pool_create` takes two 62 When creating an AMCZ pool, :c:func:`mps_pool_create_k` requires
63 extra arguments:: 63 two :term:`keyword arguments`:
64 64
65 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 65 * :c:macro:`MPS_KEY_FORMAT` (member ``.val.format``; type
66 mps_class_t mps_class_amcz(), 66 :c:type:`mps_fmt_t`) specifies the :term:`object format` for the
67 mps_fmt_t fmt, 67 objects allocated in the pool. The format must provide a
68 mps_chain_t chain) 68 :term:`skip method`, a :term:`forward method`, an
69 :term:`is-forwarded method` and a :term:`padding method`.
69 70
70 ``fmt`` specifies the :term:`object format` for the objects 71 * :c:macro:`MPS_KEY_CHAIN` (member ``.val.chain``; type
71 allocated in the pool. The format must provide a :term:`skip 72 :c:type:`mps_chain_t`) specifies the :term:`generation chain`
72 method`, a :term:`forward method`, an :term:`is-forwarded method` 73 for the pool.
73 and a :term:`padding method`.
74 74
75 ``chain`` specifies the :term:`generation chain` for the pool. 75 For example, in :term:`C99`::
76
77 res = mps_pool_create_k(&pool, arena, mps_class_amcz(),
78 (mps_arg_s[]){{MPS_KEY_CHAIN, .val.chain = chain},
79 {MPS_KEY_FORMAT, .val.format = fmt},
80 {MPS_KEY_ARGS_END}});
81
82 .. deprecated:: starting with version 1.112.
83
84 When using :c:func:`mps_pool_create`, pass the format and
85 chain like this::
86
87 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
88 mps_class_t mps_class_amcz(),
89 mps_fmt_t fmt,
90 mps_chain_t chain)
diff --git a/mps/manual/html/_sources/pool/ams.txt b/mps/manual/html/_sources/pool/ams.txt
index ec0a9799b7b..0e9cac244c6 100644
--- a/mps/manual/html/_sources/pool/ams.txt
+++ b/mps/manual/html/_sources/pool/ams.txt
@@ -103,20 +103,34 @@ AMS interface
103 Return the :term:`pool class` for an AMS (Automatic Mark & Sweep) 103 Return the :term:`pool class` for an AMS (Automatic Mark & Sweep)
104 :term:`pool`. 104 :term:`pool`.
105 105
106 When creating an AMS pool, :c:func:`mps_pool_create` takes two 106 When creating an AMS pool, :c:func:`mps_pool_create_k` requires
107 extra arguments:: 107 two :term:`keyword arguments`:
108 108
109 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 109 * :c:macro:`MPS_KEY_FORMAT` (member ``.val.format``; type
110 mps_class_t mps_class_ams(), 110 :c:type:`mps_fmt_t`) specifies the :term:`object format` for the
111 mps_fmt_t fmt, 111 objects allocated in the pool. The format must provide a
112 mps_chain_t chain) 112 :term:`scan method` and a :term:`skip method`.
113 113
114 ``fmt`` specifies the :term:`object format` for the objects 114 * :c:macro:`MPS_KEY_CHAIN` (member ``.val.chain``; type
115 allocated in the pool. The format must provide a :term:`scan 115 :c:type:`mps_chain_t`) specifies the :term:`generation chain`
116 method` and a :term:`skip method`. 116 for the pool. It must have a single generation.
117 117
118 ``chain`` specifies the :term:`generation chain` for the pool. It 118 For example, in :term:`C99`::
119 must have a single generation. 119
120 res = mps_pool_create_k(&pool, arena, mps_class_ams(),
121 (mps_arg_s[]){{MPS_KEY_CHAIN, .val.chain = chain},
122 {MPS_KEY_FORMAT, .val.format = fmt},
123 {MPS_KEY_ARGS_END}});
124
125 .. deprecated:: starting with version 1.112.
126
127 When using :c:func:`mps_pool_create`, pass the format and
128 chain like this::
129
130 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
131 mps_class_t mps_class_ams(),
132 mps_fmt_t fmt,
133 mps_chain_t chain)
120 134
121 135
122.. c:function:: mps_class_t mps_class_ams_debug(void) 136.. c:function:: mps_class_t mps_class_ams_debug(void)
@@ -124,16 +138,19 @@ AMS interface
124 A :ref:`debugging <topic-debugging>` version of the AMS pool 138 A :ref:`debugging <topic-debugging>` version of the AMS pool
125 class. 139 class.
126 140
127 When creating a debugging AMS pool, :c:func:`mps_pool_create` 141 When creating a debugging AMS pool, :c:func:`mps_pool_create_k`
128 takes three extra arguments:: 142 requires three keyword arguments: :c:macro:`MPS_KEY_FORMAT` and
143 :c:macro:`MPS_KEY_CHAIN` are as described above, and
144 :c:macro:`MPS_KEY_POOL_DEBUG_OPTIONS` specifies the debugging
145 options. See :c:type:`mps_debug_option_s`.
129 146
130 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 147 .. deprecated:: starting with version 1.112.
131 mps_class_t mps_class_ams_debug(),
132 mps_debug_option_s debug_option,
133 mps_fmt_t fmt,
134 mps_chain_t chain)
135 148
136 ``debug_option`` specifies the debugging options. See 149 When using :c:func:`mps_pool_create`, pass the format,
137 :c:type:`mps_debug_option_s`. 150 chain, and debugging options like this::
138 151
139 ``fmt`` and ``chain`` are the same as for :c:func:`mps_class_ams`. 152 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
153 mps_class_t mps_class_ams_debug(),
154 mps_debug_option_s debug_option,
155 mps_fmt_t fmt,
156 mps_chain_t chain)
diff --git a/mps/manual/html/_sources/pool/awl.txt b/mps/manual/html/_sources/pool/awl.txt
index 8ed131653da..61bbd202eed 100644
--- a/mps/manual/html/_sources/pool/awl.txt
+++ b/mps/manual/html/_sources/pool/awl.txt
@@ -318,34 +318,59 @@ AWL interface
318 Return the :term:`pool class` for an AWL (Automatic Weak Linked) 318 Return the :term:`pool class` for an AWL (Automatic Weak Linked)
319 :term:`pool`. 319 :term:`pool`.
320 320
321 When creating an AWL pool, :c:func:`mps_pool_create` takes two 321 When creating an AWL pool, :c:func:`mps_pool_create_k` requires
322 extra arguments:: 322 two :term:`keyword arguments`:
323 323
324 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 324 * :c:macro:`MPS_KEY_FORMAT` (member ``.val.format``; type
325 mps_class_t mps_class_awl(), 325 :c:type:`mps_fmt_t`) specifies the :term:`object format` for the
326 mps_fmt_t fmt, 326 objects allocated in the pool. The format must provide a :term:`scan
327 mps_awl_find_dependent_t find_dependent) 327 method` and a :term:`skip method`.
328 328
329 ``fmt`` specifies the :term:`object format` for the objects 329 * :c:macro:`MPS_KEY_AWL_FIND_DEPENDENT` (member
330 allocated in the pool. The format must provide a :term:`scan 330 ``.val.addr_method``; type :c:type:`mps_awl_find_dependent_t`)
331 method` and a :term:`skip method`. 331 is a function that specifies how to find the :term:`dependent
332 332 object` for an object in the pool.
333 ``find_dependent`` is a function of type 333
334 :c:type:`mps_awl_find_dependent_t` that specifies how to find the 334 For example, in :term:`C99`::
335 :term:`dependent object` for an object in the pool. 335
336 336 res = mps_pool_create_k(&pool, arena, mps_class_awl(),
337 When creating an allocation point on an AWL pool, 337 (mps_arg_s[]){{MPS_KEY_FORMAT, .val.format = fmt},
338 :c:func:`mps_ap_create` takes one extra argument:: 338 {MPS_KEY_AWL_FIND_DEPENDENT, .val.addr_method = find_dependent},
339 339 {MPS_KEY_ARGS_END}});
340 mps_res_t mps_ap_create(mps_ap_t *ap_o, mps_pool_t pool, 340
341 mps_rank_t rank) 341 .. deprecated:: starting with version 1.112.
342 342
343 ``rank`` specifies the :term:`rank` of references in objects 343 When using :c:func:`mps_pool_create`, pass the format and
344 allocated on this allocation point. It must be 344 find-dependent function like this::
345 :c:func:`mps_rank_exact` (if the objects allocated on this 345
346 allocation point will contain :term:`exact references`), or 346 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
347 :c:func:`mps_rank_weak` (if the objects will contain :term:`weak 347 mps_class_t mps_class_awl(),
348 references (1)`). 348 mps_fmt_t fmt,
349 mps_awl_find_dependent_t find_dependent)
350
351 When creating an :term:`allocation point` on an AWL pool,
352 :c:func:`mps_ap_create_k` requires one keyword argument:
353
354 * :c:macro:`MPS_KEY_RANK` (member ``.val.rank``; type
355 :c:type:`mps_rank_t`) specifies the :term:`rank` of references
356 in objects allocated on this allocation point. It must be
357 :c:func:`mps_rank_exact` (if the objects allocated on this
358 allocation point will contain :term:`exact references`), or
359 :c:func:`mps_rank_weak` (if the objects will contain :term:`weak
360 references (1)`).
361
362 For example, in :term:`C99`::
363
364 res = mps_ap_create_k(&ap, awl_pool,
365 (mps_arg_s[]){{MPS_KEY_RANK, .val.rank = mps_rank_weak()},
366 {MPS_KEY_ARGS_END}});
367
368 .. deprecated:: starting with version 1.112.
369
370 When using :c:func:`mps_ap_create`, pass the rank like this::
371
372 mps_res_t mps_ap_create(mps_ap_t *ap_o, mps_pool_t pool,
373 mps_rank_t rank)
349 374
350 375
351.. c:type:: mps_addr_t (*mps_awl_find_dependent_t)(mps_addr_t addr) 376.. c:type:: mps_addr_t (*mps_awl_find_dependent_t)(mps_addr_t addr)
diff --git a/mps/manual/html/_sources/pool/lo.txt b/mps/manual/html/_sources/pool/lo.txt
index 20e02c82a54..dad1997a4a1 100644
--- a/mps/manual/html/_sources/pool/lo.txt
+++ b/mps/manual/html/_sources/pool/lo.txt
@@ -105,13 +105,25 @@ LO interface
105 Return the :term:`pool class` for an LO (Leaf Object) 105 Return the :term:`pool class` for an LO (Leaf Object)
106 :term:`pool`. 106 :term:`pool`.
107 107
108 When creating an LO pool, :c:func:`mps_pool_create` takes one 108 When creating an LO pool, :c:func:`mps_pool_create_k` require one
109 extra argument:: 109 :term:`keyword argument`:
110 110
111 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 111 * :c:macro:`MPS_KEY_FORMAT` (member ``.val.format``; type
112 mps_class_t mps_class_lo(), 112 :c:type:`mps_fmt_t`) specifies the :term:`object format` for the
113 mps_fmt_t fmt) 113 objects allocated in the pool. The format must provide a :term:`skip
114 method`.
114 115
115 ``fmt`` specifies the :term:`object format` for the objects 116 For example, in :term:`C99`::
116 allocated in the pool. The format must provide a :term:`skip 117
117 method`. 118 res = mps_pool_create_k(&pool, arena, mps_class_lo(),
119 (mps_arg_s[]){{MPS_KEY_FORMAT, .val.format = fmt},
120 {MPS_KEY_ARGS_END}});
121
122 .. deprecated:: starting with version 1.112.
123
124 When using :c:func:`mps_pool_create`, pass the format like
125 this::
126
127 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
128 mps_class_t mps_class_lo(),
129 mps_fmt_t fmt)
diff --git a/mps/manual/html/_sources/pool/mfs.txt b/mps/manual/html/_sources/pool/mfs.txt
index b98928762e4..9c6bf500f7d 100644
--- a/mps/manual/html/_sources/pool/mfs.txt
+++ b/mps/manual/html/_sources/pool/mfs.txt
@@ -77,19 +77,35 @@ MFS interface
77 Return the :term:`pool class` for an MFS (Manual Fixed Small) 77 Return the :term:`pool class` for an MFS (Manual Fixed Small)
78 :term:`pool`. 78 :term:`pool`.
79 79
80 When creating an MFS pool, :c:func:`mps_pool_create` takes two 80 When creating an MFS pool, :c:func:`mps_pool_create_k` requires
81 extra arguments:: 81 two :term:`keyword arguments`:
82 82
83 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 83 * :c:macro:`MPS_KEY_MFS_UNIT_SIZE` (member ``.val.size``; type
84 mps_class_t mps_class_mfs(), 84 :c:type:`size_t`) is the :term:`size` of blocks that will be
85 mps_size_t extend_size, 85 allocated from this pool, in :term:`bytes (1)`. It must be at
86 mps_size_t unit_size) 86 least one :term:`word`.
87 87
88 ``extend_size`` is the :term:`size` of segment that the pool will 88 * :c:macro:`MPS_KEY_EXTEND_BY` (member ``.val.size``; type
89 request from the :term:`arena`. It must be at least as big as 89 :c:type:`size_t`) is the :term:`size` of segment that the pool
90 ``unit_size``. If this is not a multiple of ``unit_size``, there 90 will request from the :term:`arena`. It must be at least as big
91 will be wasted space in each segment. 91 as the unit size specified by the
92 92 :c:macro:`MPS_KEY_MFS_UNIT_SIZE` keyword argument. If this is
93 ``unit_size`` is the :term:`size` of blocks that will be allocated 93 not a multiple of the unit size, there will be wasted space in
94 from this pool, in :term:`bytes (1)`. It must be at least one 94 each segment.
95 :term:`word`. 95
96 For example, in :term:`C99`::
97
98 res = mps_pool_create_k(&pool, arena, mps_class_mfs(),
99 (mps_arg_s[]){{MPS_KEY_MFS_UNIT_SIZE, .val.size = 1024},
100 {MPS_KEY_EXTEND_BY, .val.size = 1024 * 1024},
101 {MPS_KEY_ARGS_END}});
102
103 .. deprecated:: starting with version 1.112.
104
105 When using :c:func:`mps_pool_create`, pass the segment size and
106 unit size like this::
107
108 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
109 mps_class_t mps_class_mfs(),
110 mps_size_t extend_size,
111 mps_size_t unit_size)
diff --git a/mps/manual/html/_sources/pool/mv.txt b/mps/manual/html/_sources/pool/mv.txt
index c0a5f90cc39..dccb5abe0ee 100644
--- a/mps/manual/html/_sources/pool/mv.txt
+++ b/mps/manual/html/_sources/pool/mv.txt
@@ -72,22 +72,42 @@ MV interface
72 Return the :term:`pool class` for an MV (Manual Variable) 72 Return the :term:`pool class` for an MV (Manual Variable)
73 :term:`pool`. 73 :term:`pool`.
74 74
75 When creating an MV pool, :c:func:`mps_pool_create` takes three 75 When creating an MV pool, :c:func:`mps_pool_create_k` requires
76 extra arguments:: 76 three :term:`keyword arguments`:
77 77
78 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 78 * :c:macro:`MPS_KEY_EXTEND_BY` (member ``.val.size``; type
79 mps_class_t mps_class_mv(), 79 :c:type:`size_t`) is the :term:`size` of segment that the pool
80 mps_size_t extend_size, 80 will request from the :term:`arena`.
81 mps_size_t average_size,
82 mps_size_t maximum_size)
83 81
84 ``extend_size`` is the :term:`size` of segment that the pool will 82 * :c:macro:`MPS_KEY_MEAN_SIZE` (member ``.val.size``; type
85 request from the :term:`arena`. 83 :c:type:`size_t`) is the predicted mean size of blocks that
84 will be allocated from the pool.
86 85
87 ``average_size`` and ``maximum size`` are the predicted average 86 * :c:macro:`MPS_KEY_MAX_SIZE` (member ``.val.size``; type
88 and maximum size of blocks that will be allocated from the pool. 87 :c:type:`size_t`) is the predicted maximum size of blocks that
89 These are hints to the MPS: the pool will be less efficient if 88 will be allocated from the pool.
90 these are wrong. 89
90 The mean and maximum sizes are *hints* to the MPS: the pool will be
91 less efficient if these are wrong, but nothing will break.
92
93 For example, in :term:`C99`::
94
95 res = mps_pool_create_k(&pool, arena, mps_class_mfs(),
96 (mps_arg_s[]){{MPS_KEY_MEAN_SIZE, .val.size = 32},
97 {MPS_KEY_MAX_SIZE, .val.size = 1024},
98 {MPS_KEY_EXTEND_BY, .val.size = 1024 * 1024},
99 {MPS_KEY_ARGS_END}});
100
101 .. deprecated:: starting with version 1.112.
102
103 When using :c:func:`mps_pool_create`, pass the segment size,
104 mean size, and maximum size like this::
105
106 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
107 mps_class_t mps_class_mv(),
108 mps_size_t extend_size,
109 mps_size_t average_size,
110 mps_size_t maximum_size)
91 111
92 112
93.. c:function:: mps_class_t mps_class_mv_debug(void) 113.. c:function:: mps_class_t mps_class_mv_debug(void)
@@ -95,21 +115,23 @@ MV interface
95 A :ref:`debugging <topic-debugging>` version of the MV pool 115 A :ref:`debugging <topic-debugging>` version of the MV pool
96 class. 116 class.
97 117
98 When creating a debugging MV pool, :c:func:`mps_pool_create` 118 When creating a debugging MV pool, :c:func:`mps_pool_create_k`
99 takes four extra arguments:: 119 requires four keyword arguments: :c:macro:`MPS_KEY_EXTEND_SIZE`,
120 :c:macro:`MPS_KEY_MEAN_SIZE`, :c:macro:`MPS_KEY_MAX_SIZE` are as
121 described above, and :c:macro:`MPS_KEY_POOL_DEBUG_OPTIONS`
122 specifies the debugging options. See :c:type:`mps_debug_option_s`.
100 123
101 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 124 .. deprecated:: starting with version 1.112.
102 mps_class_t mps_class_mv_debug(),
103 mps_debug_option_s debug_option,
104 mps_size_t extend_size,
105 mps_size_t average_size,
106 mps_size_t maximum_size)
107 125
108 ``debug_option`` specifies the debugging options. See 126 When using :c:func:`mps_pool_create`, pass the debugging
109 :c:type:`mps_debug_option_s`. 127 options, segment size, mean size, and maximum size like this::
110 128
111 ``extend_size``, ``average_size`` and ``maximum_size`` are as 129 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
112 documented in :c:func:`mps_class_mv`. 130 mps_class_t mps_class_mv_debug(),
131 mps_debug_option_s debug_option,
132 mps_size_t extend_size,
133 mps_size_t average_size,
134 mps_size_t maximum_size)
113 135
114 136
115.. index:: 137.. index::
diff --git a/mps/manual/html/_sources/pool/mvff.txt b/mps/manual/html/_sources/pool/mvff.txt
index 135525b3351..df91ab9007c 100644
--- a/mps/manual/html/_sources/pool/mvff.txt
+++ b/mps/manual/html/_sources/pool/mvff.txt
@@ -112,37 +112,62 @@ MVFF interface
112 Return the :term:`pool class` for an MVFF (Manual Variable First 112 Return the :term:`pool class` for an MVFF (Manual Variable First
113 Fit) :term:`pool`. 113 Fit) :term:`pool`.
114 114
115 When creating an MVFF pool, :c:func:`mps_pool_create` takes six 115 When creating an MVFF pool, :c:func:`mps_pool_create_k` requires
116 extra arguments:: 116 six :term:`keyword arguments`:
117 117
118 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 118 * :c:macro:`MPS_KEY_EXTEND_BY` (member ``.val.size``; type
119 mps_class_t mps_class_mvff(), 119 :c:type:`size_t`) is the :term:`size` of segment that the pool
120 mps_size_t extend_size, 120 will request from the :term:`arena`.
121 mps_size_t average_size, 121
122 mps_align_t alignment, 122 * :c:macro:`MPS_KEY_MEAN_SIZE` (member ``.val.size``; type
123 mps_bool_t slot_high, 123 :c:type:`size_t`) is the predicted mean size of blocks that will
124 mps_bool_t arena_high, 124 be allocated from the pool. This is a *hint* to the MPS: the
125 mps_bool_t first_fit) 125 pool will be less efficient if this is wrong, but nothing will
126 126 break.
127 ``extend_size`` is the :term:`size` of segment that the pool will 127
128 request from the :term:`arena`. 128 * :c:macro:`MPS_KEY_ALIGN` (member ``.val.align``; type
129 129 :c:type:`mps_align_t`) is the :term:`alignment` of addresses for
130 ``average_size`` is the predicted average size of blocks that will 130 allocation (and freeing) in the pool. If an unaligned size is
131 be allocated from the pool. 131 passed to :c:func:`mps_alloc` or :c:func:`mps_free`, it will be
132 132 rounded up to the pool's alignment. The minimum alignment
133 ``alignment`` is the :term:`alignment` of addresses for allocation 133 supported by pools of this class is ``sizeof(void *)``.
134 (and freeing) in the pool. If an unaligned size is passed to 134
135 :c:func:`mps_alloc` or :c:func:`mps_free`, it will be rounded up 135 * :c:macro:`MPS_KEY_MVFF_ARENA_HIGH` (member ``.val.b``; type
136 to the pool's alignment. The minimum alignment supported by pools 136 :c:type:`mps_bool_t`) indicates whether new segments for
137 of this class is ``sizeof(void *)``. 137 buffered allocation are acquired at high addresses (if true), or
138 138 at low addresses (if false).
139 ``slot_high`` is undocumented. It must have the same value as 139
140 ``arena_high``. 140 * :c:macro:`MPS_KEY_MVFF_SLOT_HIGH` (member ``.val.b``; type
141 141 :c:type:`mps_bool_t`) is undocumented. It must have the same
142 If ``arena_high`` is true, new segments for buffered allocation 142 value as :c:macro:`MPS_KEY_MVFF_ARENA_HIGH`.
143 are acquired at high addresses; if false, at low addresses. 143
144 144 * :c:macro:`MPS_KEY_MVFF_FIRST_FIT` (member ``.val.b``; type
145 ``first_fit`` is undocumented and must be set to true. 145 :c:type:`mps_bool_t`) is undocumented and must be set to true.
146
147 For example, in :term:`C99`::
148
149 res = mps_pool_create_k(&pool, arena, mps_class_mvff(),
150 (mps_arg_s[]){{MPS_KEY_EXTEND_BY, .val.size = },
151 {MPS_KEY_MEAN_SIZE, .val.size = },
152 {MPS_KEY_ALIGN, .val.align = },
153 {MPS_KEY_MVFF_ARENA_HIGH, .val.b = 0},
154 {MPS_KEY_MVFF_SLOT_HIGH, .val.b = 0},
155 {MPS_KEY_MVFF_FIRST_FIT, .val.b = 1},
156 {MPS_KEY_ARGS_END}});
157
158 .. deprecated:: starting with version 1.112.
159
160 When using :c:func:`mps_pool_create`, pass the arguments like
161 this::
162
163 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
164 mps_class_t mps_class_mvff(),
165 mps_size_t extend_size,
166 mps_size_t average_size,
167 mps_align_t alignment,
168 mps_bool_t slot_high,
169 mps_bool_t arena_high,
170 mps_bool_t first_fit)
146 171
147 172
148.. c:function:: mps_class_t mps_class_mvff_debug(void) 173.. c:function:: mps_class_t mps_class_mvff_debug(void)
@@ -150,23 +175,30 @@ MVFF interface
150 A :ref:`debugging <topic-debugging>` version of the MVFF pool 175 A :ref:`debugging <topic-debugging>` version of the MVFF pool
151 class. 176 class.
152 177
153 When creating a debugging MVFF pool, :c:func:`mps_pool_create` 178 When creating a debugging MVFF pool, :c:func:`mps_pool_create_k`
154 takes seven extra arguments:: 179 requires seven :term:`keyword arguments`.
155 180
156 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 181 * :c:macro:`MPS_KEY_EXTEND_BY`, :c:macro:`MPS_KEY_MEAN_SIZE`,
157 mps_class_t mps_class_mvff_debug(), 182 :c:macro:`MPS_KEY_ALIGN`, :c:macro:`MPS_KEY_MVFF_ARENA_HIGH`,
158 mps_debug_option_s debug_option, 183 :c:macro:`MPS_KEY_MVFF_SLOT_HIGH`, and
159 mps_size_t extend_size, 184 :c:macro:`MPS_KEY_MVFF_FIRST_FIT` are as described above, and
160 mps_size_t average_size, 185 :c:macro:`MPS_KEY_POOL_DEBUG_OPTIONS` specifies the debugging
161 mps_align_t alignment, 186 :c:options. See :c:type:`mps_debug_option_s`.
162 mps_bool_t slot_high, 187
163 mps_bool_t arena_high, 188 .. deprecated:: starting with version 1.112.
164 mps_bool_t first_fit) 189
165 190 When using :c:func:`mps_pool_create`, pass the debugging
166 ``debug_option`` specifies the debugging options. See 191 options, and other arguments like this::
167 :c:type:`mps_debug_option_s`. 192
168 193 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
169 The other arguments are the same as for :c:func:`mps_class_mvff`. 194 mps_class_t mps_class_mvff_debug(),
195 mps_debug_option_s debug_option,
196 mps_size_t extend_size,
197 mps_size_t average_size,
198 mps_align_t alignment,
199 mps_bool_t slot_high,
200 mps_bool_t arena_high,
201 mps_bool_t first_fit)
170 202
171 203
172.. index:: 204.. index::
diff --git a/mps/manual/html/_sources/pool/mvt.txt b/mps/manual/html/_sources/pool/mvt.txt
index 6fd51db85d9..b670c96998e 100644
--- a/mps/manual/html/_sources/pool/mvt.txt
+++ b/mps/manual/html/_sources/pool/mvt.txt
@@ -112,70 +112,95 @@ MVT interface
112 Return the :term:`pool class` for an MVT (Manual Variable 112 Return the :term:`pool class` for an MVT (Manual Variable
113 Temporal) :term:`pool`. 113 Temporal) :term:`pool`.
114 114
115 When creating an MVT pool, :c:func:`mps_pool_create` takes five 115 When creating an MVT pool, :c:func:`mps_pool_create_k` requires
116 extra arguments:: 116 five :term:`keyword arguments`:
117 117
118 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 118 * :c:macro:`MPS_KEY_MIN_SIZE` (member ``.val.size``; type
119 mps_class_t mps_class_mvt(), 119 :c:type:`size_t`) is the predicted minimum size of blocks that
120 size_t minimum_size, 120 will be allocated from the pool.
121 size_t mean_size, 121
122 size_t maximum_size, 122 * :c:macro:`MPS_KEY_MEAN_SIZE` (member ``.val.size``; type
123 mps_count_t reserve_depth, 123 :c:type:`size_t`) is the predicted mean size of blocks that will
124 mps_count_t fragmentation_limit) 124 be allocated from the pool.
125 125
126 ``minimum_size``, ``mean_size``, and ``maximum_size`` are the 126 * :c:macro:`MPS_KEY_MAX_SIZE` (member ``.val.size``; type
127 predicted minimum, mean, and maximum :term:`size` of 127 :c:type:`size_t`) is the predicted maximum size of blocks that
128 :term:`blocks` expected to be allocated in the pool. Blocks 128 will be allocated from the pool. Partial freeing is not
129 smaller than ``minimum_size`` and larger than ``maximum_size`` may 129 supported for blocks larger than this; doing so will
130 be allocated, but the pool is not guaranteed to manage them 130 result in the storage of the block never being reused.
131 space-efficiently. Furthermore, partial freeing is not supported 131
132 for blocks larger than ``maximum_size``; doing so will result in 132 These three arguments are *hints* to the MPS: the pool will be
133 the storage of the block never being reused. ``mean_size`` need 133 less efficient if they are wrong, but the only thing that will
134 not be an accurate mean, although the pool will manage 134 break is the partial freeing of large blocks.
135 ``mean_size`` blocks more efficiently if it is. 135
136 136 * :c:macro:`MPS_KEY_MVT_RESERVE_DEPTH` (member ``.val.count``;
137 ``reserve_depth`` is the expected hysteresis of the population of 137 type :c:type:`mps_count_t`) is the expected hysteresis of the
138 the pool. When blocks are freed, the pool will retain sufficient 138 population of the pool. When blocks are freed, the pool will
139 storage to allocate ``reserve_depth`` blocks of ``mean_size`` for 139 retain sufficient storage to allocate this many blocks of the mean
140 near term allocations (rather than immediately making that storage 140 size for near term allocations (rather than immediately making
141 available to other pools). 141 that storage available to other pools).
142 142
143 If a pool has a stable population, or one which only grows over 143 If a pool has a stable population, or one which only grows over
144 the lifetime of the pool, or one which grows steadily and then 144 the lifetime of the pool, or one which grows steadily and then
145 shrinks steadily, use a reserve depth of 0. 145 shrinks steadily, use a reserve depth of 0.
146 146
147 It is always safe to use a reserve depth of 0, but if the 147 It is always safe to use a reserve depth of 0, but if the
148 population typically fluctuates in a range (for example, the 148 population typically fluctuates in a range (for example, the
149 client program repeatedly creates and destroys a subset of blocks 149 client program repeatedly creates and destroys a subset of
150 in a loop), it is more efficient for the pool to retain enough 150 blocks in a loop), it is more efficient for the pool to retain
151 storage to satisfy that fluctuation. For example, if a pool has an 151 enough storage to satisfy that fluctuation. For example, if a
152 object population that typically fluctuates between 8,000 and 152 pool has an object population that typically fluctuates between
153 10,000, use a reserve depth of 2,000. 153 8,000 and 10,000, use a reserve depth of 2,000.
154 154
155 The reserve will not normally be available to other pools for 155 The reserve will not normally be available to other pools for
156 allocation, even when it is not used by the pool. If this is 156 allocation, even when it is not used by the pool. If this is
157 undesirable, a reserve depth of 0 may be used for a pool whose 157 undesirable, a reserve depth of 0 may be used for a pool whose
158 object population does vary, at a slight cost in efficiency. The 158 object population does vary, at a slight cost in efficiency. The
159 reserve does not guarantee any particular amount of allocation. 159 reserve does not guarantee any particular amount of allocation.
160 160
161 ``fragmentation_limit`` is a percentage from 1 to 100 (inclusive). 161 * :c:macro:`MPS_KEY_MVT_FRAG_LIMIT` (member ``.val.count``; type
162 It sets an upper limit on the space overhead of MVT, in case block 162 :c:type:`mps_count_t`) is a percentage from 1 to 100
163 death times and allocations do not correlate well. If the free 163 (inclusive). It sets an upper limit on the space overhead of an
164 space managed by the pool as a ratio of all the space managed by 164 MVT pool, in case block death times and allocations do not
165 the pool exceeds ``fragmentation_limit``, the pool falls back to a 165 correlate well. If the free space managed by the pool as a ratio
166 first fit allocation policy, exploiting space more efficiently at 166 of all the space managed by the pool exceeds the fragmentation
167 a cost in time efficiency. A fragmentation limit of 0 would cause 167 limit, the pool falls back to a first fit allocation policy,
168 the pool to operate as a first-fit pool, at a significant cost in 168 exploiting space more efficiently at a cost in time efficiency.
169 time efficiency: therefore this is not permitted. 169 A fragmentation limit of 0 would cause the pool to operate as a
170 170 first-fit pool, at a significant cost in time efficiency:
171 A fragmentation limit of 100 causes the pool to always use 171 therefore this is not permitted.
172 temporal fit (unless resources are exhausted). If the objects 172
173 allocated in the pool have similar lifetime expectancies, this 173 A fragmentation limit of 100 causes the pool to always use
174 mode will have the best time- and space-efficiency. If the objects 174 temporal fit (unless resources are exhausted). If the objects
175 have widely varying lifetime expectancies, this mode will be 175 allocated in the pool have similar lifetime expectancies, this
176 time-efficient, but may be space-inefficient. An intermediate 176 mode will have the best time- and space-efficiency. If the
177 setting can be used to limit the space-inefficiency of temporal 177 objects have widely varying lifetime expectancies, this mode
178 fit due to varying object life expectancies. 178 will be time-efficient, but may be space-inefficient. An
179 intermediate setting can be used to limit the space-inefficiency
180 of temporal fit due to varying object life expectancies.
181
182 For example, in :term:`C99`::
183
184 res = mps_pool_create_k(&pool, arena, mps_class_mvt(),
185 (mps_arg_s[]){{MPS_KEY_MIN_SIZE, .val.size = 4},
186 {MPS_KEY_MEAN_SIZE, .val.size = 32},
187 {MPS_KEY_MAX_SIZE, .val.size = 1024},
188 {MPS_KEY_MVT_RESERVE_DEPTH, .val.count = 256},
189 {MPS_KEY_MVT_FRAG_LIMIT, .val.count = 50},
190 {MPS_KEY_ARGS_END}});
191
192 .. deprecated:: starting with version 1.112.
193
194 When using :c:func:`mps_pool_create`, pass the arguments like
195 this::
196
197 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
198 mps_class_t mps_class_mvt(),
199 size_t minimum_size,
200 size_t mean_size,
201 size_t maximum_size,
202 mps_count_t reserve_depth,
203 mps_count_t fragmentation_limit)
179 204
180 205
181.. index:: 206.. index::
diff --git a/mps/manual/html/_sources/pool/snc.txt b/mps/manual/html/_sources/pool/snc.txt
index e9b5003e91a..04fd8d548ee 100644
--- a/mps/manual/html/_sources/pool/snc.txt
+++ b/mps/manual/html/_sources/pool/snc.txt
@@ -95,23 +95,47 @@ SNC introspection
95 Return the :term:`pool class` for an SNC (Stack No Check) 95 Return the :term:`pool class` for an SNC (Stack No Check)
96 :term:`pool`. 96 :term:`pool`.
97 97
98 When creating an SNC pool, :c:func:`mps_pool_create` takes one 98 When creating an SNC pool, :c:func:`mps_pool_create_k` requires one
99 extra argument:: 99 :term:`keyword argument`:
100 100
101 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, 101 * :c:macro:`MPS_KEY_FORMAT` (member ``.val.format``; type
102 mps_class_t mps_class_snc(), 102 :c:type:`mps_fmt_t`) specifies the :term:`object format` for the
103 mps_fmt_t fmt) 103 objects allocated in the pool. The format must provide a
104 :term:`scan method`, a :term:`skip method`, and a :term:`padding
105 method`.
104 106
105 ``fmt`` specifies the :term:`object format` for the objects 107 For example, in :term:`C99`::
106 allocated in the pool. The format must provide a :term:`scan
107 method`, a :term:`skip method`, and a :term:`padding method`.
108 108
109 When creating an allocation point on an SNC pool, 109 res = mps_pool_create_k(&pool, arena, mps_class_snc(),
110 :c:func:`mps_ap_create` takes one extra argument:: 110 (mps_arg_s[]){{MPS_KEY_FORMAT, .val.format = fmt},
111 {MPS_KEY_ARGS_END}});
111 112
112 mps_res_t mps_ap_create(mps_ap_t *ap_o, mps_pool_t pool, 113 .. deprecated:: starting with version 1.112.
113 mps_rank_t rank)
114 114
115 ``rank`` specifies the :term:`rank` of references in objects 115 When using :c:func:`mps_pool_create`, pass the format like
116 allocated on this allocation point. It must be 116 this::
117 :c:func:`mps_rank_exact`. 117
118 mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena,
119 mps_class_t mps_class_snc(),
120 mps_fmt_t fmt)
121
122 When creating an :term:`allocation point` on an SNC pool,
123 :c:func:`mps_ap_create_k` requires one keyword argument:
124
125 * :c:macro:`MPS_KEY_RANK` (member ``.val.rank``; type
126 :c:type:`mps_rank_t`) specifies the :term:`rank` of references
127 in objects allocated on this allocation point. It must be
128 :c:func:`mps_rank_exact`.
129
130 For example, in :term:`C99`::
131
132 res = mps_ap_create_k(&ap, awl_pool,
133 (mps_arg_s[]){{MPS_KEY_RANK, .val.rank = mps_rank_exact()},
134 {MPS_KEY_ARGS_END}});
135
136 .. deprecated:: starting with version 1.112.
137
138 When using :c:func:`mps_ap_create`, pass the rank like this::
139
140 mps_res_t mps_ap_create(mps_ap_t *ap_o, mps_pool_t pool,
141 mps_rank_t rank)
diff --git a/mps/manual/html/_sources/topic/allocation.txt b/mps/manual/html/_sources/topic/allocation.txt
index 1d808828ccd..512935c3765 100644
--- a/mps/manual/html/_sources/topic/allocation.txt
+++ b/mps/manual/html/_sources/topic/allocation.txt
@@ -96,7 +96,7 @@ many small objects. They must be used according to the
96 :c:type:`mps_ap_s`. 96 :c:type:`mps_ap_s`.
97 97
98 98
99.. c:function:: mps_res_t mps_ap_create(mps_ap_t *ap_o, mps_pool_t pool, ...) 99.. c:function:: mps_res_t mps_ap_create_k(mps_ap_t *ap_o, mps_pool_t pool, mps_arg_s args[])
100 100
101 Create an :term:`allocation point` in a :term:`pool`. 101 Create an :term:`allocation point` in a :term:`pool`.
102 102
@@ -105,12 +105,14 @@ many small objects. They must be used according to the
105 105
106 ``pool`` is the pool. 106 ``pool`` is the pool.
107 107
108 ``args`` are :term:`keyword arguments` specific to the pool class
109 to which ``pool`` belong. See the documentation for that pool
110 class. (Most pool classes don't take any keyword arguments; in
111 those cases you can pass :c:macro:`mps_args_none`.)
112
108 Returns :c:macro:`MPS_RES_OK` if successful, or another 113 Returns :c:macro:`MPS_RES_OK` if successful, or another
109 :term:`result code` if not. 114 :term:`result code` if not.
110 115
111 Some pool classes require additional arguments to be passed to
112 :c:func:`mps_ap_create`. See the documentation for the pool class.
113
114 .. warning:: 116 .. warning::
115 117
116 An allocation point must not be used by more than one 118 An allocation point must not be used by more than one
@@ -124,9 +126,28 @@ many small objects. They must be used according to the
124 ``va_list`` mechanism. 126 ``va_list`` mechanism.
125 127
126 128
129.. c:function:: mps_res_t mps_ap_create(mps_ap_t *ap_o, mps_pool_t pool, ...)
130
131 .. deprecated:: starting with version 1.112.
132
133 Use :c:func:`mps_ap_create_k` instead: the :term:`keyword
134 arguments` interface is more reliable and produces better
135 error messages.
136
137 An alternative to :c:func:`mps_ap_create_k` that takes its extra
138 arguments using the standard :term:`C` variable argument list
139 mechanism.
140
141
127.. c:function:: mps_res_t mps_ap_create_v(mps_ap_t *ap_o, mps_pool_t pool, va_list args) 142.. c:function:: mps_res_t mps_ap_create_v(mps_ap_t *ap_o, mps_pool_t pool, va_list args)
128 143
129 An alternative to :c:func:`mps_ap_create` that takes its extra 144 .. deprecated:: starting with version 1.112.
145
146 Use :c:func:`mps_ap_create_k` instead: the :term:`keyword
147 arguments` interface is more reliable and produces better
148 error messages.
149
150 An alternative to :c:func:`mps_ap_create_k` that takes its extra
130 arguments using the standard :term:`C` ``va_list`` mechanism. 151 arguments using the standard :term:`C` ``va_list`` mechanism.
131 152
132 153
@@ -642,7 +663,7 @@ branch prediction should work well since the test almost never fails).
642 synchronization in a multi-threaded environment. 663 synchronization in a multi-threaded environment.
643 664
644 Create an allocation point for a pool by calling 665 Create an allocation point for a pool by calling
645 :c:func:`mps_ap_create`, and allocate memory via one by calling 666 :c:func:`mps_ap_create_k`, and allocate memory via one by calling
646 :c:func:`mps_reserve` and :c:func:`mps_commit`. 667 :c:func:`mps_reserve` and :c:func:`mps_commit`.
647 668
648 669
diff --git a/mps/manual/html/_sources/topic/arena.txt b/mps/manual/html/_sources/topic/arena.txt
index ee34751c65a..264ae0409b1 100644
--- a/mps/manual/html/_sources/topic/arena.txt
+++ b/mps/manual/html/_sources/topic/arena.txt
@@ -14,7 +14,7 @@ Arenas
14An arena is an object that encapsulates the state of the Memory Pool 14An arena is an object that encapsulates the state of the Memory Pool
15System, and tells it where to get the memory it manages. You typically 15System, and tells it where to get the memory it manages. You typically
16start a session with the MPS by creating an arena with 16start a session with the MPS by creating an arena with
17:c:func:`mps_arena_create` and end the session by destroying it with 17:c:func:`mps_arena_create_k` and end the session by destroying it with
18:c:func:`mps_arena_destroy`. The only function you might need to call 18:c:func:`mps_arena_destroy`. The only function you might need to call
19before making an arena is :c:func:`mps_telemetry_control`. 19before making an arena is :c:func:`mps_telemetry_control`.
20 20
@@ -76,28 +76,14 @@ the way that they acquire the memory to be managed.
76.. c:function:: mps_res_t mps_arena_create_k(mps_arena_t *arena_o, mps_arena_class_t arena_class, mps_arg_s args[]) 76.. c:function:: mps_res_t mps_arena_create_k(mps_arena_t *arena_o, mps_arena_class_t arena_class, mps_arg_s args[])
77 77
78 Create an :term:`arena`. 78 Create an :term:`arena`.
79
80 ``arena_o`` points to a location that will hold a pointer to the new
81 arena.
82
83 ``arena_class`` is the :term:`arena class`.
84
85 ``args`` are :ref:`topic-interface-keywords` specific to the arena
86 class. See the documentation for the arena class.
87
88
89.. c:function:: mps_res_t mps_arena_create(mps_arena_t *arena_o, mps_arena_class_t arena_class, ...)
90
91 Create an :term:`arena`.
92 79
93 ``arena_o`` points to a location that will hold a pointer to the new 80 ``arena_o`` points to a location that will hold a pointer to the new
94 arena. 81 arena.
95 82
96 ``arena_class`` is the :term:`arena class`. 83 ``arena_class`` is the :term:`arena class`.
97 84
98 Some arena classes require additional arguments to be passed to 85 ``args`` are :term:`keyword arguments` specific to the arena
99 :c:func:`mps_arena_create`. See the documentation for the arena 86 class. See the documentation for the arena class.
100 class.
101 87
102 Returns :c:macro:`MPS_RES_OK` if the arena is created 88 Returns :c:macro:`MPS_RES_OK` if the arena is created
103 successfully, or another :term:`result code` otherwise. 89 successfully, or another :term:`result code` otherwise.
@@ -105,17 +91,31 @@ the way that they acquire the memory to be managed.
105 The arena persists until it is destroyed by calling 91 The arena persists until it is destroyed by calling
106 :c:func:`mps_arena_destroy`. 92 :c:func:`mps_arena_destroy`.
107 93
108 .. note::
109 94
110 There's an alternative function :c:func:`mps_arena_create_v` 95.. c:function:: mps_res_t mps_arena_create(mps_arena_t *arena_o, mps_arena_class_t arena_class, ...)
111 that takes its extra arguments using the standard :term:`C` 96
112 ``va_list`` mechanism. 97 .. deprecated:: starting with version 1.112.
98
99 Use :c:func:`mps_arena_create_k` instead: the :term:`keyword
100 arguments` interface is more reliable and produces better
101 error messages.
102
103 An alternative to :c:func:`mps_arena_create_k` that takes its
104 extra arguments using the standard :term:`C` variable argument
105 list mechanism.
113 106
114 107
115.. c:function:: mps_res_t mps_arena_create_v(mps_arena_t *arena_o, mps_arena_class_t arena_class, va_list args) 108.. c:function:: mps_res_t mps_arena_create_v(mps_arena_t *arena_o, mps_arena_class_t arena_class, va_list args)
116 109
117 An alternative to :c:func:`mps_arena_create` that takes its extra 110 .. deprecated:: starting with version 1.112.
118 arguments using the standard :term:`C` ``va_list`` mechanism. 111
112 Use :c:func:`mps_arena_create_k` instead: the :term:`keyword
113 arguments` interface is more reliable and produces better
114 error messages.
115
116 An alternative to :c:func:`mps_arena_create_k` that takes its
117 extra arguments using the standard :term:`C` ``va_list``
118 mechanism.
119 119
120 120
121.. c:function:: void mps_arena_destroy(mps_arena_t arena) 121.. c:function:: void mps_arena_destroy(mps_arena_t arena)
@@ -156,30 +156,24 @@ Client arenas
156 program`. This memory chunk is passed when the arena is created. 156 program`. This memory chunk is passed when the arena is created.
157 157
158 When creating a client arena, :c:func:`mps_arena_create_k` requires two 158 When creating a client arena, :c:func:`mps_arena_create_k` requires two
159 :ref:`topic-interface-keywords`: 159 :term:`keyword arguments`:
160 160
161 * ``MPS_KEY_ARENA_CL_BASE`` (type ``mps_addr_t``) is the 161 * :c:macro:`MPS_KEY_ARENA_CL_ADDR` (member ``.val.addr``; type
162 :term:`address` of the chunk of memory that will be managed by the 162 :c:type:`mps_addr_t`) is the :term:`address` of the chunk of memory
163 arena. 163 that will be managed by the arena.
164 164
165 * ``MPS_KEY_ARENA_SIZE`` (type ``size_t``) is its size. 165 * :c:macro:`MPS_KEY_ARENA_SIZE` (member ``.val.size``; type
166 166 :c:type:`size_t`) is its size.
167 For example (in C99):: 167
168 168 For example (in :term:`C99`)::
169
169 res = mps_arena_create_k(&arena, mps_arena_class_cl(), 170 res = mps_arena_create_k(&arena, mps_arena_class_cl(),
170 (mps_arg_s[]){{MPS_KEY_ARENA_CL_BASE, .val.addr = base}, 171 (mps_arg_s[]){{MPS_KEY_ARENA_CL_ADDR, .val.addr = base},
171 {MPS_KEY_ARENA_SIZE, .val.size = size}, 172 {MPS_KEY_ARENA_SIZE, .val.size = size},
172 {MPS_KEY_ARGS_END}}); 173 {MPS_KEY_ARGS_END}});
173 174
174 When creating a client arena, :c:func:`mps_arena_create` takes the
175 these arguments like this::
176
177 mps_res_t mps_arena_create(mps_arena_t *arena_o,
178 mps_arena_class_t mps_arena_class_cl,
179 size_t size, mps_addr_t base)
180
181 If the chunk is too small to hold the internal arena structures, 175 If the chunk is too small to hold the internal arena structures,
182 :c:func:`mps_arena_create` returns :c:macro:`MPS_RES_MEMORY`. In 176 :c:func:`mps_arena_create_k` returns :c:macro:`MPS_RES_MEMORY`. In
183 this case, you need to use a (much) larger chunk. 177 this case, you need to use a (much) larger chunk.
184 178
185 .. note:: 179 .. note::
@@ -189,6 +183,15 @@ Client arenas
189 183
190 Client arenas have no mechanism for returning unused memory. 184 Client arenas have no mechanism for returning unused memory.
191 185
186 .. deprecated:: starting with version 1.112.
187
188 When using :c:func:`mps_arena_create`, pass the size and base
189 address like this::
190
191 mps_res_t mps_arena_create(mps_arena_t *arena_o,
192 mps_arena_class_t mps_arena_class_cl,
193 size_t size, mps_addr_t base)
194
192 195
193.. c:function:: mps_res_t mps_arena_extend(mps_arena_t arena, mps_addr_t base, size_t size) 196.. c:function:: mps_res_t mps_arena_extend(mps_arena_t arena, mps_addr_t base, size_t size)
194 197
@@ -229,13 +232,13 @@ Virtual memory arenas
229 more efficient. 232 more efficient.
230 233
231 When creating a virtual memory arena, :c:func:`mps_arena_create_k` 234 When creating a virtual memory arena, :c:func:`mps_arena_create_k`
232 requires one 235 requires one :term:`keyword argument`:
233 :ref:`topic-interface-keywords`: 236
234 237 * :c:macro:`MPS_KEY_ARENA_SIZE` (member ``.val.size``; type
235 * ``MPS_KEY_ARENA_SIZE`` (type ``size_t``) 238 :c:type:`size_t`).
236 239
237 For example (in C99):: 240 For example (in :term:`C99`)::
238 241
239 res = mps_arena_create_k(&arena, mps_arena_class_cl(), 242 res = mps_arena_create_k(&arena, mps_arena_class_cl(),
240 (mps_arg_s[]){{MPS_KEY_ARENA_SIZE, .val.size = size}, 243 (mps_arg_s[]){{MPS_KEY_ARENA_SIZE, .val.size = size},
241 {MPS_KEY_ARGS_END}}); 244 {MPS_KEY_ARGS_END}});
@@ -256,38 +259,41 @@ Virtual memory arenas
256 more times it has to extend its address space, the less 259 more times it has to extend its address space, the less
257 efficient garbage collection will become. 260 efficient garbage collection will become.
258 261
259 An optional :ref:`topic-interface-keywords` may be passed, but is 262 An optional :term:`keyword argument` may be passed, but is
260 only used on the Windows operating system: 263 only used on the Windows operating system:
261 264
262 * ``MPS_KEY_VM_W3_TOP_DOWN`` (type ``mps_bool_t``) 265 * :c:macro:`MPS_KEY_VMW3_TOP_DOWN` (member ``.val.b``; type
263 266 :c:type:`mps_bool_t`).
267
264 If true, the arena will allocate address space starting at the 268 If true, the arena will allocate address space starting at the
265 highest possible address and working downwards through memory. 269 highest possible address and working downwards through memory.
266 270
267 .. note:: 271 .. note::
268 272
269 This causes the arena to pass the ``MEM_TOP_DOWN`` flag to 273 This causes the arena to pass the ``MEM_TOP_DOWN`` flag to
270 `VirtualAlloc`_. 274 `VirtualAlloc`_.
271 275
272 .. _VirtualAlloc: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366887%28v=vs.85%29.aspx 276 .. _VirtualAlloc: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366887%28v=vs.85%29.aspx
273 277
274 When creating a virtual memory arena, :c:func:`mps_arena_create`
275 takes one extra argument::
276
277 mps_res_t mps_arena_create(mps_arena_t *arena_o,
278 mps_arena_class_t arena_class_vm(),
279 size_t size)
280
281 If the MPS fails to reserve adequate address space to place the 278 If the MPS fails to reserve adequate address space to place the
282 arena in, :c:func:`mps_arena_create` returns 279 arena in, :c:func:`mps_arena_create_k` returns
283 :c:macro:`MPS_RES_RESOURCE`. Possibly this means that other parts 280 :c:macro:`MPS_RES_RESOURCE`. Possibly this means that other parts
284 of the program are reserving too much virtual memory. 281 of the program are reserving too much virtual memory.
285 282
286 If the MPS fails to allocate memory for the internal arena 283 If the MPS fails to allocate memory for the internal arena
287 structures, :c:func:`mps_arena_create` returns 284 structures, :c:func:`mps_arena_create_k` returns
288 :c:macro:`MPS_RES_MEMORY`. Either ``size`` was far too small or 285 :c:macro:`MPS_RES_MEMORY`. Either ``size`` was far too small or
289 the operating system refused to provide enough memory. 286 the operating system refused to provide enough memory.
290 287
288 .. deprecated:: starting with version 1.112.
289
290 When using :c:func:`mps_arena_create`, pass the size like
291 this::
292
293 mps_res_t mps_arena_create(mps_arena_t *arena_o,
294 mps_arena_class_t arena_class_vm(),
295 size_t size)
296
291 297
292.. index:: 298.. index::
293 single: arena; properties 299 single: arena; properties
@@ -410,16 +416,17 @@ Arena properties
410 416
411 For a :term:`client arena`, this is the sum of the usable portions 417 For a :term:`client arena`, this is the sum of the usable portions
412 of the chunks of memory passed to the arena by the :term:`client 418 of the chunks of memory passed to the arena by the :term:`client
413 program` via :c:func:`mps_arena_create` and 419 program` via :c:func:`mps_arena_create_k` and
414 :c:func:`mps_arena_extend`. 420 :c:func:`mps_arena_extend`.
415 421
416 .. note:: 422 .. note::
417 423
418 For a client arena, the reserved address may be lower than the 424 For a client arena, the reserved address may be lower than the
419 sum of the ``size`` arguments passed to 425 sum of the :c:macro:`MPS_KEY_ARENA_SIZE` keyword argument
420 :c:func:`mps_arena_create` and :c:func:`mps_arena_extend`, 426 passed to :c:func:`mps_arena_create_k` and the ``size``
421 because the arena may be unable to use the whole of each chunk 427 arguments passed to :c:func:`mps_arena_extend`, because the
422 for reasons of alignment. 428 arena may be unable to use the whole of each chunk for reasons
429 of alignment.
423 430
424 431
425.. c:function:: size_t mps_arena_spare_commit_limit(mps_arena_t arena) 432.. c:function:: size_t mps_arena_spare_commit_limit(mps_arena_t arena)
@@ -545,7 +552,7 @@ can only be called in this state.
545.. c:function:: void mps_arena_clamp(mps_arena_t arena) 552.. c:function:: void mps_arena_clamp(mps_arena_t arena)
546 553
547 Put an :term:`arena` into the :term:`clamped state`. 554 Put an :term:`arena` into the :term:`clamped state`.
548 555
549 ``arena`` is the arena to clamp. 556 ``arena`` is the arena to clamp.
550 557
551 In the clamped state, no object motion will occur and the 558 In the clamped state, no object motion will occur and the
@@ -752,7 +759,7 @@ Arena introspection
752 Introspection functions covered in other chapters are: 759 Introspection functions covered in other chapters are:
753 760
754 * :c:func:`mps_addr_fmt`: determine the :term:`object format` to 761 * :c:func:`mps_addr_fmt`: determine the :term:`object format` to
755 which an address belongs; 762 which an address belongs;
756 * :c:func:`mps_arena_formatted_objects_walk`: visit all 763 * :c:func:`mps_arena_formatted_objects_walk`: visit all
757 :term:`formatted objects` in an arena; 764 :term:`formatted objects` in an arena;
758 * :c:func:`mps_arena_roots_walk`: visit all references in 765 * :c:func:`mps_arena_roots_walk`: visit all references in
@@ -763,7 +770,7 @@ Arena introspection
763 770
764.. c:function:: mps_bool_t mps_arena_has_addr(mps_arena_t arena, mps_addr_t addr) 771.. c:function:: mps_bool_t mps_arena_has_addr(mps_arena_t arena, mps_addr_t addr)
765 772
766 Test whether an :term:`address` is managed by an :term:`arena`. 773 Test whether an :term:`address` is managed by an :term:`arena`.
767 774
768 ``arena`` is an arena. 775 ``arena`` is an arena.
769 776
diff --git a/mps/manual/html/_sources/topic/debugging.txt b/mps/manual/html/_sources/topic/debugging.txt
index 2c4b68bd71d..32524d7869e 100644
--- a/mps/manual/html/_sources/topic/debugging.txt
+++ b/mps/manual/html/_sources/topic/debugging.txt
@@ -71,15 +71,20 @@ For example::
71 }; 71 };
72 mps_pool_t pool; 72 mps_pool_t pool;
73 mps_res_t res; 73 mps_res_t res;
74 res = mps_pool_create(&pool, arena, mps_class_ams_debug(), 74 res = mps_pool_create_k(&pool, arena, mps_class_ams_debug(),
75 &debug_options, &fmt, &chain) 75 (mps_arg_s[]){{MPS_KEY_POOL_DEBUG_OPTIONS, .val.pool_debug_options = &debug_options},
76 {MPS_KEY_FORMAT, .val.format = &fmt},
77 {MPS_KEY_CHAIN, .val.chain = &chain},
78 {MPS_KEY_ARGS_END}});
76 if (res != MPS_RES_OK) error("can't create debug pool"); 79 if (res != MPS_RES_OK) error("can't create debug pool");
77 80
78 81
79.. c:type:: mps_pool_debug_option_s 82.. c:type:: mps_pool_debug_option_s
80 83
81 The type of the structure used to pass options to 84 The type of the structure passed as the
82 :c:func:`mps_pool_create` for debugging :term:`pool classes`. :: 85 :c:macro:`MPS_KEY_POOL_DEBUG_OPTIONS` keyword argument to
86 :c:func:`mps_pool_create_k` when creating a debugging :term:`pool
87 class`. ::
83 88
84 typedef struct mps_pool_debug_option_s { 89 typedef struct mps_pool_debug_option_s {
85 void *fence_template; 90 void *fence_template;
diff --git a/mps/manual/html/_sources/topic/error.txt b/mps/manual/html/_sources/topic/error.txt
index c0178a38d8d..296ddb9fa30 100644
--- a/mps/manual/html/_sources/topic/error.txt
+++ b/mps/manual/html/_sources/topic/error.txt
@@ -227,7 +227,7 @@ this documentation.
227 227
228``format.c: SigCheck Format: format`` 228``format.c: SigCheck Format: format``
229 229
230 The client program called :c:func:`mps_pool_create` for a 230 The client program called :c:func:`mps_pool_create_k` for a
231 :term:`pool class` like :ref:`pool-amc` that requires a 231 :term:`pool class` like :ref:`pool-amc` that requires a
232 :term:`object format`, but passed something other than a 232 :term:`object format`, but passed something other than a
233 :c:type:`mps_fmt_t` for this argument. 233 :c:type:`mps_fmt_t` for this argument.
diff --git a/mps/manual/html/_sources/topic/format.txt b/mps/manual/html/_sources/topic/format.txt
index ea1e7faabb2..f3b4fd330bd 100644
--- a/mps/manual/html/_sources/topic/format.txt
+++ b/mps/manual/html/_sources/topic/format.txt
@@ -92,7 +92,9 @@ For example::
92 if (res != MPS_RES_OK) error("Couldn't create obj format"); 92 if (res != MPS_RES_OK) error("Couldn't create obj format");
93 /* obj_fmt created successfully */ 93 /* obj_fmt created successfully */
94 94
95 res = mps_pool_create(&obj_pool, arena, pool_class, obj_fmt); 95 res = mps_pool_create_k(&obj_pool, arena, pool_class,
96 (mps_arg_s[]){{MPS_KEY_FORMAT, .val.format = obj_fmt},
97 {MPS_KEY_ARGS_END}});
96 if (res != MPS_RES_OK) error("Couldn't create obj pool"); 98 if (res != MPS_RES_OK) error("Couldn't create obj pool");
97 99
98 100
diff --git a/mps/manual/html/_sources/topic/index.txt b/mps/manual/html/_sources/topic/index.txt
index baf376f3fc4..b4e6300201e 100644
--- a/mps/manual/html/_sources/topic/index.txt
+++ b/mps/manual/html/_sources/topic/index.txt
@@ -7,6 +7,7 @@ Reference
7 :numbered: 7 :numbered:
8 8
9 interface 9 interface
10 keyword
10 error 11 error
11 arena 12 arena
12 pool 13 pool
diff --git a/mps/manual/html/_sources/topic/interface.txt b/mps/manual/html/_sources/topic/interface.txt
index a37382a6eb3..e0bca91d1fb 100644
--- a/mps/manual/html/_sources/topic/interface.txt
+++ b/mps/manual/html/_sources/topic/interface.txt
@@ -54,8 +54,8 @@ Support policy
54Language 54Language
55-------- 55--------
56 56
571. The MPS public interface conforms to ANSI/ISO Standard C (IEC 571. The MPS public interface conforms to :ref:`ANSI/ISO Standard C (IEC
58 9899:1990). 58 9899:1990) <C1990>`.
59 59
60 60
61.. index:: 61.. index::
@@ -171,6 +171,10 @@ Functions
171 171
1727. In/out parameters have names ending with ``_io``. 1727. In/out parameters have names ending with ``_io``.
173 173
1748. A function that takes optional arguments does so in the form of an
175 array of keyword argument structures. These functions have names
176 ending with ``_k``. See :ref:`topic-keyword`.
177
174 178
175.. index:: 179.. index::
176 single: interface; type punning 180 single: interface; type punning
@@ -258,45 +262,6 @@ Macros
258 separately. 262 separately.
259 263
260 264
261.. _topic-interface-keywords:
262
263Keyword arguments
264-----------------
265
266Some functions take :term:`keyword arguments` in order to pass values
267that might be optional, or are only required in some circumstances. For
268example, :ref:`client arenas <topic-arena-client>` require a base address. These
269arguments are passed in a keyword argument array, like this::
270
271 mps_res_t res;
272 mps_arena_t arena;
273 mps_arg_s args[3];
274 args[0].key = MPS_KEY_ARENA_SIZE;
275 args[0].val.size = 6553600;
276 args[1].key = MPS_KEY_ARENA_CL_BASE;
277 args[1].val.addr = base_address;
278 args[2].key = MPS_KEY_ARGS_END;
279 res = mps_arena_create_k(&arena, mps_arena_class_cl(), args);
280
281If you are writing C99, you can write this more concisely as::
282
283 mps_res_t res;
284 mps_arena_t arena;
285 res = mps_arena_create_k(&arena, mps_arena_class_cl(),
286 (mps_arg_s[]){{MPS_KEY_ARENA_SIZE, .val.size = 6553600},
287 {MPS_KEY_ARENA_CL_BASE, .val.addr = base_address},
288 {MPS_KEY_ARGS_END}});
289
290The argument array must not be ``NULL``, and must end with
291``MPS_KEY_ARGS_END``.
292
293On return, the keyword argument array will be *modified* to remove any
294arguments that have been used. If all arguments have been used the
295first element key will be MPS_KEY_ARGS_END.
296
297If you don't want to pass any arguments, you can either call the equivalent function that does not take
298
299
300.. _topic-interface-general: 265.. _topic-interface-general:
301 266
302General types 267General types
diff --git a/mps/manual/html/_sources/topic/keyword.txt b/mps/manual/html/_sources/topic/keyword.txt
new file mode 100644
index 00000000000..1acf73e34bf
--- /dev/null
+++ b/mps/manual/html/_sources/topic/keyword.txt
@@ -0,0 +1,190 @@
1.. index::
2 pair: arguments; keyword
3
4.. _topic-keyword:
5
6Keyword arguments
7-----------------
8
9Some functions in the MPS interface take :term:`keyword arguments` in
10order to pass values that might be optional, or are only required in
11some circumstances. For example, the function
12:c:func:`mps_arena_create_k` creates any class of :term:`arena`, but
13:term:`client arenas` require you to specify a base address. These
14arguments are passed in a keyword argument array, like this::
15
16 mps_res_t res;
17 mps_arena_t arena;
18 mps_arg_s args[3];
19 args[0].key = MPS_KEY_ARENA_SIZE;
20 args[0].val.size = 6553600;
21 args[1].key = MPS_KEY_ARENA_CL_ADDR;
22 args[1].val.addr = base_address;
23 args[2].key = MPS_KEY_ARGS_END;
24 res = mps_arena_create_k(&arena, mps_arena_class_cl(), args);
25
26Each keyword argument in the array is a structure of type
27:c:type:`mps_arg_s`.
28
29For convenience and robustness, the MPS interface includes macros to
30help with forming keyword argument lists::
31
32 MPS_ARGS_BEGIN(args) {
33 MPS_ARGS_ADD(args, MPS_KEY_ARENA_SIZE, size, 6553600);
34 MPS_ARGS_ADD(args, MPS_KEY_ARENA_CL_ADDR, addr, base_address);
35 MPS_ARGS_DONE(args);
36 res = mps_arena_create_k(&arena, mps_arena_class_cl(), args);
37 } MPS_ARGS_END(args);
38
39But if you are writing :term:`C99`, you can write this more concisely as::
40
41 mps_res_t res;
42 mps_arena_t arena;
43 res = mps_arena_create_k(&arena, mps_arena_class_cl(),
44 (mps_arg_s[]){{MPS_KEY_ARENA_SIZE, .val.size = 6553600},
45 {MPS_KEY_ARENA_CL_ADDR, .val.addr = base_address},
46 {MPS_KEY_ARGS_END}});
47
48The argument array must not be ``NULL``, and must end with
49:c:macro:`MPS_KEY_ARGS_END`. If you don't want to pass any arguments, you can
50either call the equivalent function that does not take keyword arguments
51(named without the ``_k``) or pass :c:macro:`mps_args_none`.
52
53When a function that takes keyword arguments returns, the keyword
54argument array has been *modified* to remove any arguments that have
55been used. If all arguments have been used, the first element key is
56now :c:macro:`MPS_KEY_ARGS_END`.
57
58
59.. c:type:: mps_arg_s
60
61 The type of the structure used to represent a single
62 :term:`keyword argument` to a function. ::
63
64 typedef struct mps_arg_s {
65 mps_key_t key;
66 union {
67 mps_bool_t b;
68 char c;
69 const char *string;
70 int i;
71 unsigned u;
72 long l;
73 unsigned long ul;
74 size_t size;
75 mps_addr_t addr;
76 mps_fmt_t format;
77 mps_chain_t chain;
78 struct mps_pool_debug_option_s *pool_debug_options;
79 mps_addr_t (*addr_method)(mps_addr_t);
80 mps_align_t align;
81 mps_word_t count;
82 void *p;
83 mps_rank_t rank;
84 } val;
85 } mps_arg_s;
86
87 ``key`` identifies the key. It must be one of the legal values
88 of :c:type:`mps_key_t` listed in the documentation for that type.
89
90 ``val`` is the corresponding value. The documentation for each
91 value of the type :c:type:`mps_key_t` explains which structure
92 member is used by that keyword.
93
94
95.. c:macro:: mps_args_none
96
97 An array of :c:type:`mps_arg_s` representing the empty list of
98 keyword arguments. Equivalent to::
99
100 mps_arg_s mps_args_none[] = {{MPS_KEY_ARGS_END}};
101
102
103.. c:type:: mps_key_t
104
105 The type of :term:`keyword argument` keys. Must take one of the
106 following values:
107
108 ======================================== ====================== ==========================================================
109 Keyword Value slot See
110 ======================================== ====================== ==========================================================
111 :c:macro:`MPS_KEY_ARGS_END` *none* *see above*
112 :c:macro:`MPS_KEY_ALIGN` ``align`` :c:func:`mps_class_mvff`
113 :c:macro:`MPS_KEY_AMS_SUPPORT_AMBIGUOUS` ``b`` :c:func:`mps_class_ams`
114 :c:macro:`MPS_KEY_ARENA_CL_ADDR` ``addr`` :c:func:`mps_arena_class_cl`
115 :c:macro:`MPS_KEY_ARENA_SIZE` ``size`` :c:func:`mps_arena_class_vm`, :c:func:`mps_arena_class_cl`
116 :c:macro:`MPS_KEY_AWL_FIND_DEPENDENT` ``addr_method`` :c:func:`mps_class_awl`
117 :c:macro:`MPS_KEY_CHAIN` ``chain`` :c:func:`mps_class_amc`, :c:func:`mps_class_amcz`, :c:func:`mps_class_ams`
118 :c:macro:`MPS_KEY_EXTEND_BY` ``size`` :c:func:`mps_class_mfs`, :c:func:`mps_class_mv`, :c:func:`mps_class_mvff`
119 :c:macro:`MPS_KEY_FORMAT` ``format`` :c:func:`mps_class_amc`, :c:func:`mps_class_amcz`, :c:func:`mps_class_ams`, :c:func:`mps_class_awl`, :c:func:`mps_class_lo` , :c:func:`mps_class_snc`
120 :c:macro:`MPS_KEY_MAX_SIZE` ``size`` :c:func:`mps_class_mv`
121 :c:macro:`MPS_KEY_MEAN_SIZE` ``size`` :c:func:`mps_class_mv`, :c:func:`mps_class_mvt`, :c:func:`mps_class_mvff`
122 :c:macro:`MPS_KEY_MFS_UNIT_SIZE` ``size`` :c:func:`mps_class_mfs`
123 :c:macro:`MPS_KEY_MIN_SIZE` ``size`` :c:func:`mps_class_mvt`
124 :c:macro:`MPS_KEY_MVFF_ARENA_HIGH` ``b`` :c:func:`mps_class_mvff`
125 :c:macro:`MPS_KEY_MVFF_FIRST_FIT` ``b`` :c:func:`mps_class_mvff`
126 :c:macro:`MPS_KEY_MVFF_SLOT_HIGH` ``b`` :c:func:`mps_class_mvff`
127 :c:macro:`MPS_KEY_MVT_FRAG_LIMIT` ``count`` :c:func:`mps_class_mvt`
128 :c:macro:`MPS_KEY_MVT_RESERVE_DEPTH` ``count`` :c:func:`mps_class_mvt`
129 :c:macro:`MPS_KEY_POOL_DEBUG_OPTIONS` ``pool_debug_options`` :c:func:`mps_class_ams_debug`, :c:func:`mps_class_mv_debug`, :c:func:`mps_class_mvff_debug`
130 :c:macro:`MPS_KEY_RANK` ``rank`` :c:func:`mps_class_awl`, :c:func:`mps_class_snc`
131 :c:macro:`MPS_KEY_VMW3_TOP_DOWN` ``b`` :c:func:`mps_arena_class_vm`
132 ======================================== ====================== ==========================================================
133
134
135.. c:function:: MPS_ARGS_BEGIN(args)
136
137 Start construction of a list of keyword arguments. This macro must
138 be used like this::
139
140 MPS_ARGS_BEGIN(args) {
141 MPS_ARGS_ADD(args, MPS_KEY_ARENA_SIZE, size, 6553600);
142 MPS_ARGS_ADD(args, MPS_KEY_ARENA_CL_ADDR, addr, base_address);
143 MPS_ARGS_DONE(args);
144 res = mps_arena_create_k(&arena, mps_arena_class_cl(), args);
145 } MPS_ARGS_END(args);
146
147 That is, you must call :c:func:`MPS_ARGS_ADD` zero or more times,
148 and then call :c:func:`MPS_ARGS_DONE` before passing the arguments
149 to a function.
150
151 ``args`` is the name of the array that contains the keyword
152 arguments. The array is stack-allocated, and exists between
153 :c:macro:`MPS_ARGS_BEGIN` and :c:macro:`MPS_ARGS_END`.
154
155 It is safe to nest blocks created by :c:macro:`MPS_ARGS_BEGIN` and
156 :c:macro:`MPS_ARGS_END`.
157
158
159.. c:function:: MPS_ARGS_ADD(mps_arg_s args[], mps_key_t key, value)
160
161 Add an argument to a list of keyword arguments. This macro must be
162 used only between :c:macro:`MPS_ARGS_BEGIN` and
163 :c:macro:`MPS_ARGS_END`.
164
165 ``args`` is the name of array that contains the keyword arguments.
166 It must match the argument to the preceding call to
167 :c:func:`MPS_ARGS_BEGIN`.
168
169
170.. c:function:: MPS_ARGS_DONE(args)
171
172 Finalize a list of keyword arguments. This macro must be used only
173 between :c:macro:`MPS_ARGS_BEGIN` and :c:macro:`MPS_ARGS_END`.
174
175 ``args`` is the name of array that contains the keyword arguments.
176 It must match the argument to the preceding call to
177 :c:func:`MPS_ARGS_BEGIN`.
178
179 After calling this macro, the array ``args`` is ready to pass to a
180 function.
181
182
183.. c:function:: MPS_ARGS_END(args)
184
185 Finish using a list of keyword arguments whose construction was
186 started by :c:func:`MPS_ARGS_BEGIN`.
187
188 ``args`` is the name of array that contains the keyword arguments.
189 It must match the argument to the preceding call to
190 :c:func:`MPS_ARGS_BEGIN`.
diff --git a/mps/manual/html/_sources/topic/pool.txt b/mps/manual/html/_sources/topic/pool.txt
index 41d68b0d6bf..ad748310a22 100644
--- a/mps/manual/html/_sources/topic/pool.txt
+++ b/mps/manual/html/_sources/topic/pool.txt
@@ -19,7 +19,7 @@ making it available for allocation.
19 :c:func:`mps_alloc` or via an :term:`allocation point`. 19 :c:func:`mps_alloc` or via an :term:`allocation point`.
20 20
21 21
22.. c:function:: mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, mps_class_t class, ...) 22.. c:function:: mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, mps_class_t class, mps_arg_s args[])
23 23
24 Create a :term:`pool` in an :term:`arena`. 24 Create a :term:`pool` in an :term:`arena`.
25 25
@@ -30,9 +30,8 @@ making it available for allocation.
30 30
31 ``class`` is the :term:`pool class` of the new pool. 31 ``class`` is the :term:`pool class` of the new pool.
32 32
33 Some pool classes require additional arguments to be passed to 33 ``args`` are :term:`keyword arguments` specific to the pool class.
34 :c:func:`mps_pool_create`. See the documentation for the pool 34 See the documentation for the pool class.
35 class.
36 35
37 Returns :c:macro:`MPS_RES_OK` if the pool is created successfully, 36 Returns :c:macro:`MPS_RES_OK` if the pool is created successfully,
38 or another :term:`result code` otherwise. 37 or another :term:`result code` otherwise.
@@ -40,16 +39,29 @@ making it available for allocation.
40 The pool persists until it is destroyed by calling 39 The pool persists until it is destroyed by calling
41 :c:func:`mps_pool_destroy`. 40 :c:func:`mps_pool_destroy`.
42 41
43 .. note::
44 42
45 There's an alternative function :c:func:`pool_create_v` that 43.. c:function:: mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, mps_class_t class, ...)
46 takes its extra arguments using the standard :term:`C` 44
47 ``va_list`` mechanism. 45 .. deprecated:: starting with version 1.112.
46
47 Use :c:func:`mps_pool_create_k` instead: the :term:`keyword
48 arguments` interface is more reliable and produces better
49 error messages.
50
51 An alternative to :c:func:`mps_pool_create_k` that takes its
52 extra arguments using the standard :term:`C` variable argument
53 list mechanism.
48 54
49 55
50.. c:function:: mps_res_t mps_pool_create_v(mps_pool_t *pool_o, mps_arena_t arena, mps_class_t class, va_list args) 56.. c:function:: mps_res_t mps_pool_create_v(mps_pool_t *pool_o, mps_arena_t arena, mps_class_t class, va_list args)
51 57
52 An alternative to :c:func:`mps_pool_create` that takes its extra 58 .. deprecated:: starting with version 1.112.
59
60 Use :c:func:`mps_pool_create_k` instead: the :term:`keyword
61 arguments` interface is more reliable and produces better
62 error messages.
63
64 An alternative to :c:func:`mps_pool_create_k` that takes its extra
53 arguments using the standard :term:`C` ``va_list`` mechanism. 65 arguments using the standard :term:`C` ``va_list`` mechanism.
54 66
55 67
diff --git a/mps/manual/html/_static/pygments.css b/mps/manual/html/_static/pygments.css
index d79caa151c2..1a14f2ae1ab 100644
--- a/mps/manual/html/_static/pygments.css
+++ b/mps/manual/html/_static/pygments.css
@@ -13,11 +13,11 @@
13.highlight .gr { color: #FF0000 } /* Generic.Error */ 13.highlight .gr { color: #FF0000 } /* Generic.Error */
14.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 14.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
15.highlight .gi { color: #00A000 } /* Generic.Inserted */ 15.highlight .gi { color: #00A000 } /* Generic.Inserted */
16.highlight .go { color: #333333 } /* Generic.Output */ 16.highlight .go { color: #303030 } /* Generic.Output */
17.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ 17.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
18.highlight .gs { font-weight: bold } /* Generic.Strong */ 18.highlight .gs { font-weight: bold } /* Generic.Strong */
19.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 19.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
20.highlight .gt { color: #0044DD } /* Generic.Traceback */ 20.highlight .gt { color: #0040D0 } /* Generic.Traceback */
21.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ 21.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
22.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ 22.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
23.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ 23.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
diff --git a/mps/manual/html/design/arena.html b/mps/manual/html/design/arena.html
index a417e0492e4..61dee7ca97a 100644
--- a/mps/manual/html/design/arena.html
+++ b/mps/manual/html/design/arena.html
@@ -286,7 +286,7 @@ design.mps.arena.tract-iter(0).</p>
286<p><span class="target" id="design.mps.arena.tract.if.tractofaddr"></span><a class="mpstag reference internal" href="#design.mps.arena.tract.if.tractofaddr">.tract.if.tractofaddr:</a> The function <tt class="xref c c-func docutils literal"><span class="pre">TractOfAddr()</span></tt> 286<p><span class="target" id="design.mps.arena.tract.if.tractofaddr"></span><a class="mpstag reference internal" href="#design.mps.arena.tract.if.tractofaddr">.tract.if.tractofaddr:</a> The function <tt class="xref c c-func docutils literal"><span class="pre">TractOfAddr()</span></tt>
287finds the tract corresponding to an address in memory. (See 287finds the tract corresponding to an address in memory. (See
288<a class="reference internal" href="#design.mps.arena.req.fun.trans">.req.fun.trans</a>):</p> 288<a class="reference internal" href="#design.mps.arena.req.fun.trans">.req.fun.trans</a>):</p>
289<div class="highlight-c"><div class="highlight"><pre><span class="n">Bool</span> <span class="nf">TractOfAddr</span><span class="p">(</span><span class="n">Tract</span> <span class="o">*</span><span class="n">tractReturn</span><span class="p">,</span> <span class="n">Arena</span> <span class="n">arena</span><span class="p">,</span> <span class="n">Addr</span> <span class="n">addr</span><span class="p">);</span> 289<div class="highlight-c"><div class="highlight"><pre><span class="n">Bool</span> <span class="n">TractOfAddr</span><span class="p">(</span><span class="n">Tract</span> <span class="o">*</span><span class="n">tractReturn</span><span class="p">,</span> <span class="n">Arena</span> <span class="n">arena</span><span class="p">,</span> <span class="n">Addr</span> <span class="n">addr</span><span class="p">);</span>
290</pre></div> 290</pre></div>
291</div> 291</div>
292<p>If <tt class="docutils literal"><span class="pre">addr</span></tt> is an address which has been allocated to some pool, then 292<p>If <tt class="docutils literal"><span class="pre">addr</span></tt> is an address which has been allocated to some pool, then
diff --git a/mps/manual/html/design/bt.html b/mps/manual/html/design/bt.html
index ff5dd9c4d3f..eaab3a6b356 100644
--- a/mps/manual/html/design/bt.html
+++ b/mps/manual/html/design/bt.html
@@ -426,7 +426,7 @@ equals <tt class="docutils literal"><span class="pre">BTGet(BTy,i)</span></tt> f
426<p><span class="target" id="design.mps.bt.if.find.general"></span><a class="mpstag reference internal" href="#design.mps.bt.if.find.general">.if.find.general:</a> There are four functions (below) to find 426<p><span class="target" id="design.mps.bt.if.find.general"></span><a class="mpstag reference internal" href="#design.mps.bt.if.find.general">.if.find.general:</a> There are four functions (below) to find
427reset ranges. All the functions have the same prototype (for 427reset ranges. All the functions have the same prototype (for
428symmetry):</p> 428symmetry):</p>
429<div class="highlight-c"><div class="highlight"><pre><span class="n">Bool</span> <span class="nf">find</span><span class="p">(</span><span class="n">Index</span> <span class="o">*</span><span class="n">baseReturn</span><span class="p">,</span> <span class="n">Index</span> <span class="o">*</span><span class="n">limitReturn</span><span class="p">,</span> 429<div class="highlight-c"><div class="highlight"><pre><span class="n">Bool</span> <span class="n">find</span><span class="p">(</span><span class="n">Index</span> <span class="o">*</span><span class="n">baseReturn</span><span class="p">,</span> <span class="n">Index</span> <span class="o">*</span><span class="n">limitReturn</span><span class="p">,</span>
430 <span class="n">BT</span> <span class="n">bt</span><span class="p">,</span> 430 <span class="n">BT</span> <span class="n">bt</span><span class="p">,</span>
431 <span class="n">Index</span> <span class="n">searchBase</span><span class="p">,</span> <span class="n">Index</span> <span class="n">searchLimit</span><span class="p">,</span> 431 <span class="n">Index</span> <span class="n">searchBase</span><span class="p">,</span> <span class="n">Index</span> <span class="n">searchLimit</span><span class="p">,</span>
432 <span class="n">Count</span> <span class="n">length</span><span class="p">);</span> 432 <span class="n">Count</span> <span class="n">length</span><span class="p">);</span>
diff --git a/mps/manual/html/design/config.html b/mps/manual/html/design/config.html
index 9572bf4ac71..07719552c5d 100644
--- a/mps/manual/html/design/config.html
+++ b/mps/manual/html/design/config.html
@@ -416,19 +416,19 @@ parameter. However, the concrete interface may vary.</p>
416<p>For example, this isn&#8217;t allowed, because there is a change in the 416<p>For example, this isn&#8217;t allowed, because there is a change in the
417interface:</p> 417interface:</p>
418<div class="highlight-c"><div class="highlight"><pre><span class="cp">#if defined(PROT_FOO)</span> 418<div class="highlight-c"><div class="highlight"><pre><span class="cp">#if defined(PROT_FOO)</span>
419<span class="kt">void</span> <span class="nf">ProtSpong</span><span class="p">(</span><span class="n">Foo</span> <span class="n">foo</span><span class="p">,</span> <span class="n">Bar</span> <span class="n">bar</span><span class="p">);</span> 419<span class="kt">void</span> <span class="n">ProtSpong</span><span class="p">(</span><span class="n">Foo</span> <span class="n">foo</span><span class="p">,</span> <span class="n">Bar</span> <span class="n">bar</span><span class="p">);</span>
420<span class="cp">#else</span> 420<span class="cp">#else</span>
421<span class="kt">int</span> <span class="nf">ProtSpong</span><span class="p">(</span><span class="n">Bar</span> <span class="n">bar</span><span class="p">,</span> <span class="n">Foo</span> <span class="n">foo</span><span class="p">);</span> 421<span class="kt">int</span> <span class="n">ProtSpong</span><span class="p">(</span><span class="n">Bar</span> <span class="n">bar</span><span class="p">,</span> <span class="n">Foo</span> <span class="n">foo</span><span class="p">);</span>
422<span class="cp">#endif</span> 422<span class="cp">#endif</span>
423</pre></div> 423</pre></div>
424</div> 424</div>
425<p>This example is allowed:</p> 425<p>This example is allowed:</p>
426<div class="highlight-c"><div class="highlight"><pre><span class="cp">#ifdef PROTECTION</span> 426<div class="highlight-c"><div class="highlight"><pre><span class="cp">#ifdef PROTECTION</span>
427<span class="kt">void</span> <span class="nf">ProtSync</span><span class="p">(</span><span class="n">Space</span> <span class="n">space</span><span class="p">);</span> 427<span class="kt">void</span> <span class="n">ProtSync</span><span class="p">(</span><span class="n">Space</span> <span class="n">space</span><span class="p">);</span>
428<span class="cm">/* more decls. */</span> 428<span class="cp">/* more decls. */</span>
429<span class="cp">#else </span><span class="cm">/* PROTECTION not */</span><span class="cp"></span> 429<span class="cp">#else </span><span class="cm">/* PROTECTION not */</span><span class="cp"></span>
430<span class="cp">#define ProtSync(space) NOOP</span> 430<span class="cp">#define ProtSync(space) NOOP</span>
431<span class="cm">/* more decls. */</span> 431<span class="cp">/* more decls. */</span>
432<span class="cp">#endif </span><span class="cm">/* PROTECTION */</span><span class="cp"></span> 432<span class="cp">#endif </span><span class="cm">/* PROTECTION */</span><span class="cp"></span>
433</pre></div> 433</pre></div>
434</div> 434</div>
diff --git a/mps/manual/html/genindex.html b/mps/manual/html/genindex.html
index ef065ed48de..945205996ca 100644
--- a/mps/manual/html/genindex.html
+++ b/mps/manual/html/genindex.html
@@ -537,6 +537,17 @@
537 </dt> 537 </dt>
538 538
539 539
540 <dt>
541 arguments
542 </dt>
543
544 <dd><dl>
545
546 <dt><a href="topic/keyword.html#index-0">keyword</a>
547 </dt>
548
549 </dl></dd>
550
540 <dt><a href="guide/debug.html#index-2">ASLR</a> 551 <dt><a href="guide/debug.html#index-2">ASLR</a>
541 </dt> 552 </dt>
542 553
@@ -896,6 +907,18 @@
896 </dt> 907 </dt>
897 908
898 909
910 <dt><a href="glossary/c.html#term-c89"><strong>C89</strong></a>
911 </dt>
912
913
914 <dt><a href="glossary/c.html#term-c90"><strong>C90</strong></a>
915 </dt>
916
917
918 <dt><a href="glossary/c.html#term-c99"><strong>C99</strong></a>
919 </dt>
920
921
899 <dt><a href="glossary/c.html#term-cache-1"><strong>cache (1)</strong></a> 922 <dt><a href="glossary/c.html#term-cache-1"><strong>cache (1)</strong></a>
900 </dt> 923 </dt>
901 924
@@ -1075,6 +1098,8 @@
1075 <dt><a href="mmref/lang.html#term-cobol"><strong>COBOL</strong></a> 1098 <dt><a href="mmref/lang.html#term-cobol"><strong>COBOL</strong></a>
1076 </dt> 1099 </dt>
1077 1100
1101 </dl></td>
1102 <td style="width: 33%" valign="top"><dl>
1078 1103
1079 <dt> 1104 <dt>
1080 code 1105 code
@@ -1086,8 +1111,6 @@
1086 </dt> 1111 </dt>
1087 1112
1088 </dl></dd> 1113 </dl></dd>
1089 </dl></td>
1090 <td style="width: 33%" valign="top"><dl>
1091 1114
1092 <dt><a href="glossary/c.html#term-collect"><strong>collect</strong></a> 1115 <dt><a href="glossary/c.html#term-collect"><strong>collect</strong></a>
1093 </dt> 1116 </dt>
@@ -2233,9 +2256,24 @@
2233 <dt><a href="glossary/k.html#term-kb"><strong>kB</strong></a> 2256 <dt><a href="glossary/k.html#term-kb"><strong>kB</strong></a>
2234 </dt> 2257 </dt>
2235 2258
2259
2260 <dt>
2261 keyword
2262 </dt>
2263
2264 <dd><dl>
2265
2266 <dt><a href="topic/keyword.html#index-0">arguments</a>
2267 </dt>
2268
2269 </dl></dd>
2236 </dl></td> 2270 </dl></td>
2237 <td style="width: 33%" valign="top"><dl> 2271 <td style="width: 33%" valign="top"><dl>
2238 2272
2273 <dt><a href="glossary/k.html#term-keyword-argument"><strong>keyword argument</strong></a>
2274 </dt>
2275
2276
2239 <dt><a href="glossary/k.html#term-kilobyte"><strong>kilobyte</strong></a> 2277 <dt><a href="glossary/k.html#term-kilobyte"><strong>kilobyte</strong></a>
2240 </dt> 2278 </dt>
2241 2279
@@ -2785,6 +2823,10 @@
2785 </dt> 2823 </dt>
2786 2824
2787 2825
2826 <dt><a href="topic/allocation.html#mps_ap_create_k">mps_ap_create_k (C function)</a>
2827 </dt>
2828
2829
2788 <dt><a href="topic/allocation.html#mps_ap_create_v">mps_ap_create_v (C function)</a> 2830 <dt><a href="topic/allocation.html#mps_ap_create_v">mps_ap_create_v (C function)</a>
2789 </dt> 2831 </dt>
2790 2832
@@ -2861,6 +2903,10 @@
2861 </dt> 2903 </dt>
2862 2904
2863 2905
2906 <dt><a href="topic/arena.html#mps_arena_create_k">mps_arena_create_k (C function)</a>
2907 </dt>
2908
2909
2864 <dt><a href="topic/arena.html#mps_arena_create_v">mps_arena_create_v (C function)</a> 2910 <dt><a href="topic/arena.html#mps_arena_create_v">mps_arena_create_v (C function)</a>
2865 </dt> 2911 </dt>
2866 2912
@@ -2937,6 +2983,30 @@
2937 </dt> 2983 </dt>
2938 2984
2939 2985
2986 <dt><a href="topic/keyword.html#mps_arg_s">mps_arg_s (C type)</a>
2987 </dt>
2988
2989
2990 <dt><a href="topic/keyword.html#MPS_ARGS_ADD">MPS_ARGS_ADD (C function)</a>
2991 </dt>
2992
2993
2994 <dt><a href="topic/keyword.html#MPS_ARGS_BEGIN">MPS_ARGS_BEGIN (C function)</a>
2995 </dt>
2996
2997
2998 <dt><a href="topic/keyword.html#MPS_ARGS_DONE">MPS_ARGS_DONE (C function)</a>
2999 </dt>
3000
3001
3002 <dt><a href="topic/keyword.html#MPS_ARGS_END">MPS_ARGS_END (C function)</a>
3003 </dt>
3004
3005
3006 <dt><a href="topic/keyword.html#mps_args_none">mps_args_none (C macro)</a>
3007 </dt>
3008
3009
2940 <dt><a href="pool/awl.html#mps_awl_find_dependent_t">mps_awl_find_dependent_t (C type)</a> 3010 <dt><a href="pool/awl.html#mps_awl_find_dependent_t">mps_awl_find_dependent_t (C type)</a>
2941 </dt> 3011 </dt>
2942 3012
@@ -3128,6 +3198,8 @@
3128 <dt><a href="topic/format.html#mps_fmt_isfwd_t">mps_fmt_isfwd_t (C type)</a> 3198 <dt><a href="topic/format.html#mps_fmt_isfwd_t">mps_fmt_isfwd_t (C type)</a>
3129 </dt> 3199 </dt>
3130 3200
3201 </dl></td>
3202 <td style="width: 33%" valign="top"><dl>
3131 3203
3132 <dt><a href="topic/format.html#mps_fmt_pad_t">mps_fmt_pad_t (C type)</a> 3204 <dt><a href="topic/format.html#mps_fmt_pad_t">mps_fmt_pad_t (C type)</a>
3133 </dt> 3205 </dt>
@@ -3144,8 +3216,6 @@
3144 <dt><a href="topic/format.html#mps_fmt_skip_t">mps_fmt_skip_t (C type)</a> 3216 <dt><a href="topic/format.html#mps_fmt_skip_t">mps_fmt_skip_t (C type)</a>
3145 </dt> 3217 </dt>
3146 3218
3147 </dl></td>
3148 <td style="width: 33%" valign="top"><dl>
3149 3219
3150 <dt><a href="topic/format.html#mps_fmt_t">mps_fmt_t (C type)</a> 3220 <dt><a href="topic/format.html#mps_fmt_t">mps_fmt_t (C type)</a>
3151 </dt> 3221 </dt>
@@ -3187,6 +3257,10 @@
3187 </dt> 3257 </dt>
3188 3258
3189 3259
3260 <dt><a href="topic/keyword.html#mps_key_t">mps_key_t (C type)</a>
3261 </dt>
3262
3263
3190 <dt><a href="topic/interface.html#mps_label_t">mps_label_t (C type)</a> 3264 <dt><a href="topic/interface.html#mps_label_t">mps_label_t (C type)</a>
3191 </dt> 3265 </dt>
3192 3266
@@ -3427,7 +3501,7 @@
3427 </dt> 3501 </dt>
3428 3502
3429 3503
3430 <dt><a href="topic/pool.html#mps_pool_create">mps_pool_create (C function)</a> 3504 <dt><a href="topic/pool.html#mps_pool_create">mps_pool_create (C function)</a>, <a href="topic/pool.html#mps_pool_create">[1]</a>
3431 </dt> 3505 </dt>
3432 3506
3433 3507
diff --git a/mps/manual/html/glossary/c.html b/mps/manual/html/glossary/c.html
index a264da7974a..74e2d1dbb3b 100644
--- a/mps/manual/html/glossary/c.html
+++ b/mps/manual/html/glossary/c.html
@@ -83,6 +83,45 @@
83| Y 83| Y
84| <a class="reference internal" href="z.html#glossary-z"><em>Z</em></a></p> 84| <a class="reference internal" href="z.html#glossary-z"><em>Z</em></a></p>
85<dl class="glossary docutils"> 85<dl class="glossary docutils">
86<dt id="term-c89">C89</dt>
87<dd><div class="admonition-see first last admonition">
88<p class="first admonition-title">See</p>
89<p class="last"><a class="reference internal" href="#term-c90"><em class="xref std std-term">C90</em></a>.</p>
90</div>
91</dd>
92<dt id="term-c90">C90</dt>
93<dd><div class="admonition-also-known-as first admonition">
94<p class="first admonition-title">Also known as</p>
95<p class="last"><em>C89</em>.</p>
96</div>
97<p>A revision of the ANSI/ISO Standard for the <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a>
98programming language. Although more than twenty years old, it
99remains the only form of Standard C that is supported by all
100the major compilers, including Microsoft Visual C.</p>
101<div class="admonition-in-the-mps admonition">
102<p class="first admonition-title">In the MPS</p>
103<p class="last">The public interface conforms to this standard. See
104<a class="reference internal" href="../topic/interface.html#topic-interface"><em>Interface conventions</em></a>.</p>
105</div>
106<div class="admonition-related-publication last admonition">
107<p class="first admonition-title">Related publication</p>
108<p class="last"><a class="reference internal" href="../mmref/bib.html#c1990"><em>ISO/IEC 9899:1990</em></a>.</p>
109</div>
110</dd>
111<dt id="term-c99">C99</dt>
112<dd><p class="first">A revision of the ANSI/ISO Standard for C the <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a>
113programming language.</p>
114<div class="admonition-in-the-mps admonition">
115<p class="first admonition-title">In the MPS</p>
116<p class="last"><a class="reference internal" href="k.html#term-keyword-argument"><em class="xref std std-term">Keyword arguments</em></a> can be conveniently passed to
117functions using C99&#8217;s compound literal syntax. See
118<a class="reference internal" href="../topic/keyword.html#topic-keyword"><em>Keyword arguments</em></a>.</p>
119</div>
120<div class="admonition-related-publication last admonition">
121<p class="first admonition-title">Related publication</p>
122<p class="last"><a class="reference internal" href="../mmref/bib.html#c1999"><em>ISO/IEC 9899:1999</em></a>.</p>
123</div>
124</dd>
86<dt id="term-cache-1">cache<sup>(1)</sup></dt> 125<dt id="term-cache-1">cache<sup>(1)</sup></dt>
87<dd><div class="admonition-also-known-as first admonition"> 126<dd><div class="admonition-also-known-as first admonition">
88<p class="first admonition-title">Also known as</p> 127<p class="first admonition-title">Also known as</p>
diff --git a/mps/manual/html/glossary/k.html b/mps/manual/html/glossary/k.html
index be1517f5450..ba862822c07 100644
--- a/mps/manual/html/glossary/k.html
+++ b/mps/manual/html/glossary/k.html
@@ -89,6 +89,16 @@
89<p class="last"><a class="reference internal" href="#term-kilobyte"><em class="xref std std-term">kilobyte</em></a>.</p> 89<p class="last"><a class="reference internal" href="#term-kilobyte"><em class="xref std std-term">kilobyte</em></a>.</p>
90</div> 90</div>
91</dd> 91</dd>
92<dt id="term-keyword-argument">keyword argument</dt>
93<dd><p class="first">An optional argument to a function call, identified by an
94associated keyword.</p>
95<div class="admonition-in-the-mps last admonition">
96<p class="first admonition-title">In the MPS</p>
97<p class="last">Keyword arguments are passed to functions in the MPS
98interface as arrays of structures of type
99<a class="reference internal" href="../topic/keyword.html#mps_arg_s" title="mps_arg_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_arg_s</span></tt></a>. See <a class="reference internal" href="../topic/keyword.html#topic-keyword"><em>Keyword arguments</em></a>.</p>
100</div>
101</dd>
92<dt id="term-kilobyte">kilobyte</dt> 102<dt id="term-kilobyte">kilobyte</dt>
93<dd><div class="admonition-also-known-as first admonition"> 103<dd><div class="admonition-also-known-as first admonition">
94<p class="first admonition-title">Also known as</p> 104<p class="first admonition-title">Also known as</p>
diff --git a/mps/manual/html/guide/advanced.html b/mps/manual/html/guide/advanced.html
index bf29a49f776..62fc10c65b7 100644
--- a/mps/manual/html/guide/advanced.html
+++ b/mps/manual/html/guide/advanced.html
@@ -61,8 +61,8 @@
61<p>In Scheme, an open file is represented by a <em>port</em>. In the toy Scheme 61<p>In Scheme, an open file is represented by a <em>port</em>. In the toy Scheme
62interpreter, a port is a wrapper around a standard C file handle:</p> 62interpreter, a port is a wrapper around a standard C file handle:</p>
63<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">port_s</span> <span class="p">{</span> 63<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">port_s</span> <span class="p">{</span>
64 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_PORT */</span> 64 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_PORT */</span>
65 <span class="kt">obj_t</span> <span class="n">name</span><span class="p">;</span> <span class="cm">/* name of stream */</span> 65 <span class="n">obj_t</span> <span class="n">name</span><span class="p">;</span> <span class="cm">/* name of stream */</span>
66 <span class="kt">FILE</span> <span class="o">*</span><span class="n">stream</span><span class="p">;</span> 66 <span class="kt">FILE</span> <span class="o">*</span><span class="n">stream</span><span class="p">;</span>
67<span class="p">}</span> <span class="n">port_s</span><span class="p">;</span> 67<span class="p">}</span> <span class="n">port_s</span><span class="p">;</span>
68</pre></div> 68</pre></div>
@@ -84,14 +84,14 @@ reliable mechanisms for releasing resources (like Scheme&#8217;s
84<p>Any block in an <a class="reference internal" href="../glossary/a.html#term-automatic-memory-management"><em class="xref std std-term">automatically managed</em></a> <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a> can be registered for finalization by calling 84<p>Any block in an <a class="reference internal" href="../glossary/a.html#term-automatic-memory-management"><em class="xref std std-term">automatically managed</em></a> <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a> can be registered for finalization by calling
85<a class="reference internal" href="../topic/finalization.html#mps_finalize" title="mps_finalize"><tt class="xref c c-func docutils literal"><span class="pre">mps_finalize()</span></tt></a>. In the toy Scheme interpreter, this can be done 85<a class="reference internal" href="../topic/finalization.html#mps_finalize" title="mps_finalize"><tt class="xref c c-func docutils literal"><span class="pre">mps_finalize()</span></tt></a>. In the toy Scheme interpreter, this can be done
86in <tt class="docutils literal"><span class="pre">make_port</span></tt>:</p> 86in <tt class="docutils literal"><span class="pre">make_port</span></tt>:</p>
87<div class="highlight-c"><div class="highlight"><pre> <span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">make_port</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">name</span><span class="p">,</span> <span class="kt">FILE</span> <span class="o">*</span><span class="n">stream</span><span class="p">)</span> 87<div class="highlight-c"><div class="highlight"><pre> <span class="k">static</span> <span class="n">obj_t</span> <span class="nf">make_port</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">name</span><span class="p">,</span> <span class="kt">FILE</span> <span class="o">*</span><span class="n">stream</span><span class="p">)</span>
88 <span class="p">{</span> 88 <span class="p">{</span>
89 <span class="kt">mps_addr_t</span> <span class="n">port_ref</span><span class="p">;</span> 89 <span class="n">mps_addr_t</span> <span class="n">port_ref</span><span class="p">;</span>
90 <span class="kt">obj_t</span> <span class="n">obj</span><span class="p">;</span> 90 <span class="n">obj_t</span> <span class="n">obj</span><span class="p">;</span>
91 <span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span> 91 <span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span>
92 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">port_s</span><span class="p">));</span> 92 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">port_s</span><span class="p">));</span>
93 <span class="k">do</span> <span class="p">{</span> 93 <span class="k">do</span> <span class="p">{</span>
94 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">obj_ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span> 94 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">obj_ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
95 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_port&quot;</span><span class="p">);</span> 95 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_port&quot;</span><span class="p">);</span>
96 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 96 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
97 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">port</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_PORT</span><span class="p">;</span> 97 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">port</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_PORT</span><span class="p">;</span>
@@ -127,17 +127,17 @@ reachable.</p>
127message queue is at the start of the read–eval–print loop. When a 127message queue is at the start of the read–eval–print loop. When a
128finalization message is found, the associated file handle is closed 128finalization message is found, the associated file handle is closed
129(unless it has been closed already), and the message is discarded.</p> 129(unless it has been closed already), and the message is discarded.</p>
130<div class="highlight-c"><div class="highlight"><pre> <span class="kt">mps_message_type_t</span> <span class="n">type</span><span class="p">;</span> 130<div class="highlight-c"><div class="highlight"><pre> <span class="n">mps_message_type_t</span> <span class="n">type</span><span class="p">;</span>
131 131
132 <span class="k">while</span> <span class="p">(</span><span class="n">mps_message_queue_type</span><span class="p">(</span><span class="o">&amp;</span><span class="n">type</span><span class="p">,</span> <span class="n">arena</span><span class="p">))</span> <span class="p">{</span> 132 <span class="k">while</span> <span class="p">(</span><span class="n">mps_message_queue_type</span><span class="p">(</span><span class="o">&amp;</span><span class="n">type</span><span class="p">,</span> <span class="n">arena</span><span class="p">))</span> <span class="p">{</span>
133 <span class="kt">mps_message_t</span> <span class="n">message</span><span class="p">;</span> 133 <span class="n">mps_message_t</span> <span class="n">message</span><span class="p">;</span>
134 <span class="kt">mps_bool_t</span> <span class="n">b</span><span class="p">;</span> 134 <span class="n">mps_bool_t</span> <span class="n">b</span><span class="p">;</span>
135 <span class="n">b</span> <span class="o">=</span> <span class="n">mps_message_get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">message</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">type</span><span class="p">);</span> 135 <span class="n">b</span> <span class="o">=</span> <span class="n">mps_message_get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">message</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">type</span><span class="p">);</span>
136 <span class="n">assert</span><span class="p">(</span><span class="n">b</span><span class="p">);</span> <span class="cm">/* we just checked there was one */</span> 136 <span class="n">assert</span><span class="p">(</span><span class="n">b</span><span class="p">);</span> <span class="cm">/* we just checked there was one */</span>
137 137
138<span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">type</span> <span class="o">==</span> <span class="n">mps_message_type_finalization</span><span class="p">())</span> <span class="p">{</span> 138<span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">type</span> <span class="o">==</span> <span class="n">mps_message_type_finalization</span><span class="p">())</span> <span class="p">{</span>
139</span> <span class="kt">mps_addr_t</span> <span class="n">port_ref</span><span class="p">;</span> 139</span> <span class="n">mps_addr_t</span> <span class="n">port_ref</span><span class="p">;</span>
140 <span class="kt">obj_t</span> <span class="n">port</span><span class="p">;</span> 140 <span class="n">obj_t</span> <span class="n">port</span><span class="p">;</span>
141<span class="hll"> <span class="n">mps_message_finalization_ref</span><span class="p">(</span><span class="o">&amp;</span><span class="n">port_ref</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span> 141<span class="hll"> <span class="n">mps_message_finalization_ref</span><span class="p">(</span><span class="o">&amp;</span><span class="n">port_ref</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">message</span><span class="p">);</span>
142</span> <span class="n">port</span> <span class="o">=</span> <span class="n">port_ref</span><span class="p">;</span> 142</span> <span class="n">port</span> <span class="o">=</span> <span class="n">port_ref</span><span class="p">;</span>
143 <span class="n">assert</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">port</span><span class="p">)</span> <span class="o">==</span> <span class="n">TYPE_PORT</span><span class="p">);</span> 143 <span class="n">assert</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">port</span><span class="p">)</span> <span class="o">==</span> <span class="n">TYPE_PORT</span><span class="p">);</span>
@@ -176,11 +176,11 @@ finalization message is found, the associated file handle is closed
176optimization: setting <tt class="docutils literal"><span class="pre">stream</span></tt> to <tt class="docutils literal"><span class="pre">NULL</span></tt> ensures that the file 176optimization: setting <tt class="docutils literal"><span class="pre">stream</span></tt> to <tt class="docutils literal"><span class="pre">NULL</span></tt> ensures that the file
177handle wouldn&#8217;t be closed more than once, even if the port object were 177handle wouldn&#8217;t be closed more than once, even if the port object were
178later finalized.</p> 178later finalized.</p>
179<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">port_close</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">port</span><span class="p">)</span> 179<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">port_close</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">port</span><span class="p">)</span>
180<span class="p">{</span> 180<span class="p">{</span>
181 <span class="n">assert</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">port</span><span class="p">)</span> <span class="o">==</span> <span class="n">TYPE_PORT</span><span class="p">);</span> 181 <span class="n">assert</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">port</span><span class="p">)</span> <span class="o">==</span> <span class="n">TYPE_PORT</span><span class="p">);</span>
182 <span class="k">if</span><span class="p">(</span><span class="n">port</span><span class="o">-&gt;</span><span class="n">port</span><span class="p">.</span><span class="n">stream</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span> 182 <span class="k">if</span><span class="p">(</span><span class="n">port</span><span class="o">-&gt;</span><span class="n">port</span><span class="p">.</span><span class="n">stream</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
183 <span class="kt">mps_addr_t</span> <span class="n">port_ref</span> <span class="o">=</span> <span class="n">port</span><span class="p">;</span> 183 <span class="n">mps_addr_t</span> <span class="n">port_ref</span> <span class="o">=</span> <span class="n">port</span><span class="p">;</span>
184 <span class="n">fclose</span><span class="p">(</span><span class="n">port</span><span class="o">-&gt;</span><span class="n">port</span><span class="p">.</span><span class="n">stream</span><span class="p">);</span> 184 <span class="n">fclose</span><span class="p">(</span><span class="n">port</span><span class="o">-&gt;</span><span class="n">port</span><span class="p">.</span><span class="n">stream</span><span class="p">);</span>
185 <span class="n">port</span><span class="o">-&gt;</span><span class="n">port</span><span class="p">.</span><span class="n">stream</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> 185 <span class="n">port</span><span class="o">-&gt;</span><span class="n">port</span><span class="p">.</span><span class="n">stream</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
186<span class="hll"> <span class="n">mps_definalize</span><span class="p">(</span><span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">port_ref</span><span class="p">);</span> 186<span class="hll"> <span class="n">mps_definalize</span><span class="p">(</span><span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">port_ref</span><span class="p">);</span>
@@ -253,24 +253,24 @@ depended on might have moved since their location was depended upon.</p>
253case of a hash table, it is most convenient to inline it in the hash 253case of a hash table, it is most convenient to inline it in the hash
254table&#8217;s metadata:</p> 254table&#8217;s metadata:</p>
255<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">table_s</span> <span class="p">{</span> 255<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">table_s</span> <span class="p">{</span>
256 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_TABLE */</span> 256 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_TABLE */</span>
257 <span class="kt">hash_t</span> <span class="n">hash</span><span class="p">;</span> <span class="cm">/* hash function */</span> 257 <span class="n">hash_t</span> <span class="n">hash</span><span class="p">;</span> <span class="cm">/* hash function */</span>
258 <span class="kt">cmp_t</span> <span class="n">cmp</span><span class="p">;</span> <span class="cm">/* comparison function */</span> 258 <span class="n">cmp_t</span> <span class="n">cmp</span><span class="p">;</span> <span class="cm">/* comparison function */</span>
259<span class="hll"> <span class="n">mps_ld_s</span> <span class="n">ld</span><span class="p">;</span> <span class="cm">/* location dependency */</span> 259<span class="hll"> <span class="n">mps_ld_s</span> <span class="n">ld</span><span class="p">;</span> <span class="cm">/* location dependency */</span>
260</span> <span class="kt">obj_t</span> <span class="n">buckets</span><span class="p">;</span> <span class="cm">/* hash buckets */</span> 260</span> <span class="n">obj_t</span> <span class="n">buckets</span><span class="p">;</span> <span class="cm">/* hash buckets */</span>
261<span class="p">}</span> <span class="n">table_s</span><span class="p">;</span> 261<span class="p">}</span> <span class="n">table_s</span><span class="p">;</span>
262</pre></div> 262</pre></div>
263</div> 263</div>
264<p>Before being used, the location dependency must be reset to indicate 264<p>Before being used, the location dependency must be reset to indicate
265that nothing is depended upon, by calling <a class="reference internal" href="../topic/location.html#mps_ld_reset" title="mps_ld_reset"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_reset()</span></tt></a>.</p> 265that nothing is depended upon, by calling <a class="reference internal" href="../topic/location.html#mps_ld_reset" title="mps_ld_reset"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_reset()</span></tt></a>.</p>
266<p>For example:</p> 266<p>For example:</p>
267<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">make_table</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">length</span><span class="p">,</span> <span class="kt">hash_t</span> <span class="n">hashf</span><span class="p">,</span> <span class="kt">cmp_t</span> <span class="n">cmpf</span><span class="p">)</span> 267<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="nf">make_table</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">length</span><span class="p">,</span> <span class="n">hash_t</span> <span class="n">hashf</span><span class="p">,</span> <span class="n">cmp_t</span> <span class="n">cmpf</span><span class="p">)</span>
268<span class="p">{</span> 268<span class="p">{</span>
269 <span class="kt">obj_t</span> <span class="n">obj</span><span class="p">;</span> 269 <span class="n">obj_t</span> <span class="n">obj</span><span class="p">;</span>
270 <span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span> 270 <span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span>
271 <span class="kt">size_t</span> <span class="n">l</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">table_s</span><span class="p">));</span> 271 <span class="kt">size_t</span> <span class="n">l</span><span class="p">,</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">table_s</span><span class="p">));</span>
272 <span class="k">do</span> <span class="p">{</span> 272 <span class="k">do</span> <span class="p">{</span>
273 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">obj_ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span> 273 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">obj_ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
274 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_table&quot;</span><span class="p">);</span> 274 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_table&quot;</span><span class="p">);</span>
275 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 275 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
276 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">table</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_TABLE</span><span class="p">;</span> 276 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">table</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_TABLE</span><span class="p">;</span>
@@ -296,12 +296,12 @@ have taken place after the hash was computed but before you added the
296dependency.)</p> 296dependency.)</p>
297<p>In the toy Scheme interpreter, this is done just before the computation 297<p>In the toy Scheme interpreter, this is done just before the computation
298of the hash of the address.</p> 298of the hash of the address.</p>
299<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">unsigned</span> <span class="kt">long</span> <span class="nf">eq_hash</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">obj</span><span class="p">,</span> <span class="kt">mps_ld_t</span> <span class="n">ld</span><span class="p">)</span> 299<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">unsigned</span> <span class="kt">long</span> <span class="nf">eq_hash</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">obj</span><span class="p">,</span> <span class="n">mps_ld_t</span> <span class="n">ld</span><span class="p">)</span>
300<span class="p">{</span> 300<span class="p">{</span>
301 <span class="k">union</span> <span class="p">{</span><span class="kt">char</span> <span class="n">s</span><span class="p">[</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">obj_t</span><span class="p">)];</span> <span class="kt">obj_t</span> <span class="n">addr</span><span class="p">;}</span> <span class="n">u</span><span class="p">;</span> 301 <span class="k">union</span> <span class="p">{</span><span class="kt">char</span> <span class="n">s</span><span class="p">[</span><span class="k">sizeof</span><span class="p">(</span><span class="n">obj_t</span><span class="p">)];</span> <span class="n">obj_t</span> <span class="n">addr</span><span class="p">;}</span> <span class="n">u</span><span class="p">;</span>
302<span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">ld</span><span class="p">)</span> <span class="n">mps_ld_add</span><span class="p">(</span><span class="n">ld</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">obj</span><span class="p">);</span> 302<span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">ld</span><span class="p">)</span> <span class="n">mps_ld_add</span><span class="p">(</span><span class="n">ld</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">obj</span><span class="p">);</span>
303</span> <span class="n">u</span><span class="p">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">obj</span><span class="p">;</span> 303</span> <span class="n">u</span><span class="p">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">obj</span><span class="p">;</span>
304 <span class="k">return</span> <span class="n">hash</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">s</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="kt">obj_t</span><span class="p">));</span> 304 <span class="k">return</span> <span class="n">hash</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">s</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">obj_t</span><span class="p">));</span>
305<span class="p">}</span> 305<span class="p">}</span>
306</pre></div> 306</pre></div>
307</div> 307</div>
@@ -309,7 +309,7 @@ of the hash of the address.</p>
309avoids adding unnecessary dependencies on a location. For example, an 309avoids adding unnecessary dependencies on a location. For example, an
310<tt class="docutils literal"><span class="pre">eqv?</span></tt> hash table does not need to depend on the location of numbers 310<tt class="docutils literal"><span class="pre">eqv?</span></tt> hash table does not need to depend on the location of numbers
311and characters:</p> 311and characters:</p>
312<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">unsigned</span> <span class="kt">long</span> <span class="nf">eqv_hash</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">obj</span><span class="p">,</span> <span class="kt">mps_ld_t</span> <span class="n">ld</span><span class="p">)</span> 312<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">unsigned</span> <span class="kt">long</span> <span class="nf">eqv_hash</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">obj</span><span class="p">,</span> <span class="n">mps_ld_t</span> <span class="n">ld</span><span class="p">)</span>
313<span class="p">{</span> 313<span class="p">{</span>
314 <span class="k">switch</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span> 314 <span class="k">switch</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
315 <span class="k">case</span> <span class="n">TYPE_INTEGER</span>: 315 <span class="k">case</span> <span class="n">TYPE_INTEGER</span>:
@@ -339,7 +339,7 @@ the key is stale: that is, if the garbage collector moved the key. The
339function <a class="reference internal" href="../topic/location.html#mps_ld_isstale" title="mps_ld_isstale"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_isstale()</span></tt></a> tells you if any of the blocks whose 339function <a class="reference internal" href="../topic/location.html#mps_ld_isstale" title="mps_ld_isstale"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_isstale()</span></tt></a> tells you if any of the blocks whose
340locations you depended upon since the last call to 340locations you depended upon since the last call to
341<a class="reference internal" href="../topic/location.html#mps_ld_reset" title="mps_ld_reset"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_reset()</span></tt></a> might have moved.</p> 341<a class="reference internal" href="../topic/location.html#mps_ld_reset" title="mps_ld_reset"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_reset()</span></tt></a> might have moved.</p>
342<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">table_ref</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">tbl</span><span class="p">,</span> <span class="kt">obj_t</span> <span class="n">key</span><span class="p">)</span> 342<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="nf">table_ref</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">tbl</span><span class="p">,</span> <span class="n">obj_t</span> <span class="n">key</span><span class="p">)</span>
343<span class="p">{</span> 343<span class="p">{</span>
344 <span class="k">struct</span> <span class="n">bucket_s</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="n">buckets_find</span><span class="p">(</span><span class="n">tbl</span><span class="p">,</span> <span class="n">tbl</span><span class="o">-&gt;</span><span class="n">table</span><span class="p">.</span><span class="n">buckets</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> 344 <span class="k">struct</span> <span class="n">bucket_s</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="n">buckets_find</span><span class="p">(</span><span class="n">tbl</span><span class="p">,</span> <span class="n">tbl</span><span class="o">-&gt;</span><span class="n">table</span><span class="p">.</span><span class="n">buckets</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
345 <span class="k">if</span> <span class="p">(</span><span class="n">b</span> <span class="o">&amp;&amp;</span> <span class="n">b</span><span class="o">-&gt;</span><span class="n">key</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span> <span class="n">b</span><span class="o">-&gt;</span><span class="n">key</span> <span class="o">!=</span> <span class="n">obj_deleted</span><span class="p">)</span> 345 <span class="k">if</span> <span class="p">(</span><span class="n">b</span> <span class="o">&amp;&amp;</span> <span class="n">b</span><span class="o">-&gt;</span><span class="n">key</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span> <span class="n">b</span><span class="o">-&gt;</span><span class="n">key</span> <span class="o">!=</span> <span class="n">obj_deleted</span><span class="p">)</span>
@@ -425,7 +425,7 @@ causes <a class="reference internal" href="../topic/location.html#mps_ld_isstale
425<p>Don&#8217;t forget to check the location dependency for staleness if you are 425<p>Don&#8217;t forget to check the location dependency for staleness if you are
426about to delete a key from a hash table but discover that it&#8217;s not 426about to delete a key from a hash table but discover that it&#8217;s not
427there. In the toy Scheme interpreter, deletion looks like this:</p> 427there. In the toy Scheme interpreter, deletion looks like this:</p>
428<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">table_delete</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">tbl</span><span class="p">,</span> <span class="kt">obj_t</span> <span class="n">key</span><span class="p">)</span> 428<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">table_delete</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">tbl</span><span class="p">,</span> <span class="n">obj_t</span> <span class="n">key</span><span class="p">)</span>
429<span class="p">{</span> 429<span class="p">{</span>
430 <span class="k">struct</span> <span class="n">bucket_s</span> <span class="o">*</span><span class="n">b</span><span class="p">;</span> 430 <span class="k">struct</span> <span class="n">bucket_s</span> <span class="o">*</span><span class="n">b</span><span class="p">;</span>
431 <span class="n">assert</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">tbl</span><span class="p">)</span> <span class="o">==</span> <span class="n">TYPE_TABLE</span><span class="p">);</span> 431 <span class="n">assert</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">tbl</span><span class="p">)</span> <span class="o">==</span> <span class="n">TYPE_TABLE</span><span class="p">);</span>
@@ -500,9 +500,9 @@ vectors, one for the keys and the other for the values, to allow keys
500and values to have different ranks.</p> 500and values to have different ranks.</p>
501<p>These vectors will be allocated from an AWL pool with two allocation 501<p>These vectors will be allocated from an AWL pool with two allocation
502points, one for strong references, and one for weak references:</p> 502points, one for strong references, and one for weak references:</p>
503<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_pool_t</span> <span class="n">buckets_pool</span><span class="p">;</span> <span class="cm">/* pool for hash table buckets */</span> 503<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_pool_t</span> <span class="n">buckets_pool</span><span class="p">;</span> <span class="cm">/* pool for hash table buckets */</span>
504<span class="k">static</span> <span class="kt">mps_ap_t</span> <span class="n">strong_buckets_ap</span><span class="p">;</span> <span class="cm">/* allocation point for strong buckets */</span> 504<span class="k">static</span> <span class="n">mps_ap_t</span> <span class="n">strong_buckets_ap</span><span class="p">;</span> <span class="cm">/* allocation point for strong buckets */</span>
505<span class="k">static</span> <span class="kt">mps_ap_t</span> <span class="n">weak_buckets_ap</span><span class="p">;</span> <span class="cm">/* allocation point for weak buckets */</span> 505<span class="k">static</span> <span class="n">mps_ap_t</span> <span class="n">weak_buckets_ap</span><span class="p">;</span> <span class="cm">/* allocation point for weak buckets */</span>
506</pre></div> 506</pre></div>
507</div> 507</div>
508<div class="admonition-note admonition"> 508<div class="admonition-note admonition">
@@ -515,16 +515,16 @@ allocated in a <em>non-moving</em> pool such as AWL.</p>
515replacing it with a null pointer when it is <a class="reference internal" href="../glossary/f.html#term-fix"><em class="xref std std-term">fixed</em></a> by the object 515replacing it with a null pointer when it is <a class="reference internal" href="../glossary/f.html#term-fix"><em class="xref std std-term">fixed</em></a> by the object
516format&#8217;s <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan method</em></a>. So the scan method for the buckets is 516format&#8217;s <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan method</em></a>. So the scan method for the buckets is
517going to have the following structure. (See below for the actual code.)</p> 517going to have the following structure. (See below for the actual code.)</p>
518<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_res_t</span> <span class="nf">buckets_scan</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span> 518<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_res_t</span> <span class="nf">buckets_scan</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span>
519<span class="p">{</span> 519<span class="p">{</span>
520 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span> 520 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span>
521 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span> 521 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
522 <span class="kt">buckets_t</span> <span class="n">buckets</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> 522 <span class="n">buckets_t</span> <span class="n">buckets</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span>
523 <span class="kt">size_t</span> <span class="n">length</span> <span class="o">=</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">length</span><span class="p">;</span> 523 <span class="kt">size_t</span> <span class="n">length</span> <span class="o">=</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">length</span><span class="p">;</span>
524 <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">length</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> 524 <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">length</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
525 <span class="kt">mps_addr_t</span> <span class="n">p</span> <span class="o">=</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">bucket</span><span class="p">[</span><span class="n">i</span><span class="p">];</span> 525 <span class="n">mps_addr_t</span> <span class="n">p</span> <span class="o">=</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">bucket</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
526 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">p</span><span class="p">))</span> <span class="p">{</span> 526 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">p</span><span class="p">))</span> <span class="p">{</span>
527 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span> 527 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span>
528 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span> 528 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span>
529 <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span> 529 <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
530 <span class="cm">/* TODO: key/value was splatted: splat value/key too */</span> 530 <span class="cm">/* TODO: key/value was splatted: splat value/key too */</span>
@@ -556,9 +556,9 @@ and vice versa.</p>
556<p>The AWL pool determines an object&#8217;s dependent object by calling a 556<p>The AWL pool determines an object&#8217;s dependent object by calling a
557function that you supply when creating the pool. This means that each 557function that you supply when creating the pool. This means that each
558object needs to have a reference to its dependent object:</p> 558object needs to have a reference to its dependent object:</p>
559<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_addr_t</span> <span class="nf">buckets_find_dependent</span><span class="p">(</span><span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">)</span> 559<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_addr_t</span> <span class="nf">buckets_find_dependent</span><span class="p">(</span><span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">)</span>
560<span class="p">{</span> 560<span class="p">{</span>
561 <span class="kt">buckets_t</span> <span class="n">buckets</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 561 <span class="n">buckets_t</span> <span class="n">buckets</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
562 <span class="k">return</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">;</span> 562 <span class="k">return</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">;</span>
563<span class="p">}</span> 563<span class="p">}</span>
564</pre></div> 564</pre></div>
@@ -580,25 +580,25 @@ See the <a class="reference internal" href="../pool/awl.html#pool-awl-caution"><
580 <span class="kt">size_t</span> <span class="n">length</span><span class="p">;</span> <span class="cm">/* number of buckets (tagged) */</span> 580 <span class="kt">size_t</span> <span class="n">length</span><span class="p">;</span> <span class="cm">/* number of buckets (tagged) */</span>
581 <span class="kt">size_t</span> <span class="n">used</span><span class="p">;</span> <span class="cm">/* number of buckets in use (tagged) */</span> 581 <span class="kt">size_t</span> <span class="n">used</span><span class="p">;</span> <span class="cm">/* number of buckets in use (tagged) */</span>
582 <span class="kt">size_t</span> <span class="n">deleted</span><span class="p">;</span> <span class="cm">/* number of deleted buckets (tagged) */</span> 582 <span class="kt">size_t</span> <span class="n">deleted</span><span class="p">;</span> <span class="cm">/* number of deleted buckets (tagged) */</span>
583 <span class="kt">obj_t</span> <span class="n">bucket</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span> <span class="cm">/* hash buckets */</span> 583 <span class="n">obj_t</span> <span class="n">bucket</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span> <span class="cm">/* hash buckets */</span>
584<span class="p">}</span> <span class="n">buckets_s</span><span class="p">,</span> <span class="o">*</span><span class="kt">buckets_t</span><span class="p">;</span> 584<span class="p">}</span> <span class="n">buckets_s</span><span class="p">,</span> <span class="o">*</span><span class="n">buckets_t</span><span class="p">;</span>
585</pre></div> 585</pre></div>
586</div> 586</div>
587<p>Now the full details of the scan method can be given, with the revised 587<p>Now the full details of the scan method can be given, with the revised
588code highlighted:</p> 588code highlighted:</p>
589<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_res_t</span> <span class="nf">buckets_scan</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span> 589<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_res_t</span> <span class="nf">buckets_scan</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span>
590<span class="p">{</span> 590<span class="p">{</span>
591 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span> 591 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span>
592 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span> 592 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
593 <span class="kt">buckets_t</span> <span class="n">buckets</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> 593 <span class="n">buckets_t</span> <span class="n">buckets</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span>
594<span class="hll"> <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">length</span> <span class="o">=</span> <span class="n">UNTAG_SIZE</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">length</span><span class="p">);</span> 594<span class="hll"> <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">length</span> <span class="o">=</span> <span class="n">UNTAG_SIZE</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">length</span><span class="p">);</span>
595</span><span class="hll"> <span class="n">FIX</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">);</span> 595</span><span class="hll"> <span class="n">FIX</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">);</span>
596</span><span class="hll"> <span class="k">if</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">dependent</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> 596</span><span class="hll"> <span class="k">if</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">dependent</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span>
597</span><span class="hll"> <span class="n">assert</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="o">-&gt;</span><span class="n">length</span> <span class="o">==</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">length</span><span class="p">);</span> 597</span><span class="hll"> <span class="n">assert</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="o">-&gt;</span><span class="n">length</span> <span class="o">==</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">length</span><span class="p">);</span>
598</span> <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">length</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> 598</span> <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">length</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
599 <span class="kt">mps_addr_t</span> <span class="n">p</span> <span class="o">=</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">bucket</span><span class="p">[</span><span class="n">i</span><span class="p">];</span> 599 <span class="n">mps_addr_t</span> <span class="n">p</span> <span class="o">=</span> <span class="n">buckets</span><span class="o">-&gt;</span><span class="n">bucket</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
600 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">p</span><span class="p">))</span> <span class="p">{</span> 600 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">p</span><span class="p">))</span> <span class="p">{</span>
601 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span> 601 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span>
602 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span> 602 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span>
603 <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span> 603 <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
604<span class="hll"> <span class="cm">/* key/value was splatted: splat value/key too */</span> 604<span class="hll"> <span class="cm">/* key/value was splatted: splat value/key too */</span>
@@ -649,9 +649,9 @@ used&#8221;, and <tt class="docutils literal"><span class="pre">NULL</span></tt>
649</ol> 649</ol>
650</div> 650</div>
651<p>The <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a> is straightforward:</p> 651<p>The <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a> is straightforward:</p>
652<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_addr_t</span> <span class="nf">buckets_skip</span><span class="p">(</span><span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">)</span> 652<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_addr_t</span> <span class="nf">buckets_skip</span><span class="p">(</span><span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">)</span>
653<span class="p">{</span> 653<span class="p">{</span>
654 <span class="kt">buckets_t</span> <span class="n">buckets</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> 654 <span class="n">buckets_t</span> <span class="n">buckets</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span>
655 <span class="kt">size_t</span> <span class="n">length</span> <span class="o">=</span> <span class="n">UNTAG_SIZE</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">length</span><span class="p">);</span> 655 <span class="kt">size_t</span> <span class="n">length</span> <span class="o">=</span> <span class="n">UNTAG_SIZE</span><span class="p">(</span><span class="n">buckets</span><span class="o">-&gt;</span><span class="n">length</span><span class="p">);</span>
656 <span class="k">return</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">base</span> <span class="o">+</span> 656 <span class="k">return</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">base</span> <span class="o">+</span>
657 <span class="n">ALIGN</span><span class="p">(</span><span class="n">offsetof</span><span class="p">(</span><span class="n">buckets_s</span><span class="p">,</span> <span class="n">bucket</span><span class="p">)</span> <span class="o">+</span> 657 <span class="n">ALIGN</span><span class="p">(</span><span class="n">offsetof</span><span class="p">(</span><span class="n">buckets_s</span><span class="p">,</span> <span class="n">bucket</span><span class="p">)</span> <span class="o">+</span>
@@ -679,17 +679,21 @@ methods:</p>
679 679
680<span class="cm">/* Create an Automatic Weak Linked (AWL) pool to manage the hash table</span> 680<span class="cm">/* Create an Automatic Weak Linked (AWL) pool to manage the hash table</span>
681<span class="cm"> buckets. */</span> 681<span class="cm"> buckets. */</span>
682<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">buckets_pool</span><span class="p">,</span> 682<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">buckets_pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_awl</span><span class="p">(),</span>
683 <span class="n">arena</span><span class="p">,</span> 683 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">buckets_fmt</span><span class="p">},</span>
684 <span class="n">mps_class_awl</span><span class="p">(),</span> 684 <span class="p">{</span><span class="n">MPS_KEY_AWL_FIND_DEPENDENT</span><span class="p">,</span>
685 <span class="n">buckets_fmt</span><span class="p">,</span> 685 <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">addr_method</span> <span class="o">=</span> <span class="n">buckets_find_dependent</span><span class="p">},</span>
686 <span class="n">buckets_find_dependent</span><span class="p">);</span> 686 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
687<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create buckets pool&quot;</span><span class="p">);</span> 687<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create buckets pool&quot;</span><span class="p">);</span>
688 688
689<span class="cm">/* Create allocation points for weak and strong buckets. */</span> 689<span class="cm">/* Create allocation points for weak and strong buckets. */</span>
690<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">strong_buckets_ap</span><span class="p">,</span> <span class="n">buckets_pool</span><span class="p">,</span> <span class="n">mps_rank_exact</span><span class="p">());</span> 690<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">strong_buckets_ap</span><span class="p">,</span> <span class="n">buckets_pool</span><span class="p">,</span>
691 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_RANK</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">rank</span> <span class="o">=</span> <span class="n">mps_rank_exact</span><span class="p">()},</span>
692 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
691<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create strong buckets allocation point&quot;</span><span class="p">);</span> 693<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create strong buckets allocation point&quot;</span><span class="p">);</span>
692<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">weak_buckets_ap</span><span class="p">,</span> <span class="n">buckets_pool</span><span class="p">,</span> <span class="n">mps_rank_weak</span><span class="p">());</span> 694<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">weak_buckets_ap</span><span class="p">,</span> <span class="n">buckets_pool</span><span class="p">,</span>
695 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_RANK</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">rank</span> <span class="o">=</span> <span class="n">mps_rank_weak</span><span class="p">()},</span>
696 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
693<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create weak buckets allocation point&quot;</span><span class="p">);</span> 697<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create weak buckets allocation point&quot;</span><span class="p">);</span>
694</pre></div> 698</pre></div>
695</div> 699</div>
@@ -749,15 +753,15 @@ other strong references keeping it alive.</li>
749</ol> 753</ol>
750<p>Here&#8217;s the new symbol structure:</p> 754<p>Here&#8217;s the new symbol structure:</p>
751<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">symbol_s</span> <span class="p">{</span> 755<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">symbol_s</span> <span class="p">{</span>
752 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_SYMBOL */</span> 756 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_SYMBOL */</span>
753 <span class="kt">obj_t</span> <span class="n">name</span><span class="p">;</span> <span class="cm">/* its name (a string) */</span> 757 <span class="n">obj_t</span> <span class="n">name</span><span class="p">;</span> <span class="cm">/* its name (a string) */</span>
754<span class="p">}</span> <span class="n">symbol_s</span><span class="p">;</span> 758<span class="p">}</span> <span class="n">symbol_s</span><span class="p">;</span>
755</pre></div> 759</pre></div>
756</div> 760</div>
757<p>and the new implementation of <tt class="docutils literal"><span class="pre">intern</span></tt>:</p> 761<p>and the new implementation of <tt class="docutils literal"><span class="pre">intern</span></tt>:</p>
758<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">intern_string</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">name</span><span class="p">)</span> 762<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="nf">intern_string</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">name</span><span class="p">)</span>
759<span class="p">{</span> 763<span class="p">{</span>
760 <span class="kt">obj_t</span> <span class="n">symbol</span><span class="p">;</span> 764 <span class="n">obj_t</span> <span class="n">symbol</span><span class="p">;</span>
761 <span class="n">assert</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="o">==</span> <span class="n">TYPE_STRING</span><span class="p">);</span> 765 <span class="n">assert</span><span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="o">==</span> <span class="n">TYPE_STRING</span><span class="p">);</span>
762 <span class="n">symbol</span> <span class="o">=</span> <span class="n">table_ref</span><span class="p">(</span><span class="n">symtab</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span> 766 <span class="n">symbol</span> <span class="o">=</span> <span class="n">table_ref</span><span class="p">(</span><span class="n">symtab</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span>
763 <span class="k">if</span><span class="p">(</span><span class="n">symbol</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span> 767 <span class="k">if</span><span class="p">(</span><span class="n">symbol</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
@@ -767,7 +771,7 @@ other strong references keeping it alive.</li>
767 <span class="k">return</span> <span class="n">symbol</span><span class="p">;</span> 771 <span class="k">return</span> <span class="n">symbol</span><span class="p">;</span>
768<span class="p">}</span> 772<span class="p">}</span>
769 773
770<span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">intern</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">)</span> 774<span class="k">static</span> <span class="n">obj_t</span> <span class="nf">intern</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">)</span>
771<span class="p">{</span> 775<span class="p">{</span>
772 <span class="k">return</span> <span class="n">intern_string</span><span class="p">(</span><span class="n">make_string</span><span class="p">(</span><span class="n">strlen</span><span class="p">(</span><span class="n">string</span><span class="p">),</span> <span class="n">string</span><span class="p">));</span> 776 <span class="k">return</span> <span class="n">intern_string</span><span class="p">(</span><span class="n">make_string</span><span class="p">(</span><span class="n">strlen</span><span class="p">(</span><span class="n">string</span><span class="p">),</span> <span class="n">string</span><span class="p">));</span>
773<span class="p">}</span> 777<span class="p">}</span>
@@ -775,7 +779,7 @@ other strong references keeping it alive.</li>
775</div> 779</div>
776<p>The symbol table now becomes a very simple <a class="reference internal" href="../glossary/r.html#term-root"><em class="xref std std-term">root</em></a>, that only has 780<p>The symbol table now becomes a very simple <a class="reference internal" href="../glossary/r.html#term-root"><em class="xref std std-term">root</em></a>, that only has
777to be registered once (not <a class="reference internal" href="lang.html#guide-lang-root"><em>every time it is rehashed</em></a>, as previously):</p> 781to be registered once (not <a class="reference internal" href="lang.html#guide-lang-root"><em>every time it is rehashed</em></a>, as previously):</p>
778<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_addr_t</span> <span class="n">ref</span><span class="p">;</span> 782<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_addr_t</span> <span class="n">ref</span><span class="p">;</span>
779<span class="n">symtab</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span> 783<span class="n">symtab</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
780<span class="n">ref</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">symtab</span><span class="p">;</span> 784<span class="n">ref</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">symtab</span><span class="p">;</span>
781<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create_table</span><span class="p">(</span><span class="o">&amp;</span><span class="n">symtab_root</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_rank_exact</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span> 785<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create_table</span><span class="p">(</span><span class="o">&amp;</span><span class="n">symtab_root</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_rank_exact</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span>
@@ -823,23 +827,22 @@ avoided.</p>
823<p>Here the appropriate class is <a class="reference internal" href="../pool/amcz.html#pool-amcz"><em>AMCZ (Automatic Mostly-Copying Zero-rank)</em></a>, and the necessary code 827<p>Here the appropriate class is <a class="reference internal" href="../pool/amcz.html#pool-amcz"><em>AMCZ (Automatic Mostly-Copying Zero-rank)</em></a>, and the necessary code
824changes are straightforward. First, global variables for the new pool 828changes are straightforward. First, global variables for the new pool
825and its <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a>:</p> 829and its <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a>:</p>
826<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_pool_t</span> <span class="n">leaf_pool</span><span class="p">;</span> <span class="cm">/* pool for leaf objects */</span> 830<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_pool_t</span> <span class="n">leaf_pool</span><span class="p">;</span> <span class="cm">/* pool for leaf objects */</span>
827<span class="k">static</span> <span class="kt">mps_ap_t</span> <span class="n">leaf_ap</span><span class="p">;</span> <span class="cm">/* allocation point for leaf objects */</span> 831<span class="k">static</span> <span class="n">mps_ap_t</span> <span class="n">leaf_ap</span><span class="p">;</span> <span class="cm">/* allocation point for leaf objects */</span>
828</pre></div> 832</pre></div>
829</div> 833</div>
830<p>Second, the leaf objects must be allocated on <tt class="docutils literal"><span class="pre">leaf_ap</span></tt> instead of 834<p>Second, the leaf objects must be allocated on <tt class="docutils literal"><span class="pre">leaf_ap</span></tt> instead of
831<tt class="docutils literal"><span class="pre">obj_ap</span></tt>. And third, the pool and its allocation point must be created:</p> 835<tt class="docutils literal"><span class="pre">obj_ap</span></tt>. And third, the pool and its allocation point must be created:</p>
832<div class="highlight-c"><div class="highlight"><pre><span class="cm">/* Create an Automatic Mostly-Copying Zero-rank (AMCZ) pool to</span> 836<div class="highlight-c"><div class="highlight"><pre><span class="cm">/* Create an Automatic Mostly-Copying Zero-rank (AMCZ) pool to</span>
833<span class="cm"> manage the leaf objects. */</span> 837<span class="cm"> manage the leaf objects. */</span>
834<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">leaf_pool</span><span class="p">,</span> 838<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">leaf_pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_amcz</span><span class="p">(),</span>
835 <span class="n">arena</span><span class="p">,</span> 839 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_CHAIN</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">chain</span> <span class="o">=</span> <span class="n">obj_chain</span><span class="p">},</span>
836 <span class="n">mps_class_amcz</span><span class="p">(),</span> 840 <span class="p">{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">obj_fmt</span><span class="p">},</span>
837 <span class="n">obj_fmt</span><span class="p">,</span> 841 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
838 <span class="n">obj_chain</span><span class="p">);</span>
839<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create leaf pool&quot;</span><span class="p">);</span> 842<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create leaf pool&quot;</span><span class="p">);</span>
840 843
841<span class="cm">/* Create allocation point for leaf objects. */</span> 844<span class="cm">/* Create allocation point for leaf objects. */</span>
842<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">leaf_ap</span><span class="p">,</span> <span class="n">leaf_pool</span><span class="p">);</span> 845<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">leaf_ap</span><span class="p">,</span> <span class="n">leaf_pool</span><span class="p">,</span> <span class="n">mps_args_none</span><span class="p">);</span>
843<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create leaf objects allocation point&quot;</span><span class="p">);</span> 846<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create leaf objects allocation point&quot;</span><span class="p">);</span>
844</pre></div> 847</pre></div>
845</div> 848</div>
diff --git a/mps/manual/html/guide/debug.html b/mps/manual/html/guide/debug.html
index 7e52d984e9c..6b4684fb187 100644
--- a/mps/manual/html/guide/debug.html
+++ b/mps/manual/html/guide/debug.html
@@ -227,13 +227,13 @@ up to the detection of the error. See <a class="reference internal" href="../top
227<span id="guide-debug-size"></span><span id="index-5"></span><h2>4.3. Example: allocating with wrong size<a class="headerlink" href="#example-allocating-with-wrong-size" title="Permalink to this headline">¶</a></h2> 227<span id="guide-debug-size"></span><span id="index-5"></span><h2>4.3. Example: allocating with wrong size<a class="headerlink" href="#example-allocating-with-wrong-size" title="Permalink to this headline">¶</a></h2>
228<p>Here&#8217;s another kind of mistake: an off-by-one error in <tt class="docutils literal"><span class="pre">make_string</span></tt> 228<p>Here&#8217;s another kind of mistake: an off-by-one error in <tt class="docutils literal"><span class="pre">make_string</span></tt>
229leading to the allocation of string objects with the wrong size:</p> 229leading to the allocation of string objects with the wrong size:</p>
230<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">make_string</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">length</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">)</span> 230<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="nf">make_string</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">length</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">)</span>
231<span class="p">{</span> 231<span class="p">{</span>
232 <span class="kt">obj_t</span> <span class="n">obj</span><span class="p">;</span> 232 <span class="n">obj_t</span> <span class="n">obj</span><span class="p">;</span>
233 <span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span> 233 <span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span>
234<span class="hll"> <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="n">offsetof</span><span class="p">(</span><span class="n">string_s</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">+</span> <span class="n">length</span><span class="cm">/* oops, forgot: +1 */</span><span class="p">);</span> 234<span class="hll"> <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="n">offsetof</span><span class="p">(</span><span class="n">string_s</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">+</span> <span class="n">length</span><span class="cm">/* oops, forgot: +1 */</span><span class="p">);</span>
235</span> <span class="k">do</span> <span class="p">{</span> 235</span> <span class="k">do</span> <span class="p">{</span>
236 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">obj_ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span> 236 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">obj_ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
237 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_string&quot;</span><span class="p">);</span> 237 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_string&quot;</span><span class="p">);</span>
238 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 238 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
239 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">string</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_STRING</span><span class="p">;</span> 239 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">string</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_STRING</span><span class="p">;</span>
diff --git a/mps/manual/html/guide/lang.html b/mps/manual/html/guide/lang.html
index 1698595f1e2..55b43e428e9 100644
--- a/mps/manual/html/guide/lang.html
+++ b/mps/manual/html/guide/lang.html
@@ -90,7 +90,7 @@ pointers to strings.</li>
90<p>A Scheme object (whose type is not necessarily known) is represented by 90<p>A Scheme object (whose type is not necessarily known) is represented by
91an <tt class="docutils literal"><span class="pre">obj_t</span></tt>, which is a pointer to a union of every type in the 91an <tt class="docutils literal"><span class="pre">obj_t</span></tt>, which is a pointer to a union of every type in the
92language:</p> 92language:</p>
93<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">union</span> <span class="n">obj_u</span> <span class="o">*</span><span class="kt">obj_t</span><span class="p">;</span> 93<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">union</span> <span class="n">obj_u</span> <span class="o">*</span><span class="n">obj_t</span><span class="p">;</span>
94<span class="k">typedef</span> <span class="k">union</span> <span class="n">obj_u</span> <span class="p">{</span> 94<span class="k">typedef</span> <span class="k">union</span> <span class="n">obj_u</span> <span class="p">{</span>
95 <span class="n">type_s</span> <span class="n">type</span><span class="p">;</span> 95 <span class="n">type_s</span> <span class="n">type</span><span class="p">;</span>
96 <span class="n">pair_s</span> <span class="n">pair</span><span class="p">;</span> 96 <span class="n">pair_s</span> <span class="n">pair</span><span class="p">;</span>
@@ -113,8 +113,8 @@ specifying the type of the object (<tt class="docutils literal"><span class="pre
113represented by a pointer to the structure <tt class="docutils literal"><span class="pre">pair_s</span></tt> defined as 113represented by a pointer to the structure <tt class="docutils literal"><span class="pre">pair_s</span></tt> defined as
114follows:</p> 114follows:</p>
115<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">pair_s</span> <span class="p">{</span> 115<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">pair_s</span> <span class="p">{</span>
116 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_PAIR */</span> 116 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_PAIR */</span>
117 <span class="kt">obj_t</span> <span class="n">car</span><span class="p">,</span> <span class="n">cdr</span><span class="p">;</span> <span class="cm">/* first and second projections */</span> 117 <span class="n">obj_t</span> <span class="n">car</span><span class="p">,</span> <span class="n">cdr</span><span class="p">;</span> <span class="cm">/* first and second projections */</span>
118<span class="p">}</span> <span class="n">pair_s</span><span class="p">;</span> 118<span class="p">}</span> <span class="n">pair_s</span><span class="p">;</span>
119</pre></div> 119</pre></div>
120</div> 120</div>
@@ -122,7 +122,7 @@ follows:</p>
122operate on objects generically, testing <tt class="docutils literal"><span class="pre">TYPE(obj)</span></tt> as necessary 122operate on objects generically, testing <tt class="docutils literal"><span class="pre">TYPE(obj)</span></tt> as necessary
123(which is a macro for <tt class="docutils literal"><span class="pre">obj-&gt;type.type</span></tt>). For example, the 123(which is a macro for <tt class="docutils literal"><span class="pre">obj-&gt;type.type</span></tt>). For example, the
124<tt class="docutils literal"><span class="pre">print()</span></tt> function is implemented like this:</p> 124<tt class="docutils literal"><span class="pre">print()</span></tt> function is implemented like this:</p>
125<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">obj</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="n">depth</span><span class="p">,</span> <span class="kt">FILE</span> <span class="o">*</span><span class="n">stream</span><span class="p">)</span> 125<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">print</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">obj</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="n">depth</span><span class="p">,</span> <span class="kt">FILE</span> <span class="o">*</span><span class="n">stream</span><span class="p">)</span>
126<span class="p">{</span> 126<span class="p">{</span>
127 <span class="k">switch</span> <span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span> 127 <span class="k">switch</span> <span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
128 <span class="k">case</span> <span class="n">TYPE_INTEGER</span>: 128 <span class="k">case</span> <span class="n">TYPE_INTEGER</span>:
@@ -140,9 +140,9 @@ operate on objects generically, testing <tt class="docutils literal"><span class
140</div> 140</div>
141<p>Each constructor allocates memory for the new object by calling 141<p>Each constructor allocates memory for the new object by calling
142<tt class="docutils literal"><span class="pre">malloc</span></tt>. For example, <tt class="docutils literal"><span class="pre">make_pair</span></tt> is the constructor for pairs:</p> 142<tt class="docutils literal"><span class="pre">malloc</span></tt>. For example, <tt class="docutils literal"><span class="pre">make_pair</span></tt> is the constructor for pairs:</p>
143<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">make_pair</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">car</span><span class="p">,</span> <span class="kt">obj_t</span> <span class="n">cdr</span><span class="p">)</span> 143<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="nf">make_pair</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">car</span><span class="p">,</span> <span class="n">obj_t</span> <span class="n">cdr</span><span class="p">)</span>
144<span class="p">{</span> 144<span class="p">{</span>
145 <span class="kt">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="p">(</span><span class="kt">obj_t</span><span class="p">)</span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pair_s</span><span class="p">));</span> 145 <span class="n">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="p">(</span><span class="n">obj_t</span><span class="p">)</span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pair_s</span><span class="p">));</span>
146 <span class="k">if</span> <span class="p">(</span><span class="n">obj</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory&quot;</span><span class="p">);</span> 146 <span class="k">if</span> <span class="p">(</span><span class="n">obj</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory&quot;</span><span class="p">);</span>
147 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">pair</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_PAIR</span><span class="p">;</span> 147 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">pair</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_PAIR</span><span class="p">;</span>
148 <span class="n">CAR</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="o">=</span> <span class="n">car</span><span class="p">;</span> 148 <span class="n">CAR</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="o">=</span> <span class="n">car</span><span class="p">;</span>
@@ -181,26 +181,34 @@ general-purpose programs you&#8217;ll want to use the virtual memory arena.</p>
181<p>There&#8217;s only one arena, and many MPS functions take an arena as an 181<p>There&#8217;s only one arena, and many MPS functions take an arena as an
182argument, so it makes sense for the arena to be a global variable 182argument, so it makes sense for the arena to be a global variable
183rather than having to pass it around everywhere:</p> 183rather than having to pass it around everywhere:</p>
184<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">;</span> 184<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">;</span>
185</pre></div> 185</pre></div>
186</div> 186</div>
187<p>Create an arena by calling <a class="reference internal" href="../topic/arena.html#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a>. This function 187<p>Create an arena by calling <a class="reference internal" href="../topic/arena.html#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a>. This function
188takes a third argument when creating a virtual memory arena: the size of 188takes a <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword argument</em></a> when creating a virtual memory arena:
189the amount of virtual virtual <a class="reference internal" href="../glossary/a.html#term-address-space"><em class="xref std std-term">address space</em></a> (<em>not</em> <a class="reference internal" href="../glossary/r.html#term-ram"><em class="xref std std-term">RAM</em></a>), 189the size of virtual <a class="reference internal" href="../glossary/a.html#term-address-space"><em class="xref std std-term">address space</em></a> (<em>not</em> <a class="reference internal" href="../glossary/r.html#term-ram"><em class="xref std std-term">RAM</em></a>), in
190in bytes, that the arena will reserve initially. The MPS will ask for 190bytes, that the arena will reserve initially. The MPS will ask for
191more address space if it runs out, but the more times it has to extend 191more address space if it runs out, but the more times it has to extend
192its address space, the less efficient garbage collection will become. 192its address space, the less efficient garbage collection will become.
193The MPS works best if you reserve an address space that is several times 193The MPS works best if you reserve an address space that is several
194larger than your peak memory usage.</p> 194times larger than your peak memory usage.</p>
195<div class="admonition-note admonition">
196<p class="first admonition-title">Note</p>
197<p class="last">Functions in the MPS interface take <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a> for
198arguments that are optional, or are only required in some
199circumstances. These argument are passed in the form of an array
200of structures of type <a class="reference internal" href="../topic/keyword.html#mps_arg_s" title="mps_arg_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_arg_s</span></tt></a>. See
201<a class="reference internal" href="../topic/keyword.html#topic-keyword"><em>Keyword arguments</em></a> for the full details.</p>
202</div>
195<p>Let&#8217;s reserve 32 megabytes:</p> 203<p>Let&#8217;s reserve 32 megabytes:</p>
196<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 204<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
197<span class="n">res</span> <span class="o">=</span> <span class="n">mps_arena_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">arena</span><span class="p">,</span> 205<span class="n">res</span> <span class="o">=</span> <span class="n">mps_arena_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">arena</span><span class="p">,</span> <span class="n">mps_arena_class_vm</span><span class="p">(),</span>
198 <span class="n">mps_arena_class_vm</span><span class="p">(),</span> 206 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_ARENA_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">32</span> <span class="o">*</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span><span class="p">},</span>
199 <span class="p">(</span><span class="kt">size_t</span><span class="p">)(</span><span class="mi">32</span> <span class="o">*</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span><span class="p">));</span> 207 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
200<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create arena&quot;</span><span class="p">);</span> 208<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create arena&quot;</span><span class="p">);</span>
201</pre></div> 209</pre></div>
202</div> 210</div>
203<p><a class="reference internal" href="../topic/arena.html#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> is typical of functions in the MPS 211<p><a class="reference internal" href="../topic/arena.html#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> is typical of functions in the MPS
204interface in that it stores its result in a location pointed to by an 212interface in that it stores its result in a location pointed to by an
205<a class="reference internal" href="../glossary/o.html#term-out-parameter"><em class="xref std std-term">out parameter</em></a> (here, <tt class="docutils literal"><span class="pre">&amp;arena</span></tt>) and returns a <a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result 213<a class="reference internal" href="../glossary/o.html#term-out-parameter"><em class="xref std std-term">out parameter</em></a> (here, <tt class="docutils literal"><span class="pre">&amp;arena</span></tt>) and returns a <a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result
206code</em></a>, which is <a class="reference internal" href="../topic/error.html#MPS_RES_OK" title="MPS_RES_OK"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_OK</span></tt></a> if the function succeeded, or 214code</em></a>, which is <a class="reference internal" href="../topic/error.html#MPS_RES_OK" title="MPS_RES_OK"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_OK</span></tt></a> if the function succeeded, or
@@ -266,7 +274,7 @@ code for creating the object format for the toy Scheme interpreter:</p>
266 <span class="n">obj_pad</span><span class="p">,</span> 274 <span class="n">obj_pad</span><span class="p">,</span>
267<span class="p">};</span> 275<span class="p">};</span>
268 276
269<span class="kt">mps_fmt_t</span> <span class="n">obj_fmt</span><span class="p">;</span> 277<span class="n">mps_fmt_t</span> <span class="n">obj_fmt</span><span class="p">;</span>
270<span class="n">res</span> <span class="o">=</span> <span class="n">mps_fmt_create_A</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_fmt</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">obj_fmt_s</span><span class="p">);</span> 278<span class="n">res</span> <span class="o">=</span> <span class="n">mps_fmt_create_A</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_fmt</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">obj_fmt_s</span><span class="p">);</span>
271<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj format&quot;</span><span class="p">);</span> 279<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj format&quot;</span><span class="p">);</span>
272</pre></div> 280</pre></div>
@@ -324,11 +332,11 @@ which the scan method was called. The scan method is called to
324discover references and so determine which objects are <a class="reference internal" href="../glossary/l.html#term-live"><em class="xref std std-term">alive</em></a> and which are <a class="reference internal" href="../glossary/d.html#term-dead"><em class="xref std std-term">dead</em></a>, and also to update references 332discover references and so determine which objects are <a class="reference internal" href="../glossary/l.html#term-live"><em class="xref std std-term">alive</em></a> and which are <a class="reference internal" href="../glossary/d.html#term-dead"><em class="xref std std-term">dead</em></a>, and also to update references
325after objects have been moved.</p> 333after objects have been moved.</p>
326<p>Here&#8217;s the scan method for the toy Scheme interpreter:</p> 334<p>Here&#8217;s the scan method for the toy Scheme interpreter:</p>
327<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_res_t</span> <span class="nf">obj_scan</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span> 335<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_res_t</span> <span class="nf">obj_scan</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span>
328<span class="p">{</span> 336<span class="p">{</span>
329 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span> 337 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span>
330 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span> 338 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
331 <span class="kt">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> 339 <span class="n">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span>
332 <span class="k">switch</span> <span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span> 340 <span class="k">switch</span> <span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
333 <span class="k">case</span> <span class="n">TYPE_PAIR</span>: 341 <span class="k">case</span> <span class="n">TYPE_PAIR</span>:
334 <span class="n">FIX</span><span class="p">(</span><span class="n">CAR</span><span class="p">(</span><span class="n">obj</span><span class="p">));</span> 342 <span class="n">FIX</span><span class="p">(</span><span class="n">CAR</span><span class="p">(</span><span class="n">obj</span><span class="p">));</span>
@@ -406,9 +414,9 @@ soon as practicable.</li>
406<a class="reference internal" href="../topic/format.html#mps_fmt_skip_t" title="mps_fmt_skip_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_skip_t</span></tt></a>. It is called by the MPS to skip over an 414<a class="reference internal" href="../topic/format.html#mps_fmt_skip_t" title="mps_fmt_skip_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_skip_t</span></tt></a>. It is called by the MPS to skip over an
407object belonging to the format, and also to determine its size.</p> 415object belonging to the format, and also to determine its size.</p>
408<p>Here&#8217;s the skip method for the toy Scheme interpreter:</p> 416<p>Here&#8217;s the skip method for the toy Scheme interpreter:</p>
409<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_addr_t</span> <span class="nf">obj_skip</span><span class="p">(</span><span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">)</span> 417<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_addr_t</span> <span class="nf">obj_skip</span><span class="p">(</span><span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">)</span>
410<span class="p">{</span> 418<span class="p">{</span>
411 <span class="kt">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> 419 <span class="n">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span>
412 <span class="k">switch</span> <span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span> 420 <span class="k">switch</span> <span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
413 <span class="k">case</span> <span class="n">TYPE_PAIR</span>: 421 <span class="k">case</span> <span class="n">TYPE_PAIR</span>:
414 <span class="n">base</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">base</span> <span class="o">+</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pair_s</span><span class="p">));</span> 422 <span class="n">base</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">base</span> <span class="o">+</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pair_s</span><span class="p">));</span>
@@ -461,24 +469,24 @@ objects might be as small as two words (for example, integers).</p>
461The first type is suitable for forwarding objects of three words or 469The first type is suitable for forwarding objects of three words or
462longer:</p> 470longer:</p>
463<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">fwd_s</span> <span class="p">{</span> 471<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">fwd_s</span> <span class="p">{</span>
464 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_FWD */</span> 472 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_FWD */</span>
465 <span class="kt">obj_t</span> <span class="n">fwd</span><span class="p">;</span> <span class="cm">/* forwarded object */</span> 473 <span class="n">obj_t</span> <span class="n">fwd</span><span class="p">;</span> <span class="cm">/* forwarded object */</span>
466 <span class="kt">size_t</span> <span class="n">size</span><span class="p">;</span> <span class="cm">/* total size of this object */</span> 474 <span class="kt">size_t</span> <span class="n">size</span><span class="p">;</span> <span class="cm">/* total size of this object */</span>
467<span class="p">}</span> <span class="n">fwd_s</span><span class="p">;</span> 475<span class="p">}</span> <span class="n">fwd_s</span><span class="p">;</span>
468</pre></div> 476</pre></div>
469</div> 477</div>
470<p>while the second type is suitable for forwarding objects of two words:</p> 478<p>while the second type is suitable for forwarding objects of two words:</p>
471<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">fwd2_s</span> <span class="p">{</span> 479<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">fwd2_s</span> <span class="p">{</span>
472 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_FWD2 */</span> 480 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_FWD2 */</span>
473 <span class="kt">obj_t</span> <span class="n">fwd</span><span class="p">;</span> <span class="cm">/* forwarded object */</span> 481 <span class="n">obj_t</span> <span class="n">fwd</span><span class="p">;</span> <span class="cm">/* forwarded object */</span>
474<span class="p">}</span> <span class="n">fwd2_s</span><span class="p">;</span> 482<span class="p">}</span> <span class="n">fwd2_s</span><span class="p">;</span>
475</pre></div> 483</pre></div>
476</div> 484</div>
477<p>Here&#8217;s the forward method for the toy Scheme interpreter:</p> 485<p>Here&#8217;s the forward method for the toy Scheme interpreter:</p>
478<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">obj_fwd</span><span class="p">(</span><span class="kt">mps_addr_t</span> <span class="n">old</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">new</span><span class="p">)</span> 486<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">obj_fwd</span><span class="p">(</span><span class="n">mps_addr_t</span> <span class="n">old</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">new</span><span class="p">)</span>
479<span class="p">{</span> 487<span class="p">{</span>
480 <span class="kt">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">old</span><span class="p">;</span> 488 <span class="n">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">old</span><span class="p">;</span>
481 <span class="kt">mps_addr_t</span> <span class="n">limit</span> <span class="o">=</span> <span class="n">obj_skip</span><span class="p">(</span><span class="n">old</span><span class="p">);</span> 489 <span class="n">mps_addr_t</span> <span class="n">limit</span> <span class="o">=</span> <span class="n">obj_skip</span><span class="p">(</span><span class="n">old</span><span class="p">);</span>
482 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">limit</span> <span class="o">-</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">old</span><span class="p">;</span> 490 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">limit</span> <span class="o">-</span> <span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">old</span><span class="p">;</span>
483 <span class="n">assert</span><span class="p">(</span><span class="n">size</span> <span class="o">&gt;=</span> <span class="n">ALIGN_UP</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">fwd2_s</span><span class="p">)));</span> 491 <span class="n">assert</span><span class="p">(</span><span class="n">size</span> <span class="o">&gt;=</span> <span class="n">ALIGN_UP</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">fwd2_s</span><span class="p">)));</span>
484 <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">==</span> <span class="n">ALIGN_UP</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">fwd2_s</span><span class="p">)))</span> <span class="p">{</span> 492 <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">==</span> <span class="n">ALIGN_UP</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">fwd2_s</span><span class="p">)))</span> <span class="p">{</span>
@@ -537,9 +545,9 @@ scanning them could be avoided.</li>
537object is a <a class="reference internal" href="../glossary/f.html#term-forwarding-object"><em class="xref std std-term">forwarding object</em></a>, and if it is, to determine the 545object is a <a class="reference internal" href="../glossary/f.html#term-forwarding-object"><em class="xref std std-term">forwarding object</em></a>, and if it is, to determine the
538location where that object was moved.</p> 546location where that object was moved.</p>
539<p>Here&#8217;s the is-forwarded method for the toy Scheme interpreter:</p> 547<p>Here&#8217;s the is-forwarded method for the toy Scheme interpreter:</p>
540<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_addr_t</span> <span class="nf">obj_isfwd</span><span class="p">(</span><span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">)</span> 548<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_addr_t</span> <span class="nf">obj_isfwd</span><span class="p">(</span><span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">)</span>
541<span class="p">{</span> 549<span class="p">{</span>
542 <span class="kt">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 550 <span class="n">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
543 <span class="k">switch</span> <span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span> 551 <span class="k">switch</span> <span class="p">(</span><span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">))</span> <span class="p">{</span>
544 <span class="k">case</span> <span class="n">TYPE_FWD2</span>: 552 <span class="k">case</span> <span class="n">TYPE_FWD2</span>:
545 <span class="k">return</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">fwd2</span><span class="p">.</span><span class="n">fwd</span><span class="p">;</span> 553 <span class="k">return</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">fwd2</span><span class="p">.</span><span class="n">fwd</span><span class="p">;</span>
@@ -573,7 +581,7 @@ word. As with forwarding objects, this can be solved by having two
573types of padding object. The first type is suitable for padding 581types of padding object. The first type is suitable for padding
574objects of two words or longer:</p> 582objects of two words or longer:</p>
575<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">pad_s</span> <span class="p">{</span> 583<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">pad_s</span> <span class="p">{</span>
576 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_PAD */</span> 584 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_PAD */</span>
577 <span class="kt">size_t</span> <span class="n">size</span><span class="p">;</span> <span class="cm">/* total size of this object */</span> 585 <span class="kt">size_t</span> <span class="n">size</span><span class="p">;</span> <span class="cm">/* total size of this object */</span>
578<span class="p">}</span> <span class="n">pad_s</span><span class="p">;</span> 586<span class="p">}</span> <span class="n">pad_s</span><span class="p">;</span>
579</pre></div> 587</pre></div>
@@ -581,14 +589,14 @@ objects of two words or longer:</p>
581<p>while the second type is suitable for padding objects consisting of a 589<p>while the second type is suitable for padding objects consisting of a
582single word:</p> 590single word:</p>
583<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">pad1_s</span> <span class="p">{</span> 591<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">pad1_s</span> <span class="p">{</span>
584 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_PAD1 */</span> 592 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_PAD1 */</span>
585<span class="p">}</span> <span class="n">pad1_s</span><span class="p">;</span> 593<span class="p">}</span> <span class="n">pad1_s</span><span class="p">;</span>
586</pre></div> 594</pre></div>
587</div> 595</div>
588<p>Here&#8217;s the padding method:</p> 596<p>Here&#8217;s the padding method:</p>
589<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">obj_pad</span><span class="p">(</span><span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">)</span> 597<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">obj_pad</span><span class="p">(</span><span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">size</span><span class="p">)</span>
590<span class="p">{</span> 598<span class="p">{</span>
591 <span class="kt">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 599 <span class="n">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
592 <span class="n">assert</span><span class="p">(</span><span class="n">size</span> <span class="o">&gt;=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pad1_s</span><span class="p">)));</span> 600 <span class="n">assert</span><span class="p">(</span><span class="n">size</span> <span class="o">&gt;=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pad1_s</span><span class="p">)));</span>
593 <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">==</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pad1_s</span><span class="p">)))</span> <span class="p">{</span> 601 <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">==</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pad1_s</span><span class="p">)))</span> <span class="p">{</span>
594 <span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="o">=</span> <span class="n">TYPE_PAD1</span><span class="p">;</span> 602 <span class="n">TYPE</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> <span class="o">=</span> <span class="n">TYPE_PAD1</span><span class="p">;</span>
@@ -664,7 +672,7 @@ the pool creation code. First, the header for the AMC pool class:</p>
664</div> 672</div>
665<p>Second, the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a>:</p> 673<p>Second, the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a>:</p>
666<div class="highlight-c"><div class="highlight"><pre><span class="k">struct</span> <span class="n">mps_fmt_A_s</span> <span class="n">obj_fmt_s</span> <span class="o">=</span> <span class="p">{</span> 674<div class="highlight-c"><div class="highlight"><pre><span class="k">struct</span> <span class="n">mps_fmt_A_s</span> <span class="n">obj_fmt_s</span> <span class="o">=</span> <span class="p">{</span>
667 <span class="k">sizeof</span><span class="p">(</span><span class="kt">mps_word_t</span><span class="p">),</span> 675 <span class="k">sizeof</span><span class="p">(</span><span class="n">mps_word_t</span><span class="p">),</span>
668 <span class="n">obj_scan</span><span class="p">,</span> 676 <span class="n">obj_scan</span><span class="p">,</span>
669 <span class="n">obj_skip</span><span class="p">,</span> 677 <span class="n">obj_skip</span><span class="p">,</span>
670 <span class="nb">NULL</span><span class="p">,</span> 678 <span class="nb">NULL</span><span class="p">,</span>
@@ -673,7 +681,7 @@ the pool creation code. First, the header for the AMC pool class:</p>
673 <span class="n">obj_pad</span><span class="p">,</span> 681 <span class="n">obj_pad</span><span class="p">,</span>
674<span class="p">};</span> 682<span class="p">};</span>
675 683
676<span class="kt">mps_fmt_t</span> <span class="n">obj_fmt</span><span class="p">;</span> 684<span class="n">mps_fmt_t</span> <span class="n">obj_fmt</span><span class="p">;</span>
677<span class="n">res</span> <span class="o">=</span> <span class="n">mps_fmt_create_A</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_fmt</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">obj_fmt_s</span><span class="p">);</span> 685<span class="n">res</span> <span class="o">=</span> <span class="n">mps_fmt_create_A</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_fmt</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">obj_fmt_s</span><span class="p">);</span>
678<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj format&quot;</span><span class="p">);</span> 686<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj format&quot;</span><span class="p">);</span>
679</pre></div> 687</pre></div>
@@ -684,7 +692,7 @@ the pool creation code. First, the header for the AMC pool class:</p>
684 <span class="p">{</span> <span class="mi">170</span><span class="p">,</span> <span class="mf">0.45</span> <span class="p">},</span> 692 <span class="p">{</span> <span class="mi">170</span><span class="p">,</span> <span class="mf">0.45</span> <span class="p">},</span>
685<span class="p">};</span> 693<span class="p">};</span>
686 694
687<span class="kt">mps_chain_t</span> <span class="n">obj_chain</span><span class="p">;</span> 695<span class="n">mps_chain_t</span> <span class="n">obj_chain</span><span class="p">;</span>
688<span class="n">res</span> <span class="o">=</span> <span class="n">mps_chain_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_chain</span><span class="p">,</span> 696<span class="n">res</span> <span class="o">=</span> <span class="n">mps_chain_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_chain</span><span class="p">,</span>
689 <span class="n">arena</span><span class="p">,</span> 697 <span class="n">arena</span><span class="p">,</span>
690 <span class="n">LENGTH</span><span class="p">(</span><span class="n">obj_gen_params</span><span class="p">),</span> 698 <span class="n">LENGTH</span><span class="p">(</span><span class="n">obj_gen_params</span><span class="p">),</span>
@@ -693,12 +701,11 @@ the pool creation code. First, the header for the AMC pool class:</p>
693</pre></div> 701</pre></div>
694</div> 702</div>
695<p>And finally the <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>:</p> 703<p>And finally the <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>:</p>
696<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_pool_t</span> <span class="n">obj_pool</span><span class="p">;</span> 704<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_pool_t</span> <span class="n">obj_pool</span><span class="p">;</span>
697<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_pool</span><span class="p">,</span> 705<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_amc</span><span class="p">(),</span>
698 <span class="n">arena</span><span class="p">,</span> 706 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_CHAIN</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">chain</span> <span class="o">=</span> <span class="n">obj_chain</span><span class="p">},</span>
699 <span class="n">mps_class_amc</span><span class="p">(),</span> 707 <span class="p">{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">obj_fmt</span><span class="p">},</span>
700 <span class="n">obj_fmt</span><span class="p">,</span> 708 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
701 <span class="n">obj_chain</span><span class="p">);</span>
702<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj pool&quot;</span><span class="p">);</span> 709<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj pool&quot;</span><span class="p">);</span>
703</pre></div> 710</pre></div>
704</div> 711</div>
@@ -721,15 +728,15 @@ memory allocated by other memory managers. For these roots you must
721describe to the MPS how to <a class="reference internal" href="../glossary/s.html#term-scan"><em class="xref std std-term">scan</em></a> them for references.</p> 728describe to the MPS how to <a class="reference internal" href="../glossary/s.html#term-scan"><em class="xref std std-term">scan</em></a> them for references.</p>
722<p>The toy Scheme interpreter has a number of static variables that point 729<p>The toy Scheme interpreter has a number of static variables that point
723to heap-allocated objects. First, the special objects, including:</p> 730to heap-allocated objects. First, the special objects, including:</p>
724<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="n">obj_empty</span><span class="p">;</span> <span class="cm">/* (), the empty list */</span> 731<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="n">obj_empty</span><span class="p">;</span> <span class="cm">/* (), the empty list */</span>
725</pre></div> 732</pre></div>
726</div> 733</div>
727<p>Second, the predefined symbols, including:</p> 734<p>Second, the predefined symbols, including:</p>
728<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="n">obj_quote</span><span class="p">;</span> <span class="cm">/* &quot;quote&quot; symbol */</span> 735<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="n">obj_quote</span><span class="p">;</span> <span class="cm">/* &quot;quote&quot; symbol */</span>
729</pre></div> 736</pre></div>
730</div> 737</div>
731<p>And third, the global symbol table:</p> 738<p>And third, the global symbol table:</p>
732<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="o">*</span><span class="n">symtab</span><span class="p">;</span> 739<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="o">*</span><span class="n">symtab</span><span class="p">;</span>
733<span class="k">static</span> <span class="kt">size_t</span> <span class="n">symtab_size</span><span class="p">;</span> 740<span class="k">static</span> <span class="kt">size_t</span> <span class="n">symtab_size</span><span class="p">;</span>
734</pre></div> 741</pre></div>
735</div> 742</div>
@@ -740,7 +747,7 @@ described above.</p>
740<p>In the case of the toy Scheme interpreter, the root scanning function 747<p>In the case of the toy Scheme interpreter, the root scanning function
741for the special objects and the predefined symbols could be written 748for the special objects and the predefined symbols could be written
742like this:</p> 749like this:</p>
743<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_res_t</span> <span class="nf">globals_scan</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">s</span><span class="p">)</span> 750<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_res_t</span> <span class="nf">globals_scan</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">s</span><span class="p">)</span>
744<span class="p">{</span> 751<span class="p">{</span>
745 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span> 752 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span>
746 <span class="n">FIX</span><span class="p">(</span><span class="n">obj_empty</span><span class="p">);</span> 753 <span class="n">FIX</span><span class="p">(</span><span class="n">obj_empty</span><span class="p">);</span>
@@ -755,7 +762,7 @@ like this:</p>
755<p>but in fact the interpreter already has tables of these global 762<p>but in fact the interpreter already has tables of these global
756objects, so it&#8217;s simpler and more extensible for the root scanning 763objects, so it&#8217;s simpler and more extensible for the root scanning
757function to iterate over them:</p> 764function to iterate over them:</p>
758<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_res_t</span> <span class="nf">globals_scan</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">s</span><span class="p">)</span> 765<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_res_t</span> <span class="nf">globals_scan</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">void</span> <span class="o">*</span><span class="n">p</span><span class="p">,</span> <span class="kt">size_t</span> <span class="n">s</span><span class="p">)</span>
759<span class="p">{</span> 766<span class="p">{</span>
760 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span> 767 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span>
761 <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span> 768 <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span>
@@ -770,7 +777,7 @@ function to iterate over them:</p>
770</div> 777</div>
771<p>Each root scanning function must be registered with the MPS by calling 778<p>Each root scanning function must be registered with the MPS by calling
772<a class="reference internal" href="../topic/root.html#mps_root_create" title="mps_root_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_root_create()</span></tt></a>, like this:</p> 779<a class="reference internal" href="../topic/root.html#mps_root_create" title="mps_root_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_root_create()</span></tt></a>, like this:</p>
773<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_root_t</span> <span class="n">globals_root</span><span class="p">;</span> 780<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_root_t</span> <span class="n">globals_root</span><span class="p">;</span>
774<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">globals_root</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_rank_exact</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span> 781<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">globals_root</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_rank_exact</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span>
775 <span class="n">globals_scan</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span> 782 <span class="n">globals_scan</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
776<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t register globals root&quot;</span><span class="p">);</span> 783<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t register globals root&quot;</span><span class="p">);</span>
@@ -808,11 +815,11 @@ after the rehash has completed, de-registering the old root by calling
808the global symbol table, but the case of a table of references is 815the global symbol table, but the case of a table of references is
809sufficiently common that the MPS provides a convenient (and optimized) 816sufficiently common that the MPS provides a convenient (and optimized)
810function, <a class="reference internal" href="../topic/root.html#mps_root_create_table" title="mps_root_create_table"><tt class="xref c c-func docutils literal"><span class="pre">mps_root_create_table()</span></tt></a>, for registering it:</p> 817function, <a class="reference internal" href="../topic/root.html#mps_root_create_table" title="mps_root_create_table"><tt class="xref c c-func docutils literal"><span class="pre">mps_root_create_table()</span></tt></a>, for registering it:</p>
811<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_root_t</span> <span class="n">symtab_root</span><span class="p">;</span> 818<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_root_t</span> <span class="n">symtab_root</span><span class="p">;</span>
812 819
813<span class="cm">/* ... */</span> 820<span class="cm">/* ... */</span>
814 821
815<span class="kt">mps_addr_t</span> <span class="n">ref</span> <span class="o">=</span> <span class="n">symtab</span><span class="p">;</span> 822<span class="n">mps_addr_t</span> <span class="n">ref</span> <span class="o">=</span> <span class="n">symtab</span><span class="p">;</span>
816<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create_table</span><span class="p">(</span><span class="o">&amp;</span><span class="n">symtab_root</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_rank_exact</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span> 823<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create_table</span><span class="p">(</span><span class="o">&amp;</span><span class="n">symtab_root</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_rank_exact</span><span class="p">(),</span> <span class="mi">0</span><span class="p">,</span>
817 <span class="n">ref</span><span class="p">,</span> <span class="n">symtab_size</span><span class="p">);</span> 824 <span class="n">ref</span><span class="p">,</span> <span class="n">symtab_size</span><span class="p">);</span>
818<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t register new symtab root&quot;</span><span class="p">);</span> 825<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t register new symtab root&quot;</span><span class="p">);</span>
@@ -821,15 +828,15 @@ function, <a class="reference internal" href="../topic/root.html#mps_root_create
821<p id="guide-lang-roots-rehash">The root must be re-registered whenever the global symbol table 828<p id="guide-lang-roots-rehash">The root must be re-registered whenever the global symbol table
822changes size:</p> 829changes size:</p>
823<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">rehash</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="p">{</span> 830<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">rehash</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="p">{</span>
824 <span class="kt">obj_t</span> <span class="o">*</span><span class="n">old_symtab</span> <span class="o">=</span> <span class="n">symtab</span><span class="p">;</span> 831 <span class="n">obj_t</span> <span class="o">*</span><span class="n">old_symtab</span> <span class="o">=</span> <span class="n">symtab</span><span class="p">;</span>
825 <span class="kt">unsigned</span> <span class="n">old_symtab_size</span> <span class="o">=</span> <span class="n">symtab_size</span><span class="p">;</span> 832 <span class="kt">unsigned</span> <span class="n">old_symtab_size</span> <span class="o">=</span> <span class="n">symtab_size</span><span class="p">;</span>
826 <span class="kt">mps_root_t</span> <span class="n">old_symtab_root</span> <span class="o">=</span> <span class="n">symtab_root</span><span class="p">;</span> 833 <span class="n">mps_root_t</span> <span class="n">old_symtab_root</span> <span class="o">=</span> <span class="n">symtab_root</span><span class="p">;</span>
827 <span class="kt">unsigned</span> <span class="n">i</span><span class="p">;</span> 834 <span class="kt">unsigned</span> <span class="n">i</span><span class="p">;</span>
828 <span class="kt">mps_addr_t</span> <span class="n">ref</span><span class="p">;</span> 835 <span class="n">mps_addr_t</span> <span class="n">ref</span><span class="p">;</span>
829 <span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 836 <span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
830 837
831 <span class="n">symtab_size</span> <span class="o">*=</span> <span class="mi">2</span><span class="p">;</span> 838 <span class="n">symtab_size</span> <span class="o">*=</span> <span class="mi">2</span><span class="p">;</span>
832 <span class="n">symtab</span> <span class="o">=</span> <span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">obj_t</span><span class="p">)</span> <span class="o">*</span> <span class="n">symtab_size</span><span class="p">);</span> 839 <span class="n">symtab</span> <span class="o">=</span> <span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">obj_t</span><span class="p">)</span> <span class="o">*</span> <span class="n">symtab_size</span><span class="p">);</span>
833 <span class="k">if</span> <span class="p">(</span><span class="n">symtab</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory&quot;</span><span class="p">);</span> 840 <span class="k">if</span> <span class="p">(</span><span class="n">symtab</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory&quot;</span><span class="p">);</span>
834 841
835 <span class="cm">/* Initialize the new table to NULL so that &quot;find&quot; will work. */</span> 842 <span class="cm">/* Initialize the new table to NULL so that &quot;find&quot; will work. */</span>
@@ -843,7 +850,7 @@ changes size:</p>
843 850
844 <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">old_symtab_size</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> 851 <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">old_symtab_size</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
845 <span class="k">if</span> <span class="p">(</span><span class="n">old_symtab</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span> 852 <span class="k">if</span> <span class="p">(</span><span class="n">old_symtab</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
846 <span class="kt">obj_t</span> <span class="o">*</span><span class="n">where</span> <span class="o">=</span> <span class="n">find</span><span class="p">(</span><span class="n">old_symtab</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">symbol</span><span class="p">.</span><span class="n">string</span><span class="p">);</span> 853 <span class="n">obj_t</span> <span class="o">*</span><span class="n">where</span> <span class="o">=</span> <span class="n">find</span><span class="p">(</span><span class="n">old_symtab</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">-&gt;</span><span class="n">symbol</span><span class="p">.</span><span class="n">string</span><span class="p">);</span>
847 <span class="n">assert</span><span class="p">(</span><span class="n">where</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">);</span> <span class="cm">/* new table shouldn&#39;t be full */</span> 854 <span class="n">assert</span><span class="p">(</span><span class="n">where</span> <span class="o">!=</span> <span class="nb">NULL</span><span class="p">);</span> <span class="cm">/* new table shouldn&#39;t be full */</span>
848 <span class="n">assert</span><span class="p">(</span><span class="o">*</span><span class="n">where</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">);</span> <span class="cm">/* shouldn&#39;t be in new table */</span> 855 <span class="n">assert</span><span class="p">(</span><span class="o">*</span><span class="n">where</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">);</span> <span class="cm">/* shouldn&#39;t be in new table */</span>
849 <span class="o">*</span><span class="n">where</span> <span class="o">=</span> <span class="n">old_symtab</span><span class="p">[</span><span class="n">i</span><span class="p">];</span> 856 <span class="o">*</span><span class="n">where</span> <span class="o">=</span> <span class="n">old_symtab</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
@@ -906,7 +913,7 @@ programs written in <a class="reference internal" href="../mmref/lang.html#term-
906</ol> 913</ol>
907<p>You register a thread with an <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a> by calling 914<p>You register a thread with an <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a> by calling
908<a class="reference internal" href="../topic/thread.html#mps_thread_reg" title="mps_thread_reg"><tt class="xref c c-func docutils literal"><span class="pre">mps_thread_reg()</span></tt></a>:</p> 915<a class="reference internal" href="../topic/thread.html#mps_thread_reg" title="mps_thread_reg"><tt class="xref c c-func docutils literal"><span class="pre">mps_thread_reg()</span></tt></a>:</p>
909<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_thr_t</span> <span class="kr">thread</span><span class="p">;</span> 916<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_thr_t</span> <span class="kr">thread</span><span class="p">;</span>
910<span class="n">res</span> <span class="o">=</span> <span class="n">mps_thread_reg</span><span class="p">(</span><span class="o">&amp;</span><span class="kr">thread</span><span class="p">,</span> <span class="n">arena</span><span class="p">);</span> 917<span class="n">res</span> <span class="o">=</span> <span class="n">mps_thread_reg</span><span class="p">(</span><span class="o">&amp;</span><span class="kr">thread</span><span class="p">,</span> <span class="n">arena</span><span class="p">);</span>
911<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t register thread&quot;</span><span class="p">);</span> 918<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t register thread&quot;</span><span class="p">);</span>
912</pre></div> 919</pre></div>
@@ -915,7 +922,7 @@ programs written in <a class="reference internal" href="../mmref/lang.html#term-
915calling <a class="reference internal" href="../topic/root.html#mps_root_create_reg" title="mps_root_create_reg"><tt class="xref c c-func docutils literal"><span class="pre">mps_root_create_reg()</span></tt></a> and passing 922calling <a class="reference internal" href="../topic/root.html#mps_root_create_reg" title="mps_root_create_reg"><tt class="xref c c-func docutils literal"><span class="pre">mps_root_create_reg()</span></tt></a> and passing
916<a class="reference internal" href="../topic/root.html#mps_stack_scan_ambig" title="mps_stack_scan_ambig"><tt class="xref c c-func docutils literal"><span class="pre">mps_stack_scan_ambig()</span></tt></a>:</p> 923<a class="reference internal" href="../topic/root.html#mps_stack_scan_ambig" title="mps_stack_scan_ambig"><tt class="xref c c-func docutils literal"><span class="pre">mps_stack_scan_ambig()</span></tt></a>:</p>
917<div class="highlight-c"><div class="highlight"><pre><span class="kt">void</span> <span class="o">*</span><span class="n">marker</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">marker</span><span class="p">;</span> 924<div class="highlight-c"><div class="highlight"><pre><span class="kt">void</span> <span class="o">*</span><span class="n">marker</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">marker</span><span class="p">;</span>
918<span class="kt">mps_root_t</span> <span class="n">reg_root</span><span class="p">;</span> 925<span class="n">mps_root_t</span> <span class="n">reg_root</span><span class="p">;</span>
919<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create_reg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">reg_root</span><span class="p">,</span> 926<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create_reg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">reg_root</span><span class="p">,</span>
920 <span class="n">arena</span><span class="p">,</span> 927 <span class="n">arena</span><span class="p">,</span>
921 <span class="n">mps_rank_ambig</span><span class="p">(),</span> 928 <span class="n">mps_rank_ambig</span><span class="p">(),</span>
@@ -946,11 +953,11 @@ to start allocating.</p>
946<p><a class="reference internal" href="../glossary/m.html#term-manual-memory-management"><em class="xref std std-term">Manual</em></a> pools typically support 953<p><a class="reference internal" href="../glossary/m.html#term-manual-memory-management"><em class="xref std std-term">Manual</em></a> pools typically support
947<a class="reference internal" href="../glossary/m.html#term-malloc"><em class="xref std std-term">malloc</em></a>-like allocation using the function 954<a class="reference internal" href="../glossary/m.html#term-malloc"><em class="xref std std-term">malloc</em></a>-like allocation using the function
948<a class="reference internal" href="../topic/allocation.html#mps_alloc" title="mps_alloc"><tt class="xref c c-func docutils literal"><span class="pre">mps_alloc()</span></tt></a>. But <a class="reference internal" href="../glossary/a.html#term-automatic-memory-management"><em class="xref std std-term">automatic</em></a> pools cannot, because of the following problem:</p> 955<a class="reference internal" href="../topic/allocation.html#mps_alloc" title="mps_alloc"><tt class="xref c c-func docutils literal"><span class="pre">mps_alloc()</span></tt></a>. But <a class="reference internal" href="../glossary/a.html#term-automatic-memory-management"><em class="xref std std-term">automatic</em></a> pools cannot, because of the following problem:</p>
949<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">make_pair</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">car</span><span class="p">,</span> <span class="kt">obj_t</span> <span class="n">cdr</span><span class="p">)</span> 956<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="nf">make_pair</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">car</span><span class="p">,</span> <span class="n">obj_t</span> <span class="n">cdr</span><span class="p">)</span>
950<span class="p">{</span> 957<span class="p">{</span>
951 <span class="kt">obj_t</span> <span class="n">obj</span><span class="p">;</span> 958 <span class="n">obj_t</span> <span class="n">obj</span><span class="p">;</span>
952 <span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span> 959 <span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span>
953 <span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 960 <span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
954 <span class="n">res</span> <span class="o">=</span> <span class="n">mps_alloc</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">pair_s</span><span class="p">));</span> 961 <span class="n">res</span> <span class="o">=</span> <span class="n">mps_alloc</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">pair_s</span><span class="p">));</span>
955 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_pair&quot;</span><span class="p">);</span> 962 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_pair&quot;</span><span class="p">);</span>
956 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 963 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
@@ -972,23 +979,23 @@ may abort.</p>
972<p>The MPS solves this problem via the fast, nearly lock-free 979<p>The MPS solves this problem via the fast, nearly lock-free
973<a class="reference internal" href="../topic/allocation.html#topic-allocation-point-protocol"><em>Allocation point protocol</em></a>. This needs an additional 980<a class="reference internal" href="../topic/allocation.html#topic-allocation-point-protocol"><em>Allocation point protocol</em></a>. This needs an additional
974structure, an <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a>, to be attached to the pool by 981structure, an <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a>, to be attached to the pool by
975calling <a class="reference internal" href="../topic/allocation.html#mps_ap_create" title="mps_ap_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create()</span></tt></a>:</p> 982calling <a class="reference internal" href="../topic/allocation.html#mps_ap_create_k" title="mps_ap_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create_k()</span></tt></a>:</p>
976<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_ap_t</span> <span class="n">obj_ap</span><span class="p">;</span> 983<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_ap_t</span> <span class="n">obj_ap</span><span class="p">;</span>
977 984
978<span class="cm">/* ... */</span> 985<span class="cm">/* ... */</span>
979 986
980<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_ap</span><span class="p">,</span> <span class="n">obj_pool</span><span class="p">,</span> <span class="n">mps_rank_exact</span><span class="p">());</span> 987<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_ap</span><span class="p">,</span> <span class="n">obj_pool</span><span class="p">,</span> <span class="n">mps_args_none</span><span class="p">);</span>
981<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj allocation point&quot;</span><span class="p">);</span> 988<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj allocation point&quot;</span><span class="p">);</span>
982</pre></div> 989</pre></div>
983</div> 990</div>
984<p>And then the constructor can be implemented like this:</p> 991<p>And then the constructor can be implemented like this:</p>
985<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">make_pair</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">car</span><span class="p">,</span> <span class="kt">obj_t</span> <span class="n">cdr</span><span class="p">)</span> 992<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="nf">make_pair</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">car</span><span class="p">,</span> <span class="n">obj_t</span> <span class="n">cdr</span><span class="p">)</span>
986<span class="p">{</span> 993<span class="p">{</span>
987 <span class="kt">obj_t</span> <span class="n">obj</span><span class="p">;</span> 994 <span class="n">obj_t</span> <span class="n">obj</span><span class="p">;</span>
988 <span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span> 995 <span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span>
989 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pair_s</span><span class="p">));</span> 996 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">pair_s</span><span class="p">));</span>
990 <span class="k">do</span> <span class="p">{</span> 997 <span class="k">do</span> <span class="p">{</span>
991 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">obj_ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span> 998 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">obj_ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
992 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_pair&quot;</span><span class="p">);</span> 999 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_pair&quot;</span><span class="p">);</span>
993 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 1000 <span class="n">obj</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
994 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">pair</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_PAIR</span><span class="p">;</span> 1001 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">pair</span><span class="p">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_PAIR</span><span class="p">;</span>
diff --git a/mps/manual/html/index.html b/mps/manual/html/index.html
index cff70dc3459..81bf16f42e7 100644
--- a/mps/manual/html/index.html
+++ b/mps/manual/html/index.html
@@ -63,24 +63,25 @@
63</li> 63</li>
64<li class="toctree-l1"><a class="reference internal" href="topic/index.html">Reference</a><ul> 64<li class="toctree-l1"><a class="reference internal" href="topic/index.html">Reference</a><ul>
65<li class="toctree-l2"><a class="reference internal" href="topic/interface.html">1. Interface conventions</a></li> 65<li class="toctree-l2"><a class="reference internal" href="topic/interface.html">1. Interface conventions</a></li>
66<li class="toctree-l2"><a class="reference internal" href="topic/error.html">2. Error handing</a></li> 66<li class="toctree-l2"><a class="reference internal" href="topic/keyword.html">2. Keyword arguments</a></li>
67<li class="toctree-l2"><a class="reference internal" href="topic/arena.html">3. Arenas</a></li> 67<li class="toctree-l2"><a class="reference internal" href="topic/error.html">3. Error handing</a></li>
68<li class="toctree-l2"><a class="reference internal" href="topic/pool.html">4. Pools</a></li> 68<li class="toctree-l2"><a class="reference internal" href="topic/arena.html">4. Arenas</a></li>
69<li class="toctree-l2"><a class="reference internal" href="topic/allocation.html">5. Allocation</a></li> 69<li class="toctree-l2"><a class="reference internal" href="topic/pool.html">5. Pools</a></li>
70<li class="toctree-l2"><a class="reference internal" href="topic/format.html">6. Object formats</a></li> 70<li class="toctree-l2"><a class="reference internal" href="topic/allocation.html">6. Allocation</a></li>
71<li class="toctree-l2"><a class="reference internal" href="topic/scanning.html">7. Scanning</a></li> 71<li class="toctree-l2"><a class="reference internal" href="topic/format.html">7. Object formats</a></li>
72<li class="toctree-l2"><a class="reference internal" href="topic/thread.html">8. Threads</a></li> 72<li class="toctree-l2"><a class="reference internal" href="topic/scanning.html">8. Scanning</a></li>
73<li class="toctree-l2"><a class="reference internal" href="topic/root.html">9. Roots</a></li> 73<li class="toctree-l2"><a class="reference internal" href="topic/thread.html">9. Threads</a></li>
74<li class="toctree-l2"><a class="reference internal" href="topic/collection.html">10. Garbage collection</a></li> 74<li class="toctree-l2"><a class="reference internal" href="topic/root.html">10. Roots</a></li>
75<li class="toctree-l2"><a class="reference internal" href="topic/message.html">11. Messages</a></li> 75<li class="toctree-l2"><a class="reference internal" href="topic/collection.html">11. Garbage collection</a></li>
76<li class="toctree-l2"><a class="reference internal" href="topic/finalization.html">12. Finalization</a></li> 76<li class="toctree-l2"><a class="reference internal" href="topic/message.html">12. Messages</a></li>
77<li class="toctree-l2"><a class="reference internal" href="topic/location.html">13. Location dependency</a></li> 77<li class="toctree-l2"><a class="reference internal" href="topic/finalization.html">13. Finalization</a></li>
78<li class="toctree-l2"><a class="reference internal" href="topic/cache.html">14. Segregated allocation caches</a></li> 78<li class="toctree-l2"><a class="reference internal" href="topic/location.html">14. Location dependency</a></li>
79<li class="toctree-l2"><a class="reference internal" href="topic/pattern.html">15. Allocation patterns</a></li> 79<li class="toctree-l2"><a class="reference internal" href="topic/cache.html">15. Segregated allocation caches</a></li>
80<li class="toctree-l2"><a class="reference internal" href="topic/frame.html">16. Allocation frames</a></li> 80<li class="toctree-l2"><a class="reference internal" href="topic/pattern.html">16. Allocation patterns</a></li>
81<li class="toctree-l2"><a class="reference internal" href="topic/debugging.html">17. Debugging pools</a></li> 81<li class="toctree-l2"><a class="reference internal" href="topic/frame.html">17. Allocation frames</a></li>
82<li class="toctree-l2"><a class="reference internal" href="topic/telemetry.html">18. Telemetry</a></li> 82<li class="toctree-l2"><a class="reference internal" href="topic/debugging.html">18. Debugging pools</a></li>
83<li class="toctree-l2"><a class="reference internal" href="topic/weak.html">19. Weak references</a></li> 83<li class="toctree-l2"><a class="reference internal" href="topic/telemetry.html">19. Telemetry</a></li>
84<li class="toctree-l2"><a class="reference internal" href="topic/weak.html">20. Weak references</a></li>
84</ul> 85</ul>
85</li> 86</li>
86<li class="toctree-l1"><a class="reference internal" href="pool/index.html">Pool reference</a><ul> 87<li class="toctree-l1"><a class="reference internal" href="pool/index.html">Pool reference</a><ul>
diff --git a/mps/manual/html/mmref/bib.html b/mps/manual/html/mmref/bib.html
index a521d287424..dfef33450bf 100644
--- a/mps/manual/html/mmref/bib.html
+++ b/mps/manual/html/mmref/bib.html
@@ -131,6 +131,10 @@
131</li> 131</li>
132<li><p id="brooksby02">Richard Brooksby. 2002. &#8220;<a class="reference external" href="http://www.ravenbrook.com/project/mps/doc/2002-01-30/ismm2002-paper/">The Memory Pool System: Thirty person-years of memory management development goes Open Source</a>&#8221;. ISMM&#8216;02.</p> 132<li><p id="brooksby02">Richard Brooksby. 2002. &#8220;<a class="reference external" href="http://www.ravenbrook.com/project/mps/doc/2002-01-30/ismm2002-paper/">The Memory Pool System: Thirty person-years of memory management development goes Open Source</a>&#8221;. ISMM&#8216;02.</p>
133</li> 133</li>
134<li><p id="c1990">International Standard ISO/IEC 9899:1990. &#8220;Programming languages — C&#8221;.</p>
135</li>
136<li><p id="c1999">International Standard ISO/IEC 9899:1999. &#8220;<a class="reference external" href="http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf">Programming languages — C</a>&#8221;.</p>
137</li>
134<li><p id="cgz94">Brad Calder, Dirk Grunwald, Benjamin Zorn. 1994. &#8220;<a class="reference external" href="http://cseclassic.ucsd.edu/users/calder/papers/JplVersion.pdf">Quantifying Behavioral Differences Between C and C++ Programs</a>&#8221;. <em>Journal of Programming Languages.</em> 2(4):313&#8211;351.</p> 138<li><p id="cgz94">Brad Calder, Dirk Grunwald, Benjamin Zorn. 1994. &#8220;<a class="reference external" href="http://cseclassic.ucsd.edu/users/calder/papers/JplVersion.pdf">Quantifying Behavioral Differences Between C and C++ Programs</a>&#8221;. <em>Journal of Programming Languages.</em> 2(4):313&#8211;351.</p>
135</li> 139</li>
136<li><p id="cpc00">Dante J. Cannarozzi, Michael P. Plezbert, Ron K. Cytron. 2000. &#8220;<a class="reference external" href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.58.9649&amp;rep=rep1&amp;type=pdf">Contaminated garbage collection</a>&#8221;. ACM. Proceedings of the ACM SIGPLAN &#8216;00 conference on on Programming language design and implementation, pp. 264&#8211;273.</p> 140<li><p id="cpc00">Dante J. Cannarozzi, Michael P. Plezbert, Ron K. Cytron. 2000. &#8220;<a class="reference external" href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.58.9649&amp;rep=rep1&amp;type=pdf">Contaminated garbage collection</a>&#8221;. ACM. Proceedings of the ACM SIGPLAN &#8216;00 conference on on Programming language design and implementation, pp. 264&#8211;273.</p>
diff --git a/mps/manual/html/mmref/lang.html b/mps/manual/html/mmref/lang.html
index ecfa367138b..65e3347368c 100644
--- a/mps/manual/html/mmref/lang.html
+++ b/mps/manual/html/mmref/lang.html
@@ -125,7 +125,7 @@ longer required (see <a class="reference internal" href="../glossary/m.html#term
125</div> 125</div>
126<div class="admonition-related-publication admonition"> 126<div class="admonition-related-publication admonition">
127<p class="first admonition-title">Related publications</p> 127<p class="first admonition-title">Related publications</p>
128<p class="last"><a class="reference internal" href="bib.html#bw88"><em>Boehm &amp; Weiser (1988)</em></a>, <a class="reference internal" href="bib.html#daconta93"><em>Daconta (1993)</em></a>, <a class="reference internal" href="bib.html#zorn93"><em>Zorn (1993)</em></a>.</p> 128<p class="last"><a class="reference internal" href="bib.html#c1990"><em>ISO/IEC 9899:1990</em></a>, <a class="reference internal" href="bib.html#c1999"><em>ISO/IEC 9899:1999</em></a>, <a class="reference internal" href="bib.html#bw88"><em>Boehm &amp; Weiser (1988)</em></a>, <a class="reference internal" href="bib.html#daconta93"><em>Daconta (1993)</em></a>, <a class="reference internal" href="bib.html#zorn93"><em>Zorn (1993)</em></a>.</p>
129</div> 129</div>
130<div class="admonition-related-link last admonition"> 130<div class="admonition-related-link last admonition">
131<p class="first admonition-title">Related links</p> 131<p class="first admonition-title">Related links</p>
diff --git a/mps/manual/html/objects.inv b/mps/manual/html/objects.inv
index b079c65a7e0..bef4c934dd4 100644
--- a/mps/manual/html/objects.inv
+++ b/mps/manual/html/objects.inv
Binary files differ
diff --git a/mps/manual/html/pool/amc.html b/mps/manual/html/pool/amc.html
index d5b53a5c9f2..1d129db5da8 100644
--- a/mps/manual/html/pool/amc.html
+++ b/mps/manual/html/pool/amc.html
@@ -115,19 +115,38 @@ belong to an object format of variant auto-header).</li>
115<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_amc</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_amc" title="Permalink to this definition">¶</a></dt> 115<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_amc</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_amc" title="Permalink to this definition">¶</a></dt>
116<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an AMC (Automatic 116<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an AMC (Automatic
117Mostly-Copying) <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 117Mostly-Copying) <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
118<p>When creating an AMC pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes two 118<p>When creating an AMC pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> requires
119extra arguments:</p> 119two <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>:</p>
120<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 120<ul class="simple">
121 <span class="kt">mps_class_t</span> <span class="n">mps_class_amc</span><span class="p">(),</span> 121<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_FORMAT</span></tt> (member <tt class="docutils literal"><span class="pre">.val.format</span></tt>; type
122 <span class="kt">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span> 122<a class="reference internal" href="../topic/format.html#mps_fmt_t" title="mps_fmt_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the
123 <span class="kt">mps_chain_t</span> <span class="n">chain</span><span class="p">)</span> 123objects allocated in the pool. The format must provide a
124<a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan method</em></a>, a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a>, a <a class="reference internal" href="../glossary/f.html#term-forward-method"><em class="xref std std-term">forward
125method</em></a>, an <a class="reference internal" href="../glossary/i.html#term-is-forwarded-method"><em class="xref std std-term">is-forwarded method</em></a> and a <a class="reference internal" href="../glossary/p.html#term-padding-method"><em class="xref std std-term">padding
126method</em></a>.</li>
127<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_CHAIN</span></tt> (member <tt class="docutils literal"><span class="pre">.val.chain</span></tt>; type
128<a class="reference internal" href="../topic/collection.html#mps_chain_t" title="mps_chain_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_chain_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/g.html#term-generation-chain"><em class="xref std std-term">generation chain</em></a>
129for the pool.</li>
130</ul>
131<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
132<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_amc</span><span class="p">(),</span>
133 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_CHAIN</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">chain</span> <span class="o">=</span> <span class="n">chain</span><span class="p">},</span>
134 <span class="p">{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">fmt</span><span class="p">},</span>
135 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
124</pre></div> 136</pre></div>
125</div> 137</div>
126<p><tt class="docutils literal"><span class="pre">fmt</span></tt> specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the objects 138<div class="admonition-deprecated admonition">
127allocated in the pool. The format must provide a <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan 139<p class="first admonition-title">Deprecated</p>
128method</em></a>, a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a>, a <a class="reference internal" href="../glossary/f.html#term-forward-method"><em class="xref std std-term">forward method</em></a>, an 140<p>starting with version 1.112.</p>
129<a class="reference internal" href="../glossary/i.html#term-is-forwarded-method"><em class="xref std std-term">is-forwarded method</em></a> and a <a class="reference internal" href="../glossary/p.html#term-padding-method"><em class="xref std std-term">padding method</em></a>.</p> 141<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the format and
130<p><tt class="docutils literal"><span class="pre">chain</span></tt> specifies the <a class="reference internal" href="../glossary/g.html#term-generation-chain"><em class="xref std std-term">generation chain</em></a> for the pool.</p> 142chain like this:</p>
143<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
144 <span class="n">mps_class_t</span> <span class="n">mps_class_amc</span><span class="p">(),</span>
145 <span class="n">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span>
146 <span class="n">mps_chain_t</span> <span class="n">chain</span><span class="p">)</span>
147</pre></div>
148</div>
149</div>
131</dd></dl> 150</dd></dl>
132 151
133</div> 152</div>
diff --git a/mps/manual/html/pool/amcz.html b/mps/manual/html/pool/amcz.html
index 9780b1c4bba..11e9b50bcd7 100644
--- a/mps/manual/html/pool/amcz.html
+++ b/mps/manual/html/pool/amcz.html
@@ -87,19 +87,37 @@ method</em></a>.</li>
87<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_amcz</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_amcz" title="Permalink to this definition">¶</a></dt> 87<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_amcz</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_amcz" title="Permalink to this definition">¶</a></dt>
88<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an AMCZ (Automatic 88<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an AMCZ (Automatic
89Mostly-Copying Zero-rank) <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 89Mostly-Copying Zero-rank) <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
90<p>When creating an AMCZ pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes two 90<p>When creating an AMCZ pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> requires
91extra arguments:</p> 91two <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>:</p>
92<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 92<ul class="simple">
93 <span class="kt">mps_class_t</span> <span class="n">mps_class_amcz</span><span class="p">(),</span> 93<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_FORMAT</span></tt> (member <tt class="docutils literal"><span class="pre">.val.format</span></tt>; type
94 <span class="kt">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span> 94<a class="reference internal" href="../topic/format.html#mps_fmt_t" title="mps_fmt_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the
95 <span class="kt">mps_chain_t</span> <span class="n">chain</span><span class="p">)</span> 95objects allocated in the pool. The format must provide a
96<a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a>, a <a class="reference internal" href="../glossary/f.html#term-forward-method"><em class="xref std std-term">forward method</em></a>, an
97<a class="reference internal" href="../glossary/i.html#term-is-forwarded-method"><em class="xref std std-term">is-forwarded method</em></a> and a <a class="reference internal" href="../glossary/p.html#term-padding-method"><em class="xref std std-term">padding method</em></a>.</li>
98<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_CHAIN</span></tt> (member <tt class="docutils literal"><span class="pre">.val.chain</span></tt>; type
99<a class="reference internal" href="../topic/collection.html#mps_chain_t" title="mps_chain_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_chain_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/g.html#term-generation-chain"><em class="xref std std-term">generation chain</em></a>
100for the pool.</li>
101</ul>
102<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
103<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_amcz</span><span class="p">(),</span>
104 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_CHAIN</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">chain</span> <span class="o">=</span> <span class="n">chain</span><span class="p">},</span>
105 <span class="p">{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">fmt</span><span class="p">},</span>
106 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
96</pre></div> 107</pre></div>
97</div> 108</div>
98<p><tt class="docutils literal"><span class="pre">fmt</span></tt> specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the objects 109<div class="admonition-deprecated admonition">
99allocated in the pool. The format must provide a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip 110<p class="first admonition-title">Deprecated</p>
100method</em></a>, a <a class="reference internal" href="../glossary/f.html#term-forward-method"><em class="xref std std-term">forward method</em></a>, an <a class="reference internal" href="../glossary/i.html#term-is-forwarded-method"><em class="xref std std-term">is-forwarded method</em></a> 111<p>starting with version 1.112.</p>
101and a <a class="reference internal" href="../glossary/p.html#term-padding-method"><em class="xref std std-term">padding method</em></a>.</p> 112<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the format and
102<p><tt class="docutils literal"><span class="pre">chain</span></tt> specifies the <a class="reference internal" href="../glossary/g.html#term-generation-chain"><em class="xref std std-term">generation chain</em></a> for the pool.</p> 113chain like this:</p>
114<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
115 <span class="n">mps_class_t</span> <span class="n">mps_class_amcz</span><span class="p">(),</span>
116 <span class="n">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span>
117 <span class="n">mps_chain_t</span> <span class="n">chain</span><span class="p">)</span>
118</pre></div>
119</div>
120</div>
103</dd></dl> 121</dd></dl>
104 122
105</div> 123</div>
diff --git a/mps/manual/html/pool/ams.html b/mps/manual/html/pool/ams.html
index 7ef790a26d5..36849bfa38a 100644
--- a/mps/manual/html/pool/ams.html
+++ b/mps/manual/html/pool/ams.html
@@ -118,19 +118,36 @@ of this is that the pool&#8217;s <a class="reference internal" href="../glossary
118<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_ams</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_ams" title="Permalink to this definition">¶</a></dt> 118<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_ams</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_ams" title="Permalink to this definition">¶</a></dt>
119<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an AMS (Automatic Mark &amp; Sweep) 119<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an AMS (Automatic Mark &amp; Sweep)
120<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 120<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
121<p>When creating an AMS pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes two 121<p>When creating an AMS pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> requires
122extra arguments:</p> 122two <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>:</p>
123<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 123<ul class="simple">
124 <span class="kt">mps_class_t</span> <span class="n">mps_class_ams</span><span class="p">(),</span> 124<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_FORMAT</span></tt> (member <tt class="docutils literal"><span class="pre">.val.format</span></tt>; type
125 <span class="kt">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span> 125<a class="reference internal" href="../topic/format.html#mps_fmt_t" title="mps_fmt_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the
126 <span class="kt">mps_chain_t</span> <span class="n">chain</span><span class="p">)</span> 126objects allocated in the pool. The format must provide a
127<a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan method</em></a> and a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a>.</li>
128<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_CHAIN</span></tt> (member <tt class="docutils literal"><span class="pre">.val.chain</span></tt>; type
129<a class="reference internal" href="../topic/collection.html#mps_chain_t" title="mps_chain_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_chain_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/g.html#term-generation-chain"><em class="xref std std-term">generation chain</em></a>
130for the pool. It must have a single generation.</li>
131</ul>
132<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
133<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_ams</span><span class="p">(),</span>
134 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_CHAIN</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">chain</span> <span class="o">=</span> <span class="n">chain</span><span class="p">},</span>
135 <span class="p">{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">fmt</span><span class="p">},</span>
136 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
137</pre></div>
138</div>
139<div class="admonition-deprecated admonition">
140<p class="first admonition-title">Deprecated</p>
141<p>starting with version 1.112.</p>
142<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the format and
143chain like this:</p>
144<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
145 <span class="n">mps_class_t</span> <span class="n">mps_class_ams</span><span class="p">(),</span>
146 <span class="n">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span>
147 <span class="n">mps_chain_t</span> <span class="n">chain</span><span class="p">)</span>
127</pre></div> 148</pre></div>
128</div> 149</div>
129<p><tt class="docutils literal"><span class="pre">fmt</span></tt> specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the objects 150</div>
130allocated in the pool. The format must provide a <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan
131method</em></a> and a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a>.</p>
132<p><tt class="docutils literal"><span class="pre">chain</span></tt> specifies the <a class="reference internal" href="../glossary/g.html#term-generation-chain"><em class="xref std std-term">generation chain</em></a> for the pool. It
133must have a single generation.</p>
134</dd></dl> 151</dd></dl>
135 152
136<dl class="function"> 153<dl class="function">
@@ -138,18 +155,24 @@ must have a single generation.</p>
138<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_ams_debug</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_ams_debug" title="Permalink to this definition">¶</a></dt> 155<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_ams_debug</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_ams_debug" title="Permalink to this definition">¶</a></dt>
139<dd><p>A <a class="reference internal" href="../topic/debugging.html#topic-debugging"><em>debugging</em></a> version of the AMS pool 156<dd><p>A <a class="reference internal" href="../topic/debugging.html#topic-debugging"><em>debugging</em></a> version of the AMS pool
140class.</p> 157class.</p>
141<p>When creating a debugging AMS pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> 158<p>When creating a debugging AMS pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt>
142takes three extra arguments:</p> 159requires three keyword arguments: <tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_FORMAT</span></tt> and
143<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 160<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_CHAIN</span></tt> are as described above, and
144 <span class="kt">mps_class_t</span> <span class="n">mps_class_ams_debug</span><span class="p">(),</span> 161<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_POOL_DEBUG_OPTIONS</span></tt> specifies the debugging
162options. See <tt class="xref c c-type docutils literal"><span class="pre">mps_debug_option_s</span></tt>.</p>
163<div class="admonition-deprecated admonition">
164<p class="first admonition-title">Deprecated</p>
165<p>starting with version 1.112.</p>
166<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the format,
167chain, and debugging options like this:</p>
168<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
169 <span class="n">mps_class_t</span> <span class="n">mps_class_ams_debug</span><span class="p">(),</span>
145 <span class="n">mps_debug_option_s</span> <span class="n">debug_option</span><span class="p">,</span> 170 <span class="n">mps_debug_option_s</span> <span class="n">debug_option</span><span class="p">,</span>
146 <span class="kt">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span> 171 <span class="n">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span>
147 <span class="kt">mps_chain_t</span> <span class="n">chain</span><span class="p">)</span> 172 <span class="n">mps_chain_t</span> <span class="n">chain</span><span class="p">)</span>
148</pre></div> 173</pre></div>
149</div> 174</div>
150<p><tt class="docutils literal"><span class="pre">debug_option</span></tt> specifies the debugging options. See 175</div>
151<tt class="xref c c-type docutils literal"><span class="pre">mps_debug_option_s</span></tt>.</p>
152<p><tt class="docutils literal"><span class="pre">fmt</span></tt> and <tt class="docutils literal"><span class="pre">chain</span></tt> are the same as for <a class="reference internal" href="#mps_class_ams" title="mps_class_ams"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_ams()</span></tt></a>.</p>
153</dd></dl> 176</dd></dl>
154 177
155</div> 178</div>
diff --git a/mps/manual/html/pool/awl.html b/mps/manual/html/pool/awl.html
index 2df8f0d2e77..e926ccc52ab 100644
--- a/mps/manual/html/pool/awl.html
+++ b/mps/manual/html/pool/awl.html
@@ -93,8 +93,8 @@ takes one additional parameter, a <a class="reference internal" href="../glossar
93<a class="reference internal" href="../topic/root.html#mps_rank_exact" title="mps_rank_exact"><tt class="xref c c-func docutils literal"><span class="pre">mps_rank_exact()</span></tt></a> (to allocate ordinary objects containing 93<a class="reference internal" href="../topic/root.html#mps_rank_exact" title="mps_rank_exact"><tt class="xref c c-func docutils literal"><span class="pre">mps_rank_exact()</span></tt></a> (to allocate ordinary objects containing
94<a class="reference internal" href="../glossary/e.html#term-exact-reference"><em class="xref std std-term">exact references</em></a>), or <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> (to allocate 94<a class="reference internal" href="../glossary/e.html#term-exact-reference"><em class="xref std std-term">exact references</em></a>), or <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> (to allocate
95objects that contain weak references). For example:</p> 95objects that contain weak references). For example:</p>
96<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_ap_t</span> <span class="n">ap</span><span class="p">;</span> 96<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_ap_t</span> <span class="n">ap</span><span class="p">;</span>
97<span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 97<span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
98<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ap</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="n">mps_rank_weak</span><span class="p">());</span> 98<span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ap</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="n">mps_rank_weak</span><span class="p">());</span>
99<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;can&#39;t create allocation point&quot;</span><span class="p">);</span> 99<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;can&#39;t create allocation point&quot;</span><span class="p">);</span>
100</pre></div> 100</pre></div>
@@ -169,31 +169,31 @@ values object, and vice versa (if necessary). The scan method looks
169out for the splatting of a reference, and when this is detected, it 169out for the splatting of a reference, and when this is detected, it
170splats the corresponding reference in the dependent object.</p> 170splats the corresponding reference in the dependent object.</p>
171<p>For example:</p> 171<p>For example:</p>
172<div class="highlight-c"><div class="highlight"><pre><span class="kt">obj_t</span> <span class="n">obj_deleted</span><span class="p">;</span> <span class="cm">/* deleted entry in hash table */</span> 172<div class="highlight-c"><div class="highlight"><pre><span class="n">obj_t</span> <span class="n">obj_deleted</span><span class="p">;</span> <span class="cm">/* deleted entry in hash table */</span>
173 173
174<span class="k">typedef</span> <span class="k">struct</span> <span class="n">weak_array_s</span> <span class="p">{</span> 174<span class="k">typedef</span> <span class="k">struct</span> <span class="n">weak_array_s</span> <span class="p">{</span>
175 <span class="k">struct</span> <span class="n">weak_array_s</span> <span class="o">*</span><span class="n">dependent</span><span class="p">;</span> 175 <span class="k">struct</span> <span class="n">weak_array_s</span> <span class="o">*</span><span class="n">dependent</span><span class="p">;</span>
176 <span class="kt">size_t</span> <span class="n">length</span><span class="p">;</span> <span class="cm">/* tagged as &quot;length * 2 + 1&quot; */</span> 176 <span class="kt">size_t</span> <span class="n">length</span><span class="p">;</span> <span class="cm">/* tagged as &quot;length * 2 + 1&quot; */</span>
177 <span class="kt">obj_t</span> <span class="n">slot</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span> 177 <span class="n">obj_t</span> <span class="n">slot</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
178<span class="p">}</span> <span class="n">weak_array_s</span><span class="p">,</span> <span class="o">*</span><span class="kt">weak_array_t</span><span class="p">;</span> 178<span class="p">}</span> <span class="n">weak_array_s</span><span class="p">,</span> <span class="o">*</span><span class="n">weak_array_t</span><span class="p">;</span>
179 179
180<span class="k">typedef</span> <span class="n">weak_table_s</span> <span class="p">{</span> 180<span class="k">typedef</span> <span class="n">weak_table_s</span> <span class="p">{</span>
181 <span class="n">type_s</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_WEAK_TABLE */</span> 181 <span class="n">type_s</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_WEAK_TABLE */</span>
182 <span class="kt">weak_array_t</span> <span class="n">keys</span><span class="p">,</span> <span class="n">values</span><span class="p">;</span> 182 <span class="n">weak_array_t</span> <span class="n">keys</span><span class="p">,</span> <span class="n">values</span><span class="p">;</span>
183<span class="p">}</span> <span class="n">weak_table_s</span><span class="p">,</span> <span class="o">*</span><span class="kt">weak_table_t</span><span class="p">;</span> 183<span class="p">}</span> <span class="n">weak_table_s</span><span class="p">,</span> <span class="o">*</span><span class="n">weak_table_t</span><span class="p">;</span>
184 184
185<span class="kt">mps_addr_t</span> <span class="nf">weak_array_find_dependent</span><span class="p">(</span><span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">)</span> 185<span class="n">mps_addr_t</span> <span class="nf">weak_array_find_dependent</span><span class="p">(</span><span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">)</span>
186<span class="p">{</span> 186<span class="p">{</span>
187 <span class="kt">weak_array_t</span> <span class="n">a</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 187 <span class="n">weak_array_t</span> <span class="n">a</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
188 <span class="k">return</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">;</span> 188 <span class="k">return</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">;</span>
189<span class="p">}</span> 189<span class="p">}</span>
190 190
191<span class="kt">mps_res_t</span> <span class="nf">weak_array_scan</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span> 191<span class="n">mps_res_t</span> <span class="nf">weak_array_scan</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span>
192<span class="p">{</span> 192<span class="p">{</span>
193 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span> 193 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span>
194 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span> 194 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
195 <span class="kt">mps_addr_t</span> <span class="n">p</span><span class="p">;</span> 195 <span class="n">mps_addr_t</span> <span class="n">p</span><span class="p">;</span>
196 <span class="kt">weak_array_t</span> <span class="n">a</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> 196 <span class="n">weak_array_t</span> <span class="n">a</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span>
197 <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">length</span> <span class="o">=</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">length</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">;</span> <span class="cm">/* untag */</span> 197 <span class="kt">size_t</span> <span class="n">i</span><span class="p">,</span> <span class="n">length</span> <span class="o">=</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">length</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">;</span> <span class="cm">/* untag */</span>
198 <span class="n">p</span> <span class="o">=</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">;</span> 198 <span class="n">p</span> <span class="o">=</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">;</span>
199 <span class="n">MPS_FIX12</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span> 199 <span class="n">MPS_FIX12</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span>
@@ -201,7 +201,7 @@ splats the corresponding reference in the dependent object.</p>
201 <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">length</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> 201 <span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">length</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
202 <span class="n">p</span> <span class="o">=</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">slot</span><span class="p">[</span><span class="n">i</span><span class="p">];</span> 202 <span class="n">p</span> <span class="o">=</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">slot</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
203 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">p</span><span class="p">))</span> <span class="p">{</span> 203 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">p</span><span class="p">))</span> <span class="p">{</span>
204 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span> 204 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span>
205 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span> 205 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span>
206 <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">)</span> <span class="p">{</span> 206 <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span> <span class="n">a</span><span class="o">-&gt;</span><span class="n">dependent</span><span class="p">)</span> <span class="p">{</span>
207 <span class="cm">/* key/value was splatted: splat value/key too */</span> 207 <span class="cm">/* key/value was splatted: splat value/key too */</span>
@@ -311,32 +311,63 @@ example</em></a> above.</p>
311<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_awl</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_awl" title="Permalink to this definition">¶</a></dt> 311<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_awl</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_awl" title="Permalink to this definition">¶</a></dt>
312<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an AWL (Automatic Weak Linked) 312<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an AWL (Automatic Weak Linked)
313<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 313<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
314<p>When creating an AWL pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes two 314<p>When creating an AWL pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> requires
315extra arguments:</p> 315two <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>:</p>
316<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 316<ul class="simple">
317 <span class="kt">mps_class_t</span> <span class="n">mps_class_awl</span><span class="p">(),</span> 317<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_FORMAT</span></tt> (member <tt class="docutils literal"><span class="pre">.val.format</span></tt>; type
318 <span class="kt">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span> 318<a class="reference internal" href="../topic/format.html#mps_fmt_t" title="mps_fmt_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the
319 <span class="kt">mps_awl_find_dependent_t</span> <span class="n">find_dependent</span><span class="p">)</span> 319objects allocated in the pool. The format must provide a <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan
320method</em></a> and a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a>.</li>
321<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_AWL_FIND_DEPENDENT</span></tt> (member
322<tt class="docutils literal"><span class="pre">.val.addr_method</span></tt>; type <a class="reference internal" href="#mps_awl_find_dependent_t" title="mps_awl_find_dependent_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_awl_find_dependent_t</span></tt></a>)
323is a function that specifies how to find the <a class="reference internal" href="../glossary/d.html#term-dependent-object"><em class="xref std std-term">dependent
324object</em></a> for an object in the pool.</li>
325</ul>
326<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
327<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_awl</span><span class="p">(),</span>
328 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">fmt</span><span class="p">},</span>
329 <span class="p">{</span><span class="n">MPS_KEY_AWL_FIND_DEPENDENT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">addr_method</span> <span class="o">=</span> <span class="n">find_dependent</span><span class="p">},</span>
330 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
320</pre></div> 331</pre></div>
321</div> 332</div>
322<p><tt class="docutils literal"><span class="pre">fmt</span></tt> specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the objects 333<div class="admonition-deprecated admonition">
323allocated in the pool. The format must provide a <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan 334<p class="first admonition-title">Deprecated</p>
324method</em></a> and a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a>.</p> 335<p>starting with version 1.112.</p>
325<p><tt class="docutils literal"><span class="pre">find_dependent</span></tt> is a function of type 336<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the format and
326<a class="reference internal" href="#mps_awl_find_dependent_t" title="mps_awl_find_dependent_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_awl_find_dependent_t</span></tt></a> that specifies how to find the 337find-dependent function like this:</p>
327<a class="reference internal" href="../glossary/d.html#term-dependent-object"><em class="xref std std-term">dependent object</em></a> for an object in the pool.</p> 338<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
328<p>When creating an allocation point on an AWL pool, 339 <span class="n">mps_class_t</span> <span class="n">mps_class_awl</span><span class="p">(),</span>
329<a class="reference internal" href="../topic/allocation.html#mps_ap_create" title="mps_ap_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create()</span></tt></a> takes one extra argument:</p> 340 <span class="n">mps_fmt_t</span> <span class="n">fmt</span><span class="p">,</span>
330<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="kt">mps_ap_t</span> <span class="o">*</span><span class="n">ap_o</span><span class="p">,</span> <span class="kt">mps_pool_t</span> <span class="n">pool</span><span class="p">,</span> 341 <span class="n">mps_awl_find_dependent_t</span> <span class="n">find_dependent</span><span class="p">)</span>
331 <span class="kt">mps_rank_t</span> <span class="n">rank</span><span class="p">)</span>
332</pre></div> 342</pre></div>
333</div> 343</div>
334<p><tt class="docutils literal"><span class="pre">rank</span></tt> specifies the <a class="reference internal" href="../glossary/r.html#term-rank"><em class="xref std std-term">rank</em></a> of references in objects 344</div>
335allocated on this allocation point. It must be 345<p>When creating an <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a> on an AWL pool,
346<a class="reference internal" href="../topic/allocation.html#mps_ap_create_k" title="mps_ap_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create_k()</span></tt></a> requires one keyword argument:</p>
347<ul class="simple">
348<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_RANK</span></tt> (member <tt class="docutils literal"><span class="pre">.val.rank</span></tt>; type
349<a class="reference internal" href="../topic/root.html#mps_rank_t" title="mps_rank_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_rank_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/r.html#term-rank"><em class="xref std std-term">rank</em></a> of references
350in objects allocated on this allocation point. It must be
336<a class="reference internal" href="../topic/root.html#mps_rank_exact" title="mps_rank_exact"><tt class="xref c c-func docutils literal"><span class="pre">mps_rank_exact()</span></tt></a> (if the objects allocated on this 351<a class="reference internal" href="../topic/root.html#mps_rank_exact" title="mps_rank_exact"><tt class="xref c c-func docutils literal"><span class="pre">mps_rank_exact()</span></tt></a> (if the objects allocated on this
337allocation point will contain <a class="reference internal" href="../glossary/e.html#term-exact-reference"><em class="xref std std-term">exact references</em></a>), or 352allocation point will contain <a class="reference internal" href="../glossary/e.html#term-exact-reference"><em class="xref std std-term">exact references</em></a>), or
338<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> (if the objects will contain <a class="reference internal" href="../glossary/w.html#term-weak-reference-1"><em class="xref std std-term">weak 353<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> (if the objects will contain <a class="reference internal" href="../glossary/w.html#term-weak-reference-1"><em class="xref std std-term">weak
339references<sup>(1)</sup></em></a>).</p> 354references<sup>(1)</sup></em></a>).</li>
355</ul>
356<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
357<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ap</span><span class="p">,</span> <span class="n">awl_pool</span><span class="p">,</span>
358 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_RANK</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">rank</span> <span class="o">=</span> <span class="n">mps_rank_weak</span><span class="p">()},</span>
359 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
360</pre></div>
361</div>
362<div class="admonition-deprecated admonition">
363<p class="first admonition-title">Deprecated</p>
364<p>starting with version 1.112.</p>
365<p>When using <a class="reference internal" href="../topic/allocation.html#mps_ap_create" title="mps_ap_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create()</span></tt></a>, pass the rank like this:</p>
366<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="n">mps_ap_t</span> <span class="o">*</span><span class="n">ap_o</span><span class="p">,</span> <span class="n">mps_pool_t</span> <span class="n">pool</span><span class="p">,</span>
367 <span class="n">mps_rank_t</span> <span class="n">rank</span><span class="p">)</span>
368</pre></div>
369</div>
370</div>
340</dd></dl> 371</dd></dl>
341 372
342<dl class="type"> 373<dl class="type">
diff --git a/mps/manual/html/pool/index.html b/mps/manual/html/pool/index.html
index e4ab514e965..007566b276c 100644
--- a/mps/manual/html/pool/index.html
+++ b/mps/manual/html/pool/index.html
@@ -28,7 +28,7 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="next" title="1. Choosing a pool class" href="intro.html" /> 30 <link rel="next" title="1. Choosing a pool class" href="intro.html" />
31 <link rel="prev" title="19. Weak references" href="../topic/weak.html" /> 31 <link rel="prev" title="20. Weak references" href="../topic/weak.html" />
32 </head> 32 </head>
33 <body> 33 <body>
34 <div class="related"> 34 <div class="related">
@@ -41,7 +41,7 @@
41 <a href="intro.html" title="1. Choosing a pool class" 41 <a href="intro.html" title="1. Choosing a pool class"
42 accesskey="N">next</a> |</li> 42 accesskey="N">next</a> |</li>
43 <li class="right" > 43 <li class="right" >
44 <a href="../topic/weak.html" title="19. Weak references" 44 <a href="../topic/weak.html" title="20. Weak references"
45 accesskey="P">previous</a> |</li> 45 accesskey="P">previous</a> |</li>
46 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 46 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
47 </ul> 47 </ul>
@@ -132,7 +132,7 @@
132 </a></p> 132 </a></p>
133 <h4>Previous topic</h4> 133 <h4>Previous topic</h4>
134 <p class="topless"><a href="../topic/weak.html" 134 <p class="topless"><a href="../topic/weak.html"
135 title="previous chapter">19. Weak references</a></p> 135 title="previous chapter">20. Weak references</a></p>
136 <h4>Next topic</h4> 136 <h4>Next topic</h4>
137 <p class="topless"><a href="intro.html" 137 <p class="topless"><a href="intro.html"
138 title="next chapter">1. Choosing a pool class</a></p><h4>Downloads</h4> 138 title="next chapter">1. Choosing a pool class</a></p><h4>Downloads</h4>
@@ -164,7 +164,7 @@
164 <a href="intro.html" title="1. Choosing a pool class" 164 <a href="intro.html" title="1. Choosing a pool class"
165 >next</a> |</li> 165 >next</a> |</li>
166 <li class="right" > 166 <li class="right" >
167 <a href="../topic/weak.html" title="19. Weak references" 167 <a href="../topic/weak.html" title="20. Weak references"
168 >previous</a> |</li> 168 >previous</a> |</li>
169 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 169 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
170 </ul> 170 </ul>
diff --git a/mps/manual/html/pool/lo.html b/mps/manual/html/pool/lo.html
index 48d83ddbd40..c0984e4528f 100644
--- a/mps/manual/html/pool/lo.html
+++ b/mps/manual/html/pool/lo.html
@@ -119,16 +119,31 @@ does not need a <a class="reference internal" href="../glossary/p.html#term-padd
119<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_lo</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_lo" title="Permalink to this definition">¶</a></dt> 119<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_lo</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_lo" title="Permalink to this definition">¶</a></dt>
120<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an LO (Leaf Object) 120<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an LO (Leaf Object)
121<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 121<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
122<p>When creating an LO pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes one 122<p>When creating an LO pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> require one
123extra argument:</p> 123<a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword argument</em></a>:</p>
124<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 124<ul class="simple">
125 <span class="kt">mps_class_t</span> <span class="n">mps_class_lo</span><span class="p">(),</span> 125<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_FORMAT</span></tt> (member <tt class="docutils literal"><span class="pre">.val.format</span></tt>; type
126 <span class="kt">mps_fmt_t</span> <span class="n">fmt</span><span class="p">)</span> 126<a class="reference internal" href="../topic/format.html#mps_fmt_t" title="mps_fmt_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the
127objects allocated in the pool. The format must provide a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip
128method</em></a>.</li>
129</ul>
130<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
131<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_lo</span><span class="p">(),</span>
132 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">fmt</span><span class="p">},</span>
133 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
127</pre></div> 134</pre></div>
128</div> 135</div>
129<p><tt class="docutils literal"><span class="pre">fmt</span></tt> specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the objects 136<div class="admonition-deprecated admonition">
130allocated in the pool. The format must provide a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip 137<p class="first admonition-title">Deprecated</p>
131method</em></a>.</p> 138<p>starting with version 1.112.</p>
139<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the format like
140this:</p>
141<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
142 <span class="n">mps_class_t</span> <span class="n">mps_class_lo</span><span class="p">(),</span>
143 <span class="n">mps_fmt_t</span> <span class="n">fmt</span><span class="p">)</span>
144</pre></div>
145</div>
146</div>
132</dd></dl> 147</dd></dl>
133 148
134</div> 149</div>
diff --git a/mps/manual/html/pool/mfs.html b/mps/manual/html/pool/mfs.html
index 822b00bb104..0a0d5c5cb29 100644
--- a/mps/manual/html/pool/mfs.html
+++ b/mps/manual/html/pool/mfs.html
@@ -100,21 +100,40 @@ managed pools (unless these are registered as <a class="reference internal" href
100<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mfs</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mfs" title="Permalink to this definition">¶</a></dt> 100<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mfs</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mfs" title="Permalink to this definition">¶</a></dt>
101<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an MFS (Manual Fixed Small) 101<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an MFS (Manual Fixed Small)
102<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 102<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
103<p>When creating an MFS pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes two 103<p>When creating an MFS pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> requires
104extra arguments:</p> 104two <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>:</p>
105<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 105<ul class="simple">
106 <span class="kt">mps_class_t</span> <span class="n">mps_class_mfs</span><span class="p">(),</span> 106<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MFS_UNIT_SIZE</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
107 <span class="kt">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span> 107<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a> of blocks that will be
108 <span class="kt">mps_size_t</span> <span class="n">unit_size</span><span class="p">)</span> 108allocated from this pool, in <a class="reference internal" href="../glossary/b.html#term-byte-1"><em class="xref std std-term">bytes<sup>(1)</sup></em></a>. It must be at
109least one <a class="reference internal" href="../glossary/w.html#term-word"><em class="xref std std-term">word</em></a>.</li>
110<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_EXTEND_BY</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
111<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a> of segment that the pool
112will request from the <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>. It must be at least as big
113as the unit size specified by the
114<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MFS_UNIT_SIZE</span></tt> keyword argument. If this is
115not a multiple of the unit size, there will be wasted space in
116each segment.</li>
117</ul>
118<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
119<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_mfs</span><span class="p">(),</span>
120 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_MFS_UNIT_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">1024</span><span class="p">},</span>
121 <span class="p">{</span><span class="n">MPS_KEY_EXTEND_BY</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span><span class="p">},</span>
122 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
109</pre></div> 123</pre></div>
110</div> 124</div>
111<p><tt class="docutils literal"><span class="pre">extend_size</span></tt> is the <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a> of segment that the pool will 125<div class="admonition-deprecated admonition">
112request from the <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>. It must be at least as big as 126<p class="first admonition-title">Deprecated</p>
113<tt class="docutils literal"><span class="pre">unit_size</span></tt>. If this is not a multiple of <tt class="docutils literal"><span class="pre">unit_size</span></tt>, there 127<p>starting with version 1.112.</p>
114will be wasted space in each segment.</p> 128<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the segment size and
115<p><tt class="docutils literal"><span class="pre">unit_size</span></tt> is the <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a> of blocks that will be allocated 129unit size like this:</p>
116from this pool, in <a class="reference internal" href="../glossary/b.html#term-byte-1"><em class="xref std std-term">bytes<sup>(1)</sup></em></a>. It must be at least one 130<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
117<a class="reference internal" href="../glossary/w.html#term-word"><em class="xref std std-term">word</em></a>.</p> 131 <span class="n">mps_class_t</span> <span class="n">mps_class_mfs</span><span class="p">(),</span>
132 <span class="n">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span>
133 <span class="n">mps_size_t</span> <span class="n">unit_size</span><span class="p">)</span>
134</pre></div>
135</div>
136</div>
118</dd></dl> 137</dd></dl>
119 138
120</div> 139</div>
diff --git a/mps/manual/html/pool/mv.html b/mps/manual/html/pool/mv.html
index 6fe20766412..c9a91413c7d 100644
--- a/mps/manual/html/pool/mv.html
+++ b/mps/manual/html/pool/mv.html
@@ -97,21 +97,42 @@ managed pools (unless these are registered as <a class="reference internal" href
97<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mv</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mv" title="Permalink to this definition">¶</a></dt> 97<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mv</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mv" title="Permalink to this definition">¶</a></dt>
98<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an MV (Manual Variable) 98<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an MV (Manual Variable)
99<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 99<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
100<p>When creating an MV pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes three 100<p>When creating an MV pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> requires
101extra arguments:</p> 101three <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>:</p>
102<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 102<ul class="simple">
103 <span class="kt">mps_class_t</span> <span class="n">mps_class_mv</span><span class="p">(),</span> 103<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_EXTEND_BY</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
104 <span class="kt">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span> 104<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a> of segment that the pool
105 <span class="kt">mps_size_t</span> <span class="n">average_size</span><span class="p">,</span> 105will request from the <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>.</li>
106 <span class="kt">mps_size_t</span> <span class="n">maximum_size</span><span class="p">)</span> 106<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MEAN_SIZE</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
107<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the predicted mean size of blocks that
108will be allocated from the pool.</li>
109<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MAX_SIZE</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
110<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the predicted maximum size of blocks that
111will be allocated from the pool.</li>
112</ul>
113<p>The mean and maximum sizes are <em>hints</em> to the MPS: the pool will be
114less efficient if these are wrong, but nothing will break.</p>
115<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
116<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_mfs</span><span class="p">(),</span>
117 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_MEAN_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">32</span><span class="p">},</span>
118 <span class="p">{</span><span class="n">MPS_KEY_MAX_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">1024</span><span class="p">},</span>
119 <span class="p">{</span><span class="n">MPS_KEY_EXTEND_BY</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span><span class="p">},</span>
120 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
121</pre></div>
122</div>
123<div class="admonition-deprecated admonition">
124<p class="first admonition-title">Deprecated</p>
125<p>starting with version 1.112.</p>
126<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the segment size,
127mean size, and maximum size like this:</p>
128<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
129 <span class="n">mps_class_t</span> <span class="n">mps_class_mv</span><span class="p">(),</span>
130 <span class="n">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span>
131 <span class="n">mps_size_t</span> <span class="n">average_size</span><span class="p">,</span>
132 <span class="n">mps_size_t</span> <span class="n">maximum_size</span><span class="p">)</span>
107</pre></div> 133</pre></div>
108</div> 134</div>
109<p><tt class="docutils literal"><span class="pre">extend_size</span></tt> is the <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a> of segment that the pool will 135</div>
110request from the <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>.</p>
111<p><tt class="docutils literal"><span class="pre">average_size</span></tt> and <tt class="docutils literal"><span class="pre">maximum</span> <span class="pre">size</span></tt> are the predicted average
112and maximum size of blocks that will be allocated from the pool.
113These are hints to the MPS: the pool will be less efficient if
114these are wrong.</p>
115</dd></dl> 136</dd></dl>
116 137
117<dl class="function"> 138<dl class="function">
@@ -119,20 +140,25 @@ these are wrong.</p>
119<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mv_debug</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mv_debug" title="Permalink to this definition">¶</a></dt> 140<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mv_debug</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mv_debug" title="Permalink to this definition">¶</a></dt>
120<dd><p>A <a class="reference internal" href="../topic/debugging.html#topic-debugging"><em>debugging</em></a> version of the MV pool 141<dd><p>A <a class="reference internal" href="../topic/debugging.html#topic-debugging"><em>debugging</em></a> version of the MV pool
121class.</p> 142class.</p>
122<p>When creating a debugging MV pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> 143<p>When creating a debugging MV pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt>
123takes four extra arguments:</p> 144requires four keyword arguments: <tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_EXTEND_SIZE</span></tt>,
124<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 145<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MEAN_SIZE</span></tt>, <tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MAX_SIZE</span></tt> are as
125 <span class="kt">mps_class_t</span> <span class="n">mps_class_mv_debug</span><span class="p">(),</span> 146described above, and <tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_POOL_DEBUG_OPTIONS</span></tt>
147specifies the debugging options. See <tt class="xref c c-type docutils literal"><span class="pre">mps_debug_option_s</span></tt>.</p>
148<div class="admonition-deprecated admonition">
149<p class="first admonition-title">Deprecated</p>
150<p>starting with version 1.112.</p>
151<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the debugging
152options, segment size, mean size, and maximum size like this:</p>
153<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
154 <span class="n">mps_class_t</span> <span class="n">mps_class_mv_debug</span><span class="p">(),</span>
126 <span class="n">mps_debug_option_s</span> <span class="n">debug_option</span><span class="p">,</span> 155 <span class="n">mps_debug_option_s</span> <span class="n">debug_option</span><span class="p">,</span>
127 <span class="kt">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span> 156 <span class="n">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span>
128 <span class="kt">mps_size_t</span> <span class="n">average_size</span><span class="p">,</span> 157 <span class="n">mps_size_t</span> <span class="n">average_size</span><span class="p">,</span>
129 <span class="kt">mps_size_t</span> <span class="n">maximum_size</span><span class="p">)</span> 158 <span class="n">mps_size_t</span> <span class="n">maximum_size</span><span class="p">)</span>
130</pre></div> 159</pre></div>
131</div> 160</div>
132<p><tt class="docutils literal"><span class="pre">debug_option</span></tt> specifies the debugging options. See 161</div>
133<tt class="xref c c-type docutils literal"><span class="pre">mps_debug_option_s</span></tt>.</p>
134<p><tt class="docutils literal"><span class="pre">extend_size</span></tt>, <tt class="docutils literal"><span class="pre">average_size</span></tt> and <tt class="docutils literal"><span class="pre">maximum_size</span></tt> are as
135documented in <a class="reference internal" href="#mps_class_mv" title="mps_class_mv"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mv()</span></tt></a>.</p>
136</dd></dl> 162</dd></dl>
137 163
138</div> 164</div>
diff --git a/mps/manual/html/pool/mvff.html b/mps/manual/html/pool/mvff.html
index 6515ee955d9..9ea159b38bf 100644
--- a/mps/manual/html/pool/mvff.html
+++ b/mps/manual/html/pool/mvff.html
@@ -126,32 +126,60 @@ smaller than the <a class="reference internal" href="../glossary/n.html#term-nat
126<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mvff</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mvff" title="Permalink to this definition">¶</a></dt> 126<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mvff</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mvff" title="Permalink to this definition">¶</a></dt>
127<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an MVFF (Manual Variable First 127<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an MVFF (Manual Variable First
128Fit) <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 128Fit) <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
129<p>When creating an MVFF pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes six 129<p>When creating an MVFF pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> requires
130extra arguments:</p> 130six <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>:</p>
131<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 131<ul class="simple">
132 <span class="kt">mps_class_t</span> <span class="n">mps_class_mvff</span><span class="p">(),</span> 132<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_EXTEND_BY</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
133 <span class="kt">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span> 133<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a> of segment that the pool
134 <span class="kt">mps_size_t</span> <span class="n">average_size</span><span class="p">,</span> 134will request from the <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>.</li>
135 <span class="kt">mps_align_t</span> <span class="n">alignment</span><span class="p">,</span> 135<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MEAN_SIZE</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
136 <span class="kt">mps_bool_t</span> <span class="n">slot_high</span><span class="p">,</span> 136<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the predicted mean size of blocks that will
137 <span class="kt">mps_bool_t</span> <span class="n">arena_high</span><span class="p">,</span> 137be allocated from the pool. This is a <em>hint</em> to the MPS: the
138 <span class="kt">mps_bool_t</span> <span class="n">first_fit</span><span class="p">)</span> 138pool will be less efficient if this is wrong, but nothing will
139break.</li>
140<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ALIGN</span></tt> (member <tt class="docutils literal"><span class="pre">.val.align</span></tt>; type
141<a class="reference internal" href="../topic/interface.html#mps_align_t" title="mps_align_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_align_t</span></tt></a>) is the <a class="reference internal" href="../glossary/a.html#term-alignment"><em class="xref std std-term">alignment</em></a> of addresses for
142allocation (and freeing) in the pool. If an unaligned size is
143passed to <a class="reference internal" href="../topic/allocation.html#mps_alloc" title="mps_alloc"><tt class="xref c c-func docutils literal"><span class="pre">mps_alloc()</span></tt></a> or <a class="reference internal" href="../topic/allocation.html#mps_free" title="mps_free"><tt class="xref c c-func docutils literal"><span class="pre">mps_free()</span></tt></a>, it will be
144rounded up to the pool&#8217;s alignment. The minimum alignment
145supported by pools of this class is <tt class="docutils literal"><span class="pre">sizeof(void</span> <span class="pre">*)</span></tt>.</li>
146<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_ARENA_HIGH</span></tt> (member <tt class="docutils literal"><span class="pre">.val.b</span></tt>; type
147<a class="reference internal" href="../topic/interface.html#mps_bool_t" title="mps_bool_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_bool_t</span></tt></a>) indicates whether new segments for
148buffered allocation are acquired at high addresses (if true), or
149at low addresses (if false).</li>
150<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_SLOT_HIGH</span></tt> (member <tt class="docutils literal"><span class="pre">.val.b</span></tt>; type
151<a class="reference internal" href="../topic/interface.html#mps_bool_t" title="mps_bool_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_bool_t</span></tt></a>) is undocumented. It must have the same
152value as <tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_ARENA_HIGH</span></tt>.</li>
153<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_FIRST_FIT</span></tt> (member <tt class="docutils literal"><span class="pre">.val.b</span></tt>; type
154<a class="reference internal" href="../topic/interface.html#mps_bool_t" title="mps_bool_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_bool_t</span></tt></a>) is undocumented and must be set to true.</li>
155</ul>
156<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
157<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_mvff</span><span class="p">(),</span>
158 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_EXTEND_BY</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="p">},</span>
159 <span class="p">{</span><span class="n">MPS_KEY_MEAN_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="p">},</span>
160 <span class="p">{</span><span class="n">MPS_KEY_ALIGN</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">align</span> <span class="o">=</span> <span class="p">},</span>
161 <span class="p">{</span><span class="n">MPS_KEY_MVFF_ARENA_HIGH</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">},</span>
162 <span class="p">{</span><span class="n">MPS_KEY_MVFF_SLOT_HIGH</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">},</span>
163 <span class="p">{</span><span class="n">MPS_KEY_MVFF_FIRST_FIT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">b</span> <span class="o">=</span> <span class="mi">1</span><span class="p">},</span>
164 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
165</pre></div>
166</div>
167<div class="admonition-deprecated admonition">
168<p class="first admonition-title">Deprecated</p>
169<p>starting with version 1.112.</p>
170<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the arguments like
171this:</p>
172<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
173 <span class="n">mps_class_t</span> <span class="n">mps_class_mvff</span><span class="p">(),</span>
174 <span class="n">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span>
175 <span class="n">mps_size_t</span> <span class="n">average_size</span><span class="p">,</span>
176 <span class="n">mps_align_t</span> <span class="n">alignment</span><span class="p">,</span>
177 <span class="n">mps_bool_t</span> <span class="n">slot_high</span><span class="p">,</span>
178 <span class="n">mps_bool_t</span> <span class="n">arena_high</span><span class="p">,</span>
179 <span class="n">mps_bool_t</span> <span class="n">first_fit</span><span class="p">)</span>
139</pre></div> 180</pre></div>
140</div> 181</div>
141<p><tt class="docutils literal"><span class="pre">extend_size</span></tt> is the <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a> of segment that the pool will 182</div>
142request from the <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>.</p>
143<p><tt class="docutils literal"><span class="pre">average_size</span></tt> is the predicted average size of blocks that will
144be allocated from the pool.</p>
145<p><tt class="docutils literal"><span class="pre">alignment</span></tt> is the <a class="reference internal" href="../glossary/a.html#term-alignment"><em class="xref std std-term">alignment</em></a> of addresses for allocation
146(and freeing) in the pool. If an unaligned size is passed to
147<a class="reference internal" href="../topic/allocation.html#mps_alloc" title="mps_alloc"><tt class="xref c c-func docutils literal"><span class="pre">mps_alloc()</span></tt></a> or <a class="reference internal" href="../topic/allocation.html#mps_free" title="mps_free"><tt class="xref c c-func docutils literal"><span class="pre">mps_free()</span></tt></a>, it will be rounded up
148to the pool&#8217;s alignment. The minimum alignment supported by pools
149of this class is <tt class="docutils literal"><span class="pre">sizeof(void</span> <span class="pre">*)</span></tt>.</p>
150<p><tt class="docutils literal"><span class="pre">slot_high</span></tt> is undocumented. It must have the same value as
151<tt class="docutils literal"><span class="pre">arena_high</span></tt>.</p>
152<p>If <tt class="docutils literal"><span class="pre">arena_high</span></tt> is true, new segments for buffered allocation
153are acquired at high addresses; if false, at low addresses.</p>
154<p><tt class="docutils literal"><span class="pre">first_fit</span></tt> is undocumented and must be set to true.</p>
155</dd></dl> 183</dd></dl>
156 184
157<dl class="function"> 185<dl class="function">
@@ -159,22 +187,33 @@ are acquired at high addresses; if false, at low addresses.</p>
159<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mvff_debug</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mvff_debug" title="Permalink to this definition">¶</a></dt> 187<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mvff_debug</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mvff_debug" title="Permalink to this definition">¶</a></dt>
160<dd><p>A <a class="reference internal" href="../topic/debugging.html#topic-debugging"><em>debugging</em></a> version of the MVFF pool 188<dd><p>A <a class="reference internal" href="../topic/debugging.html#topic-debugging"><em>debugging</em></a> version of the MVFF pool
161class.</p> 189class.</p>
162<p>When creating a debugging MVFF pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> 190<p>When creating a debugging MVFF pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt>
163takes seven extra arguments:</p> 191requires seven <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>.</p>
164<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 192<ul class="simple">
165 <span class="kt">mps_class_t</span> <span class="n">mps_class_mvff_debug</span><span class="p">(),</span> 193<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_EXTEND_BY</span></tt>, <tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MEAN_SIZE</span></tt>,
194<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ALIGN</span></tt>, <tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_ARENA_HIGH</span></tt>,
195<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_SLOT_HIGH</span></tt>, and
196<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_FIRST_FIT</span></tt> are as described above, and
197<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_POOL_DEBUG_OPTIONS</span></tt> specifies the debugging
198:c:options. See <tt class="xref c c-type docutils literal"><span class="pre">mps_debug_option_s</span></tt>.</li>
199</ul>
200<div class="admonition-deprecated admonition">
201<p class="first admonition-title">Deprecated</p>
202<p>starting with version 1.112.</p>
203<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the debugging
204options, and other arguments like this:</p>
205<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
206 <span class="n">mps_class_t</span> <span class="n">mps_class_mvff_debug</span><span class="p">(),</span>
166 <span class="n">mps_debug_option_s</span> <span class="n">debug_option</span><span class="p">,</span> 207 <span class="n">mps_debug_option_s</span> <span class="n">debug_option</span><span class="p">,</span>
167 <span class="kt">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span> 208 <span class="n">mps_size_t</span> <span class="n">extend_size</span><span class="p">,</span>
168 <span class="kt">mps_size_t</span> <span class="n">average_size</span><span class="p">,</span> 209 <span class="n">mps_size_t</span> <span class="n">average_size</span><span class="p">,</span>
169 <span class="kt">mps_align_t</span> <span class="n">alignment</span><span class="p">,</span> 210 <span class="n">mps_align_t</span> <span class="n">alignment</span><span class="p">,</span>
170 <span class="kt">mps_bool_t</span> <span class="n">slot_high</span><span class="p">,</span> 211 <span class="n">mps_bool_t</span> <span class="n">slot_high</span><span class="p">,</span>
171 <span class="kt">mps_bool_t</span> <span class="n">arena_high</span><span class="p">,</span> 212 <span class="n">mps_bool_t</span> <span class="n">arena_high</span><span class="p">,</span>
172 <span class="kt">mps_bool_t</span> <span class="n">first_fit</span><span class="p">)</span> 213 <span class="n">mps_bool_t</span> <span class="n">first_fit</span><span class="p">)</span>
173</pre></div> 214</pre></div>
174</div> 215</div>
175<p><tt class="docutils literal"><span class="pre">debug_option</span></tt> specifies the debugging options. See 216</div>
176<tt class="xref c c-type docutils literal"><span class="pre">mps_debug_option_s</span></tt>.</p>
177<p>The other arguments are the same as for <a class="reference internal" href="#mps_class_mvff" title="mps_class_mvff"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvff()</span></tt></a>.</p>
178</dd></dl> 217</dd></dl>
179 218
180</div> 219</div>
diff --git a/mps/manual/html/pool/mvt.html b/mps/manual/html/pool/mvt.html
index 290483047f4..5374f5118cf 100644
--- a/mps/manual/html/pool/mvt.html
+++ b/mps/manual/html/pool/mvt.html
@@ -122,64 +122,93 @@ managed pools (unless these are registered as <a class="reference internal" href
122<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mvt</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mvt" title="Permalink to this definition">¶</a></dt> 122<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_mvt</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_mvt" title="Permalink to this definition">¶</a></dt>
123<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an MVT (Manual Variable 123<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an MVT (Manual Variable
124Temporal) <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 124Temporal) <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
125<p>When creating an MVT pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes five 125<p>When creating an MVT pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> requires
126extra arguments:</p> 126five <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>:</p>
127<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 127<ul class="simple">
128 <span class="kt">mps_class_t</span> <span class="n">mps_class_mvt</span><span class="p">(),</span> 128<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MIN_SIZE</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
129 <span class="kt">size_t</span> <span class="n">minimum_size</span><span class="p">,</span> 129<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the predicted minimum size of blocks that
130 <span class="kt">size_t</span> <span class="n">mean_size</span><span class="p">,</span> 130will be allocated from the pool.</li>
131 <span class="kt">size_t</span> <span class="n">maximum_size</span><span class="p">,</span> 131<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MEAN_SIZE</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
132 <span class="kt">mps_count_t</span> <span class="n">reserve_depth</span><span class="p">,</span> 132<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the predicted mean size of blocks that will
133 <span class="kt">mps_count_t</span> <span class="n">fragmentation_limit</span><span class="p">)</span> 133be allocated from the pool.</li>
134</pre></div> 134<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MAX_SIZE</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
135</div> 135<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is the predicted maximum size of blocks that
136<p><tt class="docutils literal"><span class="pre">minimum_size</span></tt>, <tt class="docutils literal"><span class="pre">mean_size</span></tt>, and <tt class="docutils literal"><span class="pre">maximum_size</span></tt> are the 136will be allocated from the pool. Partial freeing is not
137predicted minimum, mean, and maximum <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a> of 137supported for blocks larger than this; doing so will
138<a class="reference internal" href="../glossary/b.html#term-block"><em class="xref std std-term">blocks</em></a> expected to be allocated in the pool. Blocks 138result in the storage of the block never being reused.</li>
139smaller than <tt class="docutils literal"><span class="pre">minimum_size</span></tt> and larger than <tt class="docutils literal"><span class="pre">maximum_size</span></tt> may 139</ul>
140be allocated, but the pool is not guaranteed to manage them 140<p>These three arguments are <em>hints</em> to the MPS: the pool will be
141space-efficiently. Furthermore, partial freeing is not supported 141less efficient if they are wrong, but the only thing that will
142for blocks larger than <tt class="docutils literal"><span class="pre">maximum_size</span></tt>; doing so will result in 142break is the partial freeing of large blocks.</p>
143the storage of the block never being reused. <tt class="docutils literal"><span class="pre">mean_size</span></tt> need 143<ul>
144not be an accurate mean, although the pool will manage 144<li><p class="first"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVT_RESERVE_DEPTH</span></tt> (member <tt class="docutils literal"><span class="pre">.val.count</span></tt>;
145<tt class="docutils literal"><span class="pre">mean_size</span></tt> blocks more efficiently if it is.</p> 145type <tt class="xref c c-type docutils literal"><span class="pre">mps_count_t</span></tt>) is the expected hysteresis of the
146<p><tt class="docutils literal"><span class="pre">reserve_depth</span></tt> is the expected hysteresis of the population of 146population of the pool. When blocks are freed, the pool will
147the pool. When blocks are freed, the pool will retain sufficient 147retain sufficient storage to allocate this many blocks of the mean
148storage to allocate <tt class="docutils literal"><span class="pre">reserve_depth</span></tt> blocks of <tt class="docutils literal"><span class="pre">mean_size</span></tt> for 148size for near term allocations (rather than immediately making
149near term allocations (rather than immediately making that storage 149that storage available to other pools).</p>
150available to other pools).</p>
151<p>If a pool has a stable population, or one which only grows over 150<p>If a pool has a stable population, or one which only grows over
152the lifetime of the pool, or one which grows steadily and then 151the lifetime of the pool, or one which grows steadily and then
153shrinks steadily, use a reserve depth of 0.</p> 152shrinks steadily, use a reserve depth of 0.</p>
154<p>It is always safe to use a reserve depth of 0, but if the 153<p>It is always safe to use a reserve depth of 0, but if the
155population typically fluctuates in a range (for example, the 154population typically fluctuates in a range (for example, the
156client program repeatedly creates and destroys a subset of blocks 155client program repeatedly creates and destroys a subset of
157in a loop), it is more efficient for the pool to retain enough 156blocks in a loop), it is more efficient for the pool to retain
158storage to satisfy that fluctuation. For example, if a pool has an 157enough storage to satisfy that fluctuation. For example, if a
159object population that typically fluctuates between 8,000 and 158pool has an object population that typically fluctuates between
16010,000, use a reserve depth of 2,000.</p> 1598,000 and 10,000, use a reserve depth of 2,000.</p>
161<p>The reserve will not normally be available to other pools for 160<p>The reserve will not normally be available to other pools for
162allocation, even when it is not used by the pool. If this is 161allocation, even when it is not used by the pool. If this is
163undesirable, a reserve depth of 0 may be used for a pool whose 162undesirable, a reserve depth of 0 may be used for a pool whose
164object population does vary, at a slight cost in efficiency. The 163object population does vary, at a slight cost in efficiency. The
165reserve does not guarantee any particular amount of allocation.</p> 164reserve does not guarantee any particular amount of allocation.</p>
166<p><tt class="docutils literal"><span class="pre">fragmentation_limit</span></tt> is a percentage from 1 to 100 (inclusive). 165</li>
167It sets an upper limit on the space overhead of MVT, in case block 166<li><p class="first"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVT_FRAG_LIMIT</span></tt> (member <tt class="docutils literal"><span class="pre">.val.count</span></tt>; type
168death times and allocations do not correlate well. If the free 167<tt class="xref c c-type docutils literal"><span class="pre">mps_count_t</span></tt>) is a percentage from 1 to 100
169space managed by the pool as a ratio of all the space managed by 168(inclusive). It sets an upper limit on the space overhead of an
170the pool exceeds <tt class="docutils literal"><span class="pre">fragmentation_limit</span></tt>, the pool falls back to a 169MVT pool, in case block death times and allocations do not
171first fit allocation policy, exploiting space more efficiently at 170correlate well. If the free space managed by the pool as a ratio
172a cost in time efficiency. A fragmentation limit of 0 would cause 171of all the space managed by the pool exceeds the fragmentation
173the pool to operate as a first-fit pool, at a significant cost in 172limit, the pool falls back to a first fit allocation policy,
174time efficiency: therefore this is not permitted.</p> 173exploiting space more efficiently at a cost in time efficiency.
174A fragmentation limit of 0 would cause the pool to operate as a
175first-fit pool, at a significant cost in time efficiency:
176therefore this is not permitted.</p>
175<p>A fragmentation limit of 100 causes the pool to always use 177<p>A fragmentation limit of 100 causes the pool to always use
176temporal fit (unless resources are exhausted). If the objects 178temporal fit (unless resources are exhausted). If the objects
177allocated in the pool have similar lifetime expectancies, this 179allocated in the pool have similar lifetime expectancies, this
178mode will have the best time- and space-efficiency. If the objects 180mode will have the best time- and space-efficiency. If the
179have widely varying lifetime expectancies, this mode will be 181objects have widely varying lifetime expectancies, this mode
180time-efficient, but may be space-inefficient. An intermediate 182will be time-efficient, but may be space-inefficient. An
181setting can be used to limit the space-inefficiency of temporal 183intermediate setting can be used to limit the space-inefficiency
182fit due to varying object life expectancies.</p> 184of temporal fit due to varying object life expectancies.</p>
185</li>
186</ul>
187<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
188<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_mvt</span><span class="p">(),</span>
189 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_MIN_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">4</span><span class="p">},</span>
190 <span class="p">{</span><span class="n">MPS_KEY_MEAN_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">32</span><span class="p">},</span>
191 <span class="p">{</span><span class="n">MPS_KEY_MAX_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">1024</span><span class="p">},</span>
192 <span class="p">{</span><span class="n">MPS_KEY_MVT_RESERVE_DEPTH</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">count</span> <span class="o">=</span> <span class="mi">256</span><span class="p">},</span>
193 <span class="p">{</span><span class="n">MPS_KEY_MVT_FRAG_LIMIT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">count</span> <span class="o">=</span> <span class="mi">50</span><span class="p">},</span>
194 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
195</pre></div>
196</div>
197<div class="admonition-deprecated admonition">
198<p class="first admonition-title">Deprecated</p>
199<p>starting with version 1.112.</p>
200<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the arguments like
201this:</p>
202<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
203 <span class="n">mps_class_t</span> <span class="n">mps_class_mvt</span><span class="p">(),</span>
204 <span class="kt">size_t</span> <span class="n">minimum_size</span><span class="p">,</span>
205 <span class="kt">size_t</span> <span class="n">mean_size</span><span class="p">,</span>
206 <span class="kt">size_t</span> <span class="n">maximum_size</span><span class="p">,</span>
207 <span class="n">mps_count_t</span> <span class="n">reserve_depth</span><span class="p">,</span>
208 <span class="n">mps_count_t</span> <span class="n">fragmentation_limit</span><span class="p">)</span>
209</pre></div>
210</div>
211</div>
183</dd></dl> 212</dd></dl>
184 213
185</div> 214</div>
diff --git a/mps/manual/html/pool/snc.html b/mps/manual/html/pool/snc.html
index f3edda27d3d..de2532f5be1 100644
--- a/mps/manual/html/pool/snc.html
+++ b/mps/manual/html/pool/snc.html
@@ -112,25 +112,55 @@ a format of variant auto-header.</li>
112<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_snc</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_snc" title="Permalink to this definition">¶</a></dt> 112<a class="reference internal" href="../topic/pool.html#mps_class_t" title="mps_class_t">mps_class_t</a> <tt class="descname">mps_class_snc</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_class_snc" title="Permalink to this definition">¶</a></dt>
113<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an SNC (Stack No Check) 113<dd><p>Return the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> for an SNC (Stack No Check)
114<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 114<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
115<p>When creating an SNC pool, <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> takes one 115<p>When creating an SNC pool, <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> requires one
116extra argument:</p> 116<a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword argument</em></a>:</p>
117<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="kt">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="kt">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span> 117<ul class="simple">
118 <span class="kt">mps_class_t</span> <span class="n">mps_class_snc</span><span class="p">(),</span> 118<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_FORMAT</span></tt> (member <tt class="docutils literal"><span class="pre">.val.format</span></tt>; type
119 <span class="kt">mps_fmt_t</span> <span class="n">fmt</span><span class="p">)</span> 119<a class="reference internal" href="../topic/format.html#mps_fmt_t" title="mps_fmt_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the
120objects allocated in the pool. The format must provide a
121<a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan method</em></a>, a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a>, and a <a class="reference internal" href="../glossary/p.html#term-padding-method"><em class="xref std std-term">padding
122method</em></a>.</li>
123</ul>
124<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
125<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_snc</span><span class="p">(),</span>
126 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">fmt</span><span class="p">},</span>
127 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
128</pre></div>
129</div>
130<div class="admonition-deprecated admonition">
131<p class="first admonition-title">Deprecated</p>
132<p>starting with version 1.112.</p>
133<p>When using <a class="reference internal" href="../topic/pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>, pass the format like
134this:</p>
135<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="n">mps_pool_t</span> <span class="o">*</span><span class="n">pool_o</span><span class="p">,</span> <span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">,</span>
136 <span class="n">mps_class_t</span> <span class="n">mps_class_snc</span><span class="p">(),</span>
137 <span class="n">mps_fmt_t</span> <span class="n">fmt</span><span class="p">)</span>
138</pre></div>
139</div>
140</div>
141<p>When creating an <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a> on an SNC pool,
142<a class="reference internal" href="../topic/allocation.html#mps_ap_create_k" title="mps_ap_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create_k()</span></tt></a> requires one keyword argument:</p>
143<ul class="simple">
144<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_RANK</span></tt> (member <tt class="docutils literal"><span class="pre">.val.rank</span></tt>; type
145<a class="reference internal" href="../topic/root.html#mps_rank_t" title="mps_rank_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_rank_t</span></tt></a>) specifies the <a class="reference internal" href="../glossary/r.html#term-rank"><em class="xref std std-term">rank</em></a> of references
146in objects allocated on this allocation point. It must be
147<a class="reference internal" href="../topic/root.html#mps_rank_exact" title="mps_rank_exact"><tt class="xref c c-func docutils literal"><span class="pre">mps_rank_exact()</span></tt></a>.</li>
148</ul>
149<p>For example, in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>:</p>
150<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_ap_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">ap</span><span class="p">,</span> <span class="n">awl_pool</span><span class="p">,</span>
151 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_RANK</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">rank</span> <span class="o">=</span> <span class="n">mps_rank_exact</span><span class="p">()},</span>
152 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
120</pre></div> 153</pre></div>
121</div> 154</div>
122<p><tt class="docutils literal"><span class="pre">fmt</span></tt> specifies the <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> for the objects 155<div class="admonition-deprecated admonition">
123allocated in the pool. The format must provide a <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan 156<p class="first admonition-title">Deprecated</p>
124method</em></a>, a <a class="reference internal" href="../glossary/s.html#term-skip-method"><em class="xref std std-term">skip method</em></a>, and a <a class="reference internal" href="../glossary/p.html#term-padding-method"><em class="xref std std-term">padding method</em></a>.</p> 157<p>starting with version 1.112.</p>
125<p>When creating an allocation point on an SNC pool, 158<p>When using <a class="reference internal" href="../topic/allocation.html#mps_ap_create" title="mps_ap_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create()</span></tt></a>, pass the rank like this:</p>
126<a class="reference internal" href="../topic/allocation.html#mps_ap_create" title="mps_ap_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create()</span></tt></a> takes one extra argument:</p> 159<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="n">mps_ap_t</span> <span class="o">*</span><span class="n">ap_o</span><span class="p">,</span> <span class="n">mps_pool_t</span> <span class="n">pool</span><span class="p">,</span>
127<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_ap_create</span><span class="p">(</span><span class="kt">mps_ap_t</span> <span class="o">*</span><span class="n">ap_o</span><span class="p">,</span> <span class="kt">mps_pool_t</span> <span class="n">pool</span><span class="p">,</span> 160 <span class="n">mps_rank_t</span> <span class="n">rank</span><span class="p">)</span>
128 <span class="kt">mps_rank_t</span> <span class="n">rank</span><span class="p">)</span>
129</pre></div> 161</pre></div>
130</div> 162</div>
131<p><tt class="docutils literal"><span class="pre">rank</span></tt> specifies the <a class="reference internal" href="../glossary/r.html#term-rank"><em class="xref std std-term">rank</em></a> of references in objects 163</div>
132allocated on this allocation point. It must be
133<a class="reference internal" href="../topic/root.html#mps_rank_exact" title="mps_rank_exact"><tt class="xref c c-func docutils literal"><span class="pre">mps_rank_exact()</span></tt></a>.</p>
134</dd></dl> 164</dd></dl>
135 165
136</div> 166</div>
diff --git a/mps/manual/html/searchindex.js b/mps/manual/html/searchindex.js
index d0d02f15e9e..7ff1eb25988 100644
--- a/mps/manual/html/searchindex.js
+++ b/mps/manual/html/searchindex.js
@@ -1 +1 @@
Search.setIndex({objects:{"":{mps_rank_t:[81,2,1,""],CBSDelete:[49,3,1,""],mps_fmt_fencepost_wrap:[45,3,1,""],mps_ap_alloc_pattern_reset:[46,3,1,""],mps_arena_roots_walk:[81,3,1,""],mps_thread_dereg:[93,3,1,""],CBSBlockDescribe:[49,3,1,""],MPS_SAC_CLASS_LIMIT:[12,4,1,""],mps_io_destroy:[31,3,1,""],MPS_RES_FAIL:[10,4,1,""],LockInit:[42,3,1,""],mps_definalize:[89,3,1,""],mps_thread_reg:[93,3,1,""],ACT_ON_RANGE:[18,3,1,""],LockClaim:[42,3,1,""],"-d":[13,0,1,"cmdoption-mpseventsql-d"],MPS_FIX12:[32,3,1,""],"-f":[13,0,1,"cmdoption-mpseventsql-f"],MPS_FIX_CALL:[32,3,1,""],mps_pool_destroy:[80,3,1,""],"-l":[13,0,1,"cmdoption-mpseventtxt-l"],"-o":[13,0,1,"cmdoption-mpseventsql-o"],"-i":[13,0,1,"cmdoption-mpseventsql-i"],MPS_OS_W3:[87,4,1,""],mps_reserve:[83,3,1,""],"-t":[13,0,1,"cmdoption-mpseventsql-t"],mps_message_type_gc_start:[35,3,1,""],"-v":[13,0,1,"cmdoption-mpseventsql-v"],mps_ap_create:[83,3,1,""],"-p":[13,0,1,"cmdoption-mpseventsql-p"],"-r":[13,0,1,"cmdoption-mpseventsql-r"],mps_class_lo:[9,3,1,""],Byte:[33,2,1,""],BTFindResRangeHigh:[18,3,1,""],mps_rank_exact:[81,3,1,""],MPS_ARCH_I3:[87,4,1,""],mps_ap_s:[83,2,1,""],CBSFinish:[49,3,1,""],mps_chain_create:[35,3,1,""],mps_sac_t:[12,2,1,""],MPS_WORD_WIDTH:[87,4,1,""],mps_ap_t:[83,2,1,""],MPS_BUILD_GC:[87,4,1,""],mps_label_t:[47,2,1,""],MPS_RES_COMMIT_LIMIT:[10,4,1,""],mps_reg_scan_t:[81,2,1,""],mps_tramp:[93,3,1,""],mps_clock:[31,3,1,""],mps_class_amc:[22,3,1,""],mps_root_create_reg:[81,3,1,""],mps_lib_memset:[31,3,1,""],mps_alloc_pattern_t:[46,2,1,""],mps_arena_start_collect:[28,3,1,""],LockReleaseGlobalRecursive:[42,3,1,""],mps_fix:[32,3,1,""],mps_arena_clamp:[28,3,1,""],mps_gen_param_s:[35,2,1,""],CBSDescribe:[49,3,1,""],mps_sac_destroy:[12,3,1,""],MPS_PF_LII6GC:[87,4,1,""],MPS_T_WORD:[87,4,1,""],MPS_T_ULONGEST:[87,4,1,""],LockClaimGlobalRecursive:[42,3,1,""],mps_lib_get_EOF:[31,3,1,""],mps_mvff_size:[91,3,1,""],Rank:[33,2,1,""],mps_rank_ambig:[81,3,1,""],mps_awl_find_dependent_t:[8,2,1,""],mps_lib_FILE:[31,2,1,""],mps_lib_get_stderr:[31,3,1,""],mps_chain_t:[35,2,1,""],mps_arena_create:[28,3,1,""],MPS_FIX2:[32,3,1,""],MPS_RESERVE_BLOCK:[83,3,1,""],mps_fmt_put_fencepost_t:[45,3,1,""],MPS_FIX1:[32,3,1,""],mps_mvt_size:[76,3,1,""],mps_telemetry_label:[13,3,1,""],MPS_RES_RESOURCE:[10,4,1,""],BTFindShortResRangeHigh:[18,3,1,""],MPS_SAC_FREE_FAST:[12,3,1,""],MPS_PF_LII3GC:[87,4,1,""],CBSBlockBase:[49,3,1,""],MPS_RES_MEMORY:[10,4,1,""],mps_lib_get_stdout:[31,3,1,""],mps_formatted_objects_stepper_t:[34,2,1,""],mps_ld_isstale:[86,3,1,""],MPS_RM_PROT:[81,4,1,""],mps_fmt_create_auto_header:[34,3,1,""],mps_sac_free:[12,3,1,""],Epoch:[33,2,1,""],mps_fmt_adjust_fencepost_t:[45,3,1,""],Ref:[33,2,1,""],mps_message_type_disable:[0,3,1,""],mps_io_write:[31,3,1,""],mps_ld_s:[86,2,1,""],mps_arena_collect:[28,3,1,""],TraceSet:[33,2,1,""],mps_arena_class_vm:[28,3,1,""],BTCopyInvertRange:[18,3,1,""],mps_fmt_t:[34,2,1,""],mps_sac_alloc:[12,3,1,""],MPS_PF_XCI3LL:[87,4,1,""],mps_message_type:[0,3,1,""],mps_sac_flush:[12,3,1,""],mps_class_mv_debug:[74,3,1,""],mps_class_amcz:[2,3,1,""],mps_message_finalization_ref:[89,3,1,""],CBSSetMinSize:[49,3,1,""],MPS_OS_XC:[87,4,1,""],ArenaFinalize:[82,3,1,""],mps_arena_spare_commit_limit_set:[28,3,1,""],MPS_PF_XCI3GC:[87,4,1,""],mps_rank_weak:[81,3,1,""],mps_arena_create_v:[28,3,1,""],mps_mvff_free_size:[91,3,1,""],mps_ss_t:[32,2,1,""],mps_arena_reserved:[28,3,1,""],mps_arena_unsafe_restore_protection:[28,3,1,""],mps_message_discard:[0,3,1,""],mps_free:[83,3,1,""],mps_message_type_t:[0,2,1,""],Word:[33,2,1,""],mps_arena_class_cl:[28,3,1,""],mps_io_flush:[31,3,1,""],mps_clock_t:[47,2,1,""],mps_class_awl:[8,3,1,""],LockReleaseRecursive:[42,3,1,""],MPS_RES_PARAM:[10,4,1,""],mps_fmt_auto_header_s:[34,2,1,""],mps_commit:[83,3,1,""],mps_message_t:[0,2,1,""],CBSInit:[49,3,1,""],MPS_RES_OK:[10,4,1,""],mps_message_type_gc:[35,3,1,""],mps_pool_walk:[45,3,1,""],MPS_PF_W3I3MV:[87,4,1,""],mps_ld_add:[86,3,1,""],mps_alloc:[83,3,1,""],mps_ap_destroy:[83,3,1,""],mps_arena_commit_limit:[28,3,1,""],mps_clocks_per_sec:[31,3,1,""],mps_root_t:[81,2,1,""],mps_class_mvff_debug:[91,3,1,""],mps_ap_fill:[83,3,1,""],MPS_WORD_SHIFT:[87,4,1,""],mps_class_mv:[74,3,1,""],MPS_SCAN_END:[32,3,1,""],mps_lib_fputc:[31,3,1,""],CONFIG_PLINTH_NONE:[31,4,1,""],BTCopyOffsetRange:[18,3,1,""],MPS_PF_STRING:[87,4,1,""],mps_pool_check_free_space:[1,3,1,""],MPS_ARCH_I6:[87,4,1,""],CBSBlockLimit:[49,3,1,""],mps_fmt_create_A:[34,3,1,""],mps_lib_fputs:[31,3,1,""],mps_addr_fmt:[34,3,1,""],mps_lib_telemetry_control:[31,3,1,""],mps_arena_expose:[28,3,1,""],mps_arena_destroy:[28,3,1,""],Addr:[33,2,1,""],Index:[33,2,1,""],MPS_TELEMETRY_DATABASE:[13,1,1,"-"],mps_mvt_free_size:[76,3,1,""],mps_arena_walk:[45,3,1,""],MPS_PF_ALIGN:[87,4,1,""],Serial:[33,2,1,""],"-h":[13,0,1,"cmdoption-mpseventcnv-h"],LockReleaseGlobal:[42,3,1,""],BTIsSetRange:[18,3,1,""],mps_telemetry_get:[13,3,1,""],CONFIG_VAR_RASH:[10,4,1,""],Bool:[33,2,1,""],MPS_TELEMETRY_CONTROL:[13,1,1,"-"],BTFindResRange:[18,3,1,""],mps_thr_t:[93,2,1,""],mps_root_create_table_masked:[81,3,1,""],mps_class_mvff:[91,3,1,""],RefSet:[33,2,1,""],MPS_PF_FRI6GC:[87,4,1,""],mps_fmt_pad_t:[34,2,1,""],MPS_OS_LI:[87,4,1,""],mps_message_type_enable:[0,3,1,""],mps_arena_extend:[28,3,1,""],MPS_TELEMETRY_FILENAME:[13,1,1,"-"],mps_class_snc:[78,3,1,""],mps_root_scan_t:[81,2,1,""],mps_message_queue_type:[0,3,1,""],mps_pool_check_fenceposts:[1,3,1,""],mps_message_gc_start_why:[35,3,1,""],MPS_RM_CONST:[81,4,1,""],Accumulation:[33,2,1,""],mps_telemetry_control:[13,3,1,""],BTDestroy:[18,3,1,""],mps_addr_t:[47,2,1,""],mps_roots_stepper_t:[81,2,1,""],MPS_BUILD_LL:[87,4,1,""],Res:[33,2,1,""],mps_message_get:[0,3,1,""],LockReleaseMPM:[42,3,1,""],mps_collections:[28,3,1,""],mps_message_clock:[0,3,1,""],BTFindShortResRange:[18,3,1,""],mps_mv_size:[74,3,1,""],mps_pool_create_v:[80,3,1,""],mps_message_gc_live_size:[35,3,1,""],CBSIterateLarge:[49,3,1,""],BTSetRange:[18,3,1,""],RootVar:[33,2,1,""],mps_amc_apply:[22,3,1,""],MPS_PF_W3I6MV:[87,4,1,""],LockClaimGlobal:[42,3,1,""],Align:[33,2,1,""],mps_fmt_A_s:[34,2,1,""],mps_objects_step_t:[45,3,1,""],mps_debug_class:[45,3,1,""],CBSIterate:[49,3,1,""],mps_fmt_fwd_t:[34,2,1,""],BTIsResRange:[18,3,1,""],Fun:[33,2,1,""],mps_arena_release:[28,3,1,""],BTSize:[18,3,1,""],mps_arena_step:[28,3,1,""],mps_arena_spare_commit_limit:[28,3,1,""],MPS_SAC_ALLOC_FAST:[12,3,1,""],Compare:[33,2,1,""],CBSFindFirst:[49,3,1,""],mps_ap_create_v:[83,3,1,""],mps_align_t:[47,2,1,""],MPS_RES_UNIMPL:[10,4,1,""],mps_sac_class_s:[12,2,1,""],mps_mv_free_size:[74,3,1,""],BTSet:[18,3,1,""],LockClaimRecursive:[42,3,1,""],mps_ap_alloc_pattern_end:[46,3,1,""],mps_arena_unsafe_expose_remember_protection:[28,3,1,""],BTFindLongResRange:[18,3,1,""],mps_arena_has_addr:[28,3,1,""],mps_ap_alloc_pattern_begin:[46,3,1,""],CBSFindLast:[49,3,1,""],Size:[33,2,1,""],mps_io_create:[31,3,1,""],mps_lib_assert_fail:[31,3,1,""],mps_arena_t:[28,2,1,""],mps_amc_apply_stepper_t:[22,2,1,""],mps_ap_frame_push:[39,3,1,""],mps_fmt_scan_t:[34,2,1,""],mps_ld_reset:[86,3,1,""],LockFinish:[42,3,1,""],mps_root_create_fmt:[81,3,1,""],MPS_SCAN_BEGIN:[32,3,1,""],BTCreate:[18,3,1,""],mps_stack_scan_ambig:[81,3,1,""],mps_arena_committed:[28,3,1,""],BTGet:[18,3,1,""],mps_sac_create:[12,3,1,""],mps_arena_commit_limit_set:[28,3,1,""],ULongest:[33,2,1,""],mps_pool_create:[80,3,1,""],mps_pool_debug_option_s:[1,2,1,""],mps_root_destroy:[81,3,1,""],mps_root_create:[81,3,1,""],mps_arena_class_t:[28,2,1,""],mps_ld_merge:[86,3,1,""],mps_fmt_B_s:[34,2,1,""],mps_word_t:[47,2,1,""],MPS_RES_IO:[10,4,1,""],mps_finalize:[89,3,1,""],mps_ld_t:[86,2,1,""],BTCopyRange:[18,3,1,""],mps_telemetry_intern:[13,3,1,""],mps_fmt_check_fenceposts_t:[45,3,1,""],Pointer:[33,2,1,""],CBSFindLargest:[49,3,1,""],mps_res_t:[10,2,1,""],mps_class_ams_debug:[27,3,1,""],mps_lib_memcpy:[31,3,1,""],mps_bool_t:[47,2,1,""],MPS_BUILD_MV:[87,4,1,""],MPS_PF_FRI3GC:[87,4,1,""],ACT_ON_RANGE_HIGH:[18,3,1,""],AccessSet:[33,2,1,""],CONFIG_VAR_HOT:[10,4,1,""],TraceId:[33,2,1,""],Attr:[33,2,1,""],mps_root_create_table:[81,3,1,""],mps_tramp_t:[93,2,1,""],mps_ap_frame_pop:[39,3,1,""],Shift:[33,2,1,""],CBSBlockSize:[49,3,1,""],LockSize:[42,3,1,""],mps_class_ams:[27,3,1,""],mps_class_mfs:[84,3,1,""],mps_addr_pool:[80,3,1,""],BTResRange:[18,3,1,""],mps_telemetry_reset:[13,3,1,""],mps_alloc_pattern_ramp_collect_all:[46,3,1,""],MPS_PF_XCI6LL:[87,4,1,""],mps_arena_spare_committed:[28,3,1,""],mps_fmt_skip_t:[34,2,1,""],mps_io_t:[31,2,1,""],mps_fmt_isfwd_t:[34,2,1,""],BTFindLongResRangeHigh:[18,3,1,""],mps_alloc_pattern_ramp:[46,3,1,""],mps_fmt_class_t:[34,2,1,""],mps_class_t:[80,2,1,""],mps_telemetry_flush:[13,3,1,""],mps_frame_t:[39,2,1,""],mps_ap_trip:[83,3,1,""],mps_pool_t:[80,2,1,""],mps_message_gc_not_condemned_size:[35,3,1,""],mps_chain_destroy:[35,3,1,""],CONFIG_VAR_COOL:[10,4,1,""],mps_fmt_create_B:[34,3,1,""],BTRes:[18,3,1,""],mps_message_type_finalization:[89,3,1,""],mps_lib_memcmp:[31,3,1,""],MPS_RES_LIMIT:[10,4,1,""],mps_arena_park:[28,3,1,""],mps_telemetry_set:[13,3,1,""],mps_rm_t:[81,2,1,""],mps_class_mvt:[76,3,1,""],CBSInsert:[49,3,1,""],mps_fmt_destroy:[34,3,1,""],mps_arena_formatted_objects_walk:[34,3,1,""],mps_message_gc_condemned_size:[35,3,1,""],mps_message_poll:[0,3,1,""],MPS_OS_FR:[87,4,1,""]}},terms:{scriptwork:50,nurseri:[52,56,60,62,46,73,35],ru_utim:31,orthogon:[30,37],mps_arena_roots_walk:[81,28],demand:[21,71,73],btset:18,four:[29,81,57,18,69,66,68,7,71,72,49,74],secondli:[6,61,17,15],prefix:[47,4,6,50,57],circuitri:61,oldest:73,effienc:45,forget:[28,25],whose:[0,53,47,65,67,68,39,1,13,41,76,22,75,64,25,80,81,8,12,40,34,86,35,15,89,32,70,92,93,36,37],accur:[29,54,73,76,62,69,79,49],"const":[31,13,35],find_depend:8,mpsioan:31,albuquerqu:30,mps_telemetry_flush:[31,13,28],concret:[58,44,6,45,33,50],swap:[57,59,61,65,67,70,71,73,28],under:[38,55,56,5,18,67,43,10,49,47,45,89,73,3,40,83,28,37],sped:[0,15],spec:33,merchant:5,digit:[4,72,61,30,87],everi:[0,53,17,59,60,61,64,69,39,71,13,41,7,25,28,29,81,30,10,45,40,34,33,16,49,36],risk:[49,44],mps_final:[53,89,82,25],macraki:[92,57],"void":[0,53,18,59,47,69,13,2,1,74,40,42,76,6,78,25,27,28,80,29,81,9,30,31,8,82,45,46,12,22,33,34,84,86,35,87,83,89,49,91,93,36,50,71],rise:70,risc:62,lofix:17,implicit:[56,40,69,39,70],quantiz:73,addrstruct:33,jacob:30,affect:[35,18,78,43,69,11,89,66,45,68,16,70,50,56,28],mps_pool_check_fencepost:[45,1],poorli:[29,24,12,64],trace_max:[6,33],deleterang:49,vast:88,agesen:30,extend_s:[91,74,84],kilobyt:[63,61,35,36,57],ferreira:30,factori:71,vector:[81,62,57,18,67,25,45,58,70,32,36],terabyt:[69,57],cmu:30,parenthes:47,initialis:[49,42],cmp:[86,25],x86_64:4,lockw3:10,deutsch:[55,30,15],mps_lib_get_stdout:31,naiv:40,direct:[52,54,55,56,5,18,31,11,64,68,40,83,50],histor:[52,53,55,56,57,58,59,61,64,66,67,69,70,71,72,4,42,44,82,48,87,15],nail:[26,60,73],consequ:[9,10,50,8,78,2,25,27,93,28],second:[83,17,87,43,31,61,64,48,24,70,25,40,13,36,28,37],doubt:5,aggreg:[67,58],type_fwd:36,p_v:[83,12],ap_o:[78,83,8],thisclass:40,even:[0,52,55,56,17,18,64,65,66,68,69,70,71,73,83,41,58,5,76,24,25,26,28,29,32,45,46,12,13,34,15,89,16,49,93,36,50],hide:[45,67],fmt_o:34,arena_poll_max:6,neg:[80,86,18,31,34,28],asid:12,weren:56,btcopyoffsetrang:18,children:[52,60,69],cheng:30,supplier:29,"new":[0,38,56,57,18,53,60,61,62,64,66,52,69,39,71,73,19,4,40,41,20,42,6,24,49,8,28,80,29,81,30,10,25,45,47,91,13,34,79,86,35,87,88,15,83,89,32,70,36,37],mps_ss_t:[81,17,8,32,36,77,70,25,34],upward:[91,18],ever:[29,81,87,6,11,69,13,93],singhal:[30,73],protocolensuresomeclass:40,elimin:[29,56,17,61,88,15,66,70,71,83],port_ref:25,dahl:[30,15],mps_arena_class_cl:[36,28],mem:[33,49],splinter:[45,6],here:[0,17,18,62,4,13,41,21,43,6,25,28,81,10,45,83,86,35,89,16,32,36,37],block_requiring_fin:89,met:[66,5],undef:[47,15],studio:[4,87],subword:18,debugg:[13,16,81,28],path:[83,20,56,17,48,10,32,64,36,66,45,16,70,71,73,40,13,65,33,51],mps_message_type_dis:0,interpret:[0,80,81,86,56,1,43,32,69,85,15,89,16,39,79,25,13,36,28],michal:30,bevan:92,precis:[52,29,54,57,30,61,73,68,7,70,49,34],findshortresrangehigh:18,bitmask:[81,13,57],drj:[6,33,18,79],scaveng:[52,70,69,56,30],permit:[0,29,56,58,5,45,76,6,49,88,67,38,69,50,73,40,83,61,28],krishnan:30,aka:[6,87,18,44],prolog:[52,56,11,15],mps_lib_telemetry_control:31,basereturn:[18,49],joshua:30,frombas:18,norsk:30,"000ae0397335c8b5":13,tempt:[86,47,32],skippabl:36,"_mps_fix":17,brought:44,mps_releas:21,unix:[52,57,59,10,61,70,71,31,4,93,33,50],mps_sac_free_fast:12,brk:[70,57,58],amherst:30,strai:45,printf:[0,25],newspac:[60,69],total:[29,35,43,6,61,76,24,16,70,79,25,56,33,74,91,36,28],cbsfindlast:49,mps_fmt_create_b:34,unit:[41,55,56,17,59,31,6,36,71,72,73,33,34,61,57],highli:[38,29,17,15,36],bookkeep:[29,24,11,61,15],describ:[52,53,56,17,58,59,61,64,69,39,71,73,3,4,13,57,41,21,6,24,49,25,29,81,31,8,11,85,12,33,34,79,35,47,88,15,83,32,40,70,36,50,37],would:[83,53,54,56,17,18,60,62,66,2,13,57,41,5,76,6,24,25,28,29,81,10,8,11,45,12,40,34,84,86,33,31,88,15,89,82,49,36,71],tail:[45,30,15],unpredict:29,vol:30,edward:[61,30,15],call:[0,38,55,56,17,18,53,59,61,1,64,66,52,69,39,71,73,4,33,57,41,49,58,42,76,6,77,78,24,7,8,27,28,80,29,81,9,10,25,11,45,46,12,91,13,34,79,86,35,47,31,88,68,15,36,83,89,16,82,32,40,70,93,22,50],card:[56,30,73],"0x1003fb148":16,recommend:[17,31,11,47,36,12,32,93,34,37],indiana:30,promptli:[0,53,11,24,71,83],type:[0,53,54,55,56,17,18,59,61,62,64,66,67,68,69,39,71,73,33,57,41,20,58,87,6,24,7,8,28,80,29,81,30,44,10,25,11,45,46,12,49,13,34,79,86,35,47,1,31,15,36,83,89,16,32,40,70,93,22,50,51],until:[0,53,56,58,59,60,64,69,70,73,42,6,24,25,28,80,29,81,9,79,82,46,12,83,34,86,35,89,32,36],buddi:[53,55,57,30,29,88,64,23,66,70],mps_arch_m2:87,mps_arch_m4:87,buckets_find_depend:25,mps_arch_m6:87,relax:25,relat:[52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,73,13,7,29,11,40,34,86,33,15,49],notic:[30,47,18,5,73],warn:[38,44,12,32,33,93,83],exce:[29,35,18,76,6,13],mps_pf_string:[87,21],phd:30,wari:6,excl:83,hold:[0,53,54,57,18,61,64,39,71,4,83,42,6,25,28,80,81,12,33,34,85,35,89,70,93,37],overrun:45,must:[0,38,55,56,17,18,53,59,60,61,1,64,67,52,69,39,2,73,4,74,33,41,49,58,5,42,76,6,77,78,24,7,8,26,27,28,80,29,81,9,31,25,11,45,12,91,13,34,84,79,86,35,47,71,88,68,36,83,89,16,82,32,40,70,93,22,50,37],shoot:29,btfindshortresrangehigh:18,springer:30,join:[90,47],room:[45,35,67],err:6,restor:[0,56,30,42,15,70,32,36,28],chenei:[52,69,56,30],work:[38,52,56,17,18,61,62,64,66,69,70,71,4,13,41,43,6,24,8,27,28,29,81,30,82,79,11,12,33,35,88,15,83,89,49,92,36,37],btsetrang:18,pierc:30,doubleword:[55,62,72],mccaughan:92,coalesc:[53,54,55,56,57,58,20,76,29,44,88,66,70,49,62],sharp:46,poolfinish:79,hansen:[92,30],root:[38,52,54,56,17,58,61,66,68,69,70,71,73,4,74,40,57,41,20,76,6,77,24,49,25,27,28,81,9,30,44,8,82,22,33,84,85,15,83,89,32,91,51,93,36,37],cbsst:49,pierr:30,overrid:[40,17],defer:[55,56,58,30,24,46,71,49,83,75],obj_fmt_:[34,36],give:[0,29,76,86,35,45,43,31,87,11,47,66,38,7,70,60,56,13,28,37],mps_ld_reset:[86,25],jelica:30,indic:[0,53,55,58,59,47,69,39,71,13,41,42,6,24,49,31,26,28,81,10,25,82,46,40,34,79,86,33,87,32,70,36,50,37],sick:30,caution:[81,8,89,25,19,83,34,51],fibonacci:[53,88,57],want:[38,52,18,71,73,4,13,41,6,31,28,29,81,10,25,45,12,22,33,34,16,36],noprint:16,mysegclass:40,keep:[57,64,66,69,70,71,73,17,41,42,6,77,24,8,28,29,9,25,49,11,45,35,88,15,89,90,32,36,50],unsign:[0,49,81,86,58,18,87,31,6,25,47,36,7,12,8,13,33,50],"1003fd328":13,motion:[68,56,30,28,73],vanish:16,end:[53,54,17,18,59,64,70,71,83,6,25,28,81,10,46,47,40,34,89,16,49,36,37],"0x000000010000206b":16,quot:[53,61,47,66,70,36],icfp:30,ordinari:[71,61,56,34,8],findfirst:49,classifi:[53,73],revisit:30,how:[0,38,55,56,17,18,53,61,69,71,57,41,5,6,48,24,25,28,80,29,81,30,8,11,45,12,13,34,79,35,88,16,32,36,50,37],hot:[56,17,10,65,67,71,4,13,50],recoveri:30,env:16,"000ae0397333bc6d":13,answer:[29,56,36,18,37],symposium:30,ancestor:15,config:[33,50,21],updat:[52,53,55,56,17,61,64,68,70,71,33,57,41,6,24,31,25,28,80,29,30,10,49,47,13,34,79,32,36,50],lam:30,simmon:92,recogn:[10,83,86,8],lai:36,after:[0,53,55,56,17,61,1,68,71,73,4,13,57,41,21,43,6,77,78,24,25,28,29,81,10,49,45,46,12,40,34,86,31,42,88,15,83,89,16,32,93,36,50,37],lovemor:92,"0x0000000100011ded":16,diagram:[24,56,83],befor:[83,53,17,18,61,47,70,1,13,57,42,6,24,25,28,29,81,10,8,45,22,40,86,88,15,89,32,91,36,37],wrong:[29,85,35,17,10,11,16,33,74,36],mps_tramp:93,arch:[41,50,21],parallel:[52,29,56,30,64,69,70,73,34],averag:[91,33,62,74],poolmvff:49,errror:81,type_port:25,attempt:[55,56,17,18,61,70,71,73,58,76,79,28,29,11,82,45,83,34,88,15,49,36],third:[17,30,87,43,48,24,25,33,36],opaqu:[55,42,59,47,69,86],grant:70,baker:[56,57,30,59,62,15,67,69],cbsiter:49,perform:[0,52,55,56,17,18,53,61,64,69,70,71,73,4,83,41,20,42,43,24,7,8,28,29,81,9,30,49,11,85,45,40,34,79,86,35,88,15,76,89,16,32,36,37],type_:[36,8],maintain:[55,56,17,58,61,62,66,69,70,71,41,42,6,28,81,12,40,84,85,49,92,36,50],environ:[71,29,57,30,42,59,31,73,15,36,83,16,58,25,4,93,13,50,51],abysm:49,reloc:[41,56,57,70,71,34],finalis:[79,42],exclus:[42,36,69,93,34,37],mps_telemetry_reset:13,lambda:[89,16,25],order:[52,53,55,56,17,58,60,61,62,64,65,66,32,39,71,4,13,57,42,6,24,7,25,26,29,30,82,8,69,12,91,33,88,15,83,89,16,49,70,93,36,50],finaliz:[26,66,89,71,25],decl:50,origin:[53,17,18,44,6,15,66,89,70,71,25,92,34],mpstd:[33,87,50,21],composit:[67,70,56,15],feedback:90,afip:30,diagnos:13,over:[55,56,17,18,61,1,70,73,41,58,76,6,7,25,28,81,31,11,45,46,33,34,86,35,82,49,36],config_var_cool:[10,16,50],message_type_o:0,becaus:[38,52,54,55,56,17,18,53,59,60,61,62,64,65,66,67,69,39,71,73,13,57,41,49,58,42,6,77,24,7,8,28,29,81,10,25,11,45,12,91,33,79,86,47,1,31,88,15,83,89,16,82,32,40,70,36,50],fifo:[53,62,58,91],poolcreat:79,dijkstra:[61,69,56,30],ulongest:33,flexibl:[38,41,81,55,59,88,66,12,28],vari:[29,56,17,53,43,76,70,50],btcopyrang:18,digest:73,sigplan:30,hashf:25,fit:[52,53,54,55,1,57,18,60,61,62,64,66,70,71,73,19,74,83,41,20,58,5,43,23,29,30,46,33,88,76,49,91,50,37],obj_pool:[34,36],fwrite:31,fix:[0,38,55,56,17,58,53,62,64,70,71,73,19,83,41,20,6,48,49,8,26,29,81,44,10,25,11,45,13,34,84,79,77,16,32,51,36,50,37],arenaent:6,better:[53,81,36,17,18,88,32,11,34,86,65,71,8,4,37,33,9],drawback:24,fig:50,persist:[80,81,35,30,46,12,32,34,28],comprehens:56,shire:92,hidden:[81,82,15],erlang:11,taiichi:30,easier:[41,29,11,88],define_pool_class:40,descend:15,them:[0,38,55,56,17,18,71,60,61,62,64,66,52,70,2,40,57,41,58,43,6,77,24,49,25,27,28,29,81,9,8,11,45,12,22,13,34,79,35,47,88,15,76,89,16,32,91,93,36,50,37],poolclass:[40,13,33,79],nygaard:15,thei:[0,38,55,56,17,18,53,71,61,62,64,66,67,52,69,70,2,73,40,57,41,49,58,42,6,75,24,7,8,26,27,28,29,81,9,30,44,31,25,11,45,12,33,34,79,86,35,47,1,88,68,15,36,83,77,82,32,93,22,37],fragment:[53,54,56,57,58,60,61,62,64,65,70,71,73,76,24,28,30,11,45,12,84,88,49,91,37],dirk:30,thee:13,safe:[0,29,81,86,83,58,30,42,76,15,53,38,69,70,47,33,93,36,28,78],mps_reg_scan_t:[81,36],debugmixin:45,"break":[83,57,18,87,82,15,45,16,70,71,32,40,4,36,28],band:[53,57,59,64,65,69],inescap:45,promis:[56,36],closer:88,interrupt:[29,24,5],itanium:87,yourself:[36,28,37],epdr:40,choic:[55,35,58,18,67,61,88,15,45,70,36],tendenc:[60,22],"0x000000010001f2d2":16,mps_messag:82,codewarrior:[4,50,87],string_hash:25,"0x7fff5fbff7a0":16,harri:30,xcppgc:87,accommod:[52,12,34],loss:[18,5,32],dest_ld:86,"000ae039733592f9":13,arrow:52,each:[0,52,54,55,56,17,18,53,59,60,61,62,64,66,67,69,70,71,73,4,13,57,41,49,58,87,43,6,24,7,8,28,29,81,10,25,11,45,12,33,34,84,79,86,35,47,1,88,36,83,76,77,16,32,40,93,22,50,37],debug:[0,55,58,69,13,1,4,74,40,20,42,22,31,27,28,44,10,25,11,45,12,33,34,85,83,16,49,91,36,51],went:[10,33],european:30,oblig:36,side:[45,83,47],mean:[52,53,17,18,59,61,62,64,65,66,67,69,39,71,73,13,57,41,58,5,76,22,7,8,26,28,29,81,9,10,25,45,47,33,34,79,86,15,83,89,16,32,40,70,93,36,50,37],data_scan:32,laboratori:30,poolepvm:18,btfindshortresrang:18,overflow:29,bufferfil:45,oppos:[29,33,55,56,64],mps_res_limit:[10,12],cbsbl:49,forgot:16,collector:[38,52,54,55,56,17,58,53,59,60,61,62,64,66,68,69,70,71,73,4,83,57,41,43,22,23,78,24,25,28,80,29,81,30,10,11,13,34,35,15,89,16,36],x86:[38,4,87,13,57],unbound:[0,71],network:[29,55,31,11,15,89,28],goe:[29,81,30,45,70,4,28],newli:[56,83,35],crucial:[24,25],content:[0,38,55,35,57,67,22,15,36,45,16,71,79,83,34,28],rewrit:[83,50],laid:[53,16],daniel:[92,30],adapt:[38,90,30,92],reader:32,mps_arena_create_v:28,protocolclass:40,forth:70,kiem:30,mccarthi:[52,13,61,30,15],cbsblockstruct:49,arizona:30,linear:[30,62,70,17,18],barrier:[55,57,71,62,64,66,67,69,70,2,73,74,83,41,76,6,78,8,27,28,81,9,30,44,82,22,33,34,84,15,16,91,93,36,37],worthwhil:29,mps_class_awl:[25,8],situat:[86,59,6,49,64,24,16,8,34,28],free:[38,52,54,55,56,57,18,53,59,60,61,62,64,65,66,68,69,70,71,73,4,74,41,58,76,6,24,8,28,29,81,10,79,11,45,12,83,84,1,88,15,89,49,91,36,37],ineffici:[76,88,62,11,24,70,71,73],mps_commit:[83,16,36,25],ian:30,cytron:30,hand:[29,17,18,20,10,47,36,58,71,8,33,34,51],mvt:[20,76,49,19,83,74,37],atc:[69,58],puzzl:25,epvm:18,assert_mpm:50,filter:[31,13,69,17],ish:45,iso:[47,31,57,30,21],isn:[29,56,17,46,79,45,24,16,25,33,50],"__int_64":[47,87],bufferstruct:79,"0x0000000000000000":16,subtl:[53,17,71],onto:[29,58,79,45,70,1,39],cbstest:[18,49],"0x0000000000000004":16,"0x0000000000000005":16,dimens:[67,70,30],rang:[57,18,59,61,73,66,45,68,76,70,71,49,33,36],kim:30,nhc:30,p_o:[83,16,12],hoop:79,independ:[41,55,9,30,64,28,50],wast:[18,43,88,11,64,12,73,84],rank:[54,17,58,2,66,70,71,19,20,78,25,81,9,8,82,33,77,16,32,37,36,51],necess:28,restrict:[83,57,31,8,64,45,89,49,39,50,73,70,4,34,28],hook:[6,81],instruct:[83,1,17,30,61,62,11,15,90,68,69,70,64,8,33,36,57],alreadi:[0,53,55,56,17,42,6,49,24,25,40,13,93,36],wrapper:[66,31,49,45,25],wasn:[10,12,17],tag_siz:25,agre:[0,15],flagella:[30,15],primari:[61,50,73],brock:30,"00000001003fc000":13,provabl:[55,62,36],nomin:5,top:[38,29,35,18,6,49,66,16,70,25,22],epdrpoolclass:40,sometim:[0,53,55,56,57,18,59,64,52,68,69,70,71,73,4,58,24,8,29,45,15,89],amcscannail:16,timothi:30,toi:[0,81,86,43,25,89,16,32,13,36],too:[38,29,35,43,50,8,69,61,15,41,66,45,24,16,12,25,33,80,49,36,28],kanefski:30,epdralloc:40,mps_message_get:[0,61,35,89,25],upshot:86,john:[52,30,61,15,13,92],bttest:18,hewitt:[54,30],mps_build_cc:87,mps_fill_fencepost:45,tricolor:[66,69,70],tool:[29,30,21,31,61,87,11,15,71,4,13,50],tractofaddr:6,took:[83,86],"10g":16,mps_sac_class_:[70,12],incur:[54,2],serial:[31,6,33,30],somewhat:[25,70,17,73],conserv:[52,29,54,56,57,30,53,61,8,11,15,24,58,70,64,73,26,33],happili:82,simula:[30,15],config_var_rash:[10,71],mps_clock_t:[0,31,47],technic:[38,41,85,30,91,34,37],symptom:12,modula3:15,nmk:4,r4000:87,silli:18,target:[38,29,85,17,18,44,31,32,36,7,73,4,87,33,50],keyword:70,cxref:87,provid:[38,53,56,17,18,59,61,62,69,70,2,73,4,40,41,49,58,5,42,22,78,24,7,31,27,28,29,81,9,25,10,8,11,45,12,13,34,79,86,71,88,15,36,83,89,90,32,1,6,37],lvalu:[83,12],tree:[53,58,44,6,64,65,45,70,49,4],mps_os_w3:[50,87],withington:[62,30,92],project:[38,85,30,15,90,4,36,50],matter:[24,86,57,30],mpmtype:[33,18],poolinit:[6,13,79],searchlimit:18,provis:[79,49],fashion:[61,89,15],entail:[24,56,17,34],mps_ap_frame_push:[78,39,58],ran:[33,12],mps_count_t:76,ram:[55,58,61,11,70,71,73,36,28],mind:[43,70,24,11],mine:30,bitfield:33,raw:[6,68,71],rat:50,lookup_in_fram:[13,16],manner:[45,5,79],increment:[38,52,56,57,53,61,62,64,66,69,70,71,73,83,41,6,24,8,28,29,30,10,79,33,15,93,36,37],infring:5,seen:[29,42,73,45,70,49,50],seem:[29,24,33,45,36],strength:[88,71],recreat:79,harper:30,latter:[66,71,18],cope:[29,81,61,8,89,73],client:[0,52,55,56,17,18,53,59,61,62,47,69,39,71,73,3,13,41,20,58,42,76,6,49,8,26,28,80,29,81,44,10,25,82,45,46,12,33,34,79,86,35,1,31,36,83,89,16,32,40,70,51,93,22,50,37],fwd2:36,thoma:30,thoroughli:33,memo:30,eagerli:49,wherebi:[0,62,46,56],simplifi:[38,52,57,18,53,25,69,45,58,2,32],transistor:70,table_set:25,shall:[47,6,18,5],mps_ap_frame_pop:[78,39,58],object:[0,52,54,55,56,17,18,53,59,60,61,62,75,64,65,66,67,68,69,70,2,73,19,4,74,33,57,41,20,58,21,43,6,77,23,78,24,7,8,26,27,87,28,29,81,9,30,44,10,25,11,85,45,12,13,34,84,79,35,47,71,42,88,15,36,83,76,89,16,82,32,40,91,51,1,22,37],mps_root_scan_t:81,lexic:15,regular:[0,66,4,89,25],alan:30,letter:[47,30],phase:[41,44,61,24,70,73],fwd_:36,coin:30,character_:36,prematur:[52,29,55,61,11,68,73],tradit:42,event_poolinit:13,simplic:[93,50,18,32],don:[38,29,79,41,17,18,71,57,6,49,47,36,66,45,89,50,25,40,22,28,37],simplif:29,doc:[41,18],"0x1003f9878":16,flow:15,doe:[0,52,56,17,18,53,59,60,61,62,64,66,68,70,71,73,74,57,41,49,5,42,43,6,77,78,24,7,8,27,28,29,81,9,10,25,11,12,13,34,84,79,86,47,1,31,88,15,36,76,89,16,82,32,91,93,22,50,37],buckets_:[36,25],dummi:[6,83],declar:[83,29,81,18,30,21,47,53,78,66,58,39,50,79,70,33,40,28,71],metat:15,dimm:55,sun:[30,15],unchang:[1,49],notion:[29,6],came:[59,45,50],kristen:15,ungar:[62,30,15,71],introspect:[80,81,44,76,22,78,91,19,40,74,34,28,51],wow64:38,sigsegv:93,opposit:[52,53,54,55,56,57,18,59,60,61,62,69,64,65,66,67,68,58,70,71,73],cheapli:55,syntax:[40,15],minimum_s:76,modula:[52,11,15],identifi:[18,21,6,62,64,36,67,70,47,32,40,13,34,50,51],figueiredo:15,involv:[29,17,18,59,88,61,8,11,66,45,46,69,71,73,70,40,49,34,57],despit:[86,56,57,11,15,70,71,25,40],layout:[56,17,25,11,16,70,32,34],acquir:[76,10,28,91],mpsliban:[31,4],i5m2cc:87,menu:4,explain:[10,11,8,40,36,50],configur:[20,27,9,18,42,76,6,22,15,78,44,69,50,8,84,91,4,74,13,28,37],btget:18,rich:[29,15],weakrefer:[66,71,15],mps_chat:0,predecessor:15,plate:70,stoy:[59,30],likewis:[6,61],stop:[29,30,1,64,24,70,25,28],compli:68,ceil:18,mpscmvff:91,watson:30,mps_variety_str:21,report:[83,29,86,30,31,82,15,69,64,49,13,36],reconstruct:[16,18],mps_ap_fil:[83,16],mustn:81,first_fit:91,softli:[15,66,45,70,71,73],bar:[70,50],gareth:[18,21,6,42,82,45,7,79,49,26,3,92,50],emb:40,"\u00e5ke":30,baz:50,patch:47,"__date__":21,twice:[29,81,49,39,45],bad:[29,57,88,69,64,45,16,15,25,83],fourteenth:30,told:[41,64],steal:28,respond:[88,11,12],mps_arena_has_addr:28,cbssetmins:49,fragmentation_limit:76,victim:13,fair:18,fp_size:45,btcv:18,light:29,datatyp:42,loreclaim:17,nul:[31,13,83],accumulatorscal:33,result:[0,53,56,17,18,61,64,68,39,71,73,40,76,6,49,8,27,28,80,29,81,10,25,45,46,12,33,34,79,86,35,47,31,83,13,89,16,32,70,93,36,50,51],"0x1003faf20":[13,16],respons:[38,29,79,55,56,58,42,6,49,64,41,24,12,73,40,80,61,28],fail:[83,55,17,18,47,39,13,58,43,6,24,25,28,29,10,82,45,46,12,40,34,35,33,15,16,49,70,36,50],hash:[85,55,86,8,15,66,45,77,16,64,25,36,37],epdrinit:40,tractofbaseaddr:6,best:[38,53,57,58,64,66,52,70,73,76,25,28,29,30,49,33,88,15,32,91,36,50],subject:[0,81,31,49,66,45,89,70,25,4,34,28,84],awar:[53,40,8],said:[41,52,60,61,45,68,69,71,73,13],hopefulli:17,erez:30,databas:[30,79,18,5,21,6,42,82,45,24,7,71,49,26,3,4,13,50],delphi:15,phantomli:73,shenker:30,yet:[0,41,35,17,10,49,82,89,15,52,83,45,24,16,8,40,33,36],figur:[38,41,83,45],languag:[52,53,55,56,17,58,59,61,62,64,67,68,69,70,71,73,83,57,20,5,77,23,24,29,30,31,11,47,40,38,85,15,89,36,50,51],res_io:45,sos8cx:87,awai:[11,17],approach:[47,88,11,50,30],glasgow:30,pad_:36,attribut:[33,86,79],inabl:[53,54],accord:[41,29,17,18,53,60,88,64,83,46,70,47,73,91,40,33],never:[52,53,57,18,61,62,47,67,71,33,43,6,78,24,25,80,29,31,79,13,34,86,15,83,76,89,49,36],extend:[41,17,18,6,49,15,90,58,79,8,40,36,28,57],sram:70,weak:[38,55,17,18,66,69,70,71,73,19,41,20,22,77,78,8,27,81,25,33,85,88,15,89,37,36,51],obj_chain:[36,25],extens:[52,81,56,18,44,43,10,61,11,15,65,50,40,36,28,37],lazi:[64,82,30,18],unabl:[22,28],preprocessor:[87,60,31,15,16,47,10,50],extent:[54,55,56,58,62,11,64,65,89,70,15],dbgpool:[10,45],toler:[66,69,8],xci6ll:[4,87],mps_clocks_per_sec:31,protect:[52,53,57,71,61,47,66,67,70,2,73,19,74,40,41,42,76,6,78,25,27,28,81,9,30,8,82,22,33,34,84,79,83,16,91,37,93,36,50,51],accident:[33,61],expos:[52,67,70,28],fault:[38,52,57,30,6,8,64,66,67,70,71,73,19,34,61],howev:[0,53,55,56,57,18,59,61,64,70,71,4,83,41,58,5,43,6,24,25,27,28,29,31,12,40,15,32,92,93,36,50],against:[29,86,43,6,73,32,61],logic:[17,18,59,62,15,67,71,50,37],browser:15,com:[38,4,90,5],con:[0,56,30,58,15,66],rehash:[86,36,25],epdldebugsig:40,consumpt:53,mps_telemetry_set:13,bool:[18,6,7,49,26,40,33],toni:[40,6,92,30,18],character:[66,29,30,15],ref_o:89,delic:8,loader:28,dconfig_var_cool:[4,16],guil:15,exemplari:5,sml:[30,15],vmmap:13,wider:4,guid:[20,85,86,18,11,47,71,8,40,36],assum:[41,52,81,56,10,89,66,45,24,12,8,40,33,83,36,50,60],summar:[6,37],duplic:[41,56,57,6,11,68,50],mps_lib_fput:31,liabil:5,degener:62,fre:15,union:[41,86,58,6,47,69,25,33,36],three:[0,53,56,61,64,66,67,68,70,71,73,3,4,74,83,41,21,43,6,24,7,25,27,28,29,10,49,11,45,47,13,34,86,87,88,15,16,32,36,50],been:[0,38,55,56,17,18,53,59,61,62,66,52,69,70,71,73,13,57,41,87,6,77,75,24,25,26,28,80,29,44,10,49,11,45,12,22,33,34,79,86,35,68,15,83,89,16,82,32,40,92,93,36,37],specul:[18,15],accumul:[60,33,11,79],much:[0,52,55,17,18,61,69,4,57,41,43,24,28,29,44,32,11,46,12,38,35,88,89,49,36,50],mps_arena_unsafe_restore_protect:28,mult:40,interest:[0,29,36,17,44,10,49,15,34,77,90,71,32,41,4,13,28,37],subscrib:90,insert_link:83,cohen:30,quickli:[56,57,6,61,69,71,36,28,17],life:[76,62,30,25],retrospect:30,lifo:[53,62,70,58],suppress:47,tractreturn:6,ani:[0,53,55,56,17,18,59,61,62,64,65,66,68,69,70,71,73,4,33,57,41,49,58,5,21,76,6,24,7,31,28,29,81,25,10,8,11,45,12,13,34,79,86,47,1,42,88,15,36,83,89,16,82,32,40,91,93,22,50,37],"0x0000000100001ef7":16,unzip:4,dave:30,lift:18,child:[7,64],"catch":[55,35,50,15],pool_o:[80,9,76,22,78,2,8,91,27,74,84],"_m_ix86":50,emploi:62,type_fwd2:36,mps_alloc_pattern_ramp_collect_al:46,ident:[86,18,87,43,62,82,47,67,2,49,40,12],aix:59,gnu:[0,87,15,16,4,13],servic:[41,29,5,88,61,11,69,70,12,49],properti:[18,62,64,66,69,70,2,19,74,33,20,76,22,78,25,27,28,9,30,8,40,84,86,35,49,91,37,36,51],mps_lib_memcpi:[31,33],commerci:[38,29,5],mps_rm_const:[81,56],aim:[30,15],calcul:[66,33,88,34],publicli:[29,15],thrash:[29,30,61,66,69,71,73],aid:[81,49],vagu:57,anchor:30,spawn:15,seven:91,cons:58,mps_amc_apply_stepper_t:22,arenasetcommitlimit:6,mexico:30,tabl:[54,55,56,17,18,64,65,66,67,69,71,73,13,57,20,87,43,75,8,28,81,30,44,25,33,85,86,15,77,16,36,37],toolkit:30,trishul:30,cond:7,conf:[50,30,37],mps_thr_t:[81,69,93,36],symtab_s:[81,36],tediou:29,disappear:[89,71,47,49],grown:15,mps_word_t:[81,86,17,47,36,16,32,33,13,28],op_env:16,incorrectli:[89,58],receiv:[29,81,16,56,5,59,88,11,36,89,7,49,13,34],suggest:[29,18,43,10,59,90,49,91,92,36],make:[0,38,54,55,17,18,53,61,62,64,67,52,69,39,71,73,4,13,57,41,58,5,21,43,22,48,24,25,87,28,80,29,81,10,49,11,45,47,33,34,85,35,31,42,88,15,83,76,77,16,32,40,70,51,93,36,50,37],transpar:[81,55,59,10,47,45,69,83,86],complex:[29,58,61,69,11,15,45,16,64,40,50,71],split:[53,55,57,18,88,62,11,66,45,70,49,3,13],mps_mvt_free_siz:76,complet:[41,29,81,56,5,18,43,10,61,32,11,36,66,24,70,50,31,40,83,34,28],elli:[41,30,15],mps_fmt_adjust_fencepost_t:45,fragil:32,evid:[16,58],vvv:13,quentin:30,rail:53,kit:[20,4,85,5],fairli:[54,71],rais:34,refil:[83,93],ownership:42,refin:[41,24,56,71,15],gustavo:30,poolarena:40,protocolerror:49,mps_io_t:31,studi:[45,11,30],tune:[20,85,30,29,43,22,36,16,34,61],dylan:[17,5,82,6,25,11,15,67,50,8,40,18],char_bit:87,undesir:76,bewar:[83,16],mps_ap_trip:83,mps_lib_assert_fail:31,thu:[0,29,56,17,59,60,73,15,66,76,52,69,25,33,83],messeng:[29,30],thr:[81,93],inherit:[20,40,58,15,44],poolmrg:[26,82],contact:[38,20,81,5,8,47,90,83,78,77,16,39,25,91,4,93,27,28],greatest:18,thi:[0,38,54,55,56,17,18,53,59,60,61,62,63,64,65,66,67,52,69,39,2,73,3,4,74,33,57,41,49,58,5,21,43,22,77,78,24,7,8,26,27,87,28,80,29,81,9,44,10,25,11,45,46,12,91,13,34,84,79,86,35,47,71,93,31,42,88,68,15,36,83,76,89,16,82,32,40,70,1,6,50,37],endif:50,lockstruct:42,programm:[0,29,58,53,59,61,87,11,89,64,76,52,70,15,40],jean:30,portabl:[38,30,31,15,70,47,32,13,36,50],arenasetsparecommitlimit:6,left:[49,56,18,1,10,6,25,88,61,15,47,32,2,73,13,33,28],arena_ld_length:6,protocol:[38,56,58,64,66,39,33,41,20,6,78,79,26,81,44,32,45,40,83,49,36,50,51],background:[18,44,6,42,68,28,50],just:[0,53,56,17,18,66,13,1,4,40,57,41,58,43,77,25,28,29,81,49,82,45,33,34,15,89,16,32,70,93,36,50,37],mps_sac_alloc_fast:12,shapiro:30,pool_create_v:80,orient:[41,53,30,59,61,15,40],bandwidth:[61,71],human:[3,13,21],ifdef:50,nowadai:[66,70],unbuff:91,poolcondemn:79,act_on_rang:18,previous:[17,58,42,89,25,26,13],easi:[81,18,22,11,15,36,66,16,4,93,34,50],interfer:28,had:[0,29,57,82,15,41,45,16,71,25,91,13,65,36],lumpi:35,define_class:40,fortran:[11,15],spread:[29,88,60],"0x1003f9ae0":16,board:30,henriqu:15,els:[0,41,8,16,50,25,83,36,28],save:[52,54,56,30,32,15,70,49],gave:[29,15],opt:4,applic:[38,53,58,61,67,52,70,73,4,76,23,28,29,30,31,11,88,15,89,16,32,37],race:[10,40,83],"0x1003f9c18":16,preserv:[55,17,60,66,69,70,79],r_o:93,locu:41,pretest:[0,15],distanc:34,lcc:87,birth:76,"0x1003f99d8":16,obj_isfwd:[34,36],"0x000000010000ea40":16,apart:[7,11],linux:[38,42,87,16,8,4,93,50],measur:[57,30,61,70,32,33,28,17],overcompens:61,specif:[56,17,18,61,62,71,73,33,41,58,42,6,23,79,26,29,81,30,11,45,13,35,15,49,50],arbitrari:[40,6,34,47,65],bufferinit:79,hunt:30,manual:[0,52,55,58,53,60,61,1,65,39,79,73,19,74,41,20,76,23,78,24,8,80,29,81,49,11,45,12,91,83,38,84,15,32,70,37,36,51],mit:30,dep:50,"0x00000001003fb130":16,mps_pf_fri3gc:87,src_ld:86,colmerau:15,unnecessari:[52,29,17,25],underli:[56,25,11,89,70,49],www:4,right:[29,18,30,43,49,11,47,45,32,33,5,36,37],old:[52,53,56,57,58,59,60,61,62,69,71,73,83,87,6,24,25,29,44,33,34,86,15,49,36],mps_arch_s8:87,deal:[29,54,86,67,33,15,66,59,70,73,40,27],interv:[0,53,18,25,49,83,36,28],mps_arch_s9:87,maxim:[41,76,40],percentag:76,mmqa_test_funct:18,zct:[55,75],born:73,intern:[83,53,54,17,18,82,64,70,73,4,13,57,20,6,25,28,80,29,30,44,10,11,45,12,33,48,84,31,88,16,49,37],printer:[13,15],addrcomp:33,pain:[29,17],"0x0000000100003f55":[13,16],successfulli:[80,81,55,35,83,46,12,49,40,34,28,71],make_pair:36,insensit:15,cooper:[41,57,30,42,6,15,24,69,28],combat:8,bottom:[81,8,25,16,49,36],stronger:57,segmyseg:40,fox:30,arthur:30,subclass:[45,6,40,57],tempor:[20,76,49,19,83,74,37],track:[41,29,56,53,10,15,45,24,16,70,64,36,71],ucsc:30,morereturn:16,overcom:15,condit:[52,29,36,80,58,5,10,46,11,64,34,83,7,70,49,40,4,33,50],foo:[47,16,12,79,13,50],type_integ:[36,25],fencepost:[53,55,59,10,45,1],core:[61,55,56,47],plu:[76,6,50,5],sensibl:79,bole:30,bold:29,someclass:40,pose:36,libsqlite3:4,confer:30,promot:[52,35,58,60,22,69,73,40],"0x7fff5fbff808":16,hsu:30,mps_frequenc:12,post:[0,53,35,61,89,25],"super":[45,40],gartner:15,proceed:30,chapter:[50,16,30,28,36],obj:[16,6,25,82,36,45,77,7,32,83,34,86],harlequin:[92,15],patchi:71,slightli:[71,6,49,17,25],simul:[67,30,15,49],felleisen:30,poolscan:[16,79],despair:37,frame_o:39,old_symtab_s:36,liber:93,commit:[83,81,56,44,10,6,61,70,12,79,33,36,28],sept:30,produc:[81,35,18,15,45,71,13],encount:[10,13,11,32],curiou:13,"float":[52,53,58,60,64,68,70,73,50],encod:[57,18,21,66,67,68,69,71,13],bound:[0,55,35,57,18,59,61,62,15,67,16,70],soo:30,down:[0,53,17,18,69,70,71,4,41,87,6,7,31,28,29,10,45,12,34,15,16,49,36],attrincr_rb:33,"0x0":16,formerli:[87,56,25],lieu:41,wrap:[66,29,68,45,32],opportun:[45,35],cafeteria:70,storag:[0,52,55,56,57,18,59,61,62,65,66,67,70,71,73,58,76,24,28,29,30,40,15,49],kakkad:30,lockclaimglobalrecurs:42,accordingli:[3,15,31],suffici:[52,18,76,88,15,69,40,36],mps_class:34,mps_t_word:[33,50,87],config_var_:50,support:[0,38,55,56,57,18,53,61,47,65,69,39,71,73,3,4,74,40,41,58,42,76,6,77,78,24,49,8,27,29,81,9,30,10,25,45,46,12,91,33,34,84,85,86,31,87,88,15,36,83,89,32,70,51,93,22,50,37],why:[0,29,16,35,18,31,89,7,25,33,83,37],avail:[38,53,56,57,18,61,64,67,69,70,71,73,4,83,58,5,43,31,28,80,29,10,25,11,13,88,15,76,16,49,93,50],width:[33,87,58,50,49],reli:[29,56,17,59,10,89,47,76,24,69,13,93,83,37],editor:[92,15],fraction:91,acknowledg:[20,92],overhead:[41,29,17,18,76,6,69,11,64,67,24,58,49,40,61,37],btfindresrang:18,lowest:[7,58,18],head:[45,83,60],traceid:33,toward:[29,70,18],form:[0,53,55,56,18,59,60,61,62,64,65,66,52,69,70,71,73,5,7,8,10,79,11,13,88,15,16,49,91,93,50],offer:[52,15,66,45,70,73],forc:[29,13,36,15,32],poolno:79,mpscmv:74,somehow:15,multiprocessor:30,hear:37,dead:[52,53,55,56,17,58,59,60,61,62,64,68,39,71,41,43,22,78,79,46,83,35,16,36],heap:[52,53,55,56,57,58,61,64,65,69,70,71,41,22,79,28,29,81,30,11,34,88,15,16,32,36],old_symtab_root:36,oopsla:30,hashtabl:25,"true":[0,53,58,47,32,83,18,6,7,8,26,28,80,29,25,40,34,86,33,89,49,91,36],cached_count:12,reset:[86,18,6,25,33,13],"throw":11,attr:[10,6,33],rattl:29,maximum:[41,62,35,18,76,6,50,45,12,49,33,74,28],tell:[0,38,54,86,21,73,81,15,41,53,52,50,25,83,36,28,71],mps_pool_t:[80,36,1,9,84,78,76,22,8,34,83,45,12,73,91,27,74,25,2],tucson:30,absenc:[31,82,45],autoconf:4,emit:[13,58,50,79],mpscsnc:78,accessset:33,uncoop:[61,30],featur:[0,55,58,47,69,70,71,1,13,20,6,25,28,81,44,8,11,45,22,83,15,36],alongsid:[40,55],mps_word_width:[50,18,87],classic:[29,4,70,24,65],utc:[13,16,30],"abstract":[41,29,30,18,42,6,44,15,53,45,7,50,33,40,28],consciou:30,decrypt:32,mps_class_t:[80,9,78,76,22,8,45,2,73,91,27,74,84],"__line__":45,postscript:[56,70,11,15,67],exist:[0,55,17,18,61,47,70,3,13,41,6,24,26,29,45,12,40,34,35,33,49,92,36],darko:30,strive:[6,86],mps_root_create_fmt:81,indirect:[54,55,17,5,64,68],pirinen:[41,57,30,6,64,66,45,69,70,92],sticki:[62,70,30],assembl:[30,50,17,15],"_io":[47,64],encrypt:32,testor:42,index:[20,86,17,18,53,15,66,70,64,73,33,57],when:[0,52,54,55,56,17,18,53,59,60,61,62,64,65,66,68,69,70,2,73,3,4,74,33,57,41,58,43,22,77,78,24,49,8,27,28,29,81,9,10,25,11,45,12,13,34,84,79,86,35,47,71,93,31,88,15,36,83,76,89,16,82,32,40,91,1,6,50,37],lockclaimrecurs:42,mps_begin:45,poolstruct:79,accessread:33,jone:[29,55,18,30,21,59,82,11,64,69,71,79,3,92],fmt_scan:81,test:[0,52,17,18,59,61,67,13,4,40,87,43,7,25,28,29,44,10,33,86,15,83,77,16,49,91,36,50,51],mpsacl:28,presum:[6,42],telemetri:[20,86,17,43,10,31,79,69,47,36,16,25,4,13,28,51],unlimit:[29,7],jonl:[92,57],node:[52,54,56,60,66,69,70,49],matur:[10,22,30],notif:[82,49],intend:[18,59,2,33,42,76,22,7,79,28,81,9,10,32,40,34,86,31,15,49,93,36,50,71],prot:[6,50],benefici:18,felt:29,stringid:13,mps_debug_option_:[91,27,74],intens:[55,30],intent:[18,47,69,49,13,33],consid:[52,29,35,17,18,53,60,6,62,11,58,70,79,49,83,80,34,61,37],occasion:17,mps_build_ac:87,russo:30,younger:[52,54,56,60,64,71],event_kind:13,my_malloc:29,longer:[0,53,55,56,18,61,62,70,71,73,33,24,8,26,80,29,10,79,11,12,40,34,35,15,89,92,36],furthermor:[76,45,81,17],home:15,arenainit:6,phantomrefer:[71,73],blockrang:49,candid:[56,34,18],iwmm:30,phong:30,ignor:[81,56,17,46,64,24,7,71],gracefulli:59,config_:50,time:[0,38,54,55,56,17,18,59,61,62,64,65,66,67,52,69,70,71,73,4,33,41,58,5,21,43,22,77,24,8,28,29,81,30,10,25,11,45,46,12,13,34,86,35,47,1,31,42,88,68,15,36,83,76,89,16,82,40,91,51,93,6,50,37],push:[70,62,39,58,84],mps_fmt_fwd_t:[53,34,36],offsetof:[8,32,36,16,79,83,25],backward:[52,6,18],strong_buckets_ap:25,chunksiz:13,rom:[61,71],chain:[0,52,55,57,58,53,60,61,62,66,68,70,2,1,43,22,25,27,28,40,85,35,88,36,51],globals_root:36,skip:[83,53,85,17,18,22,25,36,78,16,70,2,8,27,34,9],mps_:47,global:[29,79,17,42,6,73,81,36,85,16,70,71,25,40,4,92,33],ost:30,invent:[52,24,57,15],osi:5,cacm:30,signific:[52,29,58,18,76,31,6,88,11,66,69,73,91,13,61],addrcopi:33,dalton:30,milo:30,pldi:30,osf:[4,87],hierarch:30,decid:[41,29,35,17,18,79,11,83,45,70,12,73,56,33,36,28,37],middl:[81,56,61,64,16,71,49,40,83,28],depend:[52,49,55,56,17,18,53,62,47,66,67,68,39,71,73,19,74,13,20,58,87,76,6,78,7,8,27,28,29,81,9,44,10,25,45,91,22,33,84,85,86,35,88,15,77,32,40,70,51,93,36,50,37],zone:[41,6,17],graph:[52,54,55,56,60,64,66,69,70],cornel:30,intermedi:[76,17],w3ppmv:87,rel:[29,55,57,15,69,70,12],environment:31,yve:30,rightmost:18,decis:[35,17,18,31,77,58,39,36],jvm:15,lasttract:6,henderson:30,brown:30,sourc:[38,58,13,4,40,20,5,21,6,8,28,29,30,44,31,49,45,33,86,15,77,32,50,37],mps_sac_t:12,string:[83,29,35,17,30,21,31,69,15,67,16,2,64,25,13,36],barrett:[92,30],blumof:30,"1003fe000":13,unfamiliar:63,feasibl:45,broadli:[62,34],bruggeman:30,octob:30,word:[52,55,56,17,18,60,61,64,66,69,70,71,72,73,13,57,58,90,8,81,25,32,45,47,33,34,84,83,16,49,36,50],exact:[53,54,56,17,58,61,47,69,70,71,73,33,87,22,78,8,27,81,10,25,83,36,37],seemingli:16,cool:[56,10,65,67,16,71,4,13,50],"0x1003f9af8":16,format_return:45,"0x1003fe278":16,administr:[11,15],level:[38,56,58,61,64,65,66,67,70,71,73,13,87,6,24,7,8,29,25,11,45,33,15,16,49],did:[29,36,28,15,25],die:[52,35,17,58,22,64,16,71,25],gui:30,henri:[69,30],metadata:[25,8],iter:[17,18,44,6,15,49,36],rusag:31,magnet:57,item:[6,70,21],"__time__":21,quick:[53,62,88],recogniz:57,dip:45,round:[57,10,88,11,70,12,25,91,83,36,28],dir:50,o1algc:87,prevent:[0,56,17,30,6,89,77,24,69,12,8,33,71],edelson:[70,30,15],slower:[29,61,56,57,18],attrbuf_alloc:33,sign:6,oldspac:[59,53],colin:30,cost:[54,55,59,61,62,66,69,70,2,83,41,5,43,24,25,30,49,12,13,15,76,32,36,50],unprotect:[81,55,8],maximum_s:[76,74],relocat:65,port:[31,15,89,25,36,50],leaf_ap:25,addr:[80,49,36,33,6,8,82,34,83,45,16,25,40,13,22,28,86],malo:30,texa:30,uniform:[58,18,79],current:[0,38,56,57,18,53,67,69,39,71,73,4,40,41,58,42,6,8,27,87,28,81,49,11,45,33,21,15,13,32,70,93,50],"0x00000001003f9730":16,arenafinish:6,suspect:16,mps_os_i5:87,va_list:[80,45,40,83,28],tolimit:18,failobj1:40,lockclaimglob:42,deriv:[55,56,57,59,31,6,64,24,69,47,49,33,40],increasingli:46,vector_:[36,32],guardian:[40,82,30],gener:[0,38,54,55,56,17,18,53,59,60,61,62,63,64,66,52,69,39,2,73,4,74,40,57,41,20,58,42,43,6,77,8,26,27,28,29,81,30,44,25,11,85,45,46,12,33,34,79,35,47,71,88,15,36,83,89,16,32,70,93,22,50,51],"1003fa7d0":13,integer_:36,disclaim:5,consult:[83,31,6,17],explicitli:[38,52,47,62,15,64,40,33,13,28],modif:[56,18,5,15,45,24,70,71,4],address:[0,53,54,55,17,18,59,60,61,62,64,65,66,67,68,69,70,71,73,13,57,58,43,6,49,8,28,80,29,81,44,10,25,12,22,33,34,86,47,88,15,83,16,32,91,93,36],failnoteseg:40,ratio:76,along:[56,60,25,88,79,10,33,40],lii6gc:[4,87],wait:[0,38,6,28,25],epdldebugpoolclass:40,mps_os_ia:87,shift:[33,50,17,18],steffen:30,queue:[0,56,17,61,25,82,66,89,70,71,49,51],weak_array_:8,attrpm_no_read:33,behav:[29,56,11,47,67,46,40],thirti:30,extrem:[69,70,50],bob:30,rafael:30,reclaim:[0,38,55,56,53,60,62,64,66,52,69,39,71,73,74,75,41,76,22,77,78,24,8,27,80,81,9,44,10,25,45,91,33,84,79,1,15,83,89,70,36,37],macintosh:[50,30,87],mps_rank_t:[81,78,33,71,8],chalmer:30,semant:[31,6,55,40,15],refsetuniv:41,regardless:[28,49],prerequisit:[4,85],grunwald:[62,30],extra:[55,17,18,61,64,66,2,74,76,6,78,24,79,27,28,80,29,9,8,83,84,91,22],pentium:55,modul:[41,20,29,5,18,21,31,6,42,11,15,52,44,49,64,73,40,48,50],prefer:[57,6,24,33,4,17],reig:30,type_uniniti:83,visibl:[47,58,28],marker:[53,81,58,59,36,39,34],prompt:[53,89,15,24,71,8,4,28],prei:73,sigbu:[16,93],memori:[0,38,54,55,56,17,18,53,59,60,61,62,63,64,65,66,67,52,69,70,71,72,73,4,33,57,41,20,58,5,87,43,22,23,24,49,90,8,26,28,80,29,81,30,44,10,25,11,85,92,45,46,12,13,34,14,79,86,35,47,1,31,88,68,15,36,83,89,16,32,75,51,93,6,50,37],wherev:33,univers:[41,30],visit:[52,81,57,22,16,4,34,28],todai:[29,70,15],perl:[52,53,11,15],cmp_t:[86,25],live:[0,53,54,55,56,58,61,62,66,52,69,71,73,43,22,77,24,8,29,81,9,30,10,25,46,12,79,35,1,68,89,16],handler:[16,6,67,7,73,13,93,34],scope:[40,70,17,15],prev:83,reorder:83,unsaf:[89,70,28],idempot:13,afford:[41,29,17],peopl:[0,29,56,61,63,15,90,69,70,92],claus:5,brooksbi:[38,30,18,21,6,42,82,45,7,79,49,26,3,92,50],scholten:30,visual:[38,4,50,15,87],appel:[41,57,64,30,73],olivi:30,prototyp:[50,18,15],examin:[41,55,17,18,60,24,86,70,40,36,28,57],alexand:30,mps_pool_check_free_spac:1,effort:[10,61,64,28,73,50],easiest:45,behalf:29,fly:30,judi:92,graphic:[92,50,15,57],dissimilarli:58,poolam:[10,18],car:[16,36,30,32],prepar:[0,35,18,16,12,79,83],pretend:11,uniqu:[41,57,30,13,33,50],imper:15,descriptor:[53,6,79,49],minimum:[53,56,17,18,76,73,45,71,49,91,50],can:[0,38,54,55,56,17,18,53,59,60,61,62,64,65,66,67,52,69,39,71,73,4,33,57,41,58,5,21,43,6,77,75,24,49,90,8,27,87,28,29,81,9,30,10,25,11,45,12,91,13,34,79,86,35,47,1,42,88,68,15,83,76,89,16,82,32,40,70,93,36,50,37],inadequ:[70,11],findshortresrang:18,purpos:[53,56,57,61,70,2,4,74,13,5,42,6,8,28,29,30,44,49,12,22,40,34,15,32,93,36],laughter:13,traceabl:[6,79],cisc:62,boilerpl:40,strother:30,mps_arena_t:[0,58,59,47,2,74,76,22,78,8,27,28,80,81,9,82,45,34,84,86,35,89,91,93,36],encapsul:[86,6,73,66,70,71,25,28],stream:[53,57,10,31,49,69,36,16,79,25,4,13,28,51],predict:[29,76,35,17,18,43,62,11,59,58,70,91,56,83,74,28],winston:30,agent:41,limitreturn:[18,49],heard:29,critic:[83,20,56,17,30,42,10,61,64,48,45,16,32,40,13,65,36,51],abort:[31,13,16,36,32],tracesetempti:6,recycl:[52,53,56,17,58,61,62,64,69,70,71,1,41,20,22,23,24,79,28,81,11,88,15],mps_pf_xci6ll:87,unfortun:[29,11],occur:[0,53,55,56,58,59,61,64,66,67,68,69,70,71,73,33,24,28,10,11,46,40,86,83,36],verlag:30,alwai:[0,53,57,58,62,64,66,67,52,70,71,1,33,87,76,25,26,28,29,81,10,45,46,47,13,34,88,16,32,91,36,50],differenti:71,exit_cod:81,multipl:[38,52,55,58,53,59,60,1,65,66,68,69,70,73,83,41,18,42,6,8,28,29,44,45,46,12,40,84,86,15,89,93,36,51],instant:[80,53,28],mps_frame_t:39,reg_root:[81,36],mps_telemetry_intern:[13,69],write:[0,55,56,17,59,82,64,66,67,13,71,73,19,4,33,57,41,20,5,8,28,29,81,9,30,31,11,45,47,40,15,83,89,90,3,32,70,93,36,37],vital:[57,10,64,32,83,33],anyon:29,pure:[38,52,55,25],familiar:[41,36],parameter:50,predictor:30,controlalloc:[6,40],poolclassepvm:18,unlucki:89,product:[38,52,85,17,5,21,10,22,34,45,16,50,27,4,58,13,28],proc:[30,21],snc:[19,37,39,78,20],book:[92,11,50],csl:30,max:6,clone:30,make_t:25,usabl:28,jacqu:30,membership:[6,49],mad:30,"1993a":[67,71],mai:[0,38,54,55,56,17,58,53,59,61,62,64,66,67,52,69,39,2,73,4,74,33,57,42,76,22,77,78,24,49,8,27,28,80,29,81,9,30,10,25,11,46,12,91,13,34,84,79,86,35,47,71,93,31,88,68,15,36,83,89,16,32,40,70,1,6,50,37],underscor:47,allocat:42,data:[38,52,55,56,17,18,53,59,61,62,64,65,66,67,68,69,70,71,73,33,57,58,5,42,6,24,7,25,28,29,81,9,30,44,10,49,11,45,46,12,13,1,31,15,83,16,32,40,93,36,37],grow:[0,29,35,76,61,70,49],man:[61,18],mps_fmt_class_t:34,stress:[4,49],mps_arena_:[59,47],practic:[41,86,56,18,30,11,47,66,24,32,13,36,57],findshortresetrang:18,mpsio:[31,13],explicit:[53,55,57,29,11,15,45,40],mps_root_create_t:[81,36,25],pooltrivbufferinit:79,inform:[0,52,55,56,17,58,53,59,61,63,64,66,67,68,69,73,13,57,41,5,21,6,23,24,90,79,28,30,31,49,11,45,40,34,35,16,32],"switch":[17,25,15,36,32,4,27],preced:88,combin:[38,29,56,30,87,88,6,49,11,15,41,66,45,24,12,73,4,50,71],block:[0,38,54,55,56,57,58,53,59,60,61,62,64,66,52,69,39,2,73,74,83,41,20,43,6,77,78,24,49,25,27,28,80,29,81,9,44,10,8,11,45,46,12,91,13,34,84,86,35,47,71,31,88,15,36,76,89,16,32,70,1,22,50,37],finddelet:49,csd:30,callabl:6,talk:45,tbl:[86,25],approx:41,"_ts_":45,schwartz:[66,69,30],anticip:[29,73],softrefer:[70,71],approv:[5,49],ymmv:38,cutt:30,mps_fmt_destroi:[34,36],thr_o:93,size_t:[18,47,1,74,83,42,76,22,8,28,29,81,31,25,45,12,33,34,35,16,32,91,93,36,50],equip:30,still:[52,55,17,18,61,62,69,72,73,4,41,58,42,77,24,25,28,29,79,11,45,13,34,86,15,89,16,49],ieee:30,dynam:[52,29,55,56,58,30,6,62,88,89,64,65,68,69,70,15,40,61,71],"0x000000010006631f":16,conjunct:[55,50,42],mps_arena_start_collect:28,group:[92,50,15],thank:92,concis:[13,49],polici:[38,52,55,56,17,58,53,62,64,66,69,70,73,57,18,76,6,80,30,47,40,88,91,51,36,12],zendra:30,bekker:30,tort:5,window:[38,52,57,42,31,61,87,68,8,4,93,33,50],mail:[18,6,45,90,40,50],main:[29,81,55,56,57,30,88,61,49,69,47,67,24,16,70,71,73,40,36,50],message_o:0,confin:[33,11],non:[56,18,60,61,64,69,70,71,1,3,33,41,58,5,42,6,49,25,26,27,28,81,30,44,10,8,40,34,79,86,31,15,32,36],free_templ:1,recal:36,halt:[52,58],halv:69,mmqa:18,mps_arena_walk:45,cbsblocksiz:49,jame:30,alist:10,mayuseinlin:49,initi:[83,53,56,17,18,62,66,69,70,33,42,43,6,79,28,29,81,25,12,40,49,36,50],tucker:[92,30],therebi:[52,18],half:[69,18],superset:41,provision:41,discuss:[41,53,21,11,66,45,89,90,40,36,50],nor:[55,61,62,66,70,12,73],introduct:[38,20,79,36,40,18,21,6,44,85,23,45,7,50,49,26,3,4,33,41],critiqu:30,obj_scan:[77,36,34,32],term:[38,53,54,55,56,17,58,59,60,61,62,64,65,66,67,52,69,70,71,72,73,4,57,5,76,29,11,45,68],workload:30,name:[57,18,59,62,64,13,79,4,40,41,58,21,8,7,31,29,44,10,25,45,47,33,34,87,15,49,50],lewi:[30,15],perspect:[30,8],didn:[52,45,58,15],revert:41,type_vector:32,buckets_pool:25,separ:[54,56,17,18,59,61,62,47,67,70,71,4,33,41,6,24,25,28,29,11,45,12,40,84,49,91,50],mps_addr_return:82,massachusett:30,sigusr2:93,januari:[41,30],mps_fmt_put_fencepost_t:45,confid:[24,27,25],compil:[38,53,55,56,17,18,59,61,62,64,65,67,68,69,70,71,73,3,4,83,57,5,21,24,29,81,30,10,13,85,87,15,16,32,36,50],everyth:[81,13,36],domain:[29,15],replai:79,dialect:15,moher:30,replac:[53,59,8,15,34,45,77,25,40,36],individu:[86,56,18,6,46,73],continu:[38,29,62,56,58,18,88,32,11,15,66,69,24,7,64,25,49,36,28,71],lookasid:[67,69,58],dramat:[43,52],"0x00000001003f9b70":16,redistribut:5,replay:79,"0x00000001003f9bc8":16,significantli:[41,29,88,18],poolreadi:6,year:30,operand:[33,16],happen:[41,29,56,17,71,10,61,25,11,36,83,45,16,12,8,40,80,93,34,60],dispos:[34,15],conting:49,shown:[69,66,89,16,25,13,83],myformat:4,jackson:[92,30],space:[83,53,55,56,17,58,59,60,61,62,64,67,69,39,71,73,74,33,57,41,43,6,24,25,26,28,29,30,10,79,11,45,12,91,13,84,86,35,1,15,76,16,82,49,70,36,50],profit:5,protocolsomeclassguardian:40,rankfin:33,mps_cached_count:12,"0x7fff5fbff174":16,profil:[30,87,43,69,76,16,13],underwrit:[45,1],toolchain:[4,87],rational:[60,33,50,44],mps_arch_i4:87,mps_alloc_pattern_t:46,mps_arch_i6:87,mps_arena_expos:28,correct:[38,49,56,44,42,10,6,8,69,89,83,24,32,39,25,40,27,87,34,61],mps_arch_i3:[50,87],undead:[68,55,62],earlier:[0,55,70,57],"goto":[40,17,18],newsiz:49,thirdli:[6,15],million:[43,36],seventh:36,argv:[81,16],mps_message_t:[0,82,89,35,25],california:30,lab:30,carl:30,org:[4,15],"byte":[52,56,57,18,61,63,66,67,68,69,70,1,74,83,58,76,6,79,28,81,31,32,45,12,33,84,88,15,49,91,36],argc:[81,16],sigxfsz:[16,93],boehm:[52,29,81,56,57,30,64,89,15,92],care:[83,53,81,17,58,34,25,40,33],reusabl:40,kaufmann:30,wai:[83,17,18,61,64,66,69,71,73,4,40,41,5,21,6,77,24,8,28,29,81,10,25,11,45,46,33,86,31,42,88,15,89,16,36,50,37],mps_word_shift:[50,18,87],badli:[66,88,69,11,8],prescrib:70,frequenc:[24,12],synchron:[0,29,55,56,57,30,69,58,70,12,83,71],mps_size_t:[91,74,84],refus:[6,28],recov:[29,46],turn:[41,52,62,35,1,25,45,16,70,79,32,56,13,34],tlb:69,place:[57,61,64,69,70,71,73,83,76,6,8,28,29,81,25,11,13,34,86,35,15,89,16,36,50,37],unwis:45,principl:[41,50,30],imposs:64,frequent:[52,20,36,17,29,22,15,23,24,16,73,34,28],first:[0,52,56,17,18,53,60,61,62,64,66,70,1,19,4,74,40,57,20,58,87,43,6,23,24,25,26,28,80,30,8,82,45,12,13,34,86,35,88,15,83,76,16,49,91,93,36,50,37],oper:[0,38,55,56,17,18,53,61,64,65,66,67,52,69,70,71,73,4,33,57,41,49,58,5,42,76,6,23,24,7,8,28,80,29,81,9,30,10,25,11,45,12,13,34,86,47,87,88,15,83,16,32,93,36,50],findlast:49,suspend:[41,6,93,34,42],written:[38,55,56,17,18,69,71,1,13,41,6,8,29,31,11,40,88,15,77,49,92,36,50],directli:[52,81,55,57,5,21,61,89,15,65,83,24,7,71,73,40,13,33,50],subrang:18,carri:[86,73,58,32,89,79,25],onc:[30,29,62,56,17,18,45,8,15,41,47,38,70,12,64,25,33,83,40,28,71],arrai:[53,54,36,35,57,18,93,6,25,81,15,34,67,70,12,64,8,56,33,62,22],resultreturn:16,bufferempti:6,supernam:40,acquisit:89,act_on_range_high:18,fast:[38,29,55,35,17,30,76,49,88,83,58,70,32,40,56,13,62,36,18,57],symmetri:18,xci3gc:[4,87],fromlimit:18,ring:[6,56,33],mps_arena:[82,28],open:[30,20,17,18,53,31,25,77,15,38,89,49,8,4,5,28,37],predefin:[36,50],size:[52,53,54,55,56,17,18,59,60,62,64,65,66,68,70,71,72,73,74,13,57,58,42,43,6,78,49,8,27,28,29,81,9,44,10,25,11,85,45,46,12,33,34,84,79,86,35,47,1,31,87,88,15,36,83,76,16,32,40,91,93,22,50,37],mps_build_sc:87,given:[41,29,54,55,1,58,59,31,61,49,82,81,64,66,45,12,25,40,13,36],unlink:69,capac:[0,29,35,43,22,27,36,61],pad1_:[16,36],fmt:[9,22,1,78,2,8,27,34],anderson:92,gen_param:35,necessarili:[56,33,69,36,16,40,13,28],draft:[45,6,50],yip:[61,30],circl:15,handbook:[92,11,30],white:[41,52,54,56,17,59,6,64,66,69,70,79,26,92,34,57],conveni:[0,29,81,18,10,6,32,31,15,41,66,49,25,40,36],chilimbi:30,mps_mv_size:74,mps_pool_create_v:80,mps_fmt_scan_t:[81,17,36,70,32,34],demer:[52,30],mps_res_io:10,especi:[29,55,17,59,73,64,45,69,71,49],resetrang:18,copi:[52,53,56,17,18,59,61,62,64,66,67,68,69,70,2,73,19,4,83,57,41,20,5,43,6,24,25,26,27,29,9,30,10,45,46,47,40,34,35,71,31,15,36,32,1,22,37],specifi:[0,38,56,18,53,1,64,52,2,73,74,6,77,78,8,27,80,29,81,9,10,25,45,46,12,22,13,34,79,35,89,49,91,36,37],ebi:30,blacklist:57,weak_array_t:8,enclos:[53,56,47],mostli:[17,18,61,62,47,39,2,19,4,20,43,6,25,27,29,9,30,10,11,45,46,22,33,35,15,16,32,70,36,37],floppi:[61,57],domin:29,holder:5,than:[0,52,55,56,17,18,53,59,60,61,62,64,66,67,69,39,71,73,40,57,41,5,43,6,49,8,28,29,81,10,25,11,45,46,12,91,33,34,79,86,35,47,1,31,88,15,83,76,16,32,70,93,36,50,37],serv:[76,6],wide:[29,55,35,76,22,62,15,24],amcfix:17,subexpress:83,kolodn:30,balanc:[61,58],mpsavm:[47,36,28],were:[83,53,55,56,18,62,66,69,39,2,13,87,43,22,25,29,81,45,12,40,34,86,35,15,49,93,36],posit:[80,81,86,58,18,25,47,34,32,33,36],server:[61,30,15],transport:[69,70],seri:[66,53,13,55,24],pre:4,analysi:[0,41,81,18,30,59,22,36,58,71,13,34],sai:[41,29,31,61,73,11,34,83,69,70,71,25,4,33],look:[0,53,56,17,18,60,13,71,40,6,24,25,30,10,8,11,83,34,86,77,16,32,50,37],obj_empti:[16,36],anywher:29,dash:25,"1992a":70,nickola:30,"1992c":[59,69],"20g":16,deliv:[15,21],ravenbrook:[38,4,90,5,92],fp_pattern:45,repack:30,sat:[13,16],buffercr:79,engin:[41,15],techniqu:[38,52,55,56,17,58,60,61,62,66,67,70,71,57,41,20,43,6,23,24,29,30,11,40,88,15,32],advic:[85,16,12,28],scanstat:[26,33],destroi:[80,29,81,55,35,18,59,79,82,15,36,83,76,70,12,64,1,13,34,28,71],note:[0,52,55,56,17,18,53,59,61,64,66,67,69,39,71,72,4,13,57,41,58,87,43,22,77,24,49,25,27,28,80,29,81,9,30,44,10,8,45,46,12,91,33,34,79,86,35,47,31,88,15,83,89,32,70,93,36,50,37],ideal:[9,43,61,11,64,71,40,17],take:[83,53,56,17,18,62,64,69,70,2,74,40,41,49,58,76,6,78,24,7,25,27,28,80,29,81,9,10,8,11,45,12,22,13,84,79,86,35,88,15,89,16,32,91,36,50,37],advis:[91,5,49],"0x000000010001287d":16,interior:[55,56,57,64,32],unfix:[51,32],noth:[41,35,42,33,1,67,50,25,13,36,28,37],wirf:30,begin:[41,53,56,18,21,10,79,88,64,47,45,66,69,70,50,60,4,83,28],sure:[29,54,45,16,70,32,36,50],tospac:[53,70,69,56,60],norman:[59,30],trace:[52,55,56,17,58,61,62,64,66,69,70,71,33,57,41,6,23,24,79,28,81,30,44,82,13,34,16,32,36],normal:[0,54,56,17,47,70,71,73,83,42,76,24,7,8,28,25,45,33,86,13,89,40,50],buffer:[83,9,18,31,6,69,64,67,58,70,79,91,33,93,13,57],friedman:[59,30],enter:[16,70,58,73],compress:[70,56],clearer:33,eclect:15,poollo:18,egc:[4,87],wire:[61,73],tract:[6,17,44],pair:[49,55,57,18,87,25,16,32,4,36],neatli:29,paulo:30,mps_alloc_pattern_ramp:46,spector:92,perceiv:[0,15],synonym:[56,57,18,15,70,73],proud:13,quantiti:[52,29,57,61,63,65,69,73],runtim:[30,17,15,36],pattern:[20,55,35,58,29,88,62,11,86,53,45,46,39,71,1,83,51],senior:92,mrg:[26,82],review:[30,17,18,36],mrb:59,uncontrol:[31,13],messageempti:82,mps_amc_appli:22,show:[29,43,6,24,16,25,13,40],mps_mvff_free_siz:91,maint:50,infant:[52,64,30],merit:45,concurr:[38,53,56,57,30,66,89,71,73,40],overlarg:12,permiss:[83,34,15],hack:18,threshold:6,obj_delet:[25,86,8],cbschangesizemethod:49,ground:71,slot:[53,40,83,8],onli:[38,52,54,55,56,57,18,59,60,61,62,64,65,66,68,69,39,71,73,13,41,49,5,21,76,6,77,78,24,7,8,27,28,80,29,81,9,10,25,82,45,46,12,33,34,79,86,47,1,31,42,88,15,36,83,89,16,32,40,70,93,22,50,37],slow:[0,29,17,62,69,15,45,16,70,12,28],slop:45,fenc:[45,53],pointer:[0,53,54,55,56,17,18,59,60,61,1,64,65,66,68,69,70,71,73,83,57,41,49,58,87,6,77,78,24,7,8,27,28,80,29,81,9,30,31,25,11,45,12,33,34,84,79,86,35,47,88,15,36,89,16,32,93,22,37],"0x7fff5fbfef2c":16,transact:30,activ:[41,29,55,56,58,42,6,61,15,53,68,70,64,62,36,28],behind:[41,13,56,2,25],z80:18,luc:30,black:[41,52,56,57,44,59,64,66,69,70,79,34],btfindshort:18,sigusr1:93,petrank:30,analys:35,wilei:30,overwritten:[59,24,16,71],moreau:30,nearli:[83,61,17,64,36],variou:[20,81,36,17,18,21,29,49,61,15,23,45,32,4,33,50],get:[0,56,17,18,60,67,70,73,4,83,41,43,22,8,28,29,10,25,82,45,12,40,85,35,88,16,32,36,50],genera:30,mung:50,clang:[38,4,16,87],secondari:[50,30],cannot:[0,54,55,56,18,64,65,66,68,69,70,71,33,41,58,6,24,49,25,27,28,29,10,8,11,45,46,47,40,88,83,89,32,36,50,37],murali:30,freestor:[53,65],eventrep:79,mps_io_writ:31,requir:[0,52,55,56,57,18,53,59,60,61,1,64,66,69,13,71,73,40,58,42,6,24,49,8,28,80,29,81,44,10,25,11,45,33,34,79,86,31,21,88,15,83,89,90,82,32,70,93,36,50,37],ssb:70,reveal:[16,58,25],discontigu:58,arenaclamp:6,seldom:67,borrow:45,yield:73,hash_t:[86,25],joker:13,tillotson:92,"0x7fff5fbfef28":16,roger:30,though:[17,18,61,89,15,68,16,50,73,34,28],scott:30,where:[83,53,54,55,56,17,18,60,61,62,64,67,69,13,71,73,4,40,49,58,21,6,48,24,7,8,28,29,81,82,25,11,45,12,33,34,86,35,47,42,88,16,32,70,93,36,50],summari:[41,6,79,17,49],kernel:71,ams_alloc:10,highest:[71,18],lasttractbas:6,mps_formatted_objects_stepper_t:[70,34],closurep:49,symtab_root:[36,25],zaphod:18,tape:57,lnc:30,concern:[41,29,59,61,11,69,16,71,49,36],infinit:61,checkl:7,detect:[55,58,62,64,66,71,1,83,77,8,28,29,81,44,25,11,45,12,40,89,16,49,36,50,37],"0x1003cb958":16,parent:[60,64,7,39,33,40],mps_sac_flush:12,mps_telemetry_filenam:[31,13],checkd:7,enumer:[33,70,49],"0x000000010007b14a":16,label:[13,69,47,51],hist:[41,18,21,6,42,82,45,7,79,49,26,3,40,50],palimpsest:73,enough:[58,29,88,36,57,18,53,76,10,49,11,34,16,12,31,13,62,33,28],between:[0,52,54,55,56,17,53,61,64,65,66,67,70,71,73,4,83,87,76,6,24,25,28,29,30,31,49,11,45,12,22,40,79,35,47,89,32,36,50],"import":[83,29,81,17,18,43,32,69,15,36,47,24,7,70,64,25,13,49,33,71],checku:7,across:[56,64,49,91,4,50],dybvig:[71,30],spars:[54,58,64,71,73,15],august:30,amort:49,mps_arena_extend:28,mps_build_:50,comp:15,tarditi:30,style:[40,79,17,15,18],cheap:[52,55,88],blame:29,cycl:[52,53,56,58,43,8,64,66,69,70,15,73,28],sparc:[4,18,87],spare:[53,44,6,11,70,28],inflex:[69,11],uncondition:89,shortag:[93,11],come:[36,18,6,49,11,61,15,34,67,55,64,8,13,4,28],caar:16,reaction:13,unrel:16,mono:15,region:[29,58,30,53,79,15,16,70,71,32,40],mps_var_df:50,contract:[6,5],retir:50,audienc:13,saguaro:56,coucaud:30,mani:[38,53,54,55,56,17,18,61,62,64,65,67,70,71,73,13,57,41,58,24,25,28,29,81,31,11,12,40,86,88,15,83,89,16,92,36,50,37],unstructur:9,mann:[6,92],bitset:[33,57],nettl:[71,30],bufferpool:10,undocu:[91,93],color:[52,56,57,59,64,66,69,70],overview:[38,20,85,41,18,21,82,6,42,11,23,45,44,49,3,40,36,50],inspir:15,period:[29,55,24,46,70,36,28],dispatch:[49,36,17,15,25],mps_class_mv_debug:[74,1],duti:15,exploit:[76,22,17],qin:30,anti:40,exclud:[31,4,57,18],sentinel:6,constant:[81,56,18,87,10,49,64,45,16,47,31,50,71],poll:[0,6,44,25],poli:40,damag:[61,5],ultim:6,clarif:50,coupl:[29,36],resort:25,invert:[64,18,15,73],feldt:92,invers:[52,18],fixabl:79,mark:[52,53,56,17,18,60,61,62,64,66,68,69,70,73,19,57,41,20,24,25,26,27,30,10,79,13,35,1,15,92,37],klauser:30,workshop:[30,87],sparecommitexceed:6,weak_table_:8,scannabl:[41,58,70,25,36,37],string_equalp:25,"0x0000000100002fe4":16,parser:36,mps_arena_spare_commit:[6,70,28],"000ae0397334e0a0":13,derefer:1,thousand:43,resolut:[31,13],andrew:[92,30],catastroph:70,mps_sac_class_limit:12,compactli:[67,70,57],ironpython:15,lectur:[13,30],former:[41,53,66,71,21],mps_arena_spare_commit_limit:[70,28],sound:[11,18],"char":[83,86,35,57,31,25,36,16,32,13,33],"0x000000010000261b":16,thesi:30,"0x000000010002686d":16,mps_align_t:[47,91,33,34,58],diagnost:4,poolfre:[33,79],epdlpoolclass:40,antoni:30,thisclasscoerc:40,wasmark:26,trick:36,cast:[53,59,31,47,69,32,33,40],invok:[29,56,58,18,49,45,89,7,32,40,13,34],mps_ap_alloc_pattern_end:[46,71],mps_pool_debug_option_:[45,1],"na\u00efv":[89,25],amcscan:16,invoc:[56,58,47,70,49,40],mps_message_gc_not_condemned_s:35,addroffset:33,findshortresetrangehigh:18,advantag:[29,57,42,76,88,11,64,45,70,71,25],stdout:31,metric:63,henc:[52,29,54,56,73,69,83,7,71,25,40,49,34,79],mps_scan_begin:[81,17,8,32,47,36,77,25,34],worri:[29,17,11,15,25,83],destin:[31,86,28],cluster:18,"0x1003f9b98":16,cobol:[11,15],eras:15,cbsiteratelarg:49,"0x7fff5fbff830":16,mps_ss:17,nearbi:[62,16,11],smalltalk:[52,53,55,30,11,15,71],sos9sc:87,develop:[38,18,69,4,5,21,43,6,7,27,28,30,44,10,11,45,40,85,15,49,50,37],"0x1003f9b58":16,alphabet:18,stepper:[81,10,22,67,70,34],lippgc:87,same:[83,53,54,55,56,17,18,61,62,47,66,67,68,39,71,73,13,57,41,58,42,76,22,77,78,49,8,26,27,28,29,81,30,10,25,45,46,12,33,34,84,86,35,31,87,89,32,40,91,36,50,37],check:[0,53,55,17,18,59,39,79,1,19,4,33,41,20,42,6,78,7,25,28,80,29,30,44,10,49,45,12,40,87,88,83,89,16,32,36],binari:[53,55,17,5,21,31,6,42,88,66,50,13,28,57],epoch:[31,6,33],mps_arena_class_t:[58,28],pad:[53,79,36,56,9,1,59,60,22,8,85,64,34,45,16,2,73,27,25,78],protsync:50,sos8gc:87,circularli:70,knuth:70,document:[38,17,18,59,61,47,69,39,3,4,74,33,41,5,21,6,7,79,26,28,80,29,30,44,10,82,45,46,40,42,15,83,49,70,93,50],ensuresomeclass:40,week:15,exhaust:[76,34],finish:[0,29,9,60,6,25,11,64,41,45,52,16,79,73,13,49,40,28,57],typesett:15,poolfix:17,nest:[46,56],assist:[70,13,16,69,64],driver:50,someon:[29,47],treadmil:[59,69,56,30],event_param:13,driven:[66,30],capabl:[83,13,70,71,15],mps_root_create_table_mask:81,mps_addr_pool:[80,28],improv:[55,18,62,67,71,4,43,22,24,31,27,29,9,30,10,8,45,35,88,15,76,90,91,50],extern:[53,54,55,56,57,18,64,70,71,73,41,24,79,28,29,44,11,82,40,88,89,49,91,50],postpon:[36,25],mps_fmt_skip_t:[70,34,36],tradition:66,appropri:[55,56,57,18,61,64,70,71,73,41,58,21,76,7,79,28,81,25,40,34,88,89,36,37],port_:[36,25],macro:[83,17,18,21,60,6,87,47,45,7,12,32,40,33,36,50,51],attrscan:33,justifi:[58,18,49],w3i6mv:[4,87],without:[0,38,54,55,17,18,53,59,61,64,66,52,70,71,4,40,5,6,24,27,28,80,29,81,9,30,10,49,11,45,46,12,33,34,85,35,47,15,83,89,32],evict:56,temptat:32,model:[52,30,15],branquart:[30,15],dereferenc:[33,83,15],commitlimit:6,table_rehash:[86,25],tobt:18,gdr:79,warranti:5,printezi:30,execut:[38,54,55,56,17,18,61,73,69,1,57,58,5,42,43,8,31,79,40,21,15,93],among:[29,15,45],unflush:13,rest:[93,34,36],halfwai:49,mps_build_lc:87,gdb:[13,16,28],doligez:[30,15,73],kill:29,tracequantum:16,aspect:[56,21,43,87,11,70,49,28],touch:[10,83,86,60],rankexact:33,speed:[29,56,18,76,11,15,70,12,32,13,83,37],mps_build_ll:87,concentr:[29,50,21],death:[52,76,30,25],autocad:52,miscellan:[29,31,23],issetrang:18,mmap:[59,61,71,50],except:[38,57,18,61,47,66,2,73,58,5,42,6,64,79,29,81,49,82,45,12,13,34,88,15,32,93,22,50,71],littl:[41,29,18,6,62,11,15,45,12,79,61,50],desktop:70,"0x1003cbe50":16,instrument:50,setenv:4,treatment:56,exercis:[16,69,30,18,49],notori:15,role:[53,36],doctorat:30,pitman:92,disrupt:30,splayfindfirst:49,nielsen:30,hypothesi:[52,22,64],read:[0,57,18,62,47,66,69,70,71,73,13,41,42,6,8,28,81,9,31,25,82,45,33,34,15,89,16,93],outermost:46,amc:[20,35,17,10,22,47,16,46,2,79,19,27,36,37],mop:45,mov:8,vivek:30,reassembl:32,sac_o:12,anchovi:49,insist:40,sobalvarro:[56,30,15],mod:50,intel:[55,57,87],distil:15,patrick:30,robson:30,integ:[53,81,36,57,18,87,31,8,34,66,68,7,70,58,25,13,33,86],shrink:[76,6,57,49],benefit:[41,29,53,6,45,70,8,40,61],weakest:71,either:[38,56,57,18,61,62,64,66,70,71,4,41,5,42,76,6,24,25,26,28,80,29,81,82,8,11,45,12,33,34,86,47,88,15,89,16,49,36,50],larchant:30,output:[10,31,47,16,70,49,4,13],downward:18,inter:[56,22,64,66,24,71,34],manag:[0,38,54,55,56,17,18,53,59,60,61,62,63,75,64,65,66,67,52,69,39,2,72,73,74,33,57,41,20,58,5,76,6,23,78,24,49,8,26,27,84,28,80,29,81,9,30,44,82,25,11,45,12,91,13,34,14,79,86,35,47,71,93,88,68,15,36,83,89,16,32,40,70,92,1,22,50,37],fulfil:6,arena_o:28,cbsfinish:49,minsiz:49,free_:79,poolawl:18,thermodynam:30,legitim:32,interlock:86,splayroot:49,journei:36,cruz:30,assert_mpsi:50,has_reservoir_permit:12,constitut:[36,18],resfail:[33,49],basic:[41,29,57,6,73,11,15,45,69,70,50,25,91,40,36,28,71],slice:[41,35],poolmv2:49,thereund:45,definit:[81,55,17,18,44,6,79,15,45,7,47,49,40,50],average_s:[91,74],moon:[92,30,15],pioneer:15,moor:[30,18,42],noop:50,"0x00000001003f9a58":16,mps_fix2:[53,81,17,8,32,36,77,25,34],mps_fix1:[53,81,17,8,32,36,77,25,34],virtualalloc:50,sus8gc:87,blocksiz:49,obj_pad:[34,36],immun:[56,64],compris:[6,71,18,42],power:[55,57,18,87,8,88,15,66,24,58,70,47,25,33],event_typ:13,sixth:36,garbag:[0,38,54,55,56,17,58,53,59,60,61,62,64,66,52,69,70,71,73,4,74,13,57,41,20,43,22,23,78,24,25,27,28,80,29,81,9,30,10,8,11,92,46,33,34,84,85,86,35,68,15,36,83,76,89,16,91,51,93,6,37],inspect:[18,64,16,3,34,28],indira:30,"0x00007fff9050ae2a":16,broken:[53,56,57,70,71,79,26],great:[55,62,17],fulli:[56,47,7,70,79,40],regexp:10,referr:64,s7m6mw:87,w3almv:87,src:50,central:[70,56],greatli:[29,4,69,88],mps_mvt_size:76,arena_class_vm:28,joyner:[61,30],drag:30,acm:30,arenafin:82,degre:[45,47],wolf:30,stand:[66,29,24],wold:1,act:[41,61,79,56,73],johnston:[53,54,30,66,69,70,91,92],luck:[10,83,17],processor:[38,55,56,17,58,61,62,47,65,66,68,69,70,71,73,83,57,87,8,81,31,64,13,15,50],mps_message_type_en:[0,89,25],"001b":13,routin:[53,29,82,45],effici:[52,38,17,18,61,62,64,66,68,69,39,71,74,83,57,41,58,76,6,24,8,27,28,29,81,9,30,11,45,91,22,33,88,49,70,36],"001a":13,shaw:30,"00000001003fd000":13,wordindex:18,terminolog:[86,61,66,70,73,40,51],surviv:[41,52,55,35,17,58,61,11,15,68,73,36],vigil:17,fence_templ:1,btrangessam:18,artur:30,nikla:30,your:[38,54,17,67,13,4,83,43,31,28,29,81,10,25,46,33,85,89,16,32,36,37],stare:8,fmtdy:17,certainli:29,log:[33,31,4,13,49],unflip:82,area:[41,29,55,56,57,58,53,60,61,62,11,64,65,70,49,28],aren:[38,17,5,25,33,93,83,18],mps_class_snc:78,poolclassmrg:82,overwrit:[53,55,57,18,29,59,61,45,68,16,70,58,1,83],checkabl:6,strip:32,start:[0,53,54,56,17,18,64,69,39,71,4,74,13,57,41,58,6,78,24,25,28,81,32,46,47,40,79,35,88,15,16,49,70,37,93,36,51],mps_os_li:87,"00000001003fd328":13,interfac:[0,38,55,17,18,53,59,60,82,64,67,52,69,2,3,19,74,33,57,20,58,42,76,6,7,8,26,27,28,29,81,9,30,44,10,49,11,45,12,13,48,84,79,86,47,71,31,87,88,15,36,83,89,32,40,91,93,22,50,51],low:[41,29,35,18,44,59,31,8,15,66,45,32,70,73,91,13,87,49,34,28],lot:[41,29,86,35,17,6,49,11,15,45,24,73],resum:93,strictli:[52,50,18,57],obj_skip:[16,34,36],repetit:[11,32],enorm:[45,92],longword:[55,62],morrison:30,programmat:3,conclud:29,tomasev:30,regard:[24,55,56,61],alain:[30,15],aslr:16,amongst:86,allegro:15,procedur:[56,58,44,25,15,89,70,71,32,36,50,37],obj_t:[83,81,86,8,25,77,16,32,13,36],illus:[0,61,70],trickier:36,untag:8,faster:[0,29,61,11,15,52,70,12,32,33,83],notat:18,amcscannailedonc:16,table_ref:[86,25],dirti:[55,56],sbrk:[59,70,57],possibl:[38,52,54,55,17,18,61,62,64,70,71,33,57,41,49,58,5,42,76,24,7,25,28,29,81,10,8,45,12,40,34,79,86,15,83,16,32,36,50,37],"default":[0,10,31,32,36,16,25,40,4,13,50],"__mode":15,poolalloc:[33,79],nearest:70,unusu:[61,28,15],manuel:30,embed:[30,21,31,49,15,64,32,36],deadlock:[6,62,89,42],powerless:38,pool_superclass:40,gone:28,addradd:33,creat:[0,38,56,18,53,59,60,61,1,47,66,69,70,2,73,74,13,41,76,6,77,78,8,27,28,80,29,81,9,25,82,45,12,22,40,34,84,85,86,35,71,15,83,89,49,91,93,36,50,51],conundrum:36,pseudo:17,deep:7,strongli:[52,30,73,15,66,70,71,25,91],intro:[41,18,21,6,45,49,3,40,33,50],decreas:[29,88,57,71],file:[53,17,61,47,65,70,71,3,4,5,21,24,25,28,29,44,31,13,15,89,16,36,50],type_str:[16,25],ecoop98:30,proport:[52,29,35,17,43,61,49,65,24,32,36],eliot:[92,30],tv_sec:31,fill:[83,81,18,31,6,62,36,45,79,73,91,33,34,61],hit:[41,57,61,62,65,16,71,73,93],again:[41,52,86,57,18,53,31,61,73,11,89,83,45,24,25,40,36],beyond:[81,17,15,28,4,34,50],fput:[29,36,31],"0x1003f9ba8":16,hybrid:[52,61,49,58,44],reduct:[41,30],idiom:70,"0x00000001003fb000":16,valid:[53,56,58,61,65,71,18,6,7,79,28,80,81,8,25,11,45,83,35,16,49,50],compet:[64,28],copyright:5,epdldebugpoolclassstruct:40,you:[0,38,17,53,59,47,66,52,39,71,4,13,41,5,43,22,77,90,78,24,49,25,27,28,80,29,81,9,10,8,11,45,46,12,91,33,34,86,35,31,83,89,16,32,70,93,36,50,37],zvi:30,coerceclass:40,freestand:31,fork:56,discours:56,btre:18,genuin:[29,36,32],sigmod:30,config_var_df:50,sequenc:[81,56,18,88,6,1,69,16,39,32,40,33,34],symbol:[83,81,18,30,31,85,15,16,47,25,13,36,50,51],gnumak:4,lueh:30,wirth:15,mps_class_mvt:76,briefli:[88,24,11,17],cbsfindlargest:49,peak:[17,28,36],nrevers:30,pool:[38,52,55,56,17,18,53,59,61,1,64,67,39,2,73,19,4,74,33,57,41,20,58,5,87,43,22,77,48,78,49,90,8,26,27,28,80,81,9,30,44,10,25,82,85,45,12,91,13,34,84,79,35,47,36,83,76,89,16,32,40,70,51,93,6,37],reduc:[41,29,55,56,17,30,59,88,6,62,82,64,52,24,50,32,65,28,71],bulk:62,"0x1003f9b48":16,symbol_pool:13,directori:[4,50],readership:[18,44,6,21,45,49,40],descript:[0,79,36,18,10,32,81,15,34,83,86,70,64,73,13,93,33,71],unseg:70,contraven:40,tricki:[33,32],inevit:18,mimic:1,mass:61,potenti:[52,81,17,18,42,31,24,58,36],appl:[13,16,30,15,65],mps_chain_destroi:[35,36],degrad:[29,9,49],cpu:[52,29,55,87,61,62,11,4,28],scm:[43,16],represent:[52,53,86,17,30,60,6,64,66,67,68,69,70,28,49,61,18,71],all:[0,38,54,55,56,17,18,53,60,61,62,64,65,66,52,69,39,71,73,4,33,57,41,49,58,5,42,43,6,77,24,7,8,26,28,80,29,81,10,25,11,45,46,12,91,13,34,84,79,86,35,47,1,87,15,36,83,76,89,16,82,32,40,70,93,22,50,37],caleb:30,consider:[29,17,30,53,61,3,48,50],illustr:[69,17,28,36],lack:[31,61,15],ala:18,scalar:[67,62,70,34,58],extrapol:36,attrincr_wb:33,abil:[41,57,11,15,45,50],ptw:45,follow:[0,56,18,61,64,69,39,71,40,41,5,21,6,90,24,49,25,29,81,10,8,11,46,12,22,33,34,79,47,42,88,15,83,13,16,32,70,36],disk:[29,57,30,61,62,65,67,70,71,73],ruinou:43,resok:[33,40,18,79],abid:6,mps_ap_alloc_pattern_reset:46,accesswrit:33,ron:30,tracefix:[6,13,79],codasyl:15,mps_message_gc_condemned_s:35,cbsdelet:49,program:[0,38,55,56,17,58,53,59,61,62,64,65,66,67,52,69,39,71,73,3,4,83,57,5,21,43,22,77,24,8,27,28,80,29,81,30,10,25,11,46,12,13,34,86,35,47,1,31,88,68,15,76,89,16,32,70,93,36,50,37],those:[53,55,56,17,18,60,62,64,69,70,71,73,83,57,41,42,6,7,31,28,29,10,79,45,13,88,77,36],"10992f000":13,segclass:40,swallow:73,neglig:5,introduc:[41,29,81,60,6,11,64,70,15,71],xiaohan:30,attrbuf:33,straightforward:[50,25],replic:[67,61,71,30,73],far:[41,29,17,18,42,59,11,64,16,25,33,36,28],mps_shift_t:33,mpm:[41,33,17,18,79],fat:50,util:[13,51,15,49],mpw:50,mps_class_amc:[22,36],verb:[61,18],mechan:[0,52,54,55,56,57,58,53,59,60,61,62,64,66,69,70,71,73,83,20,42,6,25,28,80,44,45,40,38,21,15,89,49,93],quantifi:30,veri:[38,53,17,18,60,61,62,64,69,39,71,73,83,57,41,58,43,6,24,8,29,81,44,10,25,11,12,91,40,84,88,15,76,82,49,70,36,50],rebuild:13,gmake:4,distant:[29,16],"0x0000000100005ff5":16,lisp:[52,29,56,58,30,61,11,64,65,66,67,69,70,15,13],rescommit_limit:[6,33],list:[0,52,54,55,56,57,18,53,61,67,69,70,71,83,5,42,24,90,8,28,80,29,30,10,45,12,13,48,87,88,15,16,49,91,36,50,51],mps_free:[38,80,9,84,76,22,83,78,12,8,91,27,74,34,61,37],arenapark:6,emul:[38,8],reset_mask:13,adjust:[55,59,62,64,45,24,69,70,79],mps_lib_get_stderr:31,stderr:[29,16,32,36,31],small:[38,52,54,56,17,18,60,61,62,64,69,70,71,19,41,20,58,43,6,24,28,29,9,32,11,45,12,83,84,35,88,15,49,36],tear:[31,36],kemeni:15,compareless:33,lockreleaserecurs:42,synergi:45,inherit_class:40,tupl:58,ref_io:32,computation:67,ten:[43,53,13,69,56],ensuredebugclass:45,addrset:33,pun:[51,69,36,47,32],past:[38,29,56,17,18,34,66,36,37],rate:[30,6,62,15,65,66,69,70,61],pressur:71,design:[38,52,17,18,53,61,62,79,1,3,40,41,20,58,21,6,24,7,25,26,28,29,30,44,31,8,11,45,49,33,42,15,83,89,90,82,32,93,36,50,37],pass:[0,53,56,17,18,61,64,65,66,68,70,79,1,13,57,41,22,31,26,28,80,81,9,30,10,49,11,45,12,40,34,86,35,33,15,83,77,16,32,91,93,36,50,37],further:[0,29,81,86,56,17,6,68,83,24,32,13,34,28],suboptim:[35,36],mps_chain_creat:[35,36],mps_arena_class_vm:[36,28],cursor:17,what:[0,38,56,17,18,53,71,33,41,58,43,6,48,24,8,28,29,81,10,79,11,45,12,40,34,85,35,88,83,16,32,93,36,50],stood:29,sub:[40,57,18,49],richard:[30,18,21,6,42,82,45,7,79,49,26,3,33,92,50],clock:[0,56,31,6,16,70,25],diag:50,sum:[53,81,58,76,61,88,66,91,74,34,28],mps_pool_class_mv_debug:45,abl:[53,81,56,18,21,71,42,11,68,15,36,45,24,16,64,49,93,34,28,37],overload:70,"0x000000010002b399":16,delet:[0,29,55,8,77,15,66,24,49,70,25,13,33,38],abbrevi:[70,62,63,25],version:[0,17,18,47,39,3,74,13,41,20,58,42,6,78,25,27,87,28,29,81,44,49,45,91,33,34,86,21,15,83,16,32,70,93,36,50],regnesentr:30,intersect:49,consecut:[76,53,58],mps_build_mw:87,mps_build_mv:[50,87],runfinalizersonexit:89,"public":[52,53,54,55,56,57,58,59,60,61,62,64,66,67,68,69,70,71,73,4,29,10,47,83,15],contrast:[54,70,61,28,73],sizeisalign:10,millisecond:28,hasn:[52,13],full:[29,16,18,53,46,87,69,15,65,89,7,12,25,13,36,28],themselv:[29,55,18,66,89,33,40],berkelei:[30,5],variat:[88,24,70,61,71],sanctifi:33,sophist:[76,24,50],client_is_wait:28,behaviour:[83,42,10,6,44,47,67,45,89,49,32,40,13],modular:[10,61,45,15,29],shouldn:[41,17,36],procur:5,box:[56,57,64,66,68,71],omiss:50,solari:[4,87],excess:15,free_siz:1,method:[83,53,55,56,17,59,64,70,2,73,4,40,57,41,21,6,77,78,49,25,26,27,81,9,30,44,10,8,85,45,47,22,33,34,79,35,71,15,89,16,32,51,36,50,37],standard:[80,29,83,30,21,31,6,32,63,61,15,47,50,24,69,64,25,40,4,13,28],modifi:[53,35,18,21,6,15,45,24,70,64,56,61],pointeradd:33,valu:[0,53,54,55,56,17,18,61,62,64,66,67,68,69,70,71,73,13,57,49,58,87,6,24,7,8,26,28,29,81,10,25,12,33,34,79,86,47,1,31,15,83,77,16,32,40,91,36],arena:[0,38,56,17,18,71,61,1,47,67,68,70,2,73,74,13,41,20,58,43,6,78,8,27,28,80,81,9,44,10,25,82,45,12,22,33,34,84,85,86,35,76,89,16,49,40,91,93,36,51],search:[53,18,30,60,88,24,70,49,13,57],ahead:56,garwick:30,fwd:[36,34,25],fstruct:36,removeadjacentrang:49,mac:[4,30,65],prior:[0,13,86,15,49],amount:[41,29,55,35,17,18,43,6,88,64,76,24,70,50,8,91,33,74,36,28,71],calder:30,pick:[40,68,30,25],action:[41,29,55,53,79,66,45,89,39,71,25,70,33,83,28],pauillac:42,mps_addr_fmt:[34,28],magnitud:[67,61,62,70],via:[83,61,1,47,69,71,73,74,13,5,76,6,78,7,8,27,28,80,29,81,9,10,79,11,12,22,40,84,86,31,15,82,49,91,93,36],depart:30,declin:46,primit:[29,24,56,64,15],transit:41,"0x1003fb130":16,reservoirpermit:40,readili:[31,24],filenam:13,mps_telemetry_get:13,inappropri:24,mps_io_destroi:31,heurist:[59,56,15,73],demonstr:13,gratuit:18,decrement:[66,24,62,71],coercion:40,dangl:[41,61,55,11,1],select:[41,18,30,10,6,65,67,71,73,13,50,57],gudeman:[66,68,69,57,30],hexadecim:13,sparecommit:6,"0x1003cb970":16,distinct:[53,57,21,59,87,11,64,67,70,17],findlongresetrangehigh:18,etc:[57,59,61,11,90,70,4,13,50],regist:[38,53,56,17,58,61,62,64,66,69,70,71,74,13,76,22,77,78,25,27,28,81,9,8,32,82,33,84,79,15,83,89,49,91,37,93,36,51],two:[0,53,54,55,56,57,18,61,1,64,66,67,69,70,2,73,4,33,41,58,21,22,24,49,8,27,28,29,81,30,10,25,11,45,46,12,13,84,79,86,35,47,31,42,88,15,36,83,16,32,91,6,50,71],coverag:18,workstat:[64,15],rhel:38,azaguri:[56,30],taken:[35,6,11,69,24,7,70,25,33,28],zorn:[29,56,57,30,15,92],minor:0,more:[0,38,56,17,18,53,59,60,61,62,64,66,67,52,69,39,2,73,4,33,57,41,58,5,42,76,22,77,23,24,8,28,80,29,81,30,10,25,11,45,46,12,91,13,34,86,47,31,68,15,36,83,89,16,49,40,70,93,6,50,71],mps_reserv:[10,47,36,45,16,71,25,83,34],flat:[17,15],mellon:30,desir:[29,70,57,45],mps_alloc_dbg_v:45,hundr:[43,69,56],brisl:[49,18,21],mps_sac_creat:[70,12],flag:[24,55,82],stick:62,particular:[0,52,56,17,18,53,59,61,62,64,69,70,71,73,83,58,5,42,76,6,24,25,28,29,49,45,46,47,13,34,79,86,15,32,92,22,50],known:[38,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,52,69,70,71,73,33,5,76,6,75,24,25,29,79,11,47,40,86,88,68,15,83,89,93,36],beown:42,cach:[55,56,17,18,61,62,65,66,69,70,71,74,20,58,76,6,78,24,8,27,80,9,30,44,11,12,84,91,37,22,51],canterburi:30,none:[41,86,18,10,6,83,50,8,40,13,34,28,37],mps_class_mvff:91,methodolog:30,operator_:36,damien:30,outlin:49,dev:[4,71],histori:[41,20,30,18,21,6,42,82,61,15,45,44,7,79,49,26,3,13,40,50],rootstruct:33,remain:[41,53,79,56,9,88,73,69,89,36,66,24,49,70,50,25,13,83,33,28],den:[66,29,69,30],learn:[38,29,15],abandon:64,motiv:[58,15],btfindresrangehigh:18,dee:55,def:[6,50,33,18,49],stubborn:16,omit:[7,16],rootvar:33,bogu:26,useabl:6,scan:[38,52,54,55,56,17,18,53,71,62,64,67,69,70,2,73,74,13,57,41,20,58,43,22,77,48,78,24,8,27,28,81,9,30,44,10,25,85,45,47,33,34,84,79,88,83,76,89,16,32,91,51,93,36,37],rodriguez:30,registr:[56,25,51,93,73],share:[56,59,61,67,69,70,4,13,42,6,24,25,28,29,30,11,45,40,15,16,32,93],accept:[35,61,79,36,69,12,32,56,40,34,50,37],pessim:76,prehistori:6,unreli:[29,11],"0x0000000100001947":16,partner:15,phrase:67,struggl:16,strlen:25,resmemori:[33,49],condemn:[0,41,35,17,44,79,69,64,66,53,52,16,70,25,26,56],uncheck:7,huge:[29,62,70,65],cours:[52,31,6,36,83,34,28],untru:50,awkward:8,divid:[52,53,54,56,57,18,31,61,88,11,66,69,24,58,70,33,36],rather:[41,29,55,56,18,53,59,10,6,62,15,47,76,52,16,64,13,83,36],anoth:[0,52,54,56,57,18,53,59,64,65,69,70,71,73,33,41,24,8,28,80,29,81,25,32,11,46,12,40,86,35,47,88,15,83,89,16,49,93,36],comfort:43,nwper96:30,commonli:[41,53,55,57,58,10,61,62,65,66,67,70,73],rapport:30,narrowli:52,daconta:[30,15],heck:30,compactifi:[56,30],aaron:33,reject:[29,32],strong:[41,17,18,64,66,89,69,70,15,25,71],simpl:[56,17,18,69,70,71,4,57,58,42,76,24,25,30,31,8,84,88,15,16,32,37,36,50,2],mps_fmt_create_auto_head:34,pieper:[92,30],survivor:[22,35],arenaseri:6,resourc:[0,53,58,59,61,64,65,69,39,79,4,33,76,31,28,29,10,25,11,40,34,89,49,50],referenc:[52,53,55,56,58,60,61,62,67,70,73,83,22,78,24,7,8,27,9,33,89,16,36],algebra:[67,70,58],mps_fmt_copy_t:34,variant:[9,60,22,8,15,36,78,70,71,32,27,34,37],reflect:[57,30],okai:[26,33],type_t:[83,86,36,25],sos8gp:87,rovner:30,varianc:34,associ:[0,29,79,86,83,58,42,6,49,89,15,66,68,69,12,64,25,13,61,50],unreserv:79,cmpf:25,circumst:[80,86,56,59,61,89,24,49,36,28],"short":[41,79,62,17,18,43,49,67,70,12,73,33,71],confus:[33,70,36,58],mpseventtxt:13,ambigu:[54,56,17,58,61,68,70,71,73,83,41,6,78,8,26,27,28,81,30,25,22,33,89,32,37,36,51],caus:[53,17,59,60,61,1,64,67,69,70,71,73,57,41,5,76,6,24,25,28,80,29,30,10,11,46,12,89,16,49,91,36,51],callback:[49,44],chiefli:52,leroi:[30,73],issubclasspoli:40,began:13,target_check_deep:7,rotat:60,reservoir:[45,13],root_o:81,soon:[41,81,55,56,17,73,89,64,36,24,32,4,34,28],mps_lib_memset:[31,33],reachabl:[52,53,56,57,58,61,62,64,66,68,69,70,71,73,22,78,24,8,27,28,29,81,9,30,25,11,83,79,15,89,32,36],cook:30,scientist:15,through:[41,54,40,17,18,6,79,15,36,66,45,89,12,64,49,26,13,33],cbsalign:49,word_act:18,hierarchi:[56,61,62,65,66,70,71,73,40],coerceinst:40,exponenti:52,suffer:[29,62,53],kistruck:92,tracescansegr:16,paramet:[83,56,17,18,59,64,13,79,40,76,22,78,31,27,81,9,44,10,8,45,12,33,34,47,15,49,91,93,36,50],"0x1003f9b70":16,typedef:[83,86,35,18,1,6,8,69,47,36,49,12,25,40,34,50],make_bucket:25,special_:36,fri4gc:87,mps_pool_class_epdr_debug:45,late:[80,61,25],harmless:[45,46],classofpoli:40,pend:[79,18,49],rapidli:[43,15],exchang:90,stephen:[92,30],tractstruct:6,might:[52,53,55,56,17,18,59,60,61,64,66,67,13,71,73,40,41,43,77,24,49,31,28,80,29,81,25,10,8,45,12,33,34,86,35,47,88,83,89,16,32,70,93,36,50,37],alter:[39,50],hyperspec:[56,15],finer:71,wouldn:[24,11,25],good:[38,41,81,17,5,57,43,31,62,88,89,83,52,70,13,36,28,18],"return":[0,38,56,17,18,53,61,82,64,69,39,2,74,13,49,58,42,43,6,77,78,24,7,25,27,28,80,29,81,9,10,8,11,46,12,91,33,34,84,79,86,35,47,31,88,36,83,76,89,16,32,40,70,93,22,71],amelior:45,mps_ap_t:[58,8,78,46,39,25,83,36],timestamp:13,pollut:41,entry_interpret:16,inria:[30,42],symbol_t:83,framework:[41,20,30,15,44],swizzl:30,mps_rank_ambig:[81,70,36,58,71],arenaalloc:6,compound:[29,50],abi:87,arbitr:61,detach:79,complain:45,bigger:[43,56,34,18],feet:28,eventu:[0,41,11,15,45],redesign:15,weak_buckets_ap:25,osarct:[4,87],datastructur:[6,18,49],refresh:[55,70,49],mysteri:[29,55,15],easili:[38,86,58,5,62,15,45,24,33],achiev:[81,55,76,6,64,24,70,61],ecru:[59,54],tracescan:79,type_pad:[16,36],"12th":30,found:[17,18,73,70,1,13,57,43,79,80,29,81,25,11,45,12,83,34,86,49,91,36],difficult:[29,55,58,53,61,89,15,24,16],out:[38,53,55,56,17,18,59,60,61,62,64,65,67,69,39,79,73,13,41,58,5,6,49,8,26,28,29,10,25,11,45,12,33,34,86,35,47,1,15,83,89,16,32,70,36],mps_telemetry_label:13,clamp:[6,56,68,28,73],interleav:[38,53,61,56,2],weight:[55,18,30,66,24,71,57],"0x0000000100074106":16,arenaread:82,lua:15,hard:[41,29,81,57,61,11,24,16,70,71,83,36],idea:[41,56,44,15,45,89,70,25,13,40],ifip:30,realli:[41,29,80,53,6,45,32],heavi:29,linkag:50,cbsfinddeletelow:49,expect:[52,58,62,73,41,18,21,43,79,28,29,81,46,12,33,34,35,42,15,76,16,36],mps_stack_scan_ambig:[83,81,36,71],longjmp:34,operation:66,thing:[29,86,17,30,82,6,50,11,45,89,7,12,40,33,36,28,71],todo:25,event:[0,29,36,5,44,10,31,49,11,34,86,69,89,16,79,25,4,13,28,51],"0x00000001003f9c90":16,ftp:4,mps_sac_alloc:12,safeti:[51,93,86,42],uncollect:24,robert:30,mnemon:[33,62,70],publish:[52,90],research:[11,30,15],handl:[0,54,17,61,47,65,66,39,71,73,83,41,42,77,78,8,81,31,25,11,45,12,33,34,15,89,16,32,70,93,50,51],bibop:[71,17,15,57],resparam:33,mps_arena_cr:[6,36,28],fmt_ah:34,arenareleas:6,cbsiteratemethod:49,benjamin:[29,92,30],difficulti:[0,73],qualifi:[62,15],mps_lib_get_eof:31,proxi:53,uncommit:28,advanc:[20,85,57,30,29,60,8,11,15,25],mmu:[67,61,73],guess:16,pair_:[16,36,32],controlpoolstruct:6,wakel:30,mps_ap_creat:[83,9,76,22,8,78,25,91,27,36],reason:[17,58,64,70,71,73,83,18,5,6,49,79,28,29,81,10,8,33,34,31,88,15,89,32,91,37],base:[55,17,18,62,64,65,32,70,71,4,13,57,41,58,87,6,78,8,27,28,81,9,30,25,69,47,40,34,79,86,15,36,77,16,49,91,22,50,37],isymtab:36,believ:[55,69],suddenli:13,ask:[41,20,36,56,29,82,15,23,12,80,34,28,37],classnamestruct:40,canon:40,earliest:15,mps_alloc:[80,9,84,78,71,10,22,8,47,36,83,45,76,12,73,91,27,74,34,61,37],lag:30,basi:[41,24,18],mps_label_t:[13,47],director:92,kept:[41,88,55,56,42,10,25,82,77,24,49,71,32,36,50],mpsc:47,thread:[38,56,17,58,61,62,66,69,71,33,57,41,20,42,6,28,29,81,9,30,12,40,34,85,86,83,16,93,36,51],mpsa:47,worth:[29,70],vararg:45,"_mps_fix2":17,mpsi:[10,16],mymp:4,perhap:[41,18,10,61,16,25,28],perman:[71,64],cbsstruct:49,lifetim:[52,54,55,17,30,59,60,22,62,11,15,65,76,70,64,25,36,61,71],entry_string_append:16,hasseg:6,simultan:[38,29,25,56,73],major:[41,29,55,56,5,22,88,15,45,52,61,28],dont:16,obviou:[45,6,33,18],upper:[76,47,50],feel:[45,36],articl:36,number:[0,52,55,56,17,18,53,59,61,62,66,67,68,69,70,2,73,4,13,57,58,42,43,6,25,27,28,29,81,9,30,10,49,82,12,33,79,35,31,88,15,76,16,32,40,36,50,71],placehold:36,globals_scan:36,mps_res_fail:[10,89,46,32],pop:[55,58,78,70,39,84],mps_message_typ:0,done:[0,52,56,57,61,70,73,4,41,25,28,29,31,82,45,13,86,35,15,16,49,36,50],uninterest:[17,49],stdlib:29,stabl:[76,30],implementor:[52,40],miss:[41,55,30,6,69,64,65,66,16,70,61],"000ae03973352375":13,fanci:45,gpl:5,differ:[38,54,17,18,61,64,66,67,69,70,3,4,57,41,5,43,6,25,28,29,30,10,49,11,45,12,33,34,86,35,47,88,76,16,32,91,36,50,37],fuller:11,script:[4,15],mps_t_ulongest:87,gpf:52,luiz:15,least:[0,53,56,17,18,60,61,47,66,69,70,73,83,58,6,79,28,29,49,45,12,13,84,86,35,32,36],mps_message_queue_typ:[0,61,25],checkpoint:21,paint:64,stori:[6,36],reclam:[66,89,30],statement:[83,47],relink:69,aver:[45,82,49],scheme:[0,52,56,57,58,64,66,70,71,43,25,81,30,11,13,85,86,15,89,16,32,36,51],supernamestruct:40,store:[0,38,54,55,56,17,18,53,59,61,62,64,65,66,67,69,70,71,73,33,57,41,58,42,6,24,25,28,29,81,30,82,49,11,45,12,40,34,84,47,88,15,83,89,32,93,36,37],eql:67,lii3gc:[4,87],alleg:32,assign:[83,29,58,18,61,88,15,66,69,12,33,13],parc:30,option:[1,6,49,45,70,79,27,91,13,74,36,28],table_delet:25,mps_thread_reg:[81,69,93,36],"0x7":32,similarli:[32,12,18,25],park:[80,81,56,6,68,73,22,28],pari:30,illeg:[79,39,1],part:[52,53,55,56,17,18,61,62,47,66,67,68,69,70,71,73,33,57,41,58,5,6,24,8,28,29,81,10,79,11,45,40,1,31,88,15,83,16,49,92,36,50],"0x1003fe820":16,mps_lib_fil:[31,49],fall:[52,86,30,76,10,15,24,12,33,71],mps_message_pol:[0,61],ncc:30,std:18,kind:[0,53,56,17,47,59,10,61,32,15,66,45,16,70,50,73,60,36,28,37],grep:13,doubli:[55,8,66,69,70,25,83,51],mipspro:87,cyclic:[38,29,55,56,30,15,71],remot:[22,78,71,8,27,37],remov:[0,41,79,55,6,73,81,15,36,45,24,49,70,47,32,34,50,71],dant:30,prot_bar:50,niklau:15,ringstruct:33,reus:[41,80,55,76,88,6,11,15,24,16,70,71,40],architect:92,sigcheck:10,arrang:[38,41,57,53,79,17],stale:[38,86,56,6,73,25,26,28,51],unalign:[81,57,58,61,68,79,91,83],typic:[52,53,54,55,56,57,18,59,61,62,64,66,67,68,69,39,71,73,13,41,58,5,87,76,6,24,8,28,29,81,10,79,11,12,40,34,86,47,31,88,15,83,49,70,36],grei:[41,52,79,44],randomli:11,cleaner:[52,11],comput:[41,29,86,56,57,30,6,25,11,15,24,16,70,71,73,61],"0b00":17,deleg:32,grarup:30,packag:[4,55,71,15],overran:16,perri:30,succeed:[10,33,36],dedic:[93,15],"null":[29,81,86,6,8,47,36,45,77,16,70,79,25,83,49,34],commonplac:57,imagin:[45,13],wilson:[52,29,54,56,57,30,53,60,62,11,64,66,58,70,88],xref:41,brad:30,relationship:[45,40,7,15,67],thingcheck:7,mps_ld_:[33,86,25],ancillari:29,odd:56,lin:30,violat:[52,57,10,61,73,64,66,89,70,71,49,33],mps_res_param:[10,12],align_up:36,accessor:[40,49],count_max:18,build:[38,20,85,56,17,44,46,15,36,67,16,70,4,13,50],mps_fix:[34,32],"00000001003ff000":13,analogu:69,brace:40,ecmascript:15,splai:[45,49,44],mktemp:13,pipelin:70,distribut:[38,52,55,35,5,30,43,62,15,66,24,64,71],alignof:36,unsur:[68,58],kai:30,previou:[60,53,17,42,10,79,88,89,16,70,73,13],reach:[0,53,55,56,61,73,11,24,49,71,25,33],mixtur:[53,8,32,47,15,25],backtrac:[10,16],crash:[89,11,28],most:[38,52,56,17,18,60,61,62,47,65,66,69,70,71,73,4,83,57,41,58,43,6,24,7,8,28,29,81,10,25,11,46,12,22,33,86,31,88,15,89,16,32,92,93,36,37],plai:30,buckets_skip:25,plan:[30,37],moss:[92,30,73],alpha:[4,72,87],splat:[8,25,77,66,89,70,1],getrusag:31,appear:[38,29,86,56,57,82,61,73,69,64,16,47,25,40,13,49,36,50],bug:[38,29,55,53,10,31,88,11,15,16,64,73,13,83,28],filesystem:50,weak_table_t:8,reg_scan:81,cover:[41,81,62,11,47,70,32,83,36,28],recherch:30,destruct:[29,79],dimension:[70,15],quadword:[55,72],ext:50,getter:6,abnorm:[13,11],clean:[40,55,15,73],mpscawl:8,addr_io:45,blend:15,microsoft:[38,4,50,15,87],iwooo:30,think:[83,81,15,45,24,12,33,13],"0x000000010000d75f":16,summer:30,"0x0000000100005e30":16,pooltriv:79,xcode:4,memorandum:30,eq_hash:[86,25],faq:[29,15],session:[28,25],particularli:[29,55,56,18,11,64,68,69,73,40],cdr:[16,36,32],fine:[61,16,89],find:[0,38,55,56,17,18,53,59,62,52,69,70,71,4,13,57,41,6,24,49,25,28,29,81,30,8,45,40,48,86,35,88,32,36,37],leewai:32,impact:50,buckets_fmt_:25,dosser:30,coerc:40,pretti:17,writer:15,solut:[29,54,44,6,49,11,15,45,24,73,4,36],"0x0000000100008ca2":16,peculiar:71,ambig:41,rangessam:18,tag_mask:81,templat:[45,1],factor:[29,61,69],unobtrus:[29,30],iec:[31,47,30],pooldebugmixinstruct:45,writef:33,boulder:30,remedi:73,poolamc:16,unus:[29,56,57,18,58,61,88,16,70,28,1,34,50],behavior:[29,56,30,11,15,70],"__file__":45,express:[30,16,83,18,5,58,61,32,88,15,47,7,64,25,40,4,87,33,50],cheaper:[59,29,61,57,53],allen:30,nativ:[71,87],mainten:[40,50,49],fastest:[70,83,56,32],liabl:[13,5],cgi:15,cbsfindfirst:49,him:29,obligatori:40,morgan:30,napier88:30,whenev:[81,86,18,21,59,15,66,24,7,33,36],someclassstruct:40,synthes:30,"0x1003f9b68":16,"0x100001b80":16,mps_build_gp:87,common:[53,54,55,56,57,58,60,61,62,64,66,69,70,73,83,6,23,24,29,10,49,11,40,34,88,15,77,16,32,93,36,50,51],mps_chain_t:[22,36,35,2,27],fuzzi:11,unmaintain:15,"0x0000000100068050":16,sac:12,crl:30,tr99:30,"0x1003f9b88":16,set:[52,53,54,56,17,18,59,61,62,64,66,67,69,39,71,76,4,40,57,41,58,42,43,6,24,25,26,28,29,81,30,44,31,49,12,91,33,34,79,86,35,15,83,13,16,32,70,50],art:[61,15],fputc:31,btcreat:18,buildsi:50,"0x1003f9b80":16,extant:78,vinc:30,"00000001078c85b8":13,mutabl:[61,64,42],seg:[41,10,6,16,13,33,40],isfinalpool:6,see:[0,38,54,55,56,17,18,53,59,60,61,62,63,64,65,66,67,52,69,39,2,72,73,3,4,74,33,57,41,49,58,21,43,6,77,75,78,24,7,8,27,28,80,29,81,9,10,25,82,45,47,91,13,34,84,79,86,35,71,93,31,42,88,68,15,36,83,76,89,16,32,40,70,1,22,50,37],ierusalimschi:15,undergradu:15,arg:[80,40,83,28],reserv:[56,17,58,59,61,47,67,68,70,71,33,57,5,76,79,28,29,81,10,12,83,36],"1003fd000":13,arm:57,analog:[31,61,28],barn:[92,50,30],"_win32":50,hess:30,expert:[29,92,11,37],misalign:[61,68],someth:[41,29,81,17,10,6,82,15,45,12,79,33,50],particip:79,struct:[83,81,86,35,1,59,31,6,8,82,47,36,49,12,25,40,33,34,50],weakli:[8,15,66,70,71,73],"case":[0,38,56,17,58,53,59,64,52,39,71,4,13,87,43,6,24,49,25,27,28,29,81,30,10,8,82,45,46,12,91,33,34,79,86,47,15,83,76,89,16,32,40,70,93,36,50],won:[41,17,6,11,70,12,83,36,71],mutex:42,amalgam:4,experi:[29,50,90,36,30],type_link:83,altern:[80,53,58,30,31,25,12,49,83,28,71],signatur:[6,7,40,18],mpsevent:13,chain_o:35,disadvantag:[24,69,11,36,57],numer:[68,15,8],complement:29,sole:67,isol:49,mps_ap_destroi:[83,36],res_v:[83,12],incident:5,matthia:30,stroustrup:[29,15],valuabl:92,resresourc:33,distinguish:[52,53,56,17,22,34,66,68,69,36,57],mps_ld_add:[86,25],classnam:40,"1003ff000":13,mps_class_am:27,popul:[76,12,15,18],water:57,cryptic:79,last:[41,29,55,35,17,18,6,49,88,68,16,70,25,40,36,86],delimit:[81,34,32],linuxthread:[93,42],retent:70,hint:[29,56,58,46,12,35,74,36],alon:71,algol:[56,11,30,15],isomorph:69,xleroi:42,aver_and_check:50,context:[56,58,42,89,15,36,24,70,49,83,34,50],forgotten:16,oopsla97:30,mps_res_ok:[17,47,71,1,89,31,28,80,81,25,10,8,46,12,83,34,35,77,16,32,93,36],maclisp:[57,30],fermin:30,whole:[41,52,79,1,17,18,73,15,66,58,50,25,27,83,28],elsevi:30,ecma:15,load:[29,17,71,57,62,15,70,64,4,13,28,51],songworm:30,simpli:[29,56,58,18,42,31,11,53,45,66,46,70,12,49,33,40,28,71],elliot:30,point:[0,38,56,17,58,53,59,61,1,64,66,52,69,39,71,73,74,13,57,41,42,43,6,77,78,24,25,27,28,80,29,81,9,10,8,45,46,12,91,33,34,84,86,35,47,31,68,15,36,83,76,89,16,32,70,51,93,22,37],instanti:[45,6,49],schedul:[0,62,35,9,30,43,31,22,8,61,89,46,58,25,13,27,28,51],hudson:[56,30],sweep:[20,35,30,18,1,57,10,56,62,15,24,70,79,60,19,27,61,37],arbitrarili:[12,36],header:[53,56,57,59,62,64,65,69,70,71,3,4,22,78,8,27,9,49,47,34,32,37,36,50,51],uniniti:[83,36],hangov:18,church:16,lar:[92,30],mistak:[83,16,12,58],gavin:[92,7,30,49],poolclassam:18,coincid:45,simpler:[0,29,36],topla:30,prot_:50,xci3ll:[4,87],stamp:[31,13],help:[29,17,53,61,1,16,32,40,13,92,36,28],devic:[61,11,58,73],due:[38,41,56,53,59,61,79,15,65,76,89,70,71,73,83],empti:[0,41,57,18,88,82,52,33,36],destructor:[29,55,56,30,53,15],clocks_per_sec:31,arenapol:[6,16],newcom:25,arenapok:82,txt:13,threaten:[69,56,30],devis:[61,69],obj_u:36,strategi:[41,56,58,30,42,45,24,70],anthoni:92,invis:[45,8],modern:[29,17,58,61,11,15,65,67,24,73,36],versa:[41,6,25,15,8],gavinm:[33,49],"0x0000000100067ca1":16,fire:[45,1],clariti:[10,33,81],imag:[29,70,71,18],ada:53,consequenti:5,unnecessarili:[70,25],gap:[45,65,34,36],fund:6,understand:[11,17,30,25],func:12,weak_array_find_depend:8,cbsdescrib:49,chatter:[0,51],vulner:[29,37],henriksson:30,mergerang:49,strictest:52,"0x1003f9b78":16,mpscmvt:76,solid:27,typecheck:7,straight:[45,17],batch:15,durat:[41,55,58,15,70,34,28],"while":[0,55,61,64,69,70,73,24,8,28,80,29,81,25,11,45,83,15,77,16,32,36,50],unifi:45,smart:[70,30,15,71],abov:[80,29,36,17,5,6,49,11,34,83,50,24,39,12,8,4,13,18,57],guido:15,fun:[18,6,82,45,7,33,50],mps_root_t:[81,36,71],loos:[52,70,57,15],loop:[53,86,56,17,18,76,89,24,25,83,36,28],pack:[57,34,36],propag:[40,17,36],malloc:[38,29,57,58,6,11,15,36,61],untag_s:25,clinger:30,readi:[40,6,36,79],rip:15,willi:30,itself:[55,56,17,64,65,66,68,70,71,73,4,13,42,6,7,25,29,11,45,12,40,86,21,89,16,32],costli:[52,61,62],virtu:60,limit:[0,55,56,17,18,59,61,62,70,71,13,57,5,8,6,24,25,28,81,44,10,32,11,12,40,34,35,33,15,83,76,77,49,92,36,50],arenar:6,pedagog:[33,79],chase:[57,30],weakref:15,yuasa:30,mps_sac_fre:12,tobas:18,minim:[41,18,30,67,61,15,45,69,12,40,36,50],belong:[0,38,56,58,53,39,71,73,74,76,6,78,25,27,28,80,81,9,8,91,12,22,83,34,84,86,35,32,70,93,36,37],shorten:50,x64:4,shorter:[83,36],stefanov:30,decod:[17,58,71,4,13,51],mps_res_t:[17,39,71,1,74,76,22,77,78,25,27,28,80,81,9,10,8,82,45,46,12,83,34,84,35,31,89,16,32,91,93,36,2],varp:36,sqlite3:4,mps_bool_t:[0,80,86,25,47,45,12,32,91,83,34,28],conflict:6,higher:[53,81,31,6,64,15,36],vmcreat:13,sigxcpu:93,lie:56,optim:[29,81,62,56,17,30,53,6,32,89,67,68,12,85,25,4,36,28],target_check_shallow:7,wherea:[56,61,39,67],pretenur:30,amd:87,mps_pf_w3i6mv:87,moment:[33,82,25],arenacreatevm:13,temporari:[45,58,30],user:[0,59,67,43,31,6,61,11,15,45,64,79,8,13,40,28],bartlett:[61,70,30,15],robust:[29,55,11,18,91],yuan:30,transitori:49,recent:[53,81,56,17,58,60,6,62,39,73],sunpro:[4,87],travers:[29,6,55],task:[29,59,61,11,64,15,32,36],net:15,equival:[52,53,22,32,88,49,40,33,4],older:[52,29,54,56,87,60,61,34,24,70,71,73,36],entri:[54,86,17,18,71,6,25,11,15,64,8,92,93,37],mps_pf_xci3ll:87,yehudai:30,spent:[61,28],diwan:30,person:30,mps_lib_memcmp:[31,33],epdlpoolclassstruct:40,expens:[41,29,54,55,56,57,53,61,70],arenacommitlimit:6,cedar:53,johan:15,insidepol:6,spend:[0,29,56,61,11,69,28,50],poolclassawl:18,propos:[29,45,49,30,44],explan:[41,29],construct:[29,55,56,18,11,36,40,34,50],"000ae0397334df9f":13,buckets_scan:25,epcor:[45,49,18,21],table_:[86,36,25],obscur:[12,57],"0x00000001003fb148":16,relianc:47,shape:56,mysql:5,love:37,fflush:31,simm:55,stoutamir:92,site:[29,90,53],isfwd:[34,25],cup:28,scenario:[40,83],restructuredtext:[18,21,6,42,82,45,7,79,49,26,3,50],theoret:[29,56],failnextmethod:40,eager:[58,49],mps_message_type_gc_start:[0,61,35],"0x10012a000":16,appli:[41,81,17,5,61,64,66,45,70,12,79,83,36,50],snap:[26,69,70],input:[52,58,10,47,89,70,25,13,28],unlik:[56,17,15,70,36,84],subsequ:[53,55,56,29,49,28],btresrang:18,useless:13,indentifi:69,subroutin:56,xcodebuild:4,march:30,obsolet:[36,87,34,25],format:[38,53,54,56,17,58,59,62,64,69,70,2,73,4,74,13,57,41,20,76,22,48,78,1,25,27,28,29,81,9,10,8,85,45,33,34,84,79,71,15,83,16,32,91,51,36,37],big:[41,57,43,11,70,28,84],single_act:18,mps_class_ams_debug:[27,1],"0x1003f9bb8":16,alias:[40,17],mps_arena_reserv:28,cierniak:30,insert:[45,83,49,51,73],bit:[38,53,55,56,17,18,59,61,62,64,66,69,71,72,73,4,13,57,41,20,58,87,6,24,49,8,81,30,44,25,45,33,34,79,86,32,36,50],characterist:[66,53,76],formal:15,xcodeproj:4,lost:[45,83,18,15],semi:[53,56,57,30,29,61,69,58,70,49],rossum:15,signal:[16,70,1,13,93,34,51],resolv:[29,33,69],manifest:16,heart:[53,56,57,79,70,71,32,26],collect:[0,38,54,55,56,17,58,53,59,60,61,82,64,66,52,69,39,71,73,74,33,57,41,20,87,43,6,23,78,24,25,26,27,28,29,81,9,30,44,10,8,11,92,46,91,13,34,84,85,86,35,31,68,15,36,83,76,89,16,70,51,93,22,37],princip:[15,49],pithi:79,popular:[15,73],eec:30,mps_pool_class_epdl_debug:45,setrang:18,mps_gen_param_:[35,36],often:[52,53,55,56,57,18,60,61,62,63,64,66,67,69,70,71,73,58,6,24,79,29,10,11,88,15,16,32,36],comparegreat:33,spring:70,creation:[62,56,17,58,49,82,45,89,39,25,13,36,28,57],some:[0,38,54,55,56,17,18,53,59,61,62,64,65,66,67,52,69,70,71,73,4,13,57,41,58,42,6,77,24,25,28,80,29,81,30,44,10,49,11,45,46,12,33,34,79,86,35,47,31,88,68,15,83,89,16,32,40,93,36,37],back:[76,86,73,57,58,21,59,82,61,25,11,67,45,44,49,70,71,32,33,83,28],understood:71,strongest:71,unspecifi:[71,18],sampl:[31,45],"0x1003faf30":16,instal:[29,4,13,85],scienc:[11,30],sizeof:[83,49,79,86,35,57,18,87,8,32,47,77,16,12,25,40,91,33,36],surpris:29,obj_fwd:[34,36],teco:15,scale:[29,61,15,66,70,33],laru:30,predefinit:50,mps_message_finalization_ref:[89,82,25],mps_awl_find_dependent_t:8,per:[17,30,31,61,11,15,49,13,93,83,18],block_on_client_with_timeout:28,substitut:[7,5,32],mathemat:[66,18],larg:[52,53,54,55,17,18,61,62,64,65,66,69,70,71,73,57,58,43,6,24,8,29,9,30,11,45,46,12,33,34,88,15,49,91],undon:82,leftmost:[58,18],prod:50,reproduc:[29,16,5,53],worst:[52,53,30,58,88,66,89,8,91],mps_message_discard:[0,89,35,25],link_t:83,machin:[55,57,58,61,62,64,66,69,70,71,73,13,87,29,81,30,10,11,83,33,15,50],mps_var_:50,run:[0,38,55,17,18,53,59,61,62,64,65,69,70,71,4,13,57,41,58,5,43,6,24,25,28,29,30,10,8,11,33,34,85,86,15,83,89,16,32,40,93,36,50,51],mps_fmt_t:[9,78,10,22,36,45,2,8,27,34],epdrpoolclassstruct:40,nmake:[4,50],pietro:30,step:[38,17,18,32,69,83,45,24,16,25,27,36],convent:[20,54,55,18,29,59,64,69,47,73,40,50,51],mps_ap:16,squeez:65,santa:30,not_condemn:[0,16,25],mps_pool_walk:45,from:[0,38,54,55,56,17,18,53,59,60,61,62,64,66,67,52,69,39,71,73,3,4,74,33,57,41,49,58,5,21,43,22,77,78,24,7,8,26,27,87,28,80,29,81,9,30,10,25,11,45,46,12,91,13,34,84,79,86,47,1,31,42,88,68,15,36,83,76,89,82,32,40,70,93,6,50,37],subtract:[0,29,17,58,70,32,34],impos:[89,55,39,18],mps_class_mvff_debug:[91,1],proven:[53,68],constraint:[89,55,35,58,44,60,6,11,68,24,69,12,25,34,28],coexist:73,proce:[38,41,86,17,10,64,69,32,91,28],preclud:37,prove:[52,58,59,89,68,69,79,36],lieberman:[54,30],vmalloc:30,idl:[35,28,51],mean_siz:76,candi:50,alfr:30,slot_high:91,abstractarenaclass:6,"r\u00f6jemo":30,uncach:6,cutoff:46,frob:50,real:[41,29,30,61,82,15,67,24,70,12,64,73,33,71],colorado:30,primarili:[40,6,62,17,79],mps_ap_create_v:83,digraph:54,intl:30,within:[38,53,55,56,17,18,61,69,70,71,73,24,7,28,80,29,81,10,49,45,33,34,32,36,50,37],programat:34,toft:[30,15,71],myseg:40,rankweak:33,mps_message_clock:0,obj_:36,contributor:5,lesson:43,fopen:31,trampolin:93,occupi:[41,18,61,64,68,16,71,28],inclus:[76,36],span:[38,53],carnegi:30,mythic:58,fledg:7,megabyt:[52,61,69,36,57],"0xfdfdfdfd":45,"long":[0,38,17,18,47,66,52,70,71,73,83,41,58,87,76,22,24,25,28,29,9,30,31,32,82,12,33,86,35,16,49,36,50],custom:[81,49,30,15,25],adjac:[53,55,56,57,29,88,12,72,49],reserve_depth:76,arithmet:33,includ:[38,52,54,55,56,57,18,53,71,60,61,64,66,67,69,70,2,4,74,13,58,5,87,76,6,78,24,7,31,25,27,28,29,9,30,10,8,11,45,47,33,34,84,79,86,88,15,36,16,49,40,91,22,50,37],suit:[71,15],forward:[83,53,85,56,9,18,78,59,22,8,64,36,45,70,2,73,40,27,34,57],nepot:60,superpag:[70,65],busytrac:6,cbss:49,properli:[31,45,70,12,13,28],obj_unus:25,repeatedli:[53,76,62,45,70,28],subgraph:70,subsidiari:[45,49],mpscmf:84,teach:15,decomposit:18,navig:11,dgc:55,link:[53,55,56,66,69,70,71,73,19,4,83,20,21,25,29,30,8,11,13,15,77,3,49,37,50,51],translat:[17,30,44,6,69,64,67,45,58,73,61],atom:[41,29,58,30,42,6,62,40,93,83],cbsblock:49,line:[41,49,17,25,15,83,45,16,79,8,4,13,50],mitig:29,mminfo:[18,21,6,42,82,45,7,79,49,26,3,50],ismm:30,sdk:4,info:41,concaten:21,consist:[52,55,56,17,18,61,1,72,73,33,41,21,24,87,28,80,81,10,45,40,34,85,42,83,16,49,36,50],confusingli:[71,15],caller:[59,82,64,79,36,50],pkg_add:4,adequ:28,tightli:36,unlock:40,mps_roots_stepper_t:81,highlight:[83,30,25],mps_defin:[89,82,25],btsize:18,similar:[52,53,54,55,56,57,58,61,62,64,65,66,67,68,69,70,71,73,33,5,76,6,25,28,81,31,82,40,15,83,36],clear:[29,86,57,18,59,73,66,16,70,71,25,13,32,33],impl:[18,21,6,42,45,7,79,49,40,33,50],w3i3mv:[4,33,87],caught:93,event_label:13,obviat:45,mps_end:45,command:[0,10,15,16,4,13,50],doesn:[41,29,86,56,17,18,43,6,25,61,83,24,70,12,8,40,33,22,28,37],repres:[83,53,54,56,57,18,62,47,65,67,68,69,70,71,73,33,58,6,25,29,81,30,49,45,13,34,86,89,32,36],poolasm:79,proper:29,incomplet:[21,59,31,42,82,47,45,7,26,3,33],septemb:[45,30],dconfig_var_df:50,aggrav:29,flexowrit:13,getthreadcontext:38,singli:49,phantom:[66,70,71,15,73],oberon:15,pronounc:55,sequenti:[53,57,30,76,61,64,69,70],tag_data:45,sheetal:30,invalid:[0,41,81,80,57,10,6,73,64,66,49,39,71,25,70,33,83,28],setsparecommitlimit:6,appendic:20,"000ae03973361d5a":13,priori:[76,36,71],gonthier:[30,73],librari:[38,17,61,47,70,73,3,4,57,20,21,34,29,30,44,31,13,48,85,15,16,50],buckets_t:25,retract:6,mps_scan_end:[81,17,8,32,36,77,25,34],nice:45,btdestroi:18,draw:[54,70],llvm:[38,87],users:13,gigabyt:[52,69,57],event_al:50,benchmark:43,caml:15,mps_rm_prot:[81,73],w3i3m9:87,william:30,elsewher:[33,86,34,17,21],meaning:[6,7,13],wrongli:1,eval:[89,16,25],unwind:82,dram:[55,70],alloc_pattern:46,param:50,deserv:45,lang:[15,66,70,71,73,40],pmo:30,infrequ:[24,62,71],algorithm:[52,29,35,18,30,88,61,69,15,65,66,24,58,70,64,91,56,71],vice:[41,6,25,15,8],ams_is_invalid_colour:10,bibliographi:[20,11,30,29],bateman:92,discrimin:[33,69],depth:[76,62,36,30],appendix:[13,89],unconnect:65,dot:13,leak:[0,29,30,61,62,11,15,52,70,12],mps_arena_unsafe_expose_remember_protect:28,fresh:79,leah:92,oop:[16,30],unclamp:[68,56,28,73],io_o:31,code:[83,53,55,56,17,18,59,61,62,64,67,39,71,73,4,13,57,41,58,5,42,6,48,25,28,80,29,81,9,44,10,49,11,45,46,12,33,34,79,35,47,1,87,88,15,89,32,40,70,51,93,36,50,37],partial:[29,56,18,58,76,70,40,83],edg:[52,60,54,69,70],mps_arch_al:87,scratch:[24,83],cbsfinddeletenon:49,fclose:[31,25],recomput:28,pthread_mutex_lock:42,mps_prod_str:21,mps_fmt_fencepost_wrap:45,attrbuf_reserv:33,mps_arena_spare_commit_limit_set:[6,70,28],holdout:29,searchbas:18,mps_builder_:50,cbsinsertisolatedrang:49,compact:[41,55,56,57,30,61,62,15,65,68,70,71],root_scan:81,privat:[6,70,83,47,25],simon:30,pthread:42,secur:[61,15,73],quarterli:30,tracecondemn:79,migh:45,young:[52,22,56,54],send:[66,90,93],mps_arena_step:[35,28],granular:[6,28,65],carefulli:[29,60,82,69,73,50],tricolour:[66,69,70],mps_arena_park:[22,28,73],becam:[89,58],visitor:[67,70],aris:[53,55,34,5,32],fatal:13,sent:[10,13],isresetrang:18,pekka:[41,30,6,82,45,79,33,92],random:[53,16,70,71],mainstream:53,btreturn:18,peyton:30,amcss:[4,33],electron:[61,11,30],untouch:[10,33,18],implicitli:[40,62,61],popl:30,relev:[52,53,54,55,56,57,18,61,62,64,65,66,67,69,70,71,73,58,81,11,36,50],weak_array_scan:8,tri:[41,52,56,17,10,61,49,64,65,66,45,68,69,70,12,8,33,57],mps_ld_t:[86,25],mps_ld_isstal:[62,86,25],salad:70,question:[38,20,56,5,29,10,15,23,45,90,4,36,28,37],complic:[71,45,50,18,73],joel:30,scalabl:[41,40,70,30],michael:30,fewer:[29,11,18],mps_io_creat:31,"try":[38,29,81,17,42,41,45,24,70,50,8,13,36,28],poolclasslo:18,exit:[29,54,18,64,36,89,16,93,34],attrgc:33,freed:[29,55,56,57,58,53,76,6,62,11,24,70,12,73,83,36,61],rdoss:30,pleas:[38,5,10,11,47,90,16,4,93,83],app:4,impli:[29,5,53,59,6,15,70,13,50],smaller:[56,57,1,76,62,88,45,70,73,91,33,37],fortun:[41,67,24,30],readabl:[13,51],weslei:30,"0x3":81,natur:[41,55,57,58,87,76,10,84,15,45,12,72,8,60,91,33,74,37],inconsist:[93,64],memset:[31,33,16],elisp:15,mps_message_type_t:[0,61,35,89,25],crop:15,jump:79,fold:45,compareequ:33,s7ppac:87,"0x1003f9be8":16,download:[4,36],hyper:52,spaghetti:[70,56,50],rivera:30,append:16,mps_ss_:47,compat:[33,72,40,5],mps_tramp_t:93,mps_message_gc_start_whi:[0,35],compar:[29,56,18,30,31,6,15,65,24,71,49,33,57],"0x1003f9c08":16,resembl:[55,56,57,15,1],"1003fc000":13,han:[92,30],mpmst:79,experiment:[18,15,87],tom:92,mps_rank_weak:[81,8,66,77,71,25],mps_clock:[0,31,47],cele:15,journal:30,deduc:41,whatev:[56,17,31,45,28,50],penalti:71,ramsei:30,led:18,chose:69,boolcheck:33,inlinedescriptors:49,"__assert_rtn":16,mps_message_type_gc:[0,61,35],closur:[56,30,58,79,15,65,49,50],waldemar:15,let:[59,10,16,36,45],ubuntu:38,tenur:[29,69,30,73],"0x0000000100003ea6":16,becom:[0,53,55,56,17,61,64,52,68,70,71,73,24,25,28,80,29,81,11,12,83,15,89,49,92,36],sinc:[38,52,55,17,18,53,59,61,66,39,33,57,41,6,24,25,28,29,81,31,40,34,84,86,35,88,15,83,16,70,93,36],mps_arena_commit_limit:28,attralloc:[10,33],convert:[49,18,21,31,6,42,82,45,7,79,32,26,3,13,33,50],survei:[11,30],convers:[45,6,47,15],overcommit:[59,61],artifici:30,hilfing:30,conceiv:50,larger:[53,55,56,17,18,60,62,69,70,71,57,43,28,29,11,12,34,86,35,88,15,76,49,36],technolog:[29,56,30,67],oldsiz:49,later:[0,29,86,35,17,73,11,38,24,70,25,56,28],resurrect:[83,89,71],epdl:40,epdldbg:40,bufferdestroi:79,initialz:40,earli:[29,17,30,61,64,58,70,15,18],chang:[52,55,56,17,18,61,62,64,66,69,70,73,4,13,41,21,6,24,25,26,28,80,81,30,44,82,79,11,45,47,33,86,35,88,49,36,50,37],perform_client_act:28,chanc:[45,93],"0x00000001000014e3":16,marc:30,ansi:[38,29,57,42,31,47,4,13,50],calibr:31,mpsclo:9,kurtz:15,clark:[59,30],danger:[10,40,88],mps_lib_fputc:31,approxim:[41,29,81,55,35,58,53,6,62,52,71,33],aquir:92,foundat:41,sqlite:[4,13,51],apt:4,"0x1003f9bc8":16,"boolean":[40,6,33,47,49],immut:[67,61,64,15,25],validli:[83,77,89,34],greg:30,microcod:15,tailor:30,fee:5,metaphor:45,zip:4,commun:[0,55,56,30,61,15,66,45,24,64,49,26,34,71],doubl:[52,55,35,17,30,68,58,12,73,33,28,57],coordin:[45,61],next:[38,53,56,17,18,60,67,52,70,83,41,76,6,25,28,49,11,46,12,40,34,85,35,88,16,32,36],few:[38,29,56,17,18,59,88,62,11,15,47,69,52,16,12,25,28,57],dconfig_plinth_non:[31,4],busi:[6,82,15,5,8],usr:4,protic:30,lesli:30,jonathan:30,postpost:1,remaind:[53,88],sort:[0,29,54,86,57,33,61,41,70,71,3,13,34,50],clever:45,comparison:[33,49,86,25],fillmutators:6,mps_fmt_create_:34,pfm:50,mps_fix12:[47,32,34,36,8],classes_count:12,cbsfinddeletehigh:49,rare:[52,62,56,58,10,6,73,69,70,12,49,83,36],rusage_self:31,structu:1,goal:90,interven:[46,12],mps_pf_:[50,87],account:[41,6,56,24,25],hoard:30,retriev:[0,35,18,82,67,89,70,28],augment:59,cannarozzi:30,alia:[83,81,86,59,10,47,69,71,31,33,40],annot:[50,17,15],larch:30,plinth:[0,20,33,31,47,48,73,4,13],obvious:[45,40],meet:[6,50,34,18,49],tracescanseg:16,fetch:[29,56,17,73],aliv:[60,29,62,9,58,78,8,10,32,77,64,66,43,89,70,71,25,36],proof:10,control:[38,53,54,55,56,17,18,61,64,69,70,71,33,41,58,6,24,7,28,80,29,81,30,44,31,11,45,47,13,84,15,83,16,49,93,36,50,37],config_var_hot:[10,50,65],weaker:73,bitmap:[56,57,64,69,70,13],process:[52,55,56,17,58,61,64,65,66,67,69,70,71,73,4,75,57,41,21,43,24,25,28,29,30,10,8,13,88,15,89,32,36],lock:[38,20,62,42,10,6,44,34,83,89,86,40,33,93,36],loci:41,"0x00000001003f9ae0":16,divis:[56,57,30,15,66,70],high:[29,55,35,18,30,61,49,69,15,58,70,64,32,91,13,57],protix:16,lispwork:15,fprintf:[31,16,36,32],mps_arena_commit_limit_set:[10,56,28],"002d":13,mps_mv_free_siz:74,onlin:50,subsystem:30,giusepp:[92,30],everywher:[36,57],kib:17,"0x7fff5fbff0a0":16,minlength:18,link_:83,six:[91,4,71,30,87],smoothli:[35,36],"0x10012a5a0":16,georg:30,brian:30,sig:[40,7,30],memoiz:[61,56,50],fence_s:1,fencealloc:45,mps_pf_xci3gc:87,l979:30,circular:[60,69,30],prottramp:16,delai:[76,89,16,30],"_addr":[36,32],overridden:[6,40,50],"1078c85b8":13,interchang:[54,71],watch:61,bufferfinish:79,gcc:[38,18,87,16,4,36,50],inst:40,attent:29,attenu:49,redund:73,btfindlong:18,physic:[29,58,67,43,60,61,64,59,68,69,70,71,73],mps_arena_releas:[68,16,28],alloc:[38,52,54,55,56,17,18,53,59,60,61,62,64,65,66,69,39,2,73,74,33,57,41,20,58,42,43,6,77,23,78,24,49,8,27,28,80,29,81,9,30,10,25,11,85,45,46,12,91,13,34,84,79,35,47,71,93,88,15,36,83,76,89,16,82,32,40,70,51,1,22,37],drop:[66,24,75],essenti:[0,59,15,70,73,36],"0x1003f9948":16,bind:[16,56],init:[6,49,45,79,83,40],chapman:30,serrano:30,issu:[57,58,61,11,89,70,3,93,18,51],chief:[92,28],stavro:[92,57],unaccept:[29,70,64],freebsd:[38,4,93,50,87],oslo:[0,15],fallback:49,longest:33,mps_tag_a_:45,elif:50,neglect:[0,10,15],poor:[29,35,60,61,11,24,73,36],larson:30,ouput:28,berger:30,train:30,move:[38,53,54,55,56,17,18,60,61,62,64,65,69,70,71,73,74,83,57,41,76,6,78,24,8,26,27,28,9,44,25,12,22,33,34,84,79,86,15,89,32,91,36,37],microsystem:15,cbsblockbas:49,mps_root_creat:[81,56,36,73],notabl:[41,33,55,58],uniprocessor:30,jni:73,mps_message_gc_live_s:35,perfect:[35,57,73],pai:[29,17],famili:[87,50,15,57],movabl:[37,73],acycl:7,chosen:[41,17,60,88,68,24,70,36,28],concept:[17,30],mps_os_so:87,culprit:10,whether:[0,52,56,17,18,53,59,62,64,71,73,33,41,5,87,6,24,25,26,28,29,81,49,82,45,40,34,79,86,83,32,36,37],mps_addr_t:[17,58,47,69,71,13,22,77,25,28,80,81,8,82,45,12,83,34,86,33,89,16,32,36],mps_os_su:[50,87],mps_class_lo:9,therefor:[53,81,56,58,76,49,89,34,24,69,70,71,32,33,65,36,28],symbol_:[83,36,25],mps_thread_dereg:[81,93,36],uninitialis:73,cbsfinddelet:49,junction:60,fourth:36,python:[29,11,15,73],auto:[9,22,8,78,32,27,34,37],overal:[43,36,17,18,21],mps_build_gc:87,handi:[66,70,73],mention:15,mps_root_create_reg:[83,81,69,93,36],snake:73,arenafre:6,instead:[55,56,17,18,62,47,66,69,13,71,74,40,41,6,24,7,25,27,28,29,9,10,8,82,45,12,33,31,15,16,32,70],front:[53,62,35,28],arenadestroi:82,scatter:[24,54,30],mps_alloc_dbg:45,mps_arena_clamp:[56,28],type_pair:[13,16,36,32],mps_arena_formatted_objects_walk:[22,70,34,28],config_plinth_non:31,anyth:[38,29,81,17,53,41,45,24,32,4,36,50],edit:[6,21],iglio:30,tran:6,myunnoteseg:40,dominiqu:30,arenawrit:82,februari:41,mps_os_s7:87,truth:32,obtain:[0,56,5,10,61,88,15,67,70,33,28],stock:[30,15],walgenbach:30,cbsfinddeleteentir:49,whiten:79,subset:[41,81,18,76,79,70,71,49,36],societi:30,"__gc":15,accessnon:33,map:[29,62,56,57,18,53,59,31,6,73,67,45,68,58,70,50,25,61,28,71],arenaringinit:6,chunk:28,cbsblocklimit:49,mps_os_fr:87,remap:73,predic:[67,40,61],consum:[0,64,39,28,50,71],"static":[0,38,55,56,17,58,65,69,70,71,33,42,6,25,29,81,30,44,45,40,86,15,16,32,36],attrfre:33,fluctuat:[76,12],our:[6,11,47,25,33,13,37],mps_res_commit_limit:[10,12],mps_arena_collect:[22,16,28,73],mps_fmt_isfwd_t:[34,64,36],special:[38,53,54,56,57,58,59,62,47,39,71,73,13,5,6,78,8,29,44,10,49,11,40,33,88,15,89,82,32,70,36],obj_gen_param:36,variabl:[83,55,56,17,58,59,61,62,47,70,71,1,19,74,13,20,42,76,22,78,24,25,27,29,81,9,30,31,8,11,45,40,79,15,49,91,37,36,51],eqv:[0,89,16,25],nick:[92,50,30],"th\u00e9se":30,contigu:[53,17,18,59,6,62,64,45,70,49,61,57],bag:57,influenc:[56,15],req:[18,6,82,45,49,40,50],facto:78,bobrow:[55,30,15],categori:[71,13,33,51],pooldescrib:79,suitabl:[38,53,57,18,61,62,64,58,5,42,8,27,29,81,31,12,13,34,88,49,36,37],sever:[53,55,56,17,18,60,62,70,73,83,41,43,6,28,29,49,11,45,40,1,88,15,76,32,91,36,50],hardwar:[41,54,55,56,57,30,44,61,11,15,23,69,24,58,70,64,73,34,28],iam4cc:87,ref:[41,81,73,18,42,32,82,77,64,36,66,89,70,71,25,26,13,33],old_symtab:36,ree:[18,21,6,42,82,45,7,79,49,26,3,50],franc:30,insid:[80,35,17,30,22,64,16,32,93,34,18],parenthesi:47,fmt_a:34,frank:30,manipul:[29,18,6,62,15,66,7,70,49,93,34],powerpc:[4,64,87],arena_class:28,"0x1003f9bd8":16,york:30,usual:[0,52,54,55,56,17,18,53,60,61,62,64,65,66,67,69,70,71,73,83,57,41,58,24,25,28,29,10,79,11,12,40,34,38,86,88,15,89,32,91,36,50],releas:[29,81,35,21,10,6,42,89,47,53,1,79,25,4,93,28],mps_fmt_create_a:[36,34,25],mps_mortal:35,queri:[13,61],afterward:[81,32,28,25],refset:[41,6,33],reslimit:33,"000ae03973336e3c":13,walker:[45,79],intrus:30,tru64:[4,87],unwant:15,could:[54,18,59,61,82,65,69,13,71,4,40,41,24,27,28,81,10,49,11,45,33,86,15,32,36,50],lexer:36,put:[41,53,86,56,18,59,8,61,25,82,47,45,68,73,28],segreg:[53,54,57,62,70,2,74,20,76,22,78,25,27,80,9,8,12,84,85,32,91,37,36,51],timer:13,david:[18,30,42,21,82,79,3,92],counterpart:[83,1],length:[0,86,35,18,8,36,83,16,25,40,13,32,33],enforc:93,wrote:[10,31],outsid:[41,29,54,59,45,37],mortal:[52,35,30,43,22,15,64,27,36],retain:[29,55,56,5,76,11,64,70,49],"universit\u00e9":30,scarc:[53,89],austin:30,softwar:[41,20,55,56,30,5,21,29,44,15,3,28,57],isbn:30,suffix:50,christoph:30,mps_class_amcz:[2,25],qualiti:31,port_clos:25,echo:13,date:[41,24,44,36,21],haskel:[11,30],lib:[4,50],facil:[41,42,31,6,45,49,40],buckets_find:[86,25],suffic:25,ecoop:30,prioriti:49,avert:40,supposedli:58,dump:45,strict:[52,56,57,5,70,71,49,40],unknown:[0,10,66,76,38],licens:[38,20,4,5],perfectli:29,system:[38,52,55,56,17,58,53,59,61,62,63,64,65,66,67,69,70,71,73,3,4,40,57,41,20,5,42,43,6,23,24,49,90,8,28,80,29,81,9,30,44,10,25,11,12,13,34,85,47,31,87,88,15,83,89,16,32,93,36,50],messag:[0,20,35,58,29,31,61,82,89,15,53,66,90,25,13,40,51],size_io:45,attach:[0,57,6,45,69,12,83,36,61,71],attack:61,poolcheck:7,btcopyinvertrang:18,termin:[53,58,18,10,31,49,69,32,13,83],"final":[0,53,17,66,69,71,73,74,41,20,76,6,77,78,25,26,27,29,9,30,44,8,82,22,33,38,84,85,15,89,91,51,36,37],poolreclaim:79,prone:29,configura:82,shell:13,ferrit:56,deregist:[81,82,89,93,36,28,37],"__del__":15,obj_quot:36,juli:[45,30],shallow:7,accompani:[50,5],lockreleaseglob:42,enqueu:[66,70,71,73],diminish:43,exactli:[52,55,56,18,59,8,11,47,45,49,73,33,62,40,50,37],steel:[41,57,30],unmap:[53,61,67,68,70,71,28],holland:30,cpython:15,bloat:29,tr94:30,couldn:[81,35,34,45,25,36],mps_io_:31,roberto:15,emac:[0,10,52,15],structur:[38,52,55,56,17,18,53,59,61,1,64,65,69,70,71,73,40,57,41,20,58,21,6,24,7,8,28,80,29,30,44,10,25,11,45,46,12,49,33,34,84,79,86,35,47,31,42,15,83,16,32,93,36,50],charact:[29,17,87,31,36,70,2,25,4,13,50,57],claim:[42,10,6,69,40,93],mps_res_resourc:[10,12,28],sens:[53,56,57,62,67,70,25,36,37],mps_arena_commit:[61,28],seriou:[38,29,71],dubiou:[68,18],exp:16,spaceaccess:79,stdio:29,bet:45,busili:24,exhibit:[62,57],counter:13,"0x00007fff91aeed46":[13,16],freefre:1,mps_root_destroi:[81,36],linker:[70,50],deprec:[81,18,47,78,89,39,32,13,74,93,28],mps_pf_align:[84,87,76,60,6,8,74,50,37],correspond:[52,53,17,18,61,69,39,71,57,42,6,77,78,8,28,81,25,82,46,33,34,79,87,89,49,93,22,50],arenaaccess:6,corrupt:[29,55,58,10,45,16,1,13],scientif:15,usenix:30,have:[0,38,54,55,56,17,18,53,59,60,61,62,64,66,67,52,69,39,71,73,4,74,33,57,41,49,58,21,76,6,77,75,78,24,7,90,8,27,87,28,80,29,81,9,10,25,11,45,46,12,91,13,34,84,79,86,35,47,1,31,42,88,68,15,36,83,89,16,82,32,40,70,92,93,22,50,37],ari:30,need:[0,38,54,55,56,17,18,53,59,60,62,64,65,66,52,39,2,73,4,33,57,41,58,42,76,22,77,78,24,8,27,28,29,81,9,10,25,11,45,12,91,13,34,79,86,35,47,71,31,15,36,83,89,16,82,32,40,70,93,6,37],ben:30,finalpool:6,element:[56,6,62,69,16,70,12,49,36],tidi:[0,85,36,50],flip_mask:13,optimis:17,runciman:30,lazili:[82,56],sdram:[55,70],depict:54,mpscamc:[22,2,47,36],min:[6,50,49],findlongresrang:18,"0x1003cbe38":16,accuraci:[66,33],mix:40,unawar:73,discret:[34,79],"0x7fff5fbff7d0":16,which:[0,52,54,55,56,17,18,53,59,60,61,62,64,65,66,67,69,39,71,73,4,33,57,41,58,5,21,76,6,77,75,24,7,25,26,87,28,80,29,81,30,10,49,11,45,46,12,13,34,84,79,86,35,47,31,42,88,15,83,89,16,82,32,40,70,93,36,50,37],mps_message_type_fin:[0,53,61,89,25],mip:[4,87],addison:30,type_charact:25,singl:[38,52,55,56,17,18,53,59,61,62,70,71,41,58,42,43,6,24,8,27,44,45,40,88,15,16,49,93,36,50],uppercas:47,btisresrang:18,radioact:30,unless:[52,58,47,73,74,13,76,22,24,8,27,29,9,25,49,11,45,83,84,32,91,36],rove:[60,88],clash:[40,47],deploy:[38,10,13],transmit:31,jun:[13,16],lockfinish:42,who:[0,10,15,29],discov:[56,43,10,69,45,77,16,25,36,28],mpslib:[31,4],arenacr:6,rankambig:[26,33],awl:[20,55,18,8,66,77,25,19,37],eight:[66,50],intern_str:25,deploi:38,bjarn:[29,15],nostop:16,judici:29,"class":[38,52,55,56,17,18,53,71,1,64,66,67,39,2,73,19,4,74,13,57,20,58,76,22,77,48,78,8,27,28,80,29,81,9,44,10,25,82,85,45,12,91,33,34,84,79,47,15,36,83,89,32,40,70,51,93,6,37],morrisett:30,make_port:25,lee:30,placement:[6,58,30,18,73],weiser:[52,29,56,30,15],dens:18,instig:0,gather:[52,70,57],request:[38,53,56,57,18,61,64,65,66,52,70,73,74,83,41,58,21,6,90,25,28,80,10,79,11,45,12,33,84,88,15,16,49,91,36,37],face:[70,61,11,58],inde:[40,6,34,61,32],deni:79,snapshot:[66,70,64],determin:[0,52,55,56,17,58,53,62,64,65,66,67,68,69,70,71,73,3,83,41,21,6,77,24,8,26,28,80,29,81,25,49,45,33,34,79,86,15,89,32,36,37],xavier:30,constrain:[45,33,49],stichnoth:30,fact:[52,53,54,17,18,61,62,47,69,71,33,77,28,81,11,12,40,86,15,89,16,32,36],"000000010992f000":13,arenacheck:6,guei:30,gen_count:35,assert:[0,79,16,56,17,18,1,71,10,31,32,65,7,58,25,13,36,50,51],text:[57,58,44,15,70,79,13],verbos:13,"0x100002130":16,minski:[30,15],poolaccess:79,connect:[52,54,56,59,31,22,11,89,24,71],bring:[28,18],"0x000000010000447d":16,empir:30,totalreturn:16,parentclassnam:40,topmost:[70,35],trivial:[6,83,49],anywai:[40,42,86,25],duck:15,wors:[53,88],insertisolatedrang:49,textual:[79,49],locat:[0,53,54,56,57,18,59,61,62,64,66,39,71,73,33,20,58,42,76,6,24,49,8,28,80,81,44,10,25,11,45,12,40,34,85,86,35,47,31,88,83,89,82,32,70,51,93,36,37],materi:[29,5],"0x00000001003f9a80":16,print:[0,49,15,36,89,16,79,25,13,33,28],youngest:52,correl:76,rash:[56,58,10,65,67,71,50],should:[0,53,17,18,61,64,66,69,71,1,4,74,13,41,43,6,78,7,25,26,27,28,80,29,81,30,10,8,45,46,12,33,34,79,86,35,47,31,83,76,89,16,49,40,36,50,37],mps_ld_merg:86,held:[6,49,12,42],smallest:[52,56,57,88,70,12,49,33],suppos:[26,81,12,18],preturn:79,mps_capac:35,"0x00007fff90509df0":16,various:22,"0x1003fad48":16,local:[53,55,56,17,58,60,61,62,64,67,69,70,71,4,83,57,42,24,7,29,81,30,31,11,47,40,34,88,32,36,50],hope:[81,50],mps_ap_alloc_pattern_begin:[46,71],meant:[53,70],count:[52,53,55,18,59,60,61,62,66,70,71,75,58,42,23,24,25,28,29,81,30,45,33,15],protstruct:50,changeov:17,mps_fmt_pad_t:[36,34,73],contribut:[41,92],mps_block_siz:12,lii4gc:87,findfirstbefor:49,tract_of_addr:6,make_str:[16,25],simplest:[83,4,69,36],memcpi:[31,33,16,83],bear:43,neighbour:49,joint:30,theori:[61,58,57,5],lockinit:42,lockix:10,meter:50,cbsblockdescrib:49,increas:[52,29,56,53,59,10,50,82,66,46,12,13,88,28,71],debugpoolcheckmethod:40,cbsgl:49,thomson:92,obj_fmt:[36,34,25],amcz:[20,9,32,2,25,19,36,37],extract:21,enabl:[0,10,31,8,89,70,25,40,13,36],organ:29,whilst:79,underscan:[27,16,85],caudil:30,stanford:30,symtab:[81,36,25],mpscam:27,grai:[52,56,57,59,64,66,69,70],stuff:50,mps_sac_destroi:12,integr:[38,41,58,87,10,61,15,36,47,45,50,25,33,27,28],partit:[60,6,71,30,44],contain:[83,53,54,56,17,18,71,61,1,64,66,69,70,2,73,4,74,13,57,41,58,5,21,76,22,77,78,24,49,8,27,28,29,81,9,25,11,45,47,33,34,84,79,86,35,42,36,89,16,32,40,91,6,50,37],grab:91,btfindlonghigh:18,btfindlongresrangehigh:18,view:[38,41,57,58,42,6,64,53,45],mvff:[20,61,1,91,49,19,74,37],conform:[47,31,40,50,18],legaci:4,modulo:86,inexplic:58,bucket:[52,86,56,57,58,73,25,36],frame:[53,55,56,58,64,39,73,74,20,76,22,78,8,27,81,9,91,13,84,16,70,37,51],knowledg:[76,88,11,70,49,40,36],bty:18,btx:18,flip:[41,53,57,44,6,83,69,33,93,13,28],veljko:30,temporarili:46,now:[0,29,56,17,18,53,61,25,82,15,83,79,73,13,80,36],stack:[38,54,55,56,17,58,64,65,69,39,71,73,19,20,76,22,78,24,8,27,29,81,9,30,11,46,91,83,84,15,89,16,70,93,36],modulu:18,mps_add_fencepost:45,mps_pf_fri6gc:87,polymorph:[33,40],statu:[29,49,87,8],error:[83,53,55,17,58,59,61,1,64,68,70,71,73,13,57,20,22,8,27,28,80,29,81,25,10,32,82,46,12,33,34,79,86,35,47,31,16,49,36,50,51],correctli:[86,58,32,64,79,83,40],reform:50,mps_os_xc:87,boundari:[56,18,30,62,64,58,70,91],segment:[52,17,18,61,62,64,66,70,71,73,74,33,57,41,58,6,79,45,40,84,13,91],below:[38,56,18,32,79,4,13,42,43,6,24,25,28,29,81,10,8,11,45,40,35,87,88,83,89,16,49,36,50],mps_ap_:[83,47],tend:[57,18,11,66,32,17],favor:29,state:[0,55,56,17,58,61,64,68,70,71,73,33,41,42,6,79,28,80,81,31,49,45,47,22,40,34,15,32,93,36,51],sparecommitlimit:6,entrant:[71,10,34,49],mpseventsql:[85,4,13],mps_fmt_auto_header_:[34,32],crude:59,progress:[41,52,35,30,62,90,73,56,13,28],neither:[80,81,55,73,66,7,49],induc:15,tent:45,locksiz:42,javascript:[11,15],kei:[52,55,17,8,11,15,66,45,77,49,25,86],amen:33,lamport:30,appopri:12,supplant:15,mps_res_unimpl:10,job:[29,22,11],entir:[29,79,17,18,43,61,8,11,68,15,24,49,70,64,73,28],mps_fmt_a_:[36,34,25],fri3gc:[4,87],argument:[0,18,47,66,2,74,40,41,76,6,78,49,25,27,28,80,81,9,30,10,8,12,22,33,34,84,83,32,91,93,36],amer:30,swift:56,addit:[83,55,56,57,18,59,69,13,17,41,76,22,78,24,8,27,28,80,29,9,11,45,12,40,34,88,15,89,91,36],mps_fix_cal:[34,32],attrpm_no_writ:33,drum:[70,57],bucket_:[86,25],mps_class_mv:74,unformat:[76,45,91,37],obtrus:24,mps_arch_pp:87,ramp:[46,35,71,51],equal:[56,18,30,31,34,66,49,4,33,28,57],jersei:15,mps_pool_creat:[80,1,9,76,10,22,8,36,78,2,25,91,27,74,34,84],jin:30,detlef:30,instanc:[53,81,17,58,76,31,6,79,64,66,45,69,70,49,33,40,61,57],grain:[52,60,6,66,49],equat:57,committe:15,mps_class_mf:84,section:[41,49,86,18,42,10,8,11,69,44,32,25,4,36,50,37],freeli:[34,5],prot_foo:50,cactu:[70,56],suno:[4,87],boyer:[30,18],"0x00000001003f9b40":16,comment:[0,17,49,32,79,92],unimpl:33,unmark:[61,70],english:[56,35],steadili:76,guidelin:[40,44],rarer:55,arriv:66,arena_high:91,walk:[45,34,79],solv:[29,30,61,25,24,70,49,36],ucb:30,commenc:28,respect:[41,86,57,18,42,10,6,69,15,58,70,49,33,36],leftblock:49,traceset:[6,33],seligmann:30,mailto:5,quit:[29,81,56,58,53,60,15,66,45,24,69,13,36,37],slowli:13,pin:[60,22,32,73],mps_build_eg:87,platform:[38,52,18,60,62,47,66,71,73,4,74,13,20,21,76,44,31,33,48,84,85,87,15,49,91,93,36,50,37],addition:[29,18,61,47,46,40,28],decent:37,accumulatorreset:33,compos:[88,30],insuffici:[83,49,39,15,73],compon:[41,29,5,21,6,15,71,4],plezbert:30,treat:[54,55,8,25,89,86,79,73],tactic:36,immedi:[41,29,81,55,80,57,21,76,25,64,67,68,16,39,32,36,28,86],"0x000000010002d020":16,mps_pf_lii3gc:87,field:[83,53,54,56,57,18,59,62,64,69,70,71,73,33,41,6,7,8,26,25,11,45,40,34,79,15,36,50],set_mask:13,memcmp:[31,33],both:[83,55,56,17,18,64,13,71,1,40,42,6,24,25,28,8,32,11,45,91,47,22,33,15,89,49,70,36,37],presenc:[86,58,62,45,24,8],decai:[52,30],forestal:73,deliber:[61,36],zero:[0,55,1,17,58,71,60,62,66,2,73,19,13,20,75,24,49,31,29,81,9,25,10,8,12,33,79,15,32,36,37],togeth:[52,53,35,58,18,76,88,11,36,45,71,65,34],colnet:30,reinhold:30,plausibl:[29,18],present:[41,52,42,31,25,11,69,46,70,79,32,33,36,50,37],statist:[13,35,17,28],determinist:16,multi:[38,29,5,30,42,6,62,69,58,71,73,83,93,36,61],cbsinit:49,obj1:40,plain:18,align:[52,1,17,18,60,62,64,66,68,32,79,73,74,83,57,58,87,76,6,78,8,27,28,81,9,44,10,25,69,45,12,22,33,34,84,47,16,49,91,36,50,37],event_intern:13,corrigendum:30,fmt_b:34,unsuit:24,defin:[0,53,56,57,18,60,64,65,69,70,71,33,42,7,31,87,81,10,25,82,45,47,40,79,21,89,16,32,36,50],deem:28,talpin:[30,15,71],rightblock:49,glossari:[52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,75,20,29,11,14,92],s7ppmw:87,sep:50,observ:[52,29,57,58,62,89],april:30,mps_os_o1:87,layer:[70,11,88],fwd2_:36,conclus:29,incapacit:13,cell:[59,66,56],almost:[38,29,58,15,66,45,83,36],"5th":30,customis:[50,30],bodi:[52,40,62,90],mps_pool_class_t:80,archiv:[4,90],cbsinsert:49,attrfmt:[33,79],substanti:[24,55,71,15],buckets_fmt:25,r2000:87,protspong:50,revis:[49,30,25],foreign:[53,37,9,73],greater:[18,31,67,70,49,33,28],trap:[73,30,61,79,49,83],mutat:[41,52,55,56,58,44,6,62,68,15,66,53,24,69,70,64,73,33,61,28,71],mps_arch_:50,mps_mvff_size:91,"0x00000001003f9b80":16,referenti:53,satisfi:[80,53,55,58,18,76,88,34,70,73,83,65,36,37],cross:56,access:[0,52,55,56,57,18,59,61,62,64,65,66,67,68,69,13,71,73,3,4,40,58,42,22,24,8,29,81,9,31,25,11,45,12,33,34,79,86,35,47,15,83,89,16,82,49,70,93,50,37],member:[55,56,87,6,15,69,47,32,33,92],matthew:[92,7,30,49],anachronist:64,mps_reserve_block:[83,47],largest:[66,87,12,58,49],failur:[49,55,10,61,25,69,16,79,31,40,33,86],inc:30,infer:[70,58,15,71],optarg:45,leaf_pool:25,competit:76,undesign:41,http:[4,42],denot:[4,57,18],expans:[10,33,47,18,21],heapsort:65,maxlength:18,upon:[66,67,40,47,25],effect:[0,53,56,57,18,61,64,13,41,58,43,78,24,28,29,81,30,45,46,12,40,86,47,88,83,16,49,36,50],coffe:28,dai:[41,29,18,8],mps_pf_lii6gc:87,lii3eg:87,sooner:[29,16,17,28],student:15,dealloc:[52,53,55,58,59,61,73,64,65,70,1,74,76,22,78,8,27,29,9,10,79,12,83,84,15,49,91],customalloc:30,logarithm:[50,87],decoupl:50,blocklimit:49,expand:[87,10,47,15,33,40],mordechai:30,off:[54,56,42,59,88,69,45,16,70,79],cbsmayuseinlin:49,firstli:[6,61,17,15],mps_telemetry_databas:13,builder:50,obj_ap:[16,36,25],well:[0,53,57,18,61,62,47,67,76,39,4,40,41,43,24,49,25,27,29,8,11,45,12,33,34,86,88,15,83,13,32,70,37],morri:30,thought:[13,33],action_find_set_bit:18,exampl:[0,38,55,56,17,18,53,59,61,62,64,65,66,67,52,69,70,2,73,4,33,57,41,58,5,21,76,6,77,24,7,8,28,29,81,9,44,31,25,11,85,45,12,13,34,79,86,35,47,71,93,87,88,68,36,83,89,16,32,40,51,1,22,50,37],frombt:18,pda:70,mpseventcnv:[4,13],choos:[41,20,76,56,17,58,71,43,77,89,83,45,52,69,50,85,19,40,36,28,37],undefin:[29,18,31,6,47,89,69],colour:[41,56,18,44,10,66,69,70,33,28],btfindshorthigh:18,mckinlei:30,latest:[0,31,15,70,4,13],test1:18,test2:18,bye:0,paus:[29,35,43,6,11,64,24,71,56,61,28],less:[52,55,56,17,18,70,71,73,74,83,57,6,25,28,29,31,11,12,33,35,88,89,49,36],conv:[33,18],compel:29,pitfal:24,myseginit:40,mistaken:[83,25,8],metrowerk:[4,50,87],topic:[20,85,8,11,47,25,36],"0x1003fa7d0":[13,16],virtual:[17,58,59,61,62,47,65,66,67,68,69,70,71,73,87,6,24,64,28,29,30,10,11,12,83,15,36,51],heavili:[29,49],type_pad1:[16,36],paul:[92,30],zoneshift:6,systemat:55,brainpow:17,"00000001003fe000":13,gmk:4,web:[90,15],adt:[33,18,42],rapid:[30,15,49],tight:[13,88,17,15,24],dylan_scan_contig:17,close:[38,29,56,58,5,53,76,73,89,52,25,50],alloct:45,makefil:[4,50],hall:30,bits_act:18,add:[41,29,81,86,88,10,49,69,15,36,83,45,24,16,12,25,40,4,13],lower:[47,6,69,61,28],epdldebugcheck:40,mps_telemetry_control:[31,13,69,28],exempt:5,mps_pool_destroi:[80,89,36],ado:17,ought:6,match:[29,65,45,46,12,25,33,37],"0x00000001003fb0a0":16,jython:15,branch:[70,83,56,17,50],poolclassstruct:[33,79],dest:31,"002b":13,hpl:30,multiprocess:30,arguabl:40,sigsoft:30,built:[29,81,55,56,17,87,15,47,4,36],realiz:36,five:[41,81,57,76,61,24,34,17],know:[38,52,54,56,17,18,59,47,65,67,73,33,41,24,28,29,81,10,11,45,12,40,34,16,32,36,37],burden:52,nointersect:49,press:30,somewher:[29,81],lockclaim:42,recurs:[29,56,58,30,42,6,15,65,7,70,40],mps_arena_destroi:[89,13,36,28],motorola:87,resid:[41,55,56,57,66,67,70,71,40],like:[52,53,55,56,17,18,61,64,39,2,4,13,41,58,5,76,6,78,24,49,8,27,28,29,9,10,25,11,45,46,47,33,79,35,88,15,36,83,77,16,32,40,91,22,71],success:[38,52,62,47,65,39,71,40,42,31,28,10,49,11,12,83,34,86,33,15,13,89,32,93],safest:32,corpor:30,resio:33,lose:[59,53,55,70,49],roth:30,stagger:55,ref_p:89,necessari:[83,53,56,47,65,69,13,79,33,42,6,24,25,26,28,29,8,45,64,22,40,86,21,89,32,93,36,50],martin:[92,30],mps_pf_w3i3mv:[50,87],async:41,architectur:[56,57,58,62,64,65,66,68,69,70,71,72,73,4,83,41,20,21,6,8,26,81,30,44,79,82,45,13,87,36,50],soft:[66,70,71,15],page:[55,56,17,18,61,62,64,65,66,67,68,69,70,71,73,4,57,58,6,28,29,81,30,13,34,15,36],philosophi:15,provok:[10,16,29],unreach:[38,52,81,55,56,53,61,79,11,89,15,68,16,71,73,80,36,28,37],exceed:[33,10,6,12],revers:[0,29,18,53,69,70,40,36],unit_s:84,captur:56,"0x7fff5fbff3e0":16,mps_os_:50,yarsun:30,interact:[0,29,30,18,31,61,62,11,64,24,70,25,13,88,28,51],hain:30,self:[53,69,30],certain:[29,79,55,57,53,88,32,11,15,66,67,24,46,69,50,73,70,62,49,28,71],"__kill":[13,16],"_msc_ver":50,superclass:[45,40],flush:[0,31,70,12,13,36,28],piec:[29,56,44,42,88,24,69,1,28],guarante:[53,17,59,64,66,71,57,42,76,6,24,28,29,81,31,45,12,34,86,89,49,36,37],contig:6,peter:30,type_weak_t:8,mainli:[70,11,15,44],win32:42,subramanian:30,trust:71,leaf:[20,62,17,58,53,43,32,67,70,2,25,19,37,34,9],borland:15,lead:[55,35,57,58,59,88,61,62,69,16,70,91,50],broad:33,avoid:[0,52,55,56,17,60,62,64,65,70,2,73,13,57,5,42,43,6,25,28,29,49,82,45,47,40,48,33,88,89,32,36,50,71],mps_res_memori:[10,81,12,28],mps_rm_t:[81,71],overlap:[41,81,31,46,79,28],debug_opt:[91,27,74,1],estim:[53,35,17,15,28],leav:[29,55,17,18,53,31,45,24,70,28,57],disciplin:[71,15],overlai:71,launch:9,speak:[34,57],pollthreshold:6,mode:[0,52,81,56,76,49,15,45,16,71,73,33,36,51],mynoteseg:40,"0x1003fe928":16,encourag:[61,88,17],investig:[52,29,27],fromspac:[59,53,69,70],slight:[76,15],aitr:30,mps_build_cx:87,"enum":49,usag:[35,17,21,61,65,13,36,28,57],hosk:[92,56,30,73],facilit:[70,15],paper:[29,13,69,11],host:31,obei:[36,71],although:[53,56,58,59,61,64,69,70,40,18,42,76,6,24,7,25,29,11,45,47,33,15,49,37],offset:[79,70,34,18,73],java:[52,29,30,53,11,15,65,66,89,70,71,73],sigabrt:[13,16],stage:[41,17,70,32,13,48,50],about:[0,55,56,17,18,61,62,64,66,68,69,39,71,73,13,57,41,58,76,22,77,24,25,28,80,29,81,79,11,45,40,34,35,33,15,83,89,90,49,93,36,50,37],actual:[0,53,54,55,56,57,61,64,65,39,72,73,41,42,6,24,25,28,29,81,79,11,45,40,91],fri6gc:[4,87],world:[61,11,30,28],string_:[16,36],column:[13,87],freedom:[67,29,15,45],irix:[59,4,87],justif:[40,18],tracer:[41,6,33,44],jouannaud:30,constructor:[29,55,56,58,15,36],fals:[0,80,86,40,18,6,49,47,36,83,12,32,26,91,33,34,28],discard:[0,53,35,49,89,46,12,25,56,83,34,28,37],hypothet:40,disabl:[0,6,17],conflat:49,sleepycat:5,harder:[88,64,15,73],own:[38,56,67,69,70,71,4,33,41,42,6,31,28,29,81,10,25,11,45,40,88,15,83,36],absolut:[12,58,73],roughli:17,kathryn:30,unbox:[57,64,68,70,32,36],around:[60,29,35,17,42,57,31,61,8,68,15,83,45,24,25,33,36,37],tag:[56,17,58,59,47,66,68,69,70,71,73,57,7,8,29,81,25,45,64,83,34,15,16,32,36,50,51],eventdef:13,automat:[38,52,55,56,17,58,71,61,1,64,65,66,39,2,73,19,4,74,20,76,22,23,78,24,49,8,27,28,80,29,81,9,30,10,25,11,45,46,12,91,83,34,84,79,35,47,15,77,32,70,93,36,50,37],make_symbol:[83,25],guard:[89,6,40,25],refer:[0,38,54,55,56,17,18,53,59,60,61,62,75,64,66,52,69,70,2,73,19,74,33,57,41,20,58,76,22,77,23,78,24,8,26,27,28,80,29,81,9,30,44,10,25,11,92,45,47,13,34,84,79,86,71,88,68,15,83,89,16,82,32,40,91,51,93,36,50,37],awhil:12,lund:30,scanner:[81,62,17,48,32],tito:30,lockreleasempm:42,hysteresi:[76,6,44],pointless:84,mere:[41,45,62,56,86],merg:[86,56,18,49,88,79],mps_fmt_b_:34,edeadlk:42,van:15,obj1struct:40,val:7,pictur:[38,41],assumpt:[22,11,45,89,8,40,33],transfer:[61,62,70,73],findlongresetrang:18,intellig:[62,17,30],trigger:[67,73],lockreleaseglobalrecurs:42,inner:[56,18],define_alias_class:40,"var":[40,50,37],protocolclasssuperclasspoli:40,contamin:30,"function":[0,38,55,56,17,18,53,59,61,62,64,65,66,67,52,39,71,73,33,41,20,58,42,6,7,8,26,28,80,29,81,9,30,44,10,25,11,45,46,12,49,13,34,79,86,47,31,15,36,83,89,16,82,32,40,70,93,22,50,51],btissetrang:18,north:30,unexpect:[16,36,15,32],unwrap:[66,68,71],subsum:41,findlastaft:49,message_typ:0,middleblock:49,mps_debug_class:45,tv_usec:31,type_symbol:[83,16,36,25],gain:[43,15,45,32,93,28],spuriou:41,grate:92,munro:30,eas:[29,15],inlin:[38,29,81,86,83,17,58,32,64,47,49,12,25,4,33],buf:[10,31],poolmark:79,"0x1003f9bf8":16,exit_failur:29,suppli:[88,86,58,42,31,49,11,15,45,64,25,40,34,37],also:[0,38,54,55,56,17,18,53,59,60,61,62,63,64,65,66,67,52,69,39,2,72,73,4,13,57,41,58,5,42,6,75,24,7,25,26,28,29,81,9,30,79,11,45,12,91,33,34,86,35,47,1,88,68,15,36,83,89,90,49,40,70,22,50,71],dmb:57,made:[83,55,17,58,64,65,70,40,57,18,21,6,79,28,29,10,25,45,13,86,42,15,49,92,50],wise:[59,29,55,30,92],clearli:[6,16],wish:42,o1alcc:87,displai:[0,11,21],troubl:[29,55],asynchron:[0,58,11,36,69,16,70,34,28],record:[0,41,55,56,17,18,53,31,6,62,15,66,45,58,70,13,93,75,28,86],btfindlongresrang:18,blockbas:49,ensur:[83,55,17,58,64,66,69,70,13,57,6,24,25,28,29,81,9,31,8,40,34,88,15,89,32,36,50],indefinit:[55,56,58,62,64,65],mps_headers:34,tracepol:[6,16],otherwis:[0,38,54,17,18,53,66,70,2,33,57,41,5,42,6,25,28,80,81,49,11,46,12,13,34,86,35,83,89,32],problem:[52,53,55,58,61,65,69,70,71,73,13,41,6,23,24,8,29,30,25,11,45,33,88,15,89,49,36],walter:92,tracesetismemb:6,succe:[0,29,6,45,83,28],lfp:30,foster:15,multipli:28,immobil:73,evalu:[30,25,64,47,16,12,32,33,83],pascal:[11,15],"int":[53,81,18,10,6,82,47,70,31,40,33,36,50],mask:[81,18],dure:[0,53,55,56,18,59,60,61,1,64,66,70,71,73,83,41,42,6,24,79,28,29,49,45,40,34,86,32,36,37],dish:70,xerox:30,pig:73,multic:61,sptab:36,implement:[0,38,54,55,56,17,18,53,59,62,64,65,66,52,69,39,71,73,4,40,57,41,20,58,5,21,76,6,90,24,7,31,26,29,30,44,10,8,11,45,91,12,49,33,84,79,86,47,42,15,36,83,89,16,82,32,70,51,25,50,37],erik:[0,15],protocolsomeclassstruct:40,ing:15,resunimpl:33,eric:30,probabl:[41,29,81,18,53,10,66,52,69,70,71,33,36,28],misleadingli:25,mutual:[42,30,37],sizenews:49,nonetheless:83,allow:[0,52,55,56,17,18,53,61,65,68,69,13,71,1,4,33,57,41,58,21,6,24,49,25,26,27,28,29,81,10,8,45,12,40,34,79,15,83,77,90,32,70,36,50],detail:[38,52,56,17,18,59,61,64,67,70,40,41,42,49,8,29,44,25,11,45,47,13,86,83,89,32],innermost:46,mps_fmt_check_fenceposts_t:45,ultrasparc:64,other:[0,38,54,55,56,17,18,53,59,60,61,62,64,67,52,69,39,71,73,3,4,33,57,41,49,58,5,21,43,6,77,48,78,24,7,8,27,28,80,29,81,10,25,11,45,12,91,13,34,84,79,86,35,47,42,88,68,15,36,83,76,89,16,32,40,70,93,22,50,37],lookup:[86,57,18,61,64,65,16,25,17],futur:[52,29,81,62,35,17,58,44,10,49,47,66,89,46,79,31,40,56,33,13,57],rememb:[30,29,52,56,17,18,42,71,54,15,41,53,24,66,70,64,33,81,28,37],varieti:[29,62,56,58,18,21,10,44,15,65,67,45,16,71,4,51,13,50,37],milutinov:30,siginvalid:6,"0x000000010000341f":16,mps_rank_exact:[54,8,81,78,70,71,25,36],kent:[92,30],naggum:[0,15],repeat:[86,61,25,45,89,69,1,83,36],attardi:[92,30,15],foostruct:79,pooldestroi:79,june:[45,30],neeli:30,throughout:[18,88,47,66,69,70,36],mps_objects_step_t:45,mps_collect:28,vein:58,stai:[58,8],multithread:30,experienc:29,philipp:30,eof:31,eqv_hash:25,refsig:79,pdp:[72,57,30],reliabl:[38,29,81,86,80,15,41,24,16,50,25,83,36,28],indirectli:[66,29,24,40],rule:[89,33,36,25],pool_class:34,gdbinit:[13,16],portion:[71,56,28,18,73],emerg:[89,6,49,17,25],tightest:88,auxiliari:[71,64,37],suballoc:[29,59,88,11,64,23,70],decemb:30,invari:[10,82,64,66,69,70,15,79],emeri:30,mps_io_flush:[31,13]},objtypes:{"0":"std:option","1":"std:envvar","2":"c:type","3":"c:function","4":"c:macro"},titles:["11. Messages","17. Debugging pools","5. AMCZ (Automatic Mostly-Copying Zero-rank)","18. Software versions","2. Building the Memory Pool System","Memory Pool System Kit Open Source License","1. Arena","4. Checking","7. AWL (Automatic Weak Linked)","8. LO (Leaf Object)","2. Error handing","1. Overview","14. Segregated allocation caches","18. Telemetry","Memory Management Glossary","4. Memory management in various languages","4. Debugging with the Memory Pool System","3. The critical path","2. Bit tables","Pool reference","Memory Pool System","19. Library version mechanism","4. AMC (Automatic Mostly-Copying)","Introduction to memory management","3. Recycling techniques","6. Advanced topics","9. The generic fix function","6. AMS (Automatic Mark and Sweep)","3. Arenas","5. Frequently Asked Questions","Bibliography","1. Plinth","7. Scanning","17. General MPS types","6. Object formats","10. Garbage collection","3. Garbage collecting a language with the Memory Pool System","1. Choosing a pool class","1. Overview of the Memory Pool System","16. Allocation frames","16. Protocol inheritance","6. Collection framework","14. The lock module","5. Tuning the Memory Pool System for performance","Design","15. Debugging features for client objects","15. Allocation patterns","1. Interface conventions","Internals","3. Coalescing block structure","7. Configuration","Reference","Memory Management Glossary: G","Memory Management Glossary: F","Memory Management Glossary: E","Memory Management Glossary: D","Memory Management Glossary: C","Memory Management Glossary: B","Memory Management Glossary: A","Memory Management Glossary: O","Memory Management Glossary: N","Memory Management Glossary: M","Memory Management Glossary: L","Memory Management Glossary: K","Memory Management Glossary: I","Memory Management Glossary: H","Memory Management Glossary: W","Memory Management Glossary: V","Memory Management Glossary: U","Memory Management Glossary: T","Memory Management Glossary: S","Memory Management Glossary: R","Memory Management Glossary: Q","Memory Management Glossary: P","10. MV (Manual Variable)","Memory Management Glossary: Z","12. MVT (Manual Variable Temporal)","19. Weak references","13. SNC (Stack No Checking)","5. Pool class interface","4. Pools","9. Roots","8. Finalization","5. Allocation","9. MFS (Manual Fixed Small)","Guide","13. Location dependency","2. Platforms","2. Allocation techniques","12. Finalization","Contact us","11. MVFF (Manual Variable First Fit)","Acknowledgements","8. Threads"],objnames:{"0":["std","option","option"],"1":["std","envvar","environment variable"],"2":["c","type","C type"],"3":["c","function","C function"],"4":["c","macro","C macro"]},filenames:["topic/message","topic/debugging","pool/amcz","design/version","guide/build","copyright","design/arena","design/check","pool/awl","pool/lo","topic/error","mmref/begin","topic/cache","topic/telemetry","glossary/index","mmref/lang","guide/debug","topic/critical","design/bt","pool/index","index","design/version-library","pool/amc","mmref/index","mmref/recycle","guide/advanced","design/fix","pool/ams","topic/arena","mmref/faq","mmref/bib","topic/plinth","topic/scanning","design/type","topic/format","topic/collection","guide/lang","pool/intro","guide/overview","topic/frame","design/protocol","design/collection","design/lock","guide/perf","design/index","design/object-debug","topic/pattern","topic/interface","topic/internals","design/cbs","design/config","topic/index","glossary/g","glossary/f","glossary/e","glossary/d","glossary/c","glossary/b","glossary/a","glossary/o","glossary/n","glossary/m","glossary/l","glossary/k","glossary/i","glossary/h","glossary/w","glossary/v","glossary/u","glossary/t","glossary/s","glossary/r","glossary/q","glossary/p","pool/mv","glossary/z","pool/mvt","topic/weak","pool/snc","design/class-interface","topic/pool","topic/root","design/finalize","topic/allocation","pool/mfs","guide/index","topic/location","topic/platform","mmref/alloc","topic/finalization","contact","pool/mvff","mmref/credit","topic/thread"]}) \ No newline at end of file Search.setIndex({objects:{"":{mps_rank_t:[82,2,1,""],CBSDelete:[50,3,1,""],mps_fmt_fencepost_wrap:[46,3,1,""],mps_ap_alloc_pattern_reset:[47,3,1,""],mps_arena_roots_walk:[82,3,1,""],mps_arena_collect:[29,3,1,""],CBSBlockDescribe:[50,3,1,""],MPS_SAC_CLASS_LIMIT:[12,4,1,""],mps_io_destroy:[32,3,1,""],MPS_RES_FAIL:[10,4,1,""],LockInit:[43,3,1,""],mps_definalize:[90,3,1,""],ACT_ON_RANGE:[18,3,1,""],LockClaim:[43,3,1,""],mps_thread_dereg:[94,3,1,""],"-d":[13,0,1,"cmdoption-mpseventsql-d"],MPS_FIX12:[33,3,1,""],"-f":[13,0,1,"cmdoption-mpseventsql-f"],mps_fmt_check_fenceposts_t:[46,3,1,""],mps_pool_destroy:[81,3,1,""],"-l":[13,0,1,"cmdoption-mpseventtxt-l"],"-o":[13,0,1,"cmdoption-mpseventsql-o"],"-i":[13,0,1,"cmdoption-mpseventsql-i"],MPS_RM_PROT:[82,4,1,""],mps_reserve:[84,3,1,""],"-t":[13,0,1,"cmdoption-mpseventsql-t"],mps_message_type_gc_start:[36,3,1,""],"-v":[13,0,1,"cmdoption-mpseventsql-v"],mps_ap_create:[84,3,1,""],"-p":[13,0,1,"cmdoption-mpseventsql-p"],"-r":[13,0,1,"cmdoption-mpseventsql-r"],mps_class_lo:[9,3,1,""],Byte:[34,2,1,""],MPS_OS_W3:[88,4,1,""],BTFindResRangeHigh:[18,3,1,""],mps_rank_exact:[82,3,1,""],mps_key_t:[28,2,1,""],mps_ap_alloc_pattern_begin:[47,3,1,""],mps_ap_s:[84,2,1,""],CBSFinish:[50,3,1,""],mps_chain_create:[36,3,1,""],mps_sac_t:[12,2,1,""],MPS_WORD_WIDTH:[88,4,1,""],mps_ap_t:[84,2,1,""],MPS_BUILD_GC:[88,4,1,""],mps_label_t:[48,2,1,""],MPS_RES_COMMIT_LIMIT:[10,4,1,""],mps_reg_scan_t:[82,2,1,""],mps_tramp:[94,3,1,""],mps_clock:[32,3,1,""],mps_class_amc:[22,3,1,""],ACT_ON_RANGE_HIGH:[18,3,1,""],mps_lib_memset:[32,3,1,""],mps_alloc_pattern_t:[47,2,1,""],mps_arena_start_collect:[29,3,1,""],LockReleaseGlobalRecursive:[43,3,1,""],mps_fix:[33,3,1,""],mps_arena_clamp:[29,3,1,""],mps_gen_param_s:[36,2,1,""],CBSDescribe:[50,3,1,""],mps_sac_destroy:[12,3,1,""],MPS_PF_LII6GC:[88,4,1,""],MPS_T_WORD:[88,4,1,""],mps_arena_create:[29,3,1,""],LockClaimGlobalRecursive:[43,3,1,""],mps_lib_get_EOF:[32,3,1,""],mps_fmt_create_auto_header:[35,3,1,""],Rank:[34,2,1,""],mps_message_type:[0,3,1,""],BTFindLongResRange:[18,3,1,""],mps_awl_find_dependent_t:[8,2,1,""],mps_lib_FILE:[32,2,1,""],mps_lib_get_stderr:[32,3,1,""],mps_chain_t:[36,2,1,""],MPS_T_ULONGEST:[88,4,1,""],MPS_FIX2:[33,3,1,""],MPS_RESERVE_BLOCK:[84,3,1,""],mps_fmt_put_fencepost_t:[46,3,1,""],MPS_FIX1:[33,3,1,""],mps_mvt_size:[77,3,1,""],mps_telemetry_label:[13,3,1,""],MPS_RES_RESOURCE:[10,4,1,""],BTFindShortResRangeHigh:[18,3,1,""],mps_alloc:[84,3,1,""],MPS_SAC_FREE_FAST:[12,3,1,""],MPS_PF_LII3GC:[88,4,1,""],CBSBlockBase:[50,3,1,""],MPS_RES_MEMORY:[10,4,1,""],mps_lib_get_stdout:[32,3,1,""],mps_formatted_objects_stepper_t:[35,2,1,""],MPS_PF_W3I6MV:[88,4,1,""],mps_mvff_size:[92,3,1,""],mps_sac_free:[12,3,1,""],Epoch:[34,2,1,""],mps_fmt_adjust_fencepost_t:[46,3,1,""],mps_message_type_disable:[0,3,1,""],mps_io_write:[32,3,1,""],mps_ld_s:[87,2,1,""],Ref:[34,2,1,""],TraceSet:[34,2,1,""],mps_arena_class_vm:[29,3,1,""],BTCopyInvertRange:[18,3,1,""],mps_fmt_t:[35,2,1,""],mps_sac_alloc:[12,3,1,""],MPS_PF_XCI3LL:[88,4,1,""],mps_arena_create_k:[29,3,1,""],mps_sac_flush:[12,3,1,""],LockClaimRecursive:[43,3,1,""],mps_class_amcz:[2,3,1,""],mps_message_finalization_ref:[90,3,1,""],CBSSetMinSize:[50,3,1,""],mps_args_none:[28,4,1,""],mps_telemetry_flush:[13,3,1,""],MPS_OS_XC:[88,4,1,""],ArenaFinalize:[83,3,1,""],mps_arena_spare_commit_limit_set:[29,3,1,""],MPS_PF_XCI3GC:[88,4,1,""],mps_rank_weak:[82,3,1,""],mps_arena_create_v:[29,3,1,""],mps_mvff_free_size:[92,3,1,""],mps_ss_t:[33,2,1,""],mps_arena_reserved:[29,3,1,""],mps_arena_unsafe_restore_protection:[29,3,1,""],mps_message_discard:[0,3,1,""],mps_free:[84,3,1,""],mps_message_type_t:[0,2,1,""],Word:[34,2,1,""],BTGet:[18,3,1,""],mps_arena_class_cl:[29,3,1,""],mps_io_flush:[32,3,1,""],mps_clock_t:[48,2,1,""],mps_class_awl:[8,3,1,""],LockReleaseRecursive:[43,3,1,""],MPS_RES_PARAM:[10,4,1,""],mps_fmt_auto_header_s:[35,2,1,""],mps_commit:[84,3,1,""],mps_message_t:[0,2,1,""],CBSInit:[50,3,1,""],MPS_RES_OK:[10,4,1,""],mps_pool_walk:[46,3,1,""],MPS_PF_W3I3MV:[88,4,1,""],mps_ld_add:[87,3,1,""],mps_class_mv_debug:[75,3,1,""],mps_ap_destroy:[84,3,1,""],mps_arena_commit_limit:[29,3,1,""],mps_clocks_per_sec:[32,3,1,""],mps_root_t:[82,2,1,""],mps_class_mvff_debug:[92,3,1,""],mps_ap_fill:[84,3,1,""],MPS_WORD_SHIFT:[88,4,1,""],mps_class_mv:[75,3,1,""],MPS_SCAN_END:[33,3,1,""],mps_lib_fputc:[32,3,1,""],CONFIG_PLINTH_NONE:[32,4,1,""],BTCopyOffsetRange:[18,3,1,""],MPS_PF_STRING:[88,4,1,""],mps_pool_check_free_space:[1,3,1,""],CBSBlockLimit:[50,3,1,""],mps_fmt_create_A:[35,3,1,""],mps_lib_fputs:[32,3,1,""],mps_addr_fmt:[35,3,1,""],mps_lib_telemetry_control:[32,3,1,""],mps_arena_expose:[29,3,1,""],mps_arena_destroy:[29,3,1,""],mps_fmt_B_s:[35,2,1,""],Addr:[34,2,1,""],Index:[34,2,1,""],MPS_TELEMETRY_DATABASE:[13,1,1,"-"],mps_mvt_free_size:[77,3,1,""],mps_arena_walk:[46,3,1,""],MPS_PF_ALIGN:[88,4,1,""],Serial:[34,2,1,""],"-h":[13,0,1,"cmdoption-mpseventcnv-h"],LockReleaseGlobal:[43,3,1,""],BTIsSetRange:[18,3,1,""],mps_telemetry_get:[13,3,1,""],CONFIG_VAR_RASH:[10,4,1,""],Bool:[34,2,1,""],MPS_TELEMETRY_CONTROL:[13,1,1,"-"],BTFindResRange:[18,3,1,""],mps_thr_t:[94,2,1,""],mps_class_mvff:[92,3,1,""],RefSet:[34,2,1,""],MPS_PF_FRI6GC:[88,4,1,""],MPS_OS_LI:[88,4,1,""],mps_message_type_enable:[0,3,1,""],mps_arena_extend:[29,3,1,""],MPS_TELEMETRY_FILENAME:[13,1,1,"-"],mps_class_snc:[79,3,1,""],mps_root_scan_t:[82,2,1,""],mps_message_queue_type:[0,3,1,""],mps_pool_check_fenceposts:[1,3,1,""],mps_message_gc_start_why:[36,3,1,""],MPS_RM_CONST:[82,4,1,""],Accumulation:[34,2,1,""],BTDestroy:[18,3,1,""],CBSInsert:[50,3,1,""],mps_addr_t:[48,2,1,""],mps_roots_stepper_t:[82,2,1,""],MPS_BUILD_LL:[88,4,1,""],mps_pool_create:[81,3,1,""],mps_message_get:[0,3,1,""],LockReleaseMPM:[43,3,1,""],CBSFindFirst:[50,3,1,""],mps_message_clock:[0,3,1,""],BTFindShortResRange:[18,3,1,""],mps_telemetry_control:[13,3,1,""],mps_pool_create_v:[81,3,1,""],mps_message_gc_live_size:[36,3,1,""],CBSIterateLarge:[50,3,1,""],BTSetRange:[18,3,1,""],RootVar:[34,2,1,""],mps_amc_apply:[22,3,1,""],mps_thread_reg:[94,3,1,""],LockClaimGlobal:[43,3,1,""],Align:[34,2,1,""],mps_fmt_A_s:[35,2,1,""],mps_objects_step_t:[46,3,1,""],mps_debug_class:[46,3,1,""],CBSIterate:[50,3,1,""],mps_fmt_fwd_t:[35,2,1,""],MPS_ARGS_BEGIN:[28,3,1,""],BTIsResRange:[18,3,1,""],Fun:[34,2,1,""],mps_arena_release:[29,3,1,""],MPS_ARGS_ADD:[28,3,1,""],mps_root_create_table_masked:[82,3,1,""],mps_arena_step:[29,3,1,""],mps_arena_spare_commit_limit:[29,3,1,""],MPS_SAC_ALLOC_FAST:[12,3,1,""],Compare:[34,2,1,""],mps_collections:[29,3,1,""],mps_ap_create_v:[84,3,1,""],mps_align_t:[48,2,1,""],MPS_RES_UNIMPL:[10,4,1,""],mps_sac_class_s:[12,2,1,""],mps_mv_free_size:[75,3,1,""],BTSet:[18,3,1,""],Res:[34,2,1,""],mps_ap_alloc_pattern_end:[47,3,1,""],mps_arena_unsafe_expose_remember_protection:[29,3,1,""],mps_ap_create_k:[84,3,1,""],mps_message_type_gc:[36,3,1,""],mps_arena_has_addr:[29,3,1,""],MPS_ARCH_I3:[88,4,1,""],CBSFindLast:[50,3,1,""],Size:[34,2,1,""],mps_io_create:[32,3,1,""],mps_lib_assert_fail:[32,3,1,""],mps_arena_t:[29,2,1,""],mps_amc_apply_stepper_t:[22,2,1,""],mps_ap_frame_push:[40,3,1,""],mps_fmt_scan_t:[35,2,1,""],mps_ld_reset:[87,3,1,""],LockFinish:[43,3,1,""],mps_root_create_fmt:[82,3,1,""],MPS_ARGS_DONE:[28,3,1,""],MPS_SCAN_BEGIN:[33,3,1,""],BTCreate:[18,3,1,""],mps_stack_scan_ambig:[82,3,1,""],mps_arena_committed:[29,3,1,""],MPS_ARCH_I6:[88,4,1,""],mps_sac_create:[12,3,1,""],mps_arena_commit_limit_set:[29,3,1,""],ULongest:[34,2,1,""],mps_fmt_pad_t:[35,2,1,""],mps_pool_debug_option_s:[1,2,1,""],mps_root_destroy:[82,3,1,""],mps_root_create:[82,3,1,""],mps_arena_class_t:[29,2,1,""],mps_ld_merge:[87,3,1,""],MPS_ARGS_END:[28,3,1,""],mps_word_t:[48,2,1,""],MPS_RES_IO:[10,4,1,""],mps_finalize:[90,3,1,""],mps_ld_t:[87,2,1,""],BTCopyRange:[18,3,1,""],mps_telemetry_intern:[13,3,1,""],MPS_FIX_CALL:[33,3,1,""],Pointer:[34,2,1,""],CBSFindLargest:[50,3,1,""],mps_res_t:[10,2,1,""],mps_class_ams_debug:[27,3,1,""],mps_lib_memcpy:[32,3,1,""],mps_bool_t:[48,2,1,""],MPS_BUILD_MV:[88,4,1,""],MPS_PF_FRI3GC:[88,4,1,""],BTSize:[18,3,1,""],mps_mv_size:[75,3,1,""],CONFIG_VAR_HOT:[10,4,1,""],TraceId:[34,2,1,""],Attr:[34,2,1,""],mps_root_create_table:[82,3,1,""],mps_tramp_t:[94,2,1,""],mps_ap_frame_pop:[40,3,1,""],mps_ld_isstale:[87,3,1,""],CBSBlockSize:[50,3,1,""],mps_rank_ambig:[82,3,1,""],LockSize:[43,3,1,""],mps_class_ams:[27,3,1,""],mps_class_mfs:[85,3,1,""],Shift:[34,2,1,""],mps_addr_pool:[81,3,1,""],BTResRange:[18,3,1,""],MPS_RES_LIMIT:[10,4,1,""],mps_telemetry_reset:[13,3,1,""],mps_alloc_pattern_ramp_collect_all:[47,3,1,""],MPS_PF_XCI6LL:[88,4,1,""],mps_arena_spare_committed:[29,3,1,""],mps_fmt_skip_t:[35,2,1,""],mps_io_t:[32,2,1,""],mps_fmt_isfwd_t:[35,2,1,""],BTFindLongResRangeHigh:[18,3,1,""],mps_alloc_pattern_ramp:[47,3,1,""],mps_fmt_class_t:[35,2,1,""],mps_class_t:[81,2,1,""],AccessSet:[34,2,1,""],mps_frame_t:[40,2,1,""],mps_ap_trip:[84,3,1,""],mps_pool_t:[81,2,1,""],mps_message_gc_not_condemned_size:[36,3,1,""],mps_chain_destroy:[36,3,1,""],CONFIG_VAR_COOL:[10,4,1,""],mps_fmt_create_B:[35,3,1,""],BTRes:[18,3,1,""],mps_message_type_finalization:[90,3,1,""],mps_lib_memcmp:[32,3,1,""],mps_arg_s:[28,2,1,""],mps_arena_park:[29,3,1,""],mps_telemetry_set:[13,3,1,""],mps_rm_t:[82,2,1,""],mps_class_mvt:[77,3,1,""],mps_root_create_reg:[82,3,1,""],mps_fmt_destroy:[35,3,1,""],mps_arena_formatted_objects_walk:[35,3,1,""],mps_message_gc_condemned_size:[36,3,1,""],mps_message_poll:[0,3,1,""],MPS_OS_FR:[88,4,1,""]}},terms:{scriptwork:51,nurseri:[53,57,61,63,47,74,36],ru_utim:32,orthogon:[31,38],mps_arena_roots_walk:[82,29],demand:[21,72,74],btset:18,four:[30,82,58,18,70,67,69,7,72,73,50,75],secondli:[6,62,17,15],prefix:[48,4,6,51,58],circuitri:62,stronger:58,oldest:74,effienc:46,forget:[29,25],whose:[0,54,48,66,68,69,40,1,13,42,77,22,76,65,25,28,81,82,8,12,41,35,87,36,15,90,33,71,93,94,37,38],accur:[30,55,74,63,70,80,50],"const":[32,13,28,36],find_depend:8,mpsioan:32,albuquerqu:31,mps_telemetry_flush:[32,13,29],concret:[59,45,6,46,34,51],swap:[58,60,62,66,68,71,72,74,29],under:[39,56,57,5,18,68,44,10,50,48,46,90,74,3,41,84,29,38],sped:[0,15],spec:34,merchant:5,digit:[4,73,62,31,88],everi:[0,54,17,60,61,62,65,70,40,72,13,42,7,25,29,30,82,31,10,46,41,35,34,16,50,37],risk:[50,45],mps_final:[54,90,83,25],macraki:[93,58],"void":[0,54,18,60,48,70,13,2,1,75,41,43,77,6,79,25,27,28,29,81,30,82,9,31,32,8,83,46,47,12,22,34,35,85,87,36,88,84,90,50,92,94,37,51,72],rise:71,risc:63,lofix:17,implicit:[57,41,70,40,71],quantiz:74,addrstruct:34,jacob:31,affect:[36,18,79,44,70,11,90,67,46,69,16,71,51,57,29],mps_pool_check_fencepost:[46,1],poorli:[30,24,12,65],deleterang:50,vast:89,agesen:31,extend_s:[92,75,85],kilobyt:[64,62,36,37,58],ferreira:31,factori:72,mps_arena_formatted_objects_walk:[22,71,35,29],vector:[82,63,58,18,68,25,46,59,71,33,37],terabyt:[70,58],cmu:31,parenthes:48,initialis:[50,43],bevan:93,x86_64:4,unmap:[54,62,68,69,71,72,29],lockw3:10,deutsch:[56,31,15],mps_lib_get_stdout:32,naiv:41,direct:[53,55,56,57,5,18,32,11,65,69,41,84,51],batch:15,nail:[26,61,74],consequ:[9,10,51,8,79,2,25,27,94,29],second:[84,17,88,44,32,62,65,49,24,71,25,41,13,37,29,38],doubt:5,aggreg:[68,59],type_fwd:37,p_v:[84,12],ap_o:[79,84,8],thisclass:41,mps_key_vmw3_top_down:[28,29],even:[0,53,56,57,17,18,65,66,67,69,70,71,72,74,84,42,59,5,77,24,25,26,29,30,33,46,47,12,13,35,15,90,16,50,94,37,51],hide:[46,68],make_symbol:[84,25],arena_poll_max:6,neg:[81,87,18,32,35,29],asid:12,weren:57,btcopyoffsetrang:18,children:[53,61,70],cheng:31,supplier:30,"new":[0,39,57,58,18,54,61,62,63,65,67,53,70,40,72,74,19,4,41,42,20,43,6,24,50,8,29,81,30,82,31,10,25,46,48,92,13,35,80,87,36,88,89,15,84,90,33,71,37,38],mps_ss_t:[82,17,8,33,37,78,71,25,35],upward:[92,18],ever:[30,82,88,6,11,70,13,94],singhal:[31,74],protocolensuresomeclass:41,elimin:[30,57,17,62,89,15,67,71,72,84],port_ref:25,dahl:[31,15],mps_arena_class_cl:[28,37,29],mem:[34,50],splinter:[46,6],here:[0,17,18,63,4,13,42,21,44,6,25,29,82,10,46,84,87,36,90,16,33,37,38],block_requiring_fin:90,met:[67,5],undef:[48,15],studio:[4,88],subword:18,debugg:[13,16,82,29],path:[84,20,57,17,49,10,33,65,37,67,46,16,71,72,74,41,13,66,34,52],mps_message_type_dis:0,interpret:[0,81,82,87,57,1,44,33,70,86,15,90,16,40,80,25,13,37,29],michal:31,precis:[53,30,55,58,31,62,74,69,7,71,50,35],findshortresrangehigh:18,bitmask:[82,13,58],drj:[6,34,18,80],scaveng:[53,71,70,57,31],permit:[0,30,57,59,5,46,77,6,50,89,68,39,70,51,74,41,84,62,29],krishnan:31,aka:[6,88,18,45],prolog:[53,57,11,15],mps_lib_telemetry_control:32,basereturn:[18,50],joshua:31,frombas:18,norsk:31,"000ae0397335c8b5":13,mps_key_chain:[22,1,2,25,27,28,37],skippabl:37,"_mps_fix":17,brought:45,mps_releas:21,unix:[53,58,60,10,62,71,72,32,4,94,34,51],mps_sac_free_fast:12,brk:[71,58,59],amherst:31,strai:46,printf:[0,25],newspac:[61,70],mps_args_don:28,total:[30,36,44,6,62,77,24,16,71,80,25,57,34,75,92,37,29],cbsfindlast:50,mps_fmt_create_b:35,unit:[42,56,57,17,60,32,6,37,72,73,74,34,85,35,62,58],highli:[39,30,17,15,37],bookkeep:[30,24,11,62,15],describ:[53,54,57,17,59,60,62,65,70,40,72,74,3,4,75,13,58,42,21,6,24,50,25,27,30,82,32,8,11,86,12,92,34,35,80,36,48,89,15,84,33,41,71,37,51,38],would:[84,54,55,57,17,18,61,63,67,2,13,58,42,5,77,6,24,25,29,30,82,10,8,11,46,12,41,35,85,87,34,32,89,15,90,83,50,37,72],tail:[46,31,15],unpredict:30,vol:31,edward:[62,31,15],call:[0,39,56,57,17,18,54,60,62,1,64,65,67,53,70,40,72,74,4,34,58,42,50,59,43,77,6,78,79,24,7,8,27,28,29,81,30,82,9,10,25,11,46,47,12,92,13,35,80,87,36,48,32,89,69,15,37,84,90,16,83,33,41,71,94,22,51],card:[57,31,74],"0x1003fb148":16,recommend:[17,32,11,48,37,12,33,94,35,38],indiana:31,promptli:[0,54,11,24,72,84],type:[0,54,55,56,57,17,18,60,62,63,64,65,67,68,69,70,40,2,74,75,34,58,42,20,59,88,77,6,79,24,7,8,27,28,29,81,30,82,9,31,45,10,25,11,92,46,47,12,50,13,35,85,80,87,36,48,72,94,32,15,37,84,90,16,33,41,71,1,22,51,52],until:[0,54,57,59,60,61,65,70,71,74,43,6,24,25,29,81,30,82,9,80,83,47,12,84,35,87,36,90,33,37],buddi:[54,56,58,31,30,89,65,23,67,71],mps_arch_m2:88,mps_arch_m4:88,buckets_find_depend:25,mps_arch_m6:88,relax:25,relat:[53,54,55,56,57,58,59,60,61,62,63,64,65,67,68,69,70,71,72,74,13,7,30,11,41,35,87,34,15,50],notic:[31,48,18,5,74],warn:[39,45,12,33,34,94,84],exce:[30,36,18,77,6,13],mps_pf_string:[88,21],phd:31,wari:6,excl:84,hold:[0,54,55,58,18,62,65,40,72,4,84,43,6,25,29,81,82,12,34,35,86,36,90,71,94,38],overrun:46,must:[0,39,56,57,17,18,54,60,61,62,1,65,68,53,70,40,2,74,4,75,34,42,50,59,5,43,77,6,78,79,24,7,8,26,27,28,29,81,30,82,9,32,25,11,46,12,92,13,35,85,80,87,36,48,72,89,69,37,84,90,16,83,33,41,71,94,22,51,38],shoot:30,btfindshortresrangehigh:18,springer:31,join:[91,48],room:[46,36,68],err:6,restor:[0,57,31,43,15,71,33,37,29],chenei:[53,70,57,31],work:[39,53,57,17,18,62,63,65,67,70,71,72,4,13,42,44,6,24,8,27,29,30,82,31,83,80,11,12,34,36,89,15,84,90,50,93,37,38],btsetrang:18,pierc:31,doubleword:[56,63,73],mccaughan:93,coalesc:[54,55,56,57,58,59,20,77,30,45,89,67,71,50,63],sharp:47,poolfinish:80,hansen:[93,31],root:[39,53,55,57,17,59,62,67,69,70,71,72,74,4,75,41,58,42,20,77,6,78,24,50,25,27,29,82,9,31,45,8,83,22,34,85,86,15,84,90,33,92,52,94,37,38],cbsst:50,pierr:31,overrid:[41,17],defer:[56,57,59,31,24,47,72,50,84,76],obj_fmt_:[35,37],give:[0,30,77,87,36,46,44,32,88,11,48,67,39,7,71,61,57,13,29,38],mps_ld_reset:[87,25],jelica:31,indic:[0,54,56,59,60,48,70,40,72,13,42,43,6,24,50,32,26,29,82,10,25,83,47,92,41,35,80,87,34,88,33,71,37,51,38],sick:31,attrbuf:34,caution:[82,8,90,25,19,84,35,52],fibonacci:[54,89,58],want:[39,53,18,72,74,4,13,42,6,32,28,29,30,82,10,25,46,12,22,34,35,16,37],noprint:16,mysegclass:41,mps_key_mvt_reserve_depth:[77,28],keep:[58,65,67,70,71,72,74,17,42,43,6,78,24,8,29,30,9,25,50,11,46,36,89,15,90,91,33,37,51],unsign:[0,50,82,87,59,18,88,32,6,25,48,37,7,12,8,13,28,34,51],tediou:30,motion:[69,57,31,29,74],vanish:16,end:[54,55,17,18,60,65,71,72,84,6,25,28,29,82,10,47,48,41,35,90,16,50,37,38],"0x000000010000206b":16,quot:[54,62,48,67,71,37],mps_tramp_t:94,ordinari:[72,62,57,35,8],findfirst:50,classifi:[54,74],revisit:31,how:[0,39,56,57,17,18,54,62,70,72,58,42,5,6,49,24,25,29,81,30,82,31,8,11,46,12,13,35,80,36,89,16,33,37,51,38],hot:[57,17,10,66,68,72,4,13,51],recoveri:31,env:16,"000ae0397333bc6d":13,answer:[30,57,37,18,38],symposium:31,ancestor:15,config:[34,51,21],updat:[53,54,56,57,17,62,65,69,71,72,34,58,42,6,24,32,25,29,81,30,31,10,50,48,13,35,80,33,37,51],lam:31,simmon:93,recogn:[10,84,87,8],lai:37,after:[0,54,56,57,17,62,1,69,72,74,4,13,58,42,21,44,6,78,79,24,25,28,29,30,82,10,50,46,47,12,41,35,87,32,43,89,15,84,90,16,33,94,37,51,38],lovemor:93,"0x0000000100011ded":16,diagram:[24,57,84],befor:[84,54,17,18,62,48,71,1,13,58,43,6,24,25,28,29,30,82,10,8,46,22,41,87,89,15,90,33,92,37,38],wrong:[30,86,36,17,77,10,11,16,92,34,75,37],mps_tramp:94,arch:[42,51,21],parallel:[53,30,57,31,65,70,71,74,35],averag:[34,63],poolmvff:50,errror:82,type_port:25,attempt:[56,57,17,18,62,71,72,74,59,77,80,29,30,11,83,46,84,35,89,15,50,37],third:[17,31,88,44,49,24,25,34,37],opaqu:[56,43,60,48,70,87],grant:71,baker:[57,58,31,60,63,15,68,70],cbsiter:50,perform:[0,53,56,57,17,18,54,62,65,70,71,72,74,4,84,42,20,43,44,24,7,8,29,30,82,9,31,50,11,86,46,41,35,80,87,36,89,15,77,90,16,33,37,38],type_:[37,8],maintain:[56,57,17,59,62,63,67,70,71,72,42,43,6,29,82,12,41,85,86,50,93,37,51],environ:[72,30,58,31,43,60,32,74,15,37,84,16,59,25,4,94,13,51,52],reloc:[42,57,58,71,72,35],finalis:[80,43],exclus:[43,37,70,94,35,38],mps_telemetry_reset:13,lambda:[90,16,25],order:[53,54,56,57,17,59,61,62,63,65,66,67,70,40,72,4,13,58,43,6,24,7,25,26,28,30,31,8,33,83,12,92,34,89,15,84,90,16,50,71,94,37,51],finaliz:[26,67,90,72,25],decl:51,origin:[54,17,18,45,6,15,67,90,71,72,25,93,35],mpstd:[34,88,51,21],composit:[68,71,57,15],feedback:91,afip:31,diagnos:13,arena_class:29,over:[56,57,17,18,62,1,71,74,42,59,77,6,7,25,29,82,32,11,46,47,34,35,87,36,83,50,37],config_var_cool:[10,16,51],message_type_o:0,becaus:[39,53,55,56,57,17,18,54,60,61,62,63,65,66,67,68,70,40,72,74,13,58,42,50,59,43,6,78,24,7,8,29,30,82,10,25,11,46,12,92,34,80,87,48,1,32,89,15,84,90,16,83,33,41,71,37,51],fifo:[54,63,59,92],poolcreat:80,dijkstra:[62,70,57,31],ulongest:34,flexibl:[39,42,82,56,60,89,67,12,29],vari:[30,57,17,54,44,77,71,51],btcopyrang:18,digest:74,sigplan:31,hashf:25,fit:[53,54,55,56,1,58,18,61,62,63,65,67,71,72,74,19,75,84,42,20,59,5,44,23,30,31,47,34,89,77,50,92,51,38],obj_pool:[35,37],fwrite:32,fix:[0,39,56,57,17,59,54,63,65,71,72,74,19,84,42,20,6,49,50,8,26,30,82,45,10,25,11,46,13,35,85,80,78,16,33,52,37,51,38],arenaent:6,better:[81,54,82,37,17,18,89,33,11,35,84,87,66,72,8,4,38,34,29,9],drawback:24,fig:51,persist:[81,82,36,31,47,12,33,35,29],comprehens:57,shire:93,hidden:[82,83,15],erlang:11,taiichi:31,easier:[42,30,11,89],define_pool_class:41,descend:15,them:[0,39,56,57,17,18,72,61,62,63,65,67,53,71,2,41,58,42,59,44,6,78,24,50,25,27,29,30,82,9,8,11,46,12,22,13,35,80,36,48,89,15,77,90,16,33,92,94,37,51,38],poolclass:[41,13,34,80],nygaard:15,thei:[0,39,56,57,17,18,54,72,62,63,65,67,68,53,70,71,2,74,41,58,42,50,59,43,77,6,76,24,7,8,26,27,29,30,82,9,31,45,32,25,11,46,12,34,35,80,87,36,48,1,89,69,15,37,84,78,83,33,94,22,38],fragment:[54,55,57,58,59,61,62,63,65,66,71,72,74,77,24,29,31,11,46,12,85,89,50,92,38],dirk:31,thee:13,safe:[0,30,82,87,84,59,31,43,77,94,15,54,39,70,71,48,34,28,37,29,79],mps_reg_scan_t:[82,37],debugmixin:46,"break":[84,58,18,88,77,83,15,46,16,71,72,33,41,92,4,75,37,29],band:[54,58,60,65,66,70],inescap:46,promis:[57,37],closer:89,interrupt:[30,24,5],itanium:88,yourself:[37,29,38],epdr:41,choic:[56,36,59,18,68,62,89,15,46,71,37],tendenc:[61,22],"0x000000010001f2d2":16,mps_messag:83,codewarrior:[4,51,88],string_hash:25,"0x7fff5fbff7a0":16,harri:31,xcppgc:88,accommod:[53,12,35],loss:[18,5,33],dest_ld:87,"000ae039733592f9":13,arrow:53,each:[0,53,55,56,57,17,18,54,60,61,62,63,65,67,68,70,71,72,74,4,13,58,42,50,59,88,44,6,24,7,8,28,29,30,82,10,25,11,46,12,34,35,85,80,87,36,48,1,89,37,84,77,78,16,33,41,94,22,51,38],debug:[0,56,59,70,13,1,4,75,41,20,43,22,32,27,29,45,10,25,11,46,12,34,35,86,84,16,50,92,37,52],went:[10,34],european:31,oblig:37,side:[46,84,48],mean:[53,54,17,18,60,62,63,65,66,67,68,70,40,72,74,75,13,58,42,59,5,77,22,7,8,26,29,30,82,9,10,25,46,48,92,34,35,80,87,15,84,90,16,33,41,71,94,37,51,38],data_scan:33,laboratori:31,poolepvm:18,btfindshortresrang:18,overflow:30,bufferfil:46,oppos:[30,34,56,57,65],popul:[77,12,15,18],mps_res_limit:[10,12],cbsbl:50,forgot:16,collector:[39,53,55,56,57,17,59,54,60,61,62,63,65,67,69,70,71,72,74,4,84,58,42,44,22,23,79,24,25,29,81,30,82,31,10,11,13,35,36,15,90,16,37],x86:[39,4,88,13,58],unbound:[0,72],network:[30,56,32,11,15,90,29],goe:[30,82,31,46,71,4,29],newli:[57,84,36],crucial:[24,25],truth:33,buckets_find:[87,25],content:[0,39,56,36,58,68,22,15,37,46,16,72,80,84,35,29],rewrit:[84,51],laid:[54,16],daniel:[93,31],adapt:[39,91,31,93],reader:33,mps_arena_create_v:29,protocolclass:41,forth:71,kiem:31,mccarthi:[53,13,62,31,15],cbsblockstruct:50,arizona:31,linear:[31,63,71,17,18],barrier:[56,58,72,63,65,67,68,70,71,2,74,75,84,42,77,6,79,8,27,29,82,9,31,45,83,22,34,35,85,15,16,92,94,37,38],worthwhil:30,mps_class_awl:[25,28,8],situat:[87,60,6,50,65,24,16,8,35,29],free:[39,53,55,56,57,58,18,54,60,61,62,63,65,66,67,69,70,71,72,74,4,75,42,59,77,6,24,8,29,30,82,10,80,11,46,12,84,85,1,89,15,90,50,92,37,38],ineffici:[77,89,63,11,24,71,72,74],mps_commit:[84,16,37,25],ian:31,cytron:31,hand:[30,17,18,20,10,48,37,59,72,8,34,35,52],mvt:[20,77,50,19,84,75,38],atc:[70,59],puzzl:25,epvm:18,assert_mpm:51,filter:[32,13,70,17],ish:46,iso:[57,58,31,21,32,15,48],isn:[30,57,17,47,80,46,24,16,25,34,51],"__int_64":[48,88],bufferstruct:80,"0x0000000000000000":16,subtl:[54,17,72],onto:[30,59,80,46,71,1,40],cbstest:[18,50],"0x0000000000000004":16,"0x0000000000000005":16,dimens:[68,71,31],rang:[58,18,60,62,74,67,46,69,77,71,72,50,34,37],kim:31,nhc:31,p_o:[84,16,12],hoop:80,independ:[42,56,9,31,65,29,51],wast:[18,44,89,11,65,12,74,85],rank:[55,17,59,2,67,71,72,19,20,79,25,28,82,9,8,83,34,78,16,33,38,37,52],necess:29,restrict:[84,58,32,8,65,46,90,50,40,51,74,71,4,35,29],hook:[6,82],instruct:[84,1,17,31,62,63,11,15,91,69,70,71,65,8,34,37,58],alreadi:[0,54,56,57,17,43,6,50,24,25,41,13,94,37],wrapper:[67,32,50,46,25],wasn:[10,12,17],tag_siz:25,agre:[0,15],flagella:[31,15],primari:[62,51,74],brock:31,"00000001003fc000":13,yuan:31,nomin:5,top:[39,30,36,18,6,50,67,16,71,25,22],epdrpoolclass:41,sometim:[0,54,56,57,58,18,60,65,53,69,70,71,72,74,4,59,24,8,30,46,15,90],amcscannail:16,timothi:31,toi:[0,82,87,44,25,90,16,33,13,37],too:[39,30,36,44,51,8,70,62,15,42,67,46,24,16,12,25,34,81,50,37,29],kanefski:31,epdralloc:41,mps_message_get:[0,62,36,90,25],upshot:87,john:[53,31,62,15,13,93],bttest:18,hewitt:[55,31],mps_build_cc:88,mps_fill_fencepost:46,tricolor:[67,70,71],tool:[30,31,21,32,62,88,11,15,72,4,13,51],tractofaddr:6,took:[84,87],"10g":16,mps_sac_class_:[71,12],incur:[55,2],serial:[32,6,34,31],somewhat:[25,71,17,74],conserv:[53,30,55,57,58,31,54,62,8,11,15,24,59,71,65,74,26,34],happili:83,simula:[31,15],config_var_rash:[10,72],mps_clock_t:[0,32,48],technic:[39,42,86,31,92,35,38],symptom:12,modula3:15,nmk:4,r4000:88,silli:18,target:[39,30,86,17,18,45,32,33,37,7,74,4,88,34,51],keyword:[57,64,48,71,2,1,75,20,77,22,79,8,27,28,29,81,9,84,85,92,37,52],cxref:88,provid:[39,54,57,17,18,60,62,63,70,71,2,74,4,41,42,50,59,5,43,22,79,24,7,32,27,29,30,82,9,25,10,8,11,46,12,13,35,80,87,72,89,15,37,84,90,91,33,1,6,38],lvalu:[84,12],tree:[54,59,45,6,65,66,46,71,50,4],mps_os_w3:[51,88],withington:[63,31,93],project:[39,86,31,15,91,4,37,51],matter:[24,87,58,31],mpmtype:[34,18],poolinit:[6,13,80],searchlimit:18,provis:[80,50],fashion:[62,90,15],entail:[24,57,17,35],mps_ap_frame_push:[79,40,59],ran:[34,12],mps_count_t:77,ram:[56,59,62,11,71,72,74,37,29],mind:[44,71,24,11],mine:31,bitfield:34,raw:[6,69,72],rat:51,lookup_in_fram:[13,16],manner:[46,5,80],increment:[39,53,57,58,54,62,63,65,67,70,71,72,74,84,42,6,24,8,29,30,31,10,80,34,15,94,37,38],infring:5,seen:[30,43,74,46,71,50,51],seem:[30,24,34,46,37],strength:[89,72],recreat:80,harper:31,latter:[67,72,18],cope:[30,82,62,8,90,74],client:[0,53,56,57,17,18,54,60,62,63,48,70,40,72,74,3,13,42,20,59,43,77,6,50,8,26,28,29,81,30,82,45,10,25,83,46,47,12,34,35,80,87,36,1,32,37,84,90,16,33,41,71,52,94,22,51,38],fwd2:37,thoma:31,thoroughli:34,memo:31,eagerli:50,wherebi:[0,63,47,57],simplifi:[39,53,58,18,54,25,70,46,59,2,33],transistor:71,table_set:25,shall:[48,6,18,5],mps_ap_frame_pop:[79,40,59],object:[0,53,55,56,57,17,18,54,60,61,62,63,76,65,66,67,68,69,70,71,2,74,19,4,75,34,58,42,20,59,21,44,6,78,23,79,24,7,8,26,27,88,29,30,82,9,31,45,10,25,11,86,46,12,13,35,85,80,36,48,72,43,89,15,37,84,77,90,16,83,33,41,92,52,1,22,38],mps_root_scan_t:82,lexic:15,regular:[0,67,4,90,25],alan:31,letter:[48,31],phase:[42,45,62,24,71,74],fwd_:37,coin:31,character_:37,prematur:[53,30,56,62,11,69,74],tradit:43,event_poolinit:13,simplic:[94,51,18,33],don:[39,17,18,48,67,72,84,58,42,6,80,28,29,30,25,46,22,41,90,50,37,51,38],simplif:30,doc:[42,18],"0x1003f9878":16,flow:15,doe:[0,53,57,17,18,54,60,61,62,63,65,67,69,71,72,74,75,58,42,50,5,43,44,6,78,79,24,7,8,27,28,29,30,82,9,10,25,11,12,13,35,85,80,87,48,1,32,89,15,37,77,90,16,83,33,92,94,22,51,38],buckets_:[37,25],dummi:[6,84],declar:[84,30,82,18,31,21,48,54,79,67,59,40,51,80,71,34,41,29,72],metat:15,sun:[31,15],unchang:[1,50],notion:[30,6],came:[60,46,51],kristen:15,ungar:[63,31,15,72],introspect:[81,82,45,77,22,79,92,19,41,75,35,29,52],wow64:39,sigsegv:94,opposit:[53,54,55,56,57,58,18,60,61,62,63,70,65,66,67,68,69,59,71,72,74],cheapli:56,syntax:[41,57,15],minimum_s:77,modula:[53,11,15],identifi:[18,21,6,63,64,65,37,68,71,48,33,41,13,28,35,51,52],figueiredo:15,involv:[30,17,18,60,89,62,8,11,67,46,47,70,72,74,71,41,50,35,58],despit:[87,57,58,11,15,71,72,25,41],bind:[16,57],layout:[57,17,25,11,16,71,33,35],acquir:[77,10,29,92],mpsliban:[32,4],i5m2cc:88,mps_key_mvff_slot_high:[92,28],menu:4,explain:[10,11,8,41,28,37,51],configur:[20,27,9,18,43,77,6,22,15,79,45,70,51,8,85,92,4,75,13,29,38],mps_key_ams_support_ambigu:28,than:[0,53,56,57,17,18,54,60,61,62,63,65,67,68,70,40,72,74,41,58,42,5,44,6,50,8,29,30,82,10,25,11,46,47,12,92,34,35,80,87,36,48,1,32,89,15,84,77,16,33,71,94,37,51,38],philosophi:15,btget:18,rich:[30,15],weakrefer:[67,72,15],mps_chat:0,predecessor:15,plate:71,stoy:[60,31],likewis:[6,62],stop:[30,31,1,65,24,71,25,29],compli:69,ceil:18,mpscmvff:92,watson:31,mps_variety_str:21,report:[84,30,87,31,32,83,15,70,65,50,13,37],reconstruct:[16,18],mps_ap_fil:[84,16],mustn:82,first_fit:92,softli:[15,67,46,71,72,74],bar:[71,51],gareth:[18,21,6,43,83,46,7,80,50,26,3,93,51],emb:41,"\u00e5ke":31,op_env:16,baz:51,patch:48,"__date__":21,twice:[30,82,50,40,46],bad:[30,58,89,70,65,46,16,15,25,84],fourteenth:31,told:[42,65],steal:29,respond:[89,11,12],mps_arena_has_addr:29,cbssetmins:50,fragmentation_limit:77,victim:13,fair:18,fp_size:46,btcv:18,datatyp:43,loreclaim:17,nul:[32,13,84],accumulatorscal:34,result:[0,54,57,17,18,62,65,69,40,72,74,41,77,6,50,8,27,29,81,30,82,10,25,46,47,12,34,35,80,87,36,48,32,84,13,90,16,33,71,94,37,51,52],"0x1003faf20":[13,16],respons:[39,30,80,56,57,59,43,6,50,65,42,24,12,74,41,81,62,29],fail:[84,56,17,18,48,40,13,59,44,6,24,25,29,30,10,83,46,47,12,41,35,36,34,15,16,50,71,37,51],hash:[86,56,87,8,15,67,46,78,16,65,25,37,38],charact:[30,17,88,32,37,71,2,25,4,13,51,58],tractofbaseaddr:6,best:[39,54,58,59,65,67,53,71,74,77,25,29,30,31,50,34,89,15,33,92,37,51],subject:[0,82,32,50,67,46,90,71,25,4,35,29,85],awar:[54,41,8],said:[42,53,61,62,46,69,70,72,74,13],hopefulli:17,erez:31,databas:[31,80,18,5,21,6,43,83,46,24,7,72,50,26,3,4,13,51],delphi:15,phantomli:74,shenker:31,yet:[0,42,36,17,10,50,83,90,15,53,84,46,24,16,8,41,34,37],figur:[39,42,84,46],mps_pf_w3i3mv:[51,88],languag:[53,54,56,57,17,59,60,62,63,65,68,69,70,71,72,74,84,58,20,5,78,23,24,30,31,32,11,48,41,39,86,15,90,37,51,52],res_io:46,sos8cx:88,awai:[11,17],approach:[48,89,11,51,31],glasgow:31,pad_:37,attribut:[34,87,80],inabl:[54,55],accord:[42,30,17,18,54,61,89,65,84,47,71,48,74,92,41,34],never:[53,54,58,18,62,63,48,68,72,34,44,6,79,24,25,81,30,32,80,13,35,87,15,84,77,90,50,37],extend:[42,17,18,6,50,15,91,59,80,8,41,37,29,58],sram:71,weak:[39,56,17,18,67,70,71,72,74,19,42,20,22,78,79,8,27,82,25,34,86,89,15,90,38,37,52],obj_chain:[37,25],extens:[53,82,57,18,45,44,10,62,11,15,66,51,41,37,29,38],lazi:[65,83,31,18],unabl:[22,29],preprocessor:[88,61,32,15,16,48,10,51],extent:[55,56,57,59,63,11,65,66,90,71,15],dbgpool:[10,46],toler:[67,70,8],mps_build_gc:88,xci6ll:[4,88],mps_clocks_per_sec:32,protect:[53,54,58,72,62,48,67,68,71,2,74,19,75,41,42,43,77,6,79,25,27,29,82,9,31,8,83,22,34,35,85,80,84,16,92,38,94,37,51,52],accident:[34,62],expos:[53,68,71,29],fault:[39,53,58,31,6,8,65,67,68,71,72,74,19,35,62],howev:[0,54,56,57,58,18,60,62,65,71,72,4,84,42,59,5,44,6,24,25,27,29,30,32,12,41,15,33,93,94,37,51],against:[30,87,44,6,74,33,62],logic:[17,18,60,63,15,68,72,51,38],browser:15,com:[39,4,91,5],mps_rm_t:[82,72],con:[0,57,31,59,15,67],rehash:[87,37,25],epdldebugsig:41,mps_telemetry_set:13,bool:[18,6,7,50,26,41,34],toni:[41,6,93,31,18],character:[67,30,31,15],ref_o:90,delic:8,loader:29,dconfig_var_cool:[4,16],enorm:[46,93],guil:15,exemplari:5,sml:[31,15],vmmap:13,wider:4,guid:[20,86,87,18,11,48,72,8,41,37],assum:[42,53,82,57,10,90,67,46,24,12,8,41,34,84,37,51,61],summar:[6,38],duplic:[42,57,58,6,11,69,51],mps_lib_fput:32,liabil:5,degener:63,fre:15,union:[42,87,59,6,48,70,25,34,28,37],three:[0,54,57,62,65,67,68,69,71,72,74,3,4,75,84,42,21,44,6,24,7,25,27,29,30,10,50,11,46,48,13,35,87,88,89,15,77,16,33,37,51],been:[0,39,56,57,17,18,54,60,62,63,67,53,70,71,72,74,13,58,42,88,6,78,76,24,25,26,28,29,81,30,45,10,50,11,46,12,34,35,80,87,36,69,15,37,84,90,16,83,33,41,93,94,22,38],specul:[18,15],accumul:[61,34,11,80],much:[0,53,56,17,18,62,70,4,58,42,44,24,29,30,45,33,11,47,12,39,36,89,90,50,37,51],mps_arena_unsafe_restore_protect:29,mult:41,interest:[0,30,37,17,45,10,50,15,35,78,91,72,33,42,4,13,29,38],subscrib:91,insert_link:84,cohen:31,quickli:[57,58,6,62,70,72,37,29,17],life:[77,63,31,25],retrospect:31,lifo:[54,63,71,59],suppress:48,tractreturn:6,ani:[0,54,56,57,17,18,60,62,63,65,66,67,69,70,71,72,74,4,34,58,42,50,59,5,21,77,6,24,7,8,28,29,30,82,10,25,11,46,12,13,35,80,87,48,1,32,43,89,15,37,84,90,16,83,33,41,92,94,22,51,38],"0x0000000100001ef7":16,unzip:4,dave:31,lift:18,child:[7,65],"catch":[56,36,51,15],pool_o:[81,9,77,22,79,2,8,92,27,75,85],"_m_ix86":51,emploi:63,type_fwd2:37,mps_alloc_pattern_ramp_collect_al:47,ident:[87,18,88,44,63,83,48,68,2,50,41,12],aix:60,gnu:[0,88,15,16,4,13],servic:[42,30,5,89,62,11,70,71,12,50],properti:[18,63,65,67,70,71,2,19,75,34,20,77,22,79,25,27,29,9,31,8,41,85,87,36,50,92,38,37,52],mps_lib_memcpi:[32,34],commerci:[39,30,5],mps_rm_const:[82,57],aim:[31,15],calcul:[67,34,89,35],publicli:[30,15],thrash:[30,31,62,67,70,72,74],aid:[82,50],vagu:58,anchor:31,spawn:15,seven:92,cons:59,mps_amc_apply_stepper_t:22,arenasetcommitlimit:6,mexico:31,c1999:[],tabl:[55,56,57,17,18,65,66,67,68,70,72,74,13,58,20,88,44,76,8,29,82,31,45,25,34,86,87,15,78,16,37,38],toolkit:31,trishul:31,cond:7,conf:[51,31,38],mps_thr_t:[82,70,94,37],symtab_s:[82,37],"1003fd328":13,disappear:[90,72,48,50],grown:15,mps_word_t:[82,87,17,48,37,16,33,13,28,34,29],fp_pattern:46,incorrectli:[90,59],receiv:[30,82,16,57,5,60,89,11,37,90,7,50,13,35],suggest:[30,18,44,10,60,91,50,92,93,37],make:[0,39,55,56,17,18,54,62,63,65,68,53,70,40,72,74,4,13,58,42,59,5,21,44,22,49,24,25,88,29,81,30,82,10,50,11,46,48,34,35,86,36,32,43,89,15,84,77,78,16,33,41,71,52,94,37,51,38],transpar:[82,56,60,10,48,46,70,84,87],complex:[30,59,62,70,11,15,46,16,65,41,51,72],split:[54,56,58,18,89,63,11,67,46,71,50,3,13],mps_mvt_free_siz:77,complet:[42,30,82,57,5,18,44,10,62,33,11,37,67,24,71,51,32,41,84,35,29],elli:[42,31,15],mps_fmt_adjust_fencepost_t:46,fragil:33,evid:[16,59],vvv:13,quentin:31,rail:54,kit:[20,4,86,5],fairli:[55,72],rais:35,refil:[84,94],ownership:43,refin:[42,24,57,72,15],gustavo:31,poolarena:41,protocolerror:50,mps_io_t:32,studi:[46,11,31],tune:[20,86,31,30,44,22,37,16,35,62],dylan:[17,5,83,6,25,11,15,68,51,8,41,18],char_bit:88,undesir:77,bewar:[84,16],mps_ap_trip:84,mps_lib_assert_fail:32,thu:[0,30,57,17,60,61,74,15,67,77,53,70,25,34,84],messeng:[30,31],thr:[82,94],inherit:[20,41,59,15,45],poolmrg:[26,83],contact:[39,20,82,5,8,48,91,84,79,78,16,40,25,92,4,94,27,29],greatest:18,thi:[0,39,55,56,57,17,18,54,60,61,62,63,64,65,66,67,68,53,70,40,2,74,3,4,75,34,58,42,50,59,5,21,44,22,78,79,24,7,8,26,27,28,88,29,81,30,82,9,45,10,25,11,46,47,12,92,13,35,85,80,87,36,48,72,94,32,43,89,69,15,37,84,77,90,16,83,33,41,71,1,6,51,38],endif:51,lockstruct:43,programm:[0,30,59,54,60,62,88,11,90,65,77,53,71,15,41],jean:31,portabl:[39,31,32,15,71,48,33,13,37,51],arenasetsparecommitlimit:6,left:[50,57,18,1,10,6,25,89,62,15,48,33,2,74,13,34,29],arena_ld_length:6,protocol:[39,57,59,65,67,40,34,42,20,6,79,80,26,82,45,33,46,41,84,50,37,51,52],background:[18,45,6,43,69,29,51],just:[0,54,57,17,18,67,13,1,4,41,58,42,59,44,78,25,29,30,82,50,83,46,34,35,15,90,16,33,71,94,37,51,38],mps_sac_alloc_fast:12,shapiro:31,pool_create_v:[],orient:[42,54,31,60,62,15,41],bandwidth:[62,72],human:[3,13,21],ifdef:51,nowadai:[67,71],unbuff:92,poolcondemn:80,act_on_rang:18,previous:[17,59,43,90,25,26,13],easi:[82,18,22,11,15,37,67,16,4,94,35,51],interfer:29,had:[0,30,58,83,15,42,46,16,72,25,92,13,66,37],lumpi:36,define_class:41,fortran:[11,15],spread:[30,89,61],"0x1003f9ae0":16,board:31,henriqu:15,els:[0,42,8,16,51,25,84,37,29],save:[53,55,57,31,33,15,71,50],gave:[30,15],opt:4,applic:[39,54,59,62,68,53,71,74,4,77,23,29,30,31,32,11,89,15,90,16,33,38],"0x1003f9c18":16,preserv:[56,17,61,67,70,71,80],r_o:94,locu:42,pretest:[0,15],distanc:35,lcc:88,birth:77,"0x1003f99d8":16,obj_isfwd:[35,37],"0x000000010000ea40":16,apart:[7,11],linux:[39,43,88,16,8,4,94,51],measur:[58,31,62,71,33,34,29,17],overcompens:62,specif:[84,57,17,18,62,63,72,74,34,42,59,43,6,23,80,26,29,81,30,82,31,11,46,13,36,15,50,51],arbitrari:[41,6,35,48,66],bufferinit:80,hunt:31,manual:[0,53,56,59,54,61,62,1,66,40,80,74,19,75,42,20,77,23,79,24,8,81,30,82,50,11,46,12,92,84,39,85,15,33,71,38,37,52],mit:31,dep:51,"0x00000001003fb130":16,mps_pf_fri3gc:88,src_ld:87,colmerau:15,unnecessari:[53,30,17,25],underli:[57,25,11,90,71,50],www:4,right:[30,18,31,44,50,11,48,46,33,34,5,37,38],old:[53,54,57,58,59,60,61,62,63,70,72,74,84,88,6,24,25,30,45,34,35,87,15,50,37],mps_arch_s8:88,deal:[30,55,87,68,34,15,67,60,71,74,41,27],interv:[0,54,18,25,50,84,37,29],mps_arch_s9:88,maxim:[42,77,41],dead:[53,54,56,57,17,59,60,61,62,63,65,69,40,72,42,44,22,79,80,47,84,36,16,37],mmqa_test_funct:18,zct:[56,76],born:74,intern:[84,54,55,17,18,83,65,71,74,4,13,58,20,6,25,29,81,30,31,45,10,11,46,12,34,49,85,32,89,16,50,38],printer:[13,15],addrcomp:34,pain:[30,17],indirect:[55,56,17,5,65,69],successfulli:[81,82,56,36,84,47,12,50,41,35,29,72],make_pair:37,mps_key_max_s:[77,75,28],insensit:15,cooper:[42,58,31,43,6,15,24,70,29],combat:8,bottom:[82,8,25,16,50,37],logarithm:[51,88],segmyseg:41,fox:31,arthur:31,subclass:[46,6,41,58],tempor:[20,77,50,19,84,75,38],track:[42,30,57,54,10,15,46,24,16,71,65,37,72],ucsc:31,morereturn:16,overcom:15,condit:[53,30,37,81,59,5,10,47,11,65,35,84,7,71,50,41,4,34,51],foo:[48,16,12,80,13,51],type_integ:[37,25],c99:[57,9,77,22,79,2,8,92,27,75,28,29,85],fencepost:[54,56,60,10,46,1],core:[62,56,57,48],plu:[77,6,51,5],sensibl:80,bole:31,bold:30,someclass:41,pose:37,libsqlite3:4,confer:31,promot:[53,36,59,61,22,70,74,41],"0x7fff5fbff808":16,hsu:31,mps_frequenc:12,post:[0,54,36,62,90,25],"super":[46,41],gartner:15,proceed:31,chapter:[51,16,31,29,37],obj:[16,6,25,83,37,46,78,7,33,84,35,87],harlequin:[93,15],patchi:72,slightli:[72,6,50,17,25],simul:[68,31,15,50],felleisen:31,poolscan:[16,80],despair:38,frame_o:40,old_symtab_s:37,liber:94,commit:[84,82,57,45,10,6,62,71,12,80,34,37,29],sept:31,produc:[81,82,36,18,15,46,72,13,84,29],mps_key_pool_debug_opt:[92,27,75,28,1],encount:[10,13,11,33],curiou:13,"float":[53,54,59,61,65,69,71,74,51],encod:[58,18,21,67,68,69,70,72,13],bound:[0,56,36,58,18,60,62,63,15,68,16,71],soo:31,two:[0,54,55,56,57,58,18,62,1,65,67,68,70,71,2,74,4,34,42,59,21,22,24,50,8,27,29,30,82,31,10,25,11,46,47,12,13,85,80,87,36,48,32,43,89,15,37,84,16,33,92,6,51,72],down:[0,54,17,18,70,71,72,4,42,88,6,7,32,29,30,10,46,12,35,15,16,50,37],attrincr_rb:34,"0x0":16,formerli:[88,57,25],lieu:42,wrap:[67,30,69,46,33],opportun:[46,36],cafeteria:71,storag:[0,53,56,57,58,18,60,62,63,66,67,68,71,72,74,59,77,24,29,30,31,41,15,50],kakkad:31,accordingli:[3,15,32],suffici:[53,18,77,89,15,70,41,37],mps_class:35,mps_t_word:[34,51,88],config_var_:51,support:[0,39,56,57,58,18,54,62,48,66,70,40,72,74,3,4,75,41,42,59,43,77,6,78,79,24,50,8,27,30,82,9,31,10,25,46,47,12,92,34,35,85,86,87,32,88,89,15,37,84,90,33,71,52,94,22,51,38],why:[0,30,16,36,18,32,90,7,25,34,84,38],avail:[39,54,57,58,18,62,65,68,70,71,72,74,4,84,59,5,44,32,29,81,30,10,25,11,13,89,15,77,16,50,94,51],width:[34,88,59,51,50],reli:[30,57,17,60,10,90,48,77,24,70,13,94,84,38],editor:[93,15],fraction:92,acknowledg:[20,93],overhead:[42,30,17,18,77,6,70,11,65,68,24,59,50,41,62,38],btfindresrang:18,lowest:[7,59,18],head:[46,84,61],traceid:34,toward:[30,71,18],form:[0,54,56,57,18,60,61,62,63,65,66,67,53,70,71,72,74,5,7,8,28,10,80,11,48,13,89,15,16,50,92,94,37,51],offer:[53,15,67,46,71,74],forc:[30,13,37,15,33],poolno:80,mpscmv:75,somehow:15,multiprocessor:31,hear:38,percentag:77,heap:[53,54,56,57,58,59,62,65,66,70,71,72,42,22,80,29,30,82,31,11,35,89,15,16,33,37],old_symtab_root:37,oopsla:31,hashtabl:25,"true":[0,54,59,48,33,84,18,6,7,8,26,29,81,30,25,41,35,87,34,90,50,92,37],cached_count:12,reset:[87,18,6,25,34,13],"throw":11,attr:[10,6,34],rattl:30,maximum:[42,63,36,18,77,6,51,46,12,50,34,75,29],tell:[0,39,55,87,21,74,82,15,42,54,53,51,25,84,37,29,72],mps_pool_t:[81,37,1,9,85,79,77,22,8,35,84,46,12,74,92,27,75,25,2],tucson:31,absenc:[32,83,46],autoconf:4,emit:[13,59,51,80],mpscsnc:79,accessset:34,uncoop:[62,31],featur:[0,56,59,48,70,71,72,1,13,20,6,25,29,82,45,8,11,46,22,84,15,37],alongsid:[41,56],mps_word_width:[51,18,88],classic:[30,4,71,24,66],utc:[13,16,31],"abstract":[42,30,31,18,43,6,45,15,54,46,7,51,34,41,29],consciou:31,decrypt:33,mps_class_t:[81,9,79,77,22,8,46,2,74,92,27,75,85],"__line__":46,postscript:[57,71,11,15,68],exist:[0,56,17,18,62,48,71,3,13,42,6,24,26,28,30,46,12,41,35,36,34,50,93,37],darko:31,strive:[6,87],mps_root_create_fmt:82,"0x0000000100003f55":[13,16],pirinen:[42,58,31,6,65,67,46,70,71,93],sticki:[63,71,31],assembl:[31,51,17,15],"_io":[48,65],encrypt:33,testor:43,when:[0,53,55,56,57,17,18,54,60,61,62,63,65,66,67,69,70,71,2,74,3,4,75,34,58,42,59,44,22,78,79,24,50,8,27,28,29,30,82,9,10,25,11,46,12,13,35,85,80,87,36,48,72,94,32,89,15,37,84,77,90,16,83,33,41,92,1,6,51,38],lockclaimrecurs:43,mps_begin:46,poolstruct:80,accessread:34,jone:[30,56,18,31,21,60,83,11,65,70,72,80,3,93],fmt_scan:82,test:[0,53,17,18,60,62,68,13,4,41,88,44,7,25,29,30,45,10,34,87,15,84,78,16,50,92,37,51,52],mpsacl:29,presum:[6,43],telemetri:[20,87,17,44,10,32,80,70,48,37,16,25,4,13,29,52],unlimit:[30,7],mps_class_mv2:[],jonl:[93,58],node:[53,55,57,61,67,70,71,50],matur:[10,22,31],notif:[83,50],intend:[18,60,2,34,43,77,22,7,80,29,82,9,10,33,41,35,87,32,15,50,94,37,51,72],benefici:18,felt:30,stringid:13,mps_debug_option_:[92,27,75],intens:[56,31],intent:[18,48,70,50,13,34],consid:[53,30,36,17,18,54,61,6,63,11,59,71,80,50,84,81,35,62,38],occasion:17,mps_build_ac:88,russo:31,brian:31,younger:[53,55,57,61,65,72],event_kind:13,my_malloc:30,longer:[0,54,56,57,18,62,63,71,72,74,34,24,8,26,81,30,10,80,11,12,41,35,36,15,90,93,37],furthermor:[46,82,17],home:15,arenainit:6,phantomrefer:[72,74],blockrang:50,candid:[57,35,18],iwmm:31,phong:31,ignor:[82,57,17,47,65,24,7,72],gracefulli:60,config_:51,time:[0,39,55,56,57,17,18,60,62,63,65,66,67,68,53,70,71,72,74,4,34,42,59,5,21,44,22,78,24,8,28,29,30,82,31,10,25,11,46,47,12,13,35,87,36,48,1,32,43,89,69,15,37,84,77,90,16,83,41,92,52,94,6,51,38],push:[71,63,40,59,85],mps_fmt_fwd_t:[54,35,37],offsetof:[8,33,37,16,80,84,25],backward:[53,6,18],strong_buckets_ap:25,chunksiz:13,matthia:31,rom:[62,72],chain:[0,53,56,58,59,54,61,62,63,67,69,71,2,1,44,22,25,27,28,29,41,86,36,89,37,52],globals_root:37,skip:[84,54,86,17,18,22,25,37,79,16,71,2,8,27,35,9],mps_:48,global:[30,80,17,43,6,74,82,37,86,16,71,72,25,41,4,93,34],ost:31,invent:[53,24,58,15],osi:5,cacm:31,signific:[53,30,59,18,77,32,6,89,11,67,70,74,92,13,62],addrcopi:34,dalton:31,milo:31,pldi:31,osf:[4,88],hierarch:31,decid:[42,30,36,17,18,80,11,84,46,71,12,74,57,34,37,29,38],middl:[82,57,62,65,16,72,50,41,84,29],depend:[53,50,56,57,17,18,54,63,48,67,68,69,40,72,74,19,75,13,20,59,88,77,6,79,7,8,27,29,30,82,9,45,10,25,46,92,22,34,85,86,87,36,89,15,78,33,41,71,52,94,37,51,38],zone:[42,6,17],graph:[53,55,56,57,61,65,67,70,71],cornel:31,intermedi:[77,17],w3ppmv:88,rel:[30,56,58,15,70,71,12],environment:32,yve:31,rightmost:18,decis:[36,17,18,32,78,59,40,37],jvm:15,lasttract:6,henderson:31,brown:31,sourc:[39,59,13,4,41,20,5,21,6,8,29,30,31,45,32,50,46,34,87,15,78,33,51,38],mps_sac_t:12,string:[84,30,36,17,31,21,32,70,15,68,16,2,65,25,13,28,37],barrett:[93,31],blumof:31,"1003fe000":13,unfamiliar:64,feasibl:46,broadli:[63,35],bruggeman:31,octob:31,word:[53,56,57,17,18,61,62,65,67,70,71,72,73,74,13,58,59,91,8,82,25,33,46,48,34,35,85,84,16,50,37,51],exact:[54,55,57,17,59,62,48,70,71,72,74,34,88,22,79,8,27,82,10,25,84,37,38],seemingli:16,cool:[57,10,66,68,16,72,4,13,51],"0x1003f9af8":16,format_return:46,"0x1003fe278":16,administr:[11,15],level:[39,57,59,62,65,66,67,68,71,72,74,13,88,6,24,7,8,30,25,11,46,34,15,16,50],did:[30,37,29,15,25],die:[53,36,17,59,22,65,16,72,25],gui:31,henri:[70,31],metadata:[25,8],iter:[17,18,45,6,15,50,37],rusag:32,magnet:58,item:[6,71,21],"__time__":21,quick:[54,63,89],recogniz:58,dip:46,round:[58,10,89,11,71,12,25,92,84,37,29],dir:51,o1algc:88,prevent:[0,57,17,31,6,90,78,24,70,12,8,34,72],edelson:[71,31,15],slower:[30,62,57,58,18],attrbuf_alloc:34,sign:6,oldspac:[60,54],colin:31,cost:[55,56,60,62,63,67,70,71,2,84,42,5,44,24,25,31,50,12,13,15,77,33,37,51],unprotect:[82,56,8],maximum_s:[77,75],relocat:66,port:[32,15,90,25,37,51],leaf_ap:25,addr:[81,50,37,34,6,8,83,35,84,46,16,25,41,13,28,22,29,87],malo:31,texa:31,uniform:[59,18,80],current:[0,39,57,58,18,54,68,70,40,72,74,4,41,42,59,43,6,8,27,88,29,82,50,11,46,34,21,15,13,33,71,94,51],"0x00000001003f9730":16,arenafinish:6,suspect:16,mps_os_i5:88,va_list:[81,46,41,84,29],tolimit:18,failobj1:41,lockclaimglob:43,deriv:[56,57,58,60,32,6,65,24,70,48,50,34,41],increasingli:47,vector_:[37,33],guardian:[41,83,31],gener:[0,39,55,56,57,17,18,54,60,61,62,63,64,65,67,53,70,40,2,74,4,75,41,58,42,20,59,43,44,6,78,8,26,27,29,30,82,31,45,25,11,86,46,47,12,34,35,80,36,48,72,89,15,37,84,90,16,33,71,94,22,51,52],"1003fa7d0":13,integer_:37,disclaim:5,consult:[84,32,6,17],explicitli:[39,53,48,63,15,65,41,34,13,29],modif:[57,18,5,15,46,24,71,72,4],address:[0,54,55,56,17,18,60,61,62,63,65,66,67,68,69,70,71,72,74,13,58,59,44,6,50,8,28,29,81,30,82,45,10,25,12,22,34,35,87,48,89,15,84,16,33,92,94,37],failnoteseg:41,ratio:77,along:[57,61,25,89,80,10,34,41],lii6gc:[4,88],wait:[0,39,6,29,25],epdldebugpoolclass:41,mps_os_ia:88,shift:[34,51,17,18],steffen:31,queue:[0,57,17,62,25,83,67,90,71,72,50,52],weak_array_:8,attrpm_no_read:34,behav:[30,57,11,48,68,47,41],thirti:31,extrem:[70,71,51],bob:31,rafael:31,reclaim:[0,39,56,57,54,61,63,65,67,53,70,40,72,74,75,76,42,77,22,78,79,24,8,27,81,82,9,45,10,25,46,92,34,85,80,1,15,84,90,71,37,38],macintosh:[51,31,88],mps_rank_t:[82,79,72,8,34,28],chalmer:31,semant:[32,6,56,41,15],refsetuniv:42,regardless:[29,50],prerequisit:[4,86],grunwald:[63,31],extra:[81,30,56,17,18,6,65,67,24,80,84,62,29],pentium:56,modul:[42,20,30,5,18,21,32,6,43,11,15,53,45,50,65,74,41,49,51],c1990:[],prefer:[58,6,24,34,4,17],reig:31,type_uniniti:84,visibl:[48,59,29],marker:[54,82,59,60,37,40,35],prompt:[54,90,15,24,72,8,4,29],prei:74,sigbu:[16,94],memori:[0,39,55,56,57,17,18,54,60,61,62,63,64,65,66,67,68,53,70,71,72,73,74,4,34,58,42,20,59,5,88,44,22,23,24,50,91,8,26,29,81,30,82,31,45,10,25,11,86,93,46,47,12,13,35,14,80,87,36,48,1,32,89,69,15,37,84,90,16,33,76,52,94,6,51,38],univers:[42,31],visit:[53,82,58,22,16,4,35,29],todai:[30,71,15],perl:[53,54,11,15],cmp_t:[87,25],live:[0,54,55,56,57,59,62,63,67,53,70,72,74,44,22,78,24,8,30,82,9,31,10,25,47,12,80,36,1,69,90,16],handler:[16,6,68,7,74,13,94,35],mps_key_args_end:[1,9,77,22,8,37,79,2,25,92,27,75,28,35,29,85],scope:[41,71,17,15],prev:84,tightli:37,unsaf:[90,71,29],idempot:13,afford:[42,30,17],peopl:[0,30,57,62,64,15,91,70,71,93],claus:5,brooksbi:[39,31,18,21,6,43,83,46,7,80,50,26,3,93,51],scholten:31,visual:[39,57,88,15,4,51],appel:[42,58,65,31,74],olivi:31,prototyp:[51,18,15],examin:[42,56,17,18,61,24,87,71,41,37,29,58],alexand:31,mps_pool_check_free_spac:1,effort:[10,62,65,29,74,51],easiest:46,behalf:30,fly:31,judi:93,graphic:[93,51,15,58],dissimilarli:59,poolam:[10,18],car:[16,37,31,33],prepar:[0,36,18,16,12,80,84],pretend:11,uniqu:[42,58,31,13,34,51],imper:15,descriptor:[54,6,80,50],minimum:[54,57,17,18,77,74,46,72,50,92,51],can:[0,39,55,56,57,17,18,54,60,61,62,63,65,66,67,68,53,70,40,72,74,4,34,58,42,59,5,21,44,6,78,76,24,50,91,8,27,28,88,29,30,82,9,31,10,25,11,46,12,92,13,35,80,87,36,48,1,43,89,69,15,84,77,90,16,83,33,41,71,94,37,51,38],inadequ:[71,11],findshortresrang:18,purpos:[54,57,58,62,71,2,4,75,13,5,43,6,8,29,30,31,45,50,12,22,41,35,15,33,94,37],laughter:13,traceabl:[6,80],cisc:63,boilerpl:41,strother:31,mps_arena_t:[0,59,60,48,2,75,77,22,79,8,27,28,29,81,82,9,83,46,35,85,87,36,90,92,94,37],encapsul:[87,6,74,67,71,72,25,29],stream:[54,58,10,32,50,70,37,16,80,25,4,13,29,52],predict:[30,77,36,17,18,44,63,11,60,59,71,92,57,84,75,29],winston:31,agent:42,limitreturn:[18,50],heard:30,critic:[84,20,57,17,31,43,10,62,65,49,46,16,33,41,13,66,37,52],abort:[32,13,16,37,33],tracesetempti:6,recycl:[53,54,57,17,59,62,63,65,70,71,72,1,42,20,22,23,24,80,29,82,11,89,15],mps_pf_xci6ll:88,unfortun:[30,11],occur:[0,54,56,57,59,60,62,65,67,68,69,70,71,72,74,34,24,29,10,11,47,41,87,84,37],verlag:31,alwai:[0,54,58,59,63,65,67,68,53,71,72,1,34,88,77,25,26,29,30,82,10,46,47,48,13,35,89,16,33,92,37,51],differenti:72,exit_cod:82,multipl:[39,53,56,59,54,60,61,1,66,67,69,70,71,74,84,42,18,43,6,8,29,30,45,46,47,12,41,85,87,15,90,94,37,52],instant:[81,54,29],mps_frame_t:40,reg_root:[82,37],mps_telemetry_intern:[13,70],write:[0,56,57,17,60,83,65,67,68,71,72,74,19,4,13,58,42,20,5,8,28,29,30,82,9,31,32,11,46,48,34,15,84,90,91,3,33,41,94,37,38],vital:[58,10,65,33,84,34],anyon:30,pure:[39,53,56,25],familiar:[42,37],parameter:51,predictor:31,controlalloc:[6,41],poolclassepvm:18,unlucki:90,product:[39,53,86,17,5,21,10,22,35,46,16,51,27,4,59,13,29],proc:[31,21],snc:[19,38,40,79,20],book:[93,11,51],csl:31,max:6,clone:31,make_t:25,usabl:29,jacqu:31,membership:[6,50],mad:31,"1993a":[68,72],mai:[0,39,55,56,57,17,59,54,60,62,63,65,67,68,53,70,40,2,74,4,75,34,58,43,77,22,78,79,24,50,8,27,29,81,30,82,9,31,10,25,11,47,12,92,13,35,85,80,87,36,48,72,94,32,89,69,15,37,84,90,16,33,41,71,1,6,51,38],underscor:48,allocat:43,data:[39,53,56,57,17,18,54,60,62,63,65,66,67,68,69,70,71,72,74,34,58,59,5,43,6,24,7,25,29,30,82,9,31,45,10,50,11,46,47,12,13,1,32,15,84,16,33,41,94,37,38],grow:[0,30,36,77,62,71,50],man:[62,18],mps_key_mvff_arena_high:[92,28],mps_fmt_class_t:35,stress:[4,50],mps_arena_:[60,48],practic:[42,87,57,18,31,11,48,67,24,33,13,37,58],findshortresetrang:18,mpsio:[32,13],explicit:[54,56,58,30,11,15,46,41],mps_arg_:[81,1,9,77,22,8,64,37,84,79,2,25,92,27,75,28,35,29,85],mps_root_create_t:[82,37,25],pooltrivbufferinit:80,inform:[0,53,56,57,17,59,54,60,62,64,65,67,68,69,70,74,13,58,42,5,21,6,23,24,91,80,29,31,32,50,11,46,41,35,36,16,33],"switch":[17,25,15,37,33,4,27],preced:[89,28],combin:[39,30,57,31,88,89,6,50,11,15,42,67,46,24,12,74,4,51,72],block:[0,39,55,56,57,58,59,54,60,61,62,63,65,67,53,70,40,2,74,75,84,42,20,44,6,78,79,24,50,25,27,28,29,81,30,82,9,45,10,8,11,46,47,12,92,13,35,85,87,36,48,72,32,89,15,37,77,90,16,33,71,1,22,51,38],finddelet:50,csd:31,callabl:6,talk:46,tbl:[87,25],approx:42,"_ts_":46,schwartz:[67,70,31],anticip:[30,74],softrefer:[71,72],approv:[5,50],ymmv:39,cutt:31,thr_o:94,size_t:[18,48,1,75,84,43,77,22,8,28,29,30,82,32,25,46,12,34,35,85,36,16,33,92,94,37,51],equip:31,still:[53,56,17,18,62,63,70,73,74,4,42,59,43,78,24,25,29,30,80,11,46,13,35,87,15,90,16,50],ieee:31,dynam:[53,30,56,57,59,31,6,63,89,90,65,66,69,70,71,15,41,62,72],"0x000000010006631f":16,conjunct:[56,51,43],mps_arena_start_collect:29,group:[93,51,15],mps_key_align:[92,28],concis:[13,28,50],polici:[39,53,56,57,17,59,54,63,65,67,70,71,74,58,18,77,6,81,31,48,41,89,92,52,37,12],zendra:31,bekker:31,tort:5,window:[39,53,58,43,32,62,88,69,51,8,4,94,34,29],mail:[18,6,46,91,41,51],main:[30,82,56,57,58,31,89,62,50,70,48,68,24,16,71,72,74,41,37,51],message_o:0,confin:[34,11],non:[57,18,61,62,65,70,71,72,1,3,34,42,59,5,43,6,50,25,26,27,29,82,31,45,10,8,41,35,80,87,32,15,33,37],free_templ:1,recal:37,halt:[53,59],halv:70,mmqa:18,mps_arena_walk:46,cbsblocksiz:50,jame:31,alist:10,mayuseinlin:50,initi:[84,54,57,17,18,63,67,70,71,34,43,44,6,80,29,30,82,25,12,41,50,37,51],tucker:[93,31],therebi:[53,18],half:[70,18],superset:42,provision:42,discuss:[42,54,21,11,67,46,90,91,41,37,51],nor:[56,62,63,67,71,12,74],introduct:[39,20,80,37,41,18,21,6,45,86,23,46,7,51,50,26,3,4,34,42],critiqu:31,obj_scan:[78,37,35,33],term:[39,54,55,56,57,17,59,60,61,62,63,65,66,67,68,53,70,71,72,73,74,4,58,5,77,30,11,46,69],workload:31,name:[58,18,60,63,65,13,80,4,41,42,59,21,8,7,32,28,30,45,10,25,46,48,34,35,88,15,50,51],lewi:[31,15],perspect:[31,8],didn:[53,46,59,15],revert:42,type_vector:33,buckets_pool:25,separ:[55,57,17,18,60,62,63,48,68,71,72,4,34,42,6,24,25,29,30,11,46,12,41,85,50,92,51],mps_addr_return:83,massachusett:31,sigusr2:94,januari:[42,31],mps_fmt_put_fencepost_t:46,confid:[24,27,25],compil:[39,54,56,57,17,18,60,62,63,65,66,68,69,70,71,72,74,3,4,84,58,5,21,24,30,82,31,10,13,86,88,15,16,33,37,51],everyth:[82,13,37],domain:[30,15],replai:80,mps_args_begin:28,dialect:15,moher:31,replac:[54,60,8,15,35,46,78,25,41,37],individu:[87,57,18,6,47,74],continu:[39,30,63,57,59,18,89,33,11,15,67,70,24,7,65,25,50,37,29,72],lookasid:[68,70,59],dramat:[44,53],"0x00000001003f9b70":16,redistribut:5,replay:80,"0x00000001003f9bc8":16,significantli:[42,30,89,18],poolreadi:6,year:[57,31],operand:[34,16],happen:[42,30,57,17,72,10,62,25,11,37,84,46,16,12,8,41,81,94,35,61],dispos:[35,15],mps_args_add:28,conting:50,shown:[70,67,90,16,25,13,84],myformat:4,jackson:[93,31],space:[84,54,56,57,17,59,60,61,62,63,65,68,70,40,72,74,75,34,58,42,44,6,24,25,26,29,30,31,10,80,11,46,12,92,13,85,87,36,1,15,77,16,83,50,71,37,51],profit:5,protocolsomeclassguardian:41,rankfin:34,overcommit:[60,62],"0x7fff5fbff174":16,profil:[31,88,44,70,77,16,13],underwrit:[46,1],toolchain:[4,88],rational:[61,34,51,45],mps_arch_i4:88,mps_alloc_pattern_t:47,mps_arch_i6:88,mps_arena_expos:29,correct:[39,50,57,45,43,10,6,8,70,90,84,24,33,40,25,41,27,88,35,62],mps_arch_i3:[51,88],undead:[69,56,63],earlier:[0,56,71,58],"goto":[41,17,18],newsiz:50,thirdli:[6,15],million:[44,37],seventh:37,argv:[82,16],mps_key_mvt_frag_limit:[77,28],mps_message_t:[0,83,90,36,25],california:31,lab:31,carl:31,org:[4,15],"byte":[53,57,58,18,62,64,67,68,69,70,71,1,75,84,59,77,6,80,29,82,32,33,46,12,34,85,89,15,50,92,37],argc:[82,16],sigxfsz:[16,94],boehm:[53,30,82,57,58,31,65,90,15,93],care:[84,54,82,17,59,35,25,41,34],mps_key_min_s:[77,28],reusabl:41,kaufmann:31,wai:[84,17,18,62,65,67,70,72,74,4,41,42,5,21,6,78,24,8,29,30,82,10,25,11,46,47,34,87,32,43,89,15,90,16,37,51,38],mps_word_shift:[51,18,88],badli:[67,89,70,11,8],prescrib:71,frequenc:[24,12],mps_pool_class_mvff:[],synchron:[0,30,56,57,58,31,70,59,71,12,84,72],mps_size_t:[92,75,85],refus:[6,29],recov:[30,47],turn:[42,53,63,36,1,25,46,16,71,80,33,57,13,35],tlb:70,place:[58,62,65,70,71,72,74,84,77,6,8,29,30,82,25,11,13,35,87,36,15,90,16,37,51,38],unwis:46,principl:[42,51,31],imposs:65,frequent:[53,20,37,17,30,22,15,23,24,16,74,35,29],first:[0,53,57,17,18,54,61,62,63,65,67,71,1,19,4,75,41,58,20,59,88,44,6,23,24,25,26,28,29,81,31,8,83,46,12,13,35,87,36,89,15,84,77,16,50,92,94,37,51,38],oper:[0,39,56,57,17,18,54,62,65,66,67,68,53,70,71,72,74,4,34,58,42,50,59,5,43,77,6,23,24,7,8,29,81,30,82,9,31,10,25,11,46,12,13,35,87,48,88,89,15,84,16,33,94,37,51],suspend:[42,6,94,35,43],written:[39,56,57,17,18,70,72,1,13,42,6,8,30,32,11,41,89,15,78,50,93,37,51],directli:[53,82,56,58,5,21,62,90,15,66,84,24,7,72,74,41,13,34,51],subrang:18,carri:[87,74,59,33,90,80,25],onc:[31,30,63,57,17,18,46,8,15,42,48,39,71,12,65,25,34,84,41,29,72],arrai:[54,55,57,58,18,63,64,48,68,71,6,65,25,28,82,8,12,22,34,35,36,15,94,37],resultreturn:16,bufferempti:6,supernam:41,acquisit:90,act_on_range_high:18,"long":[0,39,17,18,48,67,53,71,72,74,84,42,59,88,77,22,24,25,28,29,30,9,31,32,33,83,12,34,87,36,16,50,37,51],symmetri:18,xci3gc:[4,88],fromlimit:18,ring:[6,57,34],mps_arena:[83,29],open:[31,20,17,18,54,32,25,78,15,39,90,50,8,4,5,29,38],predefin:[37,51],size:[53,54,55,56,57,17,18,60,61,63,65,66,67,69,71,72,73,74,75,13,58,59,43,44,6,79,50,8,27,28,29,30,82,9,45,10,25,11,86,46,47,12,34,35,85,80,87,36,48,1,32,88,89,15,37,84,77,16,33,41,92,94,22,51,38],mps_build_sc:88,given:[42,30,55,56,1,59,60,32,62,50,83,82,65,67,46,12,25,41,13,37],unlink:70,capac:[0,30,36,44,22,27,37,62],pad1_:[16,37],fmt:[9,22,1,79,2,8,27,35],anderson:93,gen_param:36,necessarili:[57,34,70,37,16,41,13,29],draft:[46,6,51],yip:[62,31],circl:15,handbook:[93,11,31],white:[42,53,55,57,17,60,6,65,67,70,71,80,26,93,35,58],conveni:[0,30,82,57,18,10,6,33,32,15,42,67,50,25,41,28,37],chilimbi:31,mps_mv_size:75,mps_pool_create_v:81,mps_fmt_scan_t:[82,17,37,71,33,35],demer:[53,31],mps_res_io:10,especi:[30,56,17,60,74,65,46,70,72,50],resetrang:18,copi:[53,54,57,17,18,60,62,63,65,67,68,69,70,71,2,74,19,4,84,58,42,20,5,44,6,24,25,26,27,30,9,31,10,46,47,48,41,35,36,72,32,15,37,33,1,22,38],specifi:[0,39,57,18,54,1,65,53,2,74,75,6,78,79,8,27,28,81,30,82,9,10,25,46,47,12,22,13,35,85,80,36,90,50,92,37,38],ebi:31,blacklist:58,weak_array_t:8,enclos:[54,57,48],mostli:[17,18,62,63,48,40,2,19,4,20,44,6,25,27,30,9,31,10,11,46,47,22,34,36,15,16,33,71,37,38],floppi:[62,58],domin:30,mps_io_flush:[32,13],holder:5,mps_pool_create_k:[81,1,9,77,10,22,8,37,79,2,25,92,27,75,35,85],serv:[77,6],wide:[30,56,36,77,22,63,15,24],amcfix:17,subexpress:84,kolodn:31,balanc:[62,59],mpsavm:[48,37,29],were:[84,54,56,57,18,63,67,70,40,2,13,88,44,22,25,30,82,46,12,41,35,87,36,15,50,94,37],posit:[81,82,87,59,18,25,48,35,33,34,37],server:[62,31,15],obj_gen_param:37,transport:[70,71],seri:[67,54,13,56,24],pre:4,analysi:[0,42,82,18,31,60,22,37,59,72,13,35],sai:[42,30,32,62,74,11,35,84,70,71,72,25,4,34],look:[0,54,57,17,18,61,13,72,41,6,24,25,31,10,8,11,84,35,87,78,16,33,51,38],obj_empti:[16,37],anywher:30,dash:25,"1992a":71,nickola:31,"1992c":[60,70],"20g":16,deliv:[15,21],ravenbrook:[39,4,91,5,93],mps_fmt_a_:[37,35,25],repack:31,sat:[13,16],buffercr:80,engin:[42,15],techniqu:[39,53,56,57,17,59,61,62,63,67,68,71,72,58,42,20,44,6,23,24,30,31,11,41,89,15,33],advic:[86,16,12,29],scanstat:[26,34],destroi:[81,30,82,56,36,18,60,80,83,15,37,84,77,71,12,65,1,13,35,29,72],note:[0,53,56,57,17,18,54,60,62,65,67,68,70,40,72,73,4,13,58,42,59,88,44,22,78,24,50,25,27,29,81,30,82,9,31,45,10,8,46,47,12,92,34,35,80,87,36,48,32,89,15,84,90,33,71,94,37,51,38],ideal:[9,44,62,11,65,72,41,17],take:[84,54,57,17,18,63,65,70,71,80,41,42,50,59,77,6,79,24,7,25,27,28,29,81,30,82,9,10,8,11,46,12,22,13,87,36,48,89,15,90,16,33,92,37,51,38],advis:[92,5,50],"0x000000010001287d":16,interior:[56,57,58,65,33],unfix:[52,33],noth:[42,36,43,34,1,68,51,25,92,13,75,37,29,38],mps_pf_fri6gc:88,begin:[42,54,57,18,21,10,80,89,65,48,46,67,70,71,51,61,4,84,29],sure:[30,55,46,16,71,33,37,51],tospac:[54,71,70,57,61],norman:[60,31],trace:[53,56,57,17,59,62,63,65,67,70,71,72,34,58,42,6,23,24,80,29,82,31,45,83,13,35,16,33,37],normal:[0,55,57,17,48,71,72,74,84,43,77,24,7,8,29,25,46,34,87,13,90,41,51],buffer:[84,9,18,32,6,70,65,68,59,71,80,92,34,94,13,58],friedman:[60,31],enter:[16,71,59,74],compress:[71,57],clearer:34,eclect:15,poollo:18,egc:[4,88],wire:[62,74],provabl:[56,63,37],tract:[6,17,45],pair:[50,56,58,18,88,25,16,33,4,37],neatli:30,paulo:31,mps_alloc_pattern_ramp:47,perceiv:[0,15],synonym:[57,58,18,15,71,74],proud:13,quantiti:[53,30,58,62,64,66,70,74],runtim:[31,17,15,37],pattern:[20,56,36,59,30,89,63,11,87,54,46,47,40,72,1,84,52],senior:93,mrg:[26,83],review:[31,17,18,37],mrb:60,uncontrol:[32,13],messageempti:83,mps_amc_appli:22,show:[30,44,6,24,16,25,13,41],mps_mvff_free_siz:92,maint:51,infant:[53,65,31],merit:46,concurr:[39,54,57,58,31,67,90,72,74,41],overlarg:12,permiss:[84,35,15],hack:18,threshold:6,obj_delet:[25,87,8],cbschangesizemethod:50,ground:72,slot:[54,41,28,84,8],onli:[39,53,55,56,57,58,18,60,61,62,63,65,66,67,69,70,40,72,74,34,42,50,5,21,77,6,78,79,24,7,8,27,28,29,81,30,82,9,10,25,83,46,47,12,13,35,80,87,48,1,32,43,89,15,37,84,90,16,33,41,71,94,22,51,38],slow:[0,30,17,63,70,15,46,16,71,12,29],slop:46,fenc:[46,54],pointer:[0,54,55,56,57,17,18,60,61,62,1,65,66,67,69,70,71,72,74,84,58,42,50,59,88,6,78,79,24,7,8,27,29,81,30,82,9,31,32,25,11,46,12,34,35,85,80,87,36,48,89,15,37,90,16,33,94,22,38],"0x7fff5fbfef2c":16,transact:31,activ:[42,30,56,57,59,43,6,62,15,54,69,71,65,63,37,29],behind:[42,13,57,2,25],clocks_per_sec:32,z80:18,luc:31,black:[42,53,57,58,45,60,65,67,70,71,80,35],btfindshort:18,sigusr1:94,petrank:31,analys:36,wilei:31,overwritten:[60,24,16,72],moreau:31,nearli:[84,62,17,65,37],variou:[20,82,37,17,18,21,30,50,62,15,23,46,33,4,34,51],get:[0,57,17,18,61,68,71,74,4,84,42,44,22,8,29,30,10,25,83,46,12,41,86,36,89,16,33,37,51],genera:31,mung:51,clang:[39,4,16,88],secondari:[51,31],cannot:[0,55,56,57,18,65,66,67,69,70,71,72,34,42,59,6,24,50,25,27,29,30,10,8,11,46,47,48,41,89,84,90,33,37,51,38],murali:31,freestor:[54,66],eventrep:80,mps_io_writ:32,requir:[0,53,56,57,58,18,54,60,61,62,1,65,67,70,71,2,74,75,13,59,21,77,6,79,24,50,8,27,28,29,30,82,9,45,10,25,11,46,34,35,85,80,87,72,32,43,89,15,37,90,91,83,33,41,92,94,22,51,38],ssb:71,reveal:[16,59,25],discontigu:59,arenaclamp:6,seldom:68,borrow:46,yield:74,hash_t:[87,25],joker:13,tillotson:93,"0x7fff5fbfef28":16,roger:31,aris:[54,56,35,5,33],though:[17,18,62,90,15,69,16,51,74,35,29],scott:31,where:[84,54,55,56,57,17,18,61,62,63,65,68,70,13,72,74,4,41,50,59,21,6,49,24,7,8,29,30,82,83,25,11,46,12,34,35,87,36,48,43,89,16,33,71,94,37,51],mps_key_mvff_first_fit:[92,28],summari:[42,6,80,17,50],kernel:72,ams_alloc:10,highest:[29,18,72],lasttractbas:6,mps_formatted_objects_stepper_t:[71,35],closurep:50,symtab_root:[37,25],zaphod:18,reserv:[57,17,59,60,62,48,68,69,71,72,34,58,5,77,80,29,30,82,10,12,84,37],lnc:31,concern:[42,30,60,62,11,70,16,72,50,37],infinit:62,checkl:7,detect:[56,59,63,65,67,72,1,84,78,8,29,30,82,45,25,11,46,12,41,90,16,50,37,51,38],"0x1003cb958":16,parent:[61,65,7,40,34,41],mps_sac_flush:12,mps_telemetry_filenam:[32,13],checkd:7,enumer:[34,71,50],"0x000000010007b14a":16,label:[13,70,48,52],hist:[42,18,21,6,43,83,46,7,80,50,26,3,41,51],palimpsest:74,enough:[59,30,89,37,58,18,54,77,10,50,11,35,16,12,32,13,63,34,29],between:[0,53,55,56,57,17,54,62,65,66,67,68,71,72,74,4,84,88,77,6,24,25,28,29,30,31,32,33,11,46,12,22,41,80,36,48,90,50,37,51],"import":[84,30,82,17,18,44,33,70,15,37,48,24,7,71,65,25,13,50,34,72],checku:7,across:[57,65,50,92,4,51],dybvig:[72,31],spars:[55,59,65,72,74,15],pretti:17,august:31,amort:50,mps_build_:51,comp:15,tarditi:31,style:[41,80,17,15,18],cheap:[53,56,89],blame:30,cycl:[53,54,57,59,44,8,65,67,70,71,15,74,29],sparc:[4,18,88],spare:[54,45,6,11,71,29],inflex:[70,11],uncondition:90,shortag:[94,11],come:[37,18,6,50,11,62,15,35,68,56,65,8,13,4,29],caar:16,reaction:13,unrel:16,freestand:32,mps_cached_count:12,mono:15,region:[30,59,31,54,80,15,16,71,72,33,41],mps_var_df:51,contract:[6,5],retir:51,audienc:13,saguaro:57,coucaud:31,mani:[39,54,55,56,57,17,18,62,63,65,66,68,71,72,74,13,58,42,59,77,24,25,29,30,82,32,11,12,41,87,89,15,84,90,16,93,37,51,38],unstructur:9,mann:[6,93],bitset:[34,58],nettl:[72,31],bufferpool:10,undocu:[92,94],color:[53,57,58,60,65,67,70,71],overview:[39,20,86,42,18,21,83,6,43,11,23,46,45,50,3,41,37,51],inspir:15,period:[30,56,24,47,71,37,29],dispatch:[50,37,17,15,25],mps_class_mv_debug:[75,28,1],duti:15,exploit:[77,22,17],qin:31,anti:41,exclud:[32,4,58,18],sentinel:6,constant:[82,57,18,88,10,50,65,46,16,48,32,51,72],poll:[0,6,45,25],poli:41,damag:[62,5],ultim:6,clarif:51,coupl:[30,37],resort:25,invert:[65,18,15,74],feldt:93,invers:[53,18],fixabl:80,mark:[53,54,57,17,18,61,62,63,65,67,69,70,71,74,19,58,42,20,24,25,26,27,31,10,80,13,36,1,15,93,38],klauser:31,workshop:[31,88],sparecommitexceed:6,weak_table_:8,scannabl:[42,59,71,25,37,38],string_equalp:25,"0x0000000100002fe4":16,parser:37,mps_arena_spare_commit:[6,71,29],"000ae0397334e0a0":13,derefer:1,thousand:44,resolut:[32,13],andrew:[93,31],catastroph:71,mps_sac_class_limit:12,compactli:[68,71,58],ironpython:15,lectur:[13,31],former:[42,54,67,72,21],mps_arena_spare_commit_limit:[71,29],sound:[11,18],"char":[84,87,36,58,32,25,37,16,33,13,28,34],"0x000000010000261b":16,thesi:31,"0x000000010002686d":16,mps_align_t:[59,48,92,34,28,35],diagnost:4,poolfre:[34,80],epdlpoolclass:41,antoni:31,thisclasscoerc:41,wasmark:26,trick:37,cast:[54,60,32,48,70,33,34,41],invok:[30,57,59,18,50,46,90,7,33,41,13,35],mps_ap_alloc_pattern_end:[47,72],mps_pool_debug_option_:[46,28,1],"na\u00efv":[90,25],amcscan:16,invoc:[57,59,48,71,50,41],mps_message_gc_not_condemned_s:36,addroffset:34,findshortresetrangehigh:18,advantag:[30,58,43,77,89,11,65,46,71,72,25],stdout:32,metric:64,henc:[53,30,55,57,74,70,84,7,72,25,41,50,35,80],mps_scan_begin:[82,17,8,33,48,37,78,25,35],worri:[30,17,11,15,25,84],destin:[32,87,29],cluster:18,"0x1003f9b98":16,cobol:[11,15],eras:15,cbsiteratelarg:50,"0x7fff5fbff830":16,mps_ss:17,nearbi:[63,16,11],smalltalk:[53,54,56,31,11,15,72],sos9sc:88,develop:[39,18,70,4,5,21,44,6,7,27,29,31,45,10,11,46,41,86,15,50,51,38],"0x1003f9b58":16,alphabet:18,stepper:[82,10,22,68,71,35],lippgc:88,same:[84,54,55,56,57,17,18,62,63,48,67,68,69,40,72,74,13,58,42,59,43,77,22,78,79,50,8,26,27,29,30,82,31,10,25,46,47,12,34,35,85,87,36,32,88,90,33,41,92,37,51,38],check:[0,54,56,17,18,60,40,80,1,19,4,34,42,20,43,6,79,7,25,29,81,30,31,45,10,50,46,12,41,88,89,84,90,16,33,37],binari:[54,56,17,5,21,32,6,43,89,67,51,13,29,58],epoch:[32,6,34],mps_arena_class_t:[59,29],pad:[54,80,37,57,9,1,60,61,22,8,86,65,35,46,16,2,74,27,25,79],protsync:51,sos8gc:88,circularli:71,knuth:71,document:[39,17,18,60,62,48,70,40,3,4,34,42,5,21,6,7,80,26,28,29,81,30,31,45,10,83,46,47,41,43,15,84,50,71,94,51],ensuresomeclass:41,week:15,exhaust:[77,35],finish:[0,30,9,50,61,6,25,11,65,42,46,53,16,80,74,13,28,41,29,58],typesett:15,poolfix:17,nest:[57,47,28],assist:[71,13,16,70,65],driver:51,someon:[30,48],treadmil:[60,70,57,31],event_param:13,driven:[67,31],capabl:[84,13,71,72,15],mps_root_create_table_mask:82,mps_addr_pool:[81,29],improv:[56,18,63,68,72,4,44,22,24,32,27,30,9,31,10,8,46,36,89,15,77,91,92,51],extern:[54,55,56,57,58,18,65,71,72,74,42,24,80,29,30,45,11,83,41,89,90,50,92,51],postpon:[37,25],mps_fmt_skip_t:[71,35,37],tradition:67,mps_args_end:28,appropri:[56,57,58,18,62,65,71,72,74,42,59,21,77,7,80,29,82,25,41,35,89,90,37,38],port_:[37,25],macro:[84,17,18,21,61,6,88,48,46,7,12,33,41,34,28,37,51,52],attrscan:34,justifi:[59,18,50],w3i6mv:[4,88],without:[0,39,55,56,17,18,54,60,62,65,67,53,71,72,4,41,5,6,24,27,28,29,81,30,82,9,31,10,50,11,46,47,12,34,35,86,36,48,15,84,90,33],evict:57,temptat:33,model:[53,31,15],branquart:[31,15],dereferenc:[34,84,15],commitlimit:6,table_rehash:[87,25],tobt:18,gdr:80,printezi:31,execut:[39,55,56,57,17,18,62,74,70,1,58,59,5,43,44,8,32,80,41,21,15,94],among:[30,15,46],c89:57,unflush:13,rest:[94,35,37],halfwai:50,mps_build_lc:88,gdb:[13,16,29],doligez:[31,15,74],kill:30,tracequantum:16,aspect:[57,21,44,88,11,71,50,29],touch:[10,84,87,61],rankexact:34,speed:[30,57,18,77,11,15,71,12,33,13,84,38],mps_build_ll:88,concentr:[30,51,21],death:[53,77,31,25],autocad:53,miscellan:[30,32,23],issetrang:18,mmap:[60,62,72,51],except:[39,58,18,62,48,67,2,74,59,5,43,6,65,80,30,82,50,83,46,12,13,35,89,15,33,94,22,51,72],littl:[42,30,18,6,63,11,15,46,12,80,62,51],desktop:71,"0x1003cbe50":16,instrument:51,setenv:4,treatment:57,exercis:[16,70,31,18,50],notori:15,role:[54,37],doctorat:31,pitman:93,disrupt:31,splayfindfirst:50,nielsen:31,tobas:18,read:[0,58,18,63,48,67,70,71,72,74,13,42,43,6,8,29,82,9,32,25,83,46,34,35,15,90,16,94],outermost:47,amc:[20,36,17,10,22,48,16,47,2,80,19,27,37,38],mop:46,mov:8,vivek:31,reassembl:33,sac_o:12,anchovi:50,insist:41,sobalvarro:[57,31,15],mod:51,mps_class_am:[27,28],intel:[56,58,88],distil:15,patrick:31,robson:31,integ:[54,82,37,58,18,88,32,8,35,67,69,7,71,59,25,13,34,87],shrink:[77,6,58,50],benefit:[42,30,54,6,46,71,8,41,62],weakest:72,either:[39,57,58,18,62,63,65,67,71,72,4,42,5,43,77,6,24,25,26,28,29,81,30,82,83,8,11,46,12,34,35,87,48,89,15,90,16,50,37,51],larchant:31,output:[10,32,48,16,71,50,4,13],downward:[29,18],inter:[57,22,65,67,24,72,35],manag:[0,39,55,56,57,17,18,54,60,61,62,63,64,76,65,66,67,68,53,70,40,2,73,74,75,34,58,42,20,59,5,77,6,23,79,24,50,8,26,27,85,29,81,30,82,9,31,45,83,25,11,46,12,92,13,35,14,80,87,36,48,72,94,89,69,15,37,84,90,16,33,41,71,93,1,22,51,38],fulfil:6,arena_o:29,cbsfinish:50,minsiz:50,free_:80,poolawl:18,thermodynam:31,mps_key_format:[1,9,22,8,37,79,2,25,27,28,35],legitim:33,interlock:87,splayroot:50,journei:37,cruz:31,assert_mpsi:51,has_reservoir_permit:12,constitut:[37,18],resfail:[34,50],basic:[42,30,58,6,74,11,15,46,70,71,51,25,92,41,37,29,72],slice:[42,36],poolmv2:50,thereund:46,definit:[82,56,17,18,45,6,80,15,46,7,48,50,41,51],achiev:[82,56,77,6,65,24,71,62],legal:28,moon:[93,31,15],pioneer:15,moor:[31,18,43],exit:[30,55,18,65,37,90,16,94,35],"0x00000001003f9a58":16,mps_fix2:[54,82,17,8,33,37,78,25,35],mps_fix1:[54,82,17,8,33,37,78,25,35],virtualalloc:[51,29],sus8gc:88,blocksiz:50,obj_pad:[35,37],immun:[57,65],compris:[6,72,18,43],power:[56,58,18,88,8,89,15,67,24,59,71,48,25,34],event_typ:13,sixth:37,garbag:[0,39,55,56,57,17,59,54,60,61,62,63,65,67,53,70,71,72,74,4,75,13,58,42,20,44,22,23,79,24,25,27,29,81,30,82,9,31,10,8,11,93,47,34,35,85,86,87,36,69,15,37,84,77,90,16,92,52,94,6,38],inspect:[18,65,16,3,35,29],indira:31,"0x00007fff9050ae2a":16,broken:[54,57,58,71,72,80,26],great:[56,63,17],fulli:[57,48,7,71,80,41],regexp:10,referr:65,s7m6mw:88,w3almv:88,src:51,simplest:[84,4,70,37],central:[71,57],greatli:[30,4,70,89],mps_mvt_size:77,arena_class_vm:29,joyner:[62,31],drag:31,acm:31,arenafin:83,degre:[46,48],wolf:31,stand:[67,30,24],wold:1,act:[42,62,80,57,74],johnston:[54,55,31,67,70,71,92,93],luck:[10,84,17],processor:[39,56,57,17,59,62,63,48,66,67,69,70,71,72,74,84,58,88,8,82,32,65,13,15,51],mps_message_type_en:[0,90,25],"001b":13,routin:[54,30,83,46],effici:[53,39,17,18,62,63,65,67,69,70,40,72,75,84,58,42,59,77,6,24,8,27,29,30,82,9,31,11,46,92,22,34,89,50,71,37],"001a":13,dot:13,shaw:31,"00000001003fd000":13,wordindex:18,terminolog:[87,62,67,71,74,41,52],surviv:[42,53,56,36,17,59,62,11,15,69,74,37],vigil:17,fence_templ:1,btrangessam:18,cbsblocklimit:50,nikla:31,icfp:31,your:[39,55,17,68,13,4,84,44,32,29,30,82,10,25,47,34,86,90,16,33,37,38],stare:8,fmtdy:17,log:[34,32,4,13,50],unflip:83,area:[42,30,56,57,58,59,54,61,62,63,11,65,66,71,50,29],aren:[39,17,5,25,34,94,84,18],mps_class_snc:[79,28],poolclassmrg:83,overwrit:[54,56,58,18,30,60,62,46,69,16,71,59,1,84],checkabl:6,strip:33,start:[0,54,55,57,17,18,72,65,70,40,2,4,75,41,58,42,59,77,6,79,24,50,8,27,28,29,81,82,9,25,47,48,92,13,85,80,36,89,15,37,84,16,33,71,52,94,22,38],mps_os_li:88,"00000001003fd328":13,interfac:[0,39,56,57,17,18,54,60,61,83,64,65,68,53,70,2,3,19,75,34,58,20,59,43,77,6,7,8,26,27,28,29,81,30,82,9,31,45,10,50,11,46,12,13,49,85,80,87,48,72,32,88,89,15,37,84,90,33,41,92,94,22,51,52],low:[42,30,36,18,45,60,32,8,15,67,46,33,71,74,92,13,88,50,35,29],lot:[42,30,87,36,17,6,50,11,15,46,24,74],resum:94,strictli:[53,51,18,58],obj_skip:[16,35,37],repetit:[11,33],mps_message_gc_start_whi:[0,36],longword:[56,63],morrison:31,programmat:3,conclud:30,tomasev:31,regard:[24,56,57,62],alain:[31,15],aslr:16,amongst:87,allegro:15,procedur:[57,59,45,25,15,90,71,72,33,37,51,38],obj_t:[84,82,87,8,25,78,16,33,13,37],illus:[0,62,71],trickier:37,untag:8,faster:[0,30,62,11,15,53,71,12,33,34,84],notat:18,amcscannailedonc:16,table_ref:[87,25],amcz:[20,9,33,2,25,19,37,38],sbrk:[60,71,58],possibl:[39,53,55,56,17,18,62,63,65,71,72,34,58,42,50,59,5,43,77,24,7,25,29,30,82,10,8,46,12,41,35,80,87,15,84,16,33,37,51,38],"default":[0,10,32,33,37,16,25,41,4,13,51],"__mode":15,poolalloc:[34,80],nearest:71,unusu:[62,29,15],manuel:31,embed:[31,21,32,50,15,65,33,37],deadlock:[6,63,90,43],powerless:39,pool_superclass:41,gone:29,addradd:34,creat:[0,39,57,18,54,60,61,62,1,48,67,70,71,2,74,75,13,42,77,6,78,79,8,27,28,29,81,30,82,9,25,83,46,12,22,41,35,85,86,87,36,72,15,84,90,50,92,94,37,51,52],conundrum:37,pseudo:17,deep:7,strongli:[53,31,74,15,67,71,72,25,92],intro:[42,18,21,6,46,50,3,41,34,51],decreas:[30,89,58,72],file:[54,17,62,48,66,71,72,3,4,5,21,24,25,29,30,45,32,13,15,90,16,37,51],type_str:[16,25],ecoop98:31,proport:[53,30,36,17,44,62,50,66,24,33,37],eliot:[93,31],tv_sec:32,fill:[84,82,18,32,6,63,37,46,80,74,92,34,35,62],hit:[42,58,62,63,66,16,72,74,94],again:[42,53,87,58,18,54,32,62,74,11,90,84,46,24,25,41,37],beyond:[82,17,15,29,4,35,51],know:[39,53,55,57,17,18,60,48,66,68,74,34,42,24,29,30,82,10,11,46,12,41,35,16,33,37,38],fput:[30,37,32],"0x1003f9ba8":16,hybrid:[53,62,50,59,45],reduct:[42,31],tight:[13,89,17,15,24],"0x00000001003fb000":16,valid:[54,57,59,62,66,72,18,6,7,80,29,81,82,8,25,11,46,84,36,16,50,51],compet:[65,29],epdldebugpoolclassstruct:41,you:[0,39,17,54,60,48,67,53,40,72,4,13,42,5,44,22,78,91,79,24,50,25,27,28,29,81,30,82,9,10,8,11,46,47,12,92,34,35,87,36,32,84,90,16,33,71,94,37,51,38],zvi:31,coerceclass:41,abysm:50,fork:57,discours:57,btre:18,genuin:[30,37,33],sigmod:31,config_var_df:51,sequenc:[82,57,18,89,6,1,70,16,40,33,41,34,35],symbol:[84,82,18,31,32,86,15,16,48,25,13,37,51,52],gnumak:4,lueh:31,wirth:15,string_:[16,37],briefli:[89,24,11,17],cbsfindlargest:50,peak:[17,29,37],nrevers:31,pool:[39,53,56,57,17,18,54,60,62,1,65,68,40,2,74,19,4,75,34,58,42,20,59,5,88,44,22,78,49,79,50,91,8,26,27,29,81,82,9,31,45,10,25,83,86,46,12,92,13,35,85,80,36,48,37,84,77,90,16,33,41,71,52,94,6,38],mps_arena_create_k:[28,37,29],reduc:[42,30,56,57,17,31,60,89,6,63,83,65,53,24,51,33,66,29,72],neighbour:50,"0x1003f9b48":16,symbol_pool:13,"0x1003f9948":16,directori:[4,51],readership:[18,45,6,21,46,50,41],cmp:[87,25],descript:[0,80,37,18,10,33,82,15,35,84,87,71,65,74,13,94,34,72],unseg:71,contraven:41,tricki:[34,33],inevit:18,mimic:1,mass:62,potenti:[53,82,17,18,43,32,24,59,37],appl:[13,16,31,15,66],mps_chain_destroi:[36,37],degrad:[30,9,50],cpu:[53,30,56,88,62,63,11,4,29],scm:[44,16],represent:[53,54,87,17,31,61,6,65,67,68,69,70,71,29,50,62,18,72],all:[0,39,55,56,57,17,18,54,61,62,63,65,66,67,53,70,40,72,74,4,34,58,42,50,59,5,43,44,6,78,24,7,8,26,28,29,81,30,82,10,25,11,46,47,12,92,13,35,85,80,87,36,48,1,88,15,37,84,77,90,16,83,33,41,71,94,22,51,38],caleb:31,consider:[30,17,31,54,62,3,49,51],illustr:[70,17,29,37],lack:[32,62,15],ala:18,scalar:[68,63,71,35,59],extrapol:37,attrincr_wb:34,abil:[42,58,11,15,46,51],ptw:46,follow:[0,57,18,62,65,70,40,72,13,42,5,21,6,91,24,50,25,28,30,82,10,8,11,47,12,22,34,35,80,48,43,89,15,84,16,33,41,71,37],disk:[30,58,31,62,63,66,68,71,72,74],ruinou:44,resok:[34,41,18,80],abid:6,mps_ap_alloc_pattern_reset:47,accesswrit:34,ron:31,tracefix:[6,13,80],codasyl:15,mps_message_gc_condemned_s:36,cbsdelet:50,program:[0,39,56,57,17,59,54,60,62,63,65,66,67,68,53,70,40,72,74,3,4,84,58,5,21,44,22,78,24,8,27,29,81,30,82,31,10,25,11,47,12,13,35,87,36,48,1,32,89,69,15,77,90,16,33,71,94,37,51,38],those:[54,56,57,17,18,61,63,65,70,71,72,74,84,58,42,43,6,7,32,29,30,10,80,46,13,89,78,37],"10992f000":13,segclass:41,swallow:74,neglig:5,introduc:[42,30,82,61,6,11,65,71,15,72],xiaohan:31,liter:57,straightforward:[51,25],replic:[68,62,72,31,74],far:[42,30,17,18,43,60,11,65,16,25,34,37,29],mps_shift_t:34,mpm:[42,34,17,18,80],fat:51,util:[13,52,15,50],mpw:51,mps_class_amc:[22,28,37],verb:[62,18],mechan:[0,53,55,56,57,58,59,54,60,61,62,63,65,67,70,71,72,74,84,20,43,6,25,29,81,45,46,41,39,21,15,90,50,94],quantifi:31,veri:[39,54,17,18,61,62,63,65,70,40,72,74,84,58,42,59,44,6,24,8,30,82,45,10,25,11,12,92,41,85,89,15,77,83,50,71,37,51],rebuild:13,gmake:4,recurs:[30,57,59,31,43,6,15,66,7,71,41],"0x0000000100005ff5":16,lisp:[53,30,57,59,31,62,11,65,66,67,68,70,71,15,13],rescommit_limit:[6,34],list:[0,53,55,56,57,58,18,54,62,68,70,71,72,84,5,43,24,91,8,28,29,81,30,31,10,46,12,13,49,88,89,15,16,50,92,37,51,52],mps_free:[39,81,9,85,77,22,84,79,12,8,92,27,75,35,62,38],arenapark:6,emul:[39,8],reset_mask:13,adjust:[56,60,63,65,46,24,70,71,80],mps_lib_get_stderr:32,stderr:[30,16,33,37,32],small:[39,53,55,57,17,18,61,62,63,65,70,71,72,19,42,20,59,44,6,24,29,30,9,33,11,46,12,84,85,36,89,15,50,37],tear:[32,37],reg_scan:82,kemeni:15,compareless:34,lockreleaserecurs:43,synergi:46,inherit_class:41,tupl:59,ref_io:33,computation:68,ten:[44,54,13,70,57],ensuredebugclass:46,addrset:34,pun:[52,70,37,48,33],past:[39,30,57,17,18,35,67,37,38],rate:[31,6,63,15,66,67,70,71,62],pressur:72,design:[39,53,17,18,54,62,63,80,1,3,41,42,20,59,21,6,24,7,25,26,29,30,31,45,32,8,11,46,50,34,43,15,84,90,91,83,33,94,37,51,38],pass:[0,54,57,17,18,62,64,65,66,67,69,71,2,1,75,13,58,42,77,22,79,50,32,26,27,28,29,82,9,31,10,8,11,46,12,34,35,85,80,87,36,15,84,78,16,33,41,92,94,37,51,38],further:[0,30,82,87,57,17,6,69,84,24,33,13,35,29],suboptim:[36,37],mps_chain_creat:[36,37],mps_arena_class_vm:[28,37,29],cursor:17,what:[0,39,57,17,18,54,72,34,42,59,44,6,49,24,8,29,30,82,10,80,11,46,12,41,35,86,36,89,84,16,33,94,37,51],stood:30,sub:[41,58,18,50],richard:[31,18,21,6,43,83,46,7,80,50,26,3,34,93,51],clock:[0,57,32,6,16,71,25],diag:51,sum:[54,82,59,77,62,89,67,92,75,35,29],mps_pool_class_mv_debug:46,abl:[54,82,57,18,21,72,43,11,69,15,37,46,24,16,65,50,94,35,29,38],overload:71,delet:[0,30,56,8,78,15,67,24,50,71,25,13,34,39],abbrevi:[71,63,64,25],version:[0,17,18,48,40,2,3,75,13,42,20,59,21,77,6,79,50,25,27,88,29,81,30,82,9,45,8,46,92,22,34,35,85,87,43,15,84,16,33,71,94,37,51],regnesentr:31,intersect:50,consecut:[77,54,59],mps_build_mw:88,mps_build_mv:[51,88],runfinalizersonexit:90,"public":[53,54,55,56,57,58,59,60,61,62,63,65,67,68,69,70,71,72,74,4,30,10,48,84,15],contrast:[55,71,62,29,74],sizeisalign:10,millisecond:29,hasn:[53,13],full:[30,16,18,54,47,88,70,15,66,90,7,12,25,13,37,29],themselv:[30,56,18,67,90,34,41],berkelei:[31,5],variat:[89,24,71,62,72],sanctifi:34,sophist:[77,24,51],client_is_wait:29,behaviour:[84,43,10,6,45,48,68,46,90,50,33,41,13],modular:[10,62,46,15,30],shouldn:[42,17,37],spector:93,box:[57,58,65,67,69,72],omiss:51,solari:[4,88],excess:15,free_siz:1,method:[84,54,56,57,17,60,65,71,2,74,4,41,58,42,21,6,78,79,50,25,26,27,82,9,31,45,10,8,86,46,48,22,34,35,80,36,72,15,90,16,33,52,37,51,38],standard:[57,62,64,48,70,13,4,84,21,6,24,25,29,81,30,31,32,65,41,15,33,51],modifi:[54,36,18,21,6,15,46,24,71,65,57,28,62],pointeradd:34,valu:[0,54,55,56,57,17,18,62,63,65,67,68,69,70,71,72,74,13,58,50,59,88,6,24,7,8,26,28,29,30,82,10,25,12,34,35,80,87,48,1,32,15,84,78,16,33,41,92,37],arena:[0,39,57,17,18,72,62,1,48,68,69,71,2,74,75,13,42,20,59,44,6,79,8,27,28,29,81,82,9,45,10,25,83,46,12,22,34,35,85,86,87,36,77,90,16,50,41,92,94,37,52],search:[54,18,31,61,89,24,71,50,13,58],ahead:57,garwick:31,fwd:[37,35,25],fstruct:37,removeadjacentrang:50,mac:[4,31,66],prior:[0,13,87,15,50],amount:[42,30,56,36,17,18,44,6,89,65,77,24,71,51,8,92,34,75,29,72],calder:31,pick:[41,69,31,25],action:[42,30,56,54,80,67,46,90,40,72,25,71,34,84,29],pauillac:43,mps_addr_fmt:[35,29],magnitud:[68,62,63,71],via:[84,62,1,48,70,72,74,75,13,5,77,6,79,7,8,27,29,81,30,82,9,10,80,11,12,22,41,85,87,32,15,83,50,92,94,37],depart:31,declin:47,primit:[30,24,57,65,15],transit:42,"0x1003fb130":16,reservoirpermit:41,readili:[32,24],filenam:13,mps_telemetry_get:13,inappropri:24,mps_io_destroi:32,heurist:[60,57,15,74],demonstr:13,gratuit:18,decrement:[67,24,63,72],coercion:41,dangl:[42,62,56,11,1],select:[42,18,31,10,6,66,68,72,74,13,51,58],gudeman:[67,69,70,58,31],hexadecim:13,sparecommit:6,"0x1003cb970":16,distinct:[54,58,21,60,88,11,65,68,71,17],findlongresetrangehigh:18,etc:[58,60,62,11,91,71,4,13,51],regist:[39,54,57,17,59,62,63,65,67,70,71,72,75,13,77,22,78,79,25,27,29,82,9,8,33,83,34,85,80,15,84,90,50,92,38,94,37,52],certainli:30,coverag:18,workstat:[65,15],rhel:39,azaguri:[57,31],taken:[36,6,11,70,24,7,71,25,34,29],zorn:[30,57,58,31,15,93],travers:[30,6,56],minor:0,more:[0,39,57,17,18,54,60,61,62,63,65,67,68,53,70,40,2,74,4,34,58,42,59,5,43,77,22,78,23,24,8,28,29,81,30,82,31,10,25,11,46,47,12,92,13,35,87,48,32,69,15,37,84,90,16,50,41,71,94,6,51,72],mps_reserv:[10,48,37,46,16,72,25,84,35],flat:[17,15],mellon:31,desir:[30,71,58,46],mps_alloc_dbg_v:46,hundr:[44,70,57],hyperspec:[57,15],brisl:[50,18,21],mps_sac_creat:[71,12],flag:[24,56,83,29],stick:63,particular:[0,53,57,17,18,54,60,62,63,65,70,71,72,74,84,59,5,43,77,6,24,25,29,30,50,46,47,48,13,35,80,87,15,33,93,22,51],known:[39,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,53,70,71,72,74,34,5,77,6,76,24,25,30,80,11,48,41,87,89,69,15,84,90,94,37],beown:43,cach:[56,57,17,18,62,63,66,67,70,71,72,75,20,59,77,6,79,24,8,27,81,9,31,45,11,12,85,92,38,22,52],mps_key_mean_s:[77,92,75,28],canterburi:31,none:[42,87,18,10,6,84,51,8,41,13,28,35,29,38],mps_class_mvff:[92,28],methodolog:31,operator_:37,damien:31,outlin:50,resresourc:34,dev:[4,72],histori:[42,20,31,18,21,6,43,83,62,15,46,45,7,80,50,26,3,13,41,51],rootstruct:34,remain:[42,54,80,57,9,89,74,70,90,37,67,24,50,71,51,25,13,84,34,29],den:[67,30,70,31],learn:[39,30,15],abandon:65,motiv:[59,15],btfindresrangehigh:18,dee:56,def:[6,51,34,18,50],stubborn:16,omit:[7,16],rootvar:34,bogu:26,useabl:6,scan:[39,53,55,56,57,17,18,54,72,63,65,68,70,71,2,74,75,13,58,42,20,59,44,22,78,49,79,24,8,27,29,82,9,31,45,10,25,86,46,48,34,35,85,80,89,84,77,90,16,33,92,52,94,37,38],rodriguez:31,registr:[57,25,52,94,74],share:[57,60,62,68,70,71,4,13,43,6,24,25,29,30,31,11,46,41,15,16,33,94],accept:[36,62,80,37,70,12,33,57,41,35,51,38],pessim:77,prehistori:6,unreli:[30,11],"0x0000000100001947":16,partner:15,phrase:68,struggl:16,strlen:25,resmemori:[34,50],condemn:[0,42,36,17,45,80,70,65,67,54,53,16,71,25,26,57],uncheck:7,huge:[30,63,71,66],cours:[53,32,6,37,84,35,29],untru:51,awkward:8,divid:[53,54,55,57,58,18,32,62,89,11,67,70,24,59,71,34,37],rather:[42,30,56,57,18,54,60,10,6,63,15,48,77,53,16,65,13,84,37],anoth:[0,53,55,57,58,18,54,60,65,66,70,71,72,74,34,42,24,8,29,81,30,82,25,33,11,47,12,41,87,36,48,89,15,84,90,16,50,94,37],comfort:44,nwper96:31,commonli:[42,54,56,58,59,10,62,63,66,67,68,71,74],rapport:31,narrowli:53,daconta:[31,15],heck:31,compactifi:[57,31],reject:[30,33],strong:[42,17,18,65,67,90,70,71,15,25,72],simpl:[57,17,18,70,71,72,4,58,59,43,77,24,25,31,32,8,85,89,15,16,33,38,37,51,2],mps_fmt_create_auto_head:35,pieper:[93,31],arenaseri:6,resourc:[0,54,59,60,62,65,66,70,40,80,4,34,77,32,29,30,10,25,11,41,35,90,50,51],referenc:[53,54,56,57,59,61,62,63,68,71,74,84,22,79,24,7,8,27,9,34,90,16,37],algebra:[68,71,59],mps_fmt_copy_t:35,variant:[9,61,22,8,15,37,79,71,72,33,27,35,38],reflect:[58,31],okai:[26,34],type_t:[84,87,37,25],sos8gp:88,rovner:31,varianc:35,associ:[0,30,80,87,84,59,43,6,50,64,90,15,67,69,70,12,65,25,13,62,51],unreserv:80,cmpf:25,circumst:[81,87,57,60,62,90,24,50,28,37,29],"short":[42,80,63,17,18,44,50,68,71,12,74,34,72],addr_method:[25,28,8],confus:[34,71,37,59],mpseventtxt:13,ambigu:[55,57,17,59,62,69,71,72,74,84,42,6,79,8,26,27,29,82,31,25,22,34,90,33,38,37,52],caus:[54,17,60,61,62,1,65,68,70,71,72,74,58,42,5,77,6,24,25,29,81,30,31,10,11,47,12,90,16,50,92,37,52],callback:[50,45],chiefli:53,leroi:[31,74],issubclasspoli:41,began:13,target_check_deep:7,rotat:61,reservoir:[46,13],root_o:82,soon:[42,82,56,57,17,74,90,65,37,24,33,4,35,29],mps_lib_memset:[32,34],reachabl:[53,54,57,58,59,62,63,65,67,69,70,71,72,74,22,79,24,8,27,29,30,82,9,31,25,11,84,80,15,90,33,37],cook:31,scientist:15,through:[42,55,41,17,18,6,80,15,37,67,46,90,12,65,50,26,13,34,29],cbsalign:50,word_act:18,hierarchi:[57,62,63,66,67,71,72,74,41],coerceinst:41,exponenti:53,suffer:[30,63,54],kistruck:93,tracescansegr:16,paramet:[84,57,17,18,60,65,13,80,41,77,22,79,32,27,82,9,45,10,8,46,12,34,35,48,15,50,92,94,37,51],"0x1003f9b70":16,typedef:[84,87,36,18,1,6,8,70,48,37,50,12,25,41,28,35,51],make_bucket:25,special_:37,fri4gc:88,mps_pool_class_epdr_debug:46,late:[81,62,25],harmless:[46,47],classofpoli:41,pend:[80,18,50],rapidli:[44,15],exchang:91,stephen:[93,31],tractstruct:6,might:[53,54,56,57,17,18,60,61,62,65,67,68,13,72,74,41,42,44,78,24,50,32,28,29,81,30,82,25,10,8,46,12,34,35,87,36,48,89,84,90,16,33,71,94,37,51,38],alter:[40,51],mps_key_t:28,finer:72,wouldn:[24,11,25],good:[39,42,82,17,5,58,44,32,63,89,90,84,53,71,13,37,29,18],"return":[0,39,57,17,18,54,62,83,65,70,40,2,75,34,50,59,43,44,6,78,79,24,7,25,27,28,29,81,30,82,9,10,8,11,47,12,92,13,35,85,80,87,36,48,32,89,37,84,77,90,16,33,41,71,94,22,72],amelior:46,mps_ap_t:[59,8,79,47,40,25,84,37],timestamp:13,pollut:42,entry_interpret:16,inria:[31,43],symbol_t:84,framework:[42,20,31,15,45],swizzl:31,mps_rank_ambig:[82,71,37,59,72],arenaalloc:6,compound:[30,57,51],abi:88,arbitr:62,detach:80,complain:46,bigger:[44,57,35,18],feet:29,eventu:[0,42,11,15,46],weak_buckets_ap:25,osarct:[4,88],datastructur:[6,18,50],refresh:[56,71,50],mysteri:[30,56,15],easili:[39,87,59,5,63,15,46,24,34],average_s:[92,75],ecru:[60,55],tracescan:80,type_pad:[16,37],"12th":31,found:[17,18,74,71,1,13,58,44,80,81,30,82,25,11,46,12,84,35,87,50,92,37],difficult:[30,56,59,54,62,90,15,24,16],mps_telemetry_label:13,clamp:[6,57,69,29,74],interleav:[39,54,62,57,2],weight:[56,18,31,67,24,72,58],"0x0000000100074106":16,arenaread:83,lua:15,hard:[42,30,82,58,62,11,24,16,71,72,84,37],idea:[42,57,45,15,46,90,71,25,13,41],ifip:31,realli:[42,30,81,54,6,46,33],heavi:30,linkag:51,cbsfinddeletelow:50,expect:[53,59,63,74,42,18,21,44,80,29,30,82,47,12,34,35,36,43,15,77,16,37],mps_stack_scan_ambig:[84,82,37,72],longjmp:35,operation:67,thing:[30,87,17,31,77,83,6,51,11,46,90,7,12,41,34,37,29,72],todo:25,event:[0,30,37,5,45,10,32,50,11,35,87,70,90,16,80,25,4,13,29,52],"0x00000001003f9c90":16,ftp:4,mps_sac_alloc:12,safeti:[52,94,87,43],uncollect:24,robert:31,publish:[53,91],research:[11,31,15],bibop:[72,17,15,58],resparam:34,mps_arena_cr:[6,29],fmt_ah:35,arenareleas:6,rove:[61,89],cbsiteratemethod:50,benjamin:[30,93,31],difficulti:[0,74],qualifi:[63,15],mps_lib_get_eof:32,proxi:54,uncommit:29,advanc:[20,86,58,31,30,61,8,11,15,25],mmu:[68,62,74],guess:16,pair_:[16,37,33],controlpoolstruct:6,mps_ap_creat:[9,77,22,79,8,92,27,84],reason:[17,59,65,71,72,74,84,18,5,6,50,80,29,30,82,10,8,34,35,32,89,15,90,33,92,38],base:[56,17,18,63,65,66,70,71,72,4,13,58,42,59,88,6,79,50,8,27,28,29,82,9,31,25,48,41,35,80,87,15,37,78,16,33,92,22,51,38],isymtab:37,believ:[56,70],suddenli:13,put:[42,54,87,57,18,60,8,62,25,83,48,46,69,74,29],classnamestruct:41,canon:41,earliest:15,mps_alloc:[81,9,85,79,72,10,22,8,48,37,84,46,77,12,74,92,27,75,35,62,38],lag:31,basi:[42,24,18],mps_label_t:[13,48],director:93,kept:[42,89,56,57,43,10,25,83,78,24,50,72,33,37,51],mpsc:48,thread:[39,57,17,59,62,63,67,70,72,34,58,42,20,43,6,29,30,82,9,31,12,41,35,86,87,84,16,94,37,52],mpsa:48,worth:[30,71],vararg:46,"_mps_fix2":17,mpsi:[10,16],mymp:4,perhap:[42,18,10,62,16,25,29],perman:[72,65],cbsstruct:50,lifetim:[53,55,56,17,31,60,61,22,63,11,15,66,77,71,65,25,37,62,72],entry_string_append:16,hasseg:6,simultan:[39,30,25,57,74],major:[42,30,56,57,5,22,89,15,46,53,62,29],dont:16,obviou:[46,6,34,18],upper:[77,48,51],feel:[46,37],articl:37,number:[0,53,56,57,17,18,54,60,62,63,67,68,69,70,71,2,74,4,13,58,59,43,44,6,25,27,29,30,82,9,31,10,50,83,12,34,80,36,32,89,15,77,16,33,41,37,51,72],placehold:37,globals_scan:37,mps_res_fail:[10,90,47,33],pop:[56,59,79,71,40,85],mps_message_typ:0,done:[0,53,57,58,62,71,74,4,42,25,29,30,32,83,46,13,87,36,15,16,50,37,51],uninterest:[17,50],stdlib:30,stabl:[77,31],implementor:[53,41],miss:[42,56,31,6,70,65,66,67,16,71,62],"000ae03973352375":13,fanci:46,gpl:5,differ:[39,55,17,18,62,65,67,68,70,71,3,4,58,42,5,44,6,25,29,30,31,10,50,11,46,12,34,35,87,36,48,89,77,16,33,92,37,51,38],fuller:11,script:[4,15],mps_t_ulongest:88,gpf:53,luiz:15,least:[0,54,57,17,18,61,62,48,67,70,71,74,84,59,6,80,29,30,50,46,12,13,85,87,36,33,37],mps_message_queue_typ:[0,62,25],checkpoint:21,paint:65,stori:[6,37],mps_key_awl_find_depend:[25,28,8],reclam:[67,90,31],statement:[84,48],relink:70,aver:[46,83,50],twenti:57,scheme:[0,53,57,58,59,65,67,71,72,44,25,82,31,11,13,86,87,15,90,16,33,37,52],supernamestruct:41,store:[0,39,55,56,57,17,18,54,60,62,63,65,66,67,68,70,71,72,74,34,58,42,59,43,6,24,25,29,30,82,31,83,50,11,46,12,41,35,85,48,89,15,84,90,33,94,37,38],eql:68,lii3gc:[4,88],alleg:33,assign:[84,30,59,18,62,89,15,67,70,12,34,13],parc:31,option:[6,50,64,48,46,71,80,27,92,13,75,28,37,29],table_delet:25,mps_thread_reg:[82,70,94,37],"0x7":33,similarli:[33,12,18,25],park:[81,82,57,6,69,74,22,29],pari:31,illeg:[80,40,1],part:[53,54,56,57,17,18,62,63,48,67,68,69,70,71,72,74,34,58,42,59,5,6,24,8,29,30,82,10,80,11,46,41,1,32,89,15,84,16,50,93,37,51],"0x1003fe820":16,mps_lib_fil:[32,50],fall:[53,87,31,77,10,15,24,12,34,72],mps_message_pol:[0,62],ncc:31,std:18,kind:[0,54,57,17,48,60,10,62,33,15,67,46,16,71,51,74,61,37,29,38],grep:13,doubli:[56,8,67,70,71,25,84,52],mipspro:88,cyclic:[39,30,56,57,31,15,72],remot:[22,79,72,8,27,38],remov:[0,42,80,56,6,33,82,15,37,46,24,50,71,48,74,28,35,51,72],dant:31,prot_bar:51,niklau:15,ringstruct:34,reus:[42,81,56,77,89,6,11,15,24,16,71,72,41],architect:93,sigcheck:10,arrang:[39,42,58,54,80,17],stale:[39,87,57,6,74,25,26,29,52],unalign:[82,58,59,62,69,80,92,84],typic:[53,54,55,56,57,58,18,60,62,63,65,67,68,69,70,40,72,74,13,42,59,5,88,77,6,24,8,29,30,82,10,80,11,12,41,35,87,48,32,89,15,84,50,71,37],grei:[42,53,80,45],randomli:11,cleaner:[53,11],comput:[42,30,87,57,58,31,6,25,11,15,24,16,71,72,74,62],"0b00":17,deleg:33,grarup:31,packag:[4,56,72,15],overran:16,perri:31,dedic:[94,15],"null":[30,82,87,50,6,8,48,37,46,78,16,71,80,25,84,28,35],commonplac:58,imagin:[46,13],wilson:[53,30,55,57,58,31,54,61,63,11,65,67,59,71,89],xref:42,brad:31,relationship:[46,41,7,15,68],thingcheck:7,mps_ld_:[34,87,25],ancillari:30,odd:57,lin:31,violat:[53,58,10,62,74,65,67,90,71,72,50,34],mps_res_param:[10,12],align_up:37,accessor:[41,50],count_max:18,build:[39,20,86,57,17,45,47,15,37,68,16,71,4,13,51],command:[0,10,15,16,4,13,51],analogu:70,brace:41,splai:[46,50,45],mktemp:13,pipelin:71,distribut:[39,53,56,36,5,31,44,63,15,67,24,65,72],alignof:37,unsur:[69,59],kai:31,previou:[61,54,17,43,10,80,89,90,16,71,74,13],reach:[0,54,56,57,62,74,11,24,50,72,25,34],mixtur:[54,8,33,48,15,25],crash:[90,11,29],most:[39,53,57,17,18,61,62,63,48,66,67,70,71,72,74,4,84,58,42,59,44,6,24,7,8,29,30,82,10,25,11,47,12,22,34,87,32,89,15,90,16,33,93,94,37,38],plai:31,plan:[31,38],moss:[93,31,74],alpha:[4,73,88],splat:[8,25,78,67,90,71,1],getrusag:32,appear:[39,30,87,57,58,83,62,74,70,65,16,48,25,41,13,50,37,51],bug:[39,30,56,54,10,32,89,11,15,16,65,74,13,84,29],filesystem:51,weak_table_t:8,clear:[30,87,58,18,60,74,67,16,71,72,25,13,33,34],cover:[42,82,63,11,48,71,33,84,37,29],recherch:31,destruct:[30,80],dimension:[71,15],quadword:[56,73],ext:51,getter:6,abnorm:[13,11],clean:[41,56,15,74],mpscawl:8,addr_io:46,blend:15,microsoft:[39,57,88,15,4,51],iwooo:31,think:[84,82,15,46,24,12,34,13],"0x000000010000d75f":16,summer:31,"0x0000000100005e30":16,pooltriv:80,xcode:4,memorandum:31,lispwork:15,eq_hash:[87,25],python:[30,11,15,74],simon:31,session:[29,25],particularli:[30,56,57,18,11,65,69,70,74,41],cdr:[16,37,33],fine:[62,16,90],find:[0,39,56,57,17,18,54,60,63,53,70,71,72,4,13,58,42,6,24,50,25,29,30,82,31,8,46,41,49,87,36,89,33,37,38],leewai:33,impact:51,buckets_fmt_:25,dosser:31,coerc:41,copyright:5,writer:15,solut:[30,55,45,6,50,11,15,46,24,74,4,37],"0x1003f9bc8":16,peculiar:72,ambig:42,rangessam:18,tag_mask:82,mps_message_finalization_ref:[90,83,25],templat:[46,1],factor:[30,62,70],unobtrus:[30,31],iec:[48,32,57,31,15],pooldebugmixinstruct:46,writef:34,boulder:31,remedi:74,poolamc:16,unus:[30,57,58,18,59,62,89,16,71,29,1,35,51],"__file__":46,express:[31,16,84,18,5,59,62,33,89,15,48,7,65,25,41,4,88,34,51],cheaper:[60,30,62,58,54],allen:31,nativ:[72,88],mainten:[41,51,50],fastest:[71,84,57,33],liabl:[13,5],cgi:15,cbsfindfirst:50,him:30,obligatori:41,morgan:31,napier88:31,whenev:[82,87,18,21,60,15,67,24,7,34,37],someclassstruct:41,synthes:31,"0x1003f9b68":16,"0x100001b80":16,mps_build_gp:88,common:[54,55,56,57,58,59,61,62,63,65,67,70,71,74,84,6,23,24,30,10,50,11,41,35,89,15,78,16,33,94,37,51,52],mps_chain_t:[36,22,2,27,28,37],fuzzi:11,unmaintain:15,"0x0000000100068050":16,sac:12,crl:31,"0x1003f9b88":16,set:[53,54,55,57,17,18,60,62,63,65,67,68,70,40,72,77,4,41,58,42,59,43,44,6,24,25,26,29,30,82,31,45,32,50,12,92,34,35,80,87,36,15,84,13,16,33,71,51],art:[62,15],fputc:32,btcreat:18,buildsi:51,"0x1003f9b80":16,extant:79,vinc:31,"00000001078c85b8":13,mutabl:[62,65,43],seg:[42,10,6,16,13,34,41],isfinalpool:6,see:[0,39,55,56,57,17,18,54,60,61,62,63,64,65,66,67,68,53,70,40,2,73,74,3,4,75,34,58,42,50,59,21,44,6,78,76,79,24,7,8,27,28,29,81,30,82,9,10,25,83,46,48,92,13,35,85,80,87,36,72,94,32,43,89,69,15,37,84,77,90,16,33,41,71,1,22,51,38],ierusalimschi:15,arg:[81,41,28,84,29],close:[39,30,57,59,5,54,77,74,90,53,25,51],"1003fd000":13,arm:58,analog:[32,62,29],barn:[93,51,31],"_win32":51,hess:31,expert:[30,93,11,38],misalign:[62,69],someth:[42,30,82,17,10,6,83,15,46,12,80,34,51],particip:80,weakli:[8,15,67,71,72,74],"case":[0,39,57,17,59,54,60,65,53,40,72,4,13,88,44,6,24,50,25,27,29,30,82,31,10,8,83,46,47,12,92,34,35,80,87,48,15,84,77,90,16,33,41,71,94,37,51],won:[42,17,6,11,71,12,84,37,72],mutex:43,amalgam:4,experi:[30,51,91,37,31],type_link:84,altern:[81,54,59,31,32,25,12,50,84,29,72],signatur:[6,7,41,18],mpsevent:13,chain_o:36,disadvantag:[24,70,11,37,58],numer:[69,15,8],complement:30,sole:68,isol:50,mps_ap_destroi:[84,37],res_v:[84,12],awl_pool:[79,8],incident:5,succeed:[10,34,37],stroustrup:[30,15],valuabl:93,consumpt:54,distinguish:[53,54,57,17,22,35,67,69,70,37,58],mps_ld_add:[87,25],classnam:41,"1003ff000":13,"0x000000010002b399":16,struct:[84,82,87,36,1,60,32,6,8,83,48,37,50,12,25,41,34,28,35,51],water:58,cryptic:80,last:[42,30,56,36,17,18,6,50,89,69,16,71,25,41,37,87],delimit:[82,35,33],linuxthread:[94,43],retent:71,hint:[30,57,59,77,47,12,92,36,75,37],alon:72,algol:[57,11,31,15],isomorph:70,xleroi:43,aver_and_check:51,context:[57,59,43,90,15,37,24,71,50,84,35,51],forgotten:16,oopsla97:31,mps_res_ok:[17,48,72,1,90,32,29,81,82,25,10,8,47,12,84,35,36,78,16,33,94,37],blocklimit:50,fermin:31,whole:[42,53,80,1,17,18,74,15,67,59,51,25,27,84,29],ecma:15,load:[30,17,72,58,63,15,71,65,4,13,29,52],songworm:31,simpli:[30,57,59,18,43,32,11,54,46,67,47,71,12,50,34,41,29,72],elliot:31,point:[0,39,57,17,59,54,60,62,1,65,67,53,70,40,72,74,75,13,58,42,43,44,6,78,79,24,25,27,29,81,30,82,9,10,8,46,47,12,92,34,35,85,87,36,48,32,69,15,37,84,77,90,16,33,71,52,94,22,38],instanti:[46,6,50],schedul:[0,63,36,9,31,44,32,22,8,62,90,47,59,25,13,27,29,52],hudson:[57,31],sweep:[20,36,31,18,1,58,10,57,63,15,24,71,80,61,19,27,62,38],arbitrarili:[12,37],header:[54,57,58,60,63,65,66,70,71,72,3,4,22,79,8,27,9,50,48,35,33,38,37,51,52],uniniti:[84,37],hangov:18,church:16,lar:[93,31],mistak:[84,16,12,59],gavin:[93,7,31,50],poolclassam:18,coincid:46,simpler:[0,30,37],topla:31,prot_:51,xci3ll:[4,88],stamp:[32,13],help:[30,17,54,62,1,16,33,41,13,93,28,37,29],devic:[62,11,59,74],due:[39,42,57,54,60,62,80,15,66,77,90,71,72,74,84],empti:[0,42,58,18,89,83,53,34,28,37],destructor:[30,56,57,31,54,15],mps_arena_extend:29,arenapol:[6,16],newcom:25,arenapok:83,txt:13,threaten:[70,57,31],devis:[62,70],obj_u:37,strategi:[42,57,59,31,43,46,24,71],anthoni:93,invis:[46,8],modern:[30,17,59,62,11,15,66,68,24,74,37],versa:[42,6,25,15,8],gavinm:[34,50],"0x0000000100067ca1":16,fire:[46,1],clariti:[10,34,82],imag:[30,71,72,18],ada:54,consequenti:5,unnecessarili:[71,25],gap:[46,66,35,37],fund:6,understand:[11,17,31,25],func:12,weak_array_find_depend:8,cbsdescrib:50,chatter:[0,52],vulner:[30,38],base_address:28,henriksson:31,aaron:34,strictest:53,"0x1003f9b78":16,mpscmvt:77,solid:27,typecheck:7,straight:[46,17],histor:[53,54,56,57,58,59,60,62,65,67,68,70,71,72,73,4,43,45,83,49,88,15],durat:[42,56,59,15,71,35,29],"while":[0,56,62,65,70,71,74,24,8,29,81,30,82,25,11,46,84,15,78,16,33,37,51],mps_key_extend_bi:[92,75,28,85],unifi:46,smart:[71,31,15,72],abov:[17,18,40,4,75,13,58,5,6,24,8,27,28,81,30,11,12,84,35,50,92,37,51],guido:15,fun:[18,6,83,46,7,34,51],mps_root_t:[82,37,72],loos:[53,71,58,15],loop:[54,87,57,17,18,77,90,24,25,84,37,29],pack:[58,35,37],propag:[41,17,37],malloc:[39,30,58,59,6,11,15,37,62],untag_s:25,mem_top_down:29,clinger:31,readi:[41,6,28,37,80],rip:15,willi:31,itself:[56,57,17,65,66,67,69,71,72,74,4,13,43,6,7,25,30,11,46,12,41,87,21,90,16,33],costli:[53,62,63],virtu:61,limit:[0,56,57,17,18,60,62,63,71,72,13,58,5,8,6,24,25,29,82,45,10,33,11,12,41,35,36,34,15,84,77,78,50,93,37,51],arenar:6,pedagog:[34,80],chase:[58,31],weakref:15,yuasa:31,mps_sac_fre:12,hypothesi:[53,22,65],minim:[42,18,31,68,62,15,46,70,12,41,37,51],belong:[0,39,57,59,54,40,72,74,75,77,6,79,25,27,29,81,82,9,8,92,12,22,84,35,85,87,36,33,71,94,37,38],shorten:51,x64:4,shorter:[84,37],stefanov:31,decod:[17,59,72,4,13,52],mps_res_t:[17,40,72,1,75,77,22,78,79,25,27,28,29,81,82,9,10,8,83,46,47,12,84,35,85,36,32,90,16,33,92,94,37,2],varp:37,sqlite3:4,mps_bool_t:[0,81,87,25,48,46,12,33,92,84,28,35,29],conflict:6,higher:[54,82,32,6,65,15,37],vmcreat:13,sigxcpu:94,lie:57,optim:[30,82,63,57,17,31,54,6,33,90,68,69,12,86,25,4,37,29],target_check_shallow:7,wherea:[57,62,40,68],pretenur:31,dimm:56,mps_pf_w3i6mv:88,moment:[34,83,25],arenacreatevm:13,temporari:[46,59,31],user:[0,60,68,44,32,6,62,11,15,46,65,80,8,13,41,29],bartlett:[62,71,31,15],robust:[30,56,18,11,92,28],wherev:34,transitori:50,recent:[54,82,57,17,59,61,6,63,40,74],sunpro:[4,88],lower:[48,6,70,62,29],task:[30,60,62,11,65,15,33,37],net:15,equival:[53,54,22,50,89,4,33,34,28,41],older:[53,30,55,57,88,61,62,35,24,71,72,74,37],entri:[55,87,17,18,72,6,25,11,15,65,8,93,94,38],yehudai:31,spent:[62,29],diwan:31,person:31,mps_lib_memcmp:[32,34],epdlpoolclassstruct:41,expens:[42,30,55,56,57,58,54,62,71],arenacommitlimit:6,cedar:54,johan:15,insidepol:6,spend:[0,30,57,62,11,70,29,51],poolclassawl:18,propos:[30,46,50,31,45],explan:[42,30],construct:[30,56,57,18,11,35,41,28,37,51],"000ae0397334df9f":13,buckets_scan:25,epcor:[46,50,18,21],table_:[87,37,25],obscur:[12,58],"0x00000001003fb148":16,insid:[81,36,17,31,22,65,16,33,94,35,18],relianc:48,shape:57,mysql:5,love:38,fflush:32,mps_key_arena_cl_bas:[],simm:56,stoutamir:93,isfwd:[35,25],cup:29,scenario:[41,84],restructuredtext:[18,21,6,43,83,46,7,80,50,26,3,51],theoret:[30,57],failnextmethod:41,eager:[59,50],mps_message_type_gc_start:[0,62,36],"0x10012a000":16,appli:[42,82,17,5,62,65,67,46,71,12,80,84,37,51],snap:[26,70,71],input:[53,59,10,48,90,71,25,13,29],unlik:[57,17,15,71,37,85],subsequ:[54,56,57,30,50,29],btresrang:18,useless:13,indentifi:70,subroutin:57,xcodebuild:4,march:31,obsolet:[37,88,35,25],format:[39,54,55,57,17,59,60,63,65,70,71,2,74,4,75,13,58,42,20,77,22,49,79,1,25,27,28,29,30,82,9,10,8,86,46,34,35,85,80,72,15,84,16,33,92,52,37,38],big:[42,58,44,11,71,29,85],single_act:18,mps_class_ams_debug:[27,28,1],"0x1003f9bb8":16,alias:[41,17],mps_arena_reserv:29,cierniak:31,insert:[46,84,50,52,74],bit:[39,54,56,57,17,18,60,62,63,65,67,70,72,73,74,4,13,58,42,20,59,88,6,24,50,8,82,31,45,25,46,34,35,80,87,33,37,51],characterist:[67,54,77],formal:15,xcodeproj:4,lost:[46,84,18,15],semi:[54,57,58,31,30,62,70,59,71,50],rossum:15,signal:[16,71,1,13,94,35,52],resolv:[30,34,70],manifest:16,heart:[54,57,58,80,71,72,33,26],collect:[0,39,55,56,57,17,59,54,60,61,62,83,65,67,53,70,40,72,74,75,34,58,42,20,88,44,6,23,79,24,25,26,27,29,30,82,9,31,45,10,8,11,93,47,92,13,35,85,86,87,36,32,69,15,37,84,77,90,16,71,52,94,22,38],princip:[15,50],pithi:80,popular:[15,74],eec:31,mps_pool_class_epdl_debug:46,setrang:18,mps_gen_param_:[36,37],often:[53,54,56,57,58,18,61,62,63,64,65,67,68,70,71,72,74,59,6,24,80,30,10,11,89,15,16,33,37],comparegreat:34,spring:71,creation:[63,57,17,59,50,83,46,90,40,25,13,37,29,58],some:[0,39,55,56,57,17,18,54,60,62,63,65,66,67,68,53,70,71,72,74,4,13,58,42,59,43,6,78,24,25,28,29,81,30,82,31,45,10,50,11,46,47,12,34,35,80,87,36,48,32,89,69,15,84,90,16,33,41,94,37,38],back:[77,87,74,58,59,21,60,83,62,25,11,68,46,45,50,71,72,33,34,84,29],understood:72,strongest:72,unspecifi:[72,18],sampl:[32,46],"0x1003faf30":16,instal:[30,4,13,86],scienc:[11,31],sizeof:[84,50,80,87,36,58,18,88,8,33,48,78,16,12,25,41,92,34,37],surpris:30,obj_fwd:[35,37],teco:15,scale:[30,62,15,67,71,34],laru:31,predefinit:51,prot:[6,51],mps_awl_find_dependent_t:8,per:[17,31,32,62,11,15,50,13,94,84,18],block_on_client_with_timeout:29,substitut:[7,5,33],mathemat:[67,18],larg:[53,54,55,56,17,18,62,63,65,66,67,70,71,72,74,58,59,44,6,24,8,30,9,31,11,46,47,12,34,35,89,15,77,50,92],undon:83,leftmost:[59,18],prod:51,reproduc:[30,16,5,54],worst:[53,54,31,59,89,67,90,8,92],mps_message_discard:[0,90,36,25],link_t:84,machin:[56,58,59,62,63,65,67,70,71,72,74,13,88,30,82,31,10,11,84,34,15,51],optarg:46,mps_var_:51,run:[0,39,56,17,18,54,60,62,63,65,66,70,71,72,4,13,58,42,59,5,44,6,24,25,29,30,31,10,8,11,34,35,86,87,15,84,90,16,33,41,94,37,51,52],mps_fmt_t:[9,79,10,22,37,46,2,8,27,28,35],epdrpoolclassstruct:41,nmake:[4,51],pietro:31,step:[39,17,18,33,70,84,46,24,16,25,27,37],convent:[20,55,56,57,18,30,60,65,70,48,74,41,51,52],mps_ap:16,squeez:66,santa:31,not_condemn:[0,16,25],mps_pool_walk:46,from:[0,39,55,56,57,17,18,54,60,61,62,63,65,67,68,53,70,40,72,74,3,4,75,34,58,42,50,59,5,21,44,22,78,79,24,7,8,26,27,88,29,81,30,82,9,31,10,25,11,46,47,12,92,13,35,85,80,87,48,1,32,43,89,69,15,37,84,77,90,83,33,41,71,94,6,51,38],subtract:[0,30,17,59,71,33,35],impos:[90,56,40,18],mps_class_mvff_debug:[92,28,1],proven:[54,69],constraint:[90,56,36,59,45,61,6,11,69,24,70,12,25,35,29],coexist:74,proce:[39,42,87,17,10,65,70,33,92,29],preclud:38,prove:[53,59,60,90,69,70,80,37],lieberman:[55,31],vmalloc:31,idl:[36,29,52],mean_siz:77,candi:51,alfr:31,slot_high:92,abstractarenaclass:6,"r\u00f6jemo":31,uncach:6,cutoff:47,frob:51,real:[42,30,31,62,83,15,68,24,71,12,65,74,34,72],colorado:31,primarili:[41,6,63,17,80],mps_ap_create_v:84,digraph:55,intl:31,within:[39,54,56,57,17,18,62,70,71,72,74,24,7,29,81,30,82,10,50,46,34,35,33,37,51,38],programat:35,toft:[31,15,72],myseg:41,rankweak:34,mps_message_clock:0,obj_:37,contributor:5,lesson:44,fopen:32,mps_key_rank:[79,25,28,8],trampolin:94,occupi:[42,18,62,65,69,16,72,29],inclus:[77,37],span:[39,54],carnegi:31,mythic:59,fledg:7,megabyt:[53,62,70,37,58],"0xfdfdfdfd":46,fast:[39,30,56,36,17,31,77,50,89,84,59,71,33,41,57,13,63,37,18,58],custom:[82,50,31,15,25],adjac:[54,56,57,58,30,89,12,73,50],reserve_depth:77,arithmet:34,includ:[39,53,55,56,57,58,18,54,72,61,62,65,67,68,70,71,2,4,75,34,59,5,88,77,6,79,24,7,32,25,27,28,29,30,9,31,10,8,11,46,48,13,35,85,80,87,89,15,37,16,50,41,92,22,51,38],suit:[72,15],forward:[84,54,86,57,9,18,79,60,22,8,65,37,46,71,2,74,41,27,35,58],nepot:61,superpag:[71,66],busytrac:6,cbss:50,tape:58,properli:[32,46,71,12,13,29],obj_unus:25,repeatedli:[54,77,63,46,71,29],subgraph:71,subsidiari:[46,50],mpscmf:85,teach:15,decomposit:18,navig:11,dgc:56,link:[54,56,57,67,70,71,72,74,19,4,84,20,21,25,30,31,8,11,13,15,78,3,50,38,51,52],translat:[17,31,45,6,70,65,68,46,59,74,62],atom:[42,30,59,31,43,6,63,41,94,84],cbsblock:50,line:[42,50,17,25,15,84,46,16,80,8,4,13,51],mitig:30,mminfo:[18,21,6,43,83,46,7,80,50,26,3,51],ismm:31,sdk:4,info:42,concaten:21,consist:[53,56,57,17,18,62,1,73,74,34,42,21,24,88,29,81,82,10,46,41,35,86,43,84,16,50,37,51],confusingli:[72,15],pool_debug_opt:[28,1],caller:[60,83,65,80,37,51],pkg_add:4,adequ:29,reorder:84,unlock:41,mps_roots_stepper_t:82,highlight:[84,31,25],mps_defin:[90,83,25],btsize:18,similar:[53,54,55,56,57,58,59,62,63,65,66,67,68,69,70,71,72,74,34,5,77,6,25,29,82,32,83,41,15,84,37],mps_fmt_destroi:[35,37],impl:[18,21,6,43,46,7,80,50,41,34,51],w3i3mv:[4,34,88],caught:94,event_label:13,obviat:46,mps_end:46,doesn:[42,30,87,57,17,18,44,6,25,62,84,24,71,12,8,41,34,22,29,38],repres:[84,54,55,57,58,18,63,48,66,68,69,70,71,72,74,34,59,6,25,28,30,82,31,33,46,13,35,87,90,50,37],poolasm:80,proper:30,incomplet:[21,60,32,43,83,48,46,7,26,3,34],septemb:[46,31],dconfig_var_df:51,aggrav:30,flexowrit:13,getthreadcontext:39,singli:50,phantom:[67,71,72,15,74],oberon:15,pronounc:56,sequenti:[54,58,31,77,62,65,70,71],sheetal:31,invalid:[0,42,82,81,58,10,6,74,65,67,50,40,72,25,71,34,84,29],setsparecommitlimit:6,appendic:20,"000ae03973361d5a":13,priori:[77,37,72],gonthier:[31,74],librari:[39,17,62,48,71,74,3,4,58,20,21,35,30,31,45,32,13,49,86,15,16,51],buckets_t:25,retract:6,mps_scan_end:[82,17,8,33,37,78,25,35],nice:46,btdestroi:18,draw:[55,71],llvm:[39,88],users:13,gigabyt:[53,70,58],event_al:51,benchmark:44,caml:15,mps_rm_prot:[82,74],w3i3m9:88,william:31,elsewher:[34,87,35,17,21],meaning:[6,7,13],wrongli:1,eval:[90,16,25],unwind:83,dram:[56,71],alloc_pattern:47,param:51,deserv:46,lang:[15,67,71,72,74,41],pmo:31,infrequ:[24,63,72],algorithm:[53,30,36,18,31,89,62,70,15,66,67,24,59,71,65,92,57,72],vice:[42,6,25,15,8],ams_is_invalid_colour:10,bibliographi:[20,11,31,30],bateman:93,discrimin:[34,70],depth:[77,63,37,31],appendix:[13,90],unconnect:66,mps_pool_mvff:[],leak:[0,30,31,62,63,11,15,53,71,12],mps_arena_unsafe_expose_remember_protect:29,fresh:80,leah:93,oop:[16,31],unclamp:[69,57,29,74],io_o:32,code:[84,54,56,57,17,18,60,62,63,65,68,40,72,74,4,13,58,42,59,5,43,6,49,25,29,81,30,82,9,45,10,50,11,46,47,12,34,35,80,36,48,1,88,89,15,90,33,41,71,52,94,37,51,38],partial:[30,57,18,59,77,71,41,84],edg:[53,61,55,70,71],mps_arch_al:88,scratch:[24,84],cbsfinddeletenon:50,fclose:[32,25],recomput:29,pthread_mutex_lock:43,mps_prod_str:21,mps_fmt_fencepost_wrap:46,attrbuf_reserv:34,mps_arena_spare_commit_limit_set:[6,71,29],holdout:30,searchbas:18,mps_builder_:51,cbsinsertisolatedrang:50,compact:[42,56,57,58,31,62,63,15,66,69,71,72],root_scan:82,privat:[6,71,84,48,25],procur:5,pthread:43,secur:[62,15,74],quarterli:31,tracecondemn:80,migh:46,young:[53,22,57,55],send:[67,91,94],mps_arena_step:[36,29],granular:[6,29,66],carefulli:[30,61,83,70,74,51],tricolour:[67,70,71],mps_arena_park:[22,29,74],becam:[90,59],visitor:[68,71],noop:51,fatal:13,sent:[10,13],isresetrang:18,pekka:[42,31,6,83,46,80,34,93],random:[54,16,71,72],mainstream:54,btreturn:18,peyton:31,amcss:[4,34],electron:[62,11,31],untouch:[10,34,18],implicitli:[41,63,62],popl:31,relev:[53,54,55,56,57,58,18,62,63,65,66,67,68,70,71,72,74,59,82,11,37,51],weak_array_scan:8,tri:[42,53,57,17,10,62,50,65,66,67,46,69,70,71,12,8,34,58],mps_ld_t:[87,25],mps_ld_isstal:[63,87,25],salad:71,question:[39,20,57,5,30,10,15,23,46,91,4,37,29,38],complic:[72,46,51,18,74],joel:31,scalabl:[42,41,71,31],michael:31,fewer:[30,11,18],mps_io_creat:32,"try":[39,30,82,17,43,42,46,24,71,51,8,13,37,29],poolclasslo:18,race:[10,41,84],attrgc:34,freed:[30,56,57,58,59,54,77,6,63,11,24,71,12,74,84,37,62],rdoss:31,pleas:[39,5,10,11,48,91,16,4,94,84],app:4,impli:[30,5,54,60,6,15,71,13,51],smaller:[57,58,1,63,89,46,71,74,92,34,38],fortun:[42,68,24,31],readabl:[13,52],weslei:31,"0x3":82,natur:[42,56,58,59,88,77,10,85,15,46,12,73,8,61,92,34,75,38],inconsist:[94,65],memset:[32,34,16],elisp:15,mps_build_eg:88,crop:15,jump:80,fold:46,compareequ:34,mps_key_arena_cl_addr:[28,29],s7ppac:88,"0x1003f9be8":16,download:[4,37],hyper:53,spaghetti:[71,57,51],rivera:31,append:16,mps_ss_:48,compat:[34,73,41,5],index:[20,87,17,18,54,15,67,71,65,74,34,58],lockclaimglobalrecurs:43,compar:[30,57,18,31,32,6,15,66,24,72,50,34,58],"0x1003f9c08":16,resembl:[56,57,58,15,1],"1003fc000":13,han:[93,31],"00000001003ff000":13,mpmst:80,experiment:[18,15,88],tom:93,mps_rank_weak:[82,8,67,78,72,25],mps_clock:[0,32,48],cele:15,mps_key_extend_s:75,deduc:42,whatev:[57,17,32,46,29,51],penalti:72,ramsei:31,led:18,chose:70,boolcheck:34,inlinedescriptors:50,"__assert_rtn":16,mps_args_non:[84,28,37,25],mps_message_type_gc:[0,62,36],closur:[57,31,59,80,15,66,50,51],waldemar:15,let:[60,10,16,37,46],ubuntu:39,tenur:[30,70,31,74],"0x0000000100003ea6":16,becom:[0,54,56,57,17,62,65,53,69,71,72,74,24,25,29,81,30,82,11,12,84,15,90,50,93,37],sinc:[39,53,56,17,18,54,60,62,67,40,34,58,42,6,24,25,29,30,82,32,41,35,85,87,36,89,15,84,16,71,94,37],mps_arena_commit_limit:29,attralloc:[10,34],convert:[50,18,21,32,6,43,83,46,7,80,33,26,3,13,34,51],survei:[11,31],convers:[46,6,48,15],survivor:[22,36],artifici:31,hilfing:31,conceiv:51,larger:[54,56,57,17,18,61,63,70,71,72,58,44,29,30,11,12,35,87,36,89,15,77,50,37],technolog:[30,57,31,68],oldsiz:50,later:[0,30,87,36,17,74,11,39,24,71,25,57,29],resurrect:[84,90,72],epdl:41,epdldbg:41,bufferdestroi:80,initialz:41,earli:[30,17,31,62,65,59,71,15,18],chang:[53,56,57,17,18,62,63,65,67,70,71,74,4,13,42,21,6,24,25,26,29,81,82,31,45,83,80,11,46,48,34,87,36,89,50,37,51,38],perform_client_act:29,chanc:[46,94],"0x00000001000014e3":16,marc:31,undergradu:15,calibr:32,mpsclo:9,kurtz:15,clark:[60,31],danger:[10,41,89],mps_lib_fputc:32,approxim:[42,30,82,56,36,59,54,6,63,53,72,34],aquir:93,foundat:42,sqlite:[4,13,52],apt:4,"0x0000000100008ca2":16,"boolean":[41,6,34,48,50],immut:[68,62,65,15,25],validli:[84,78,90,35],greg:31,microcod:15,tailor:31,fee:5,metaphor:46,zip:4,commun:[0,56,57,31,62,15,67,46,24,65,50,26,35,72],doubl:[53,56,36,17,31,69,59,12,74,34,29,58],coordin:[46,62],next:[39,54,57,17,18,61,68,53,71,84,42,77,6,25,29,50,11,47,12,41,35,86,36,89,16,33,37],few:[39,30,57,17,18,60,89,63,11,15,48,70,53,16,12,25,29,58],dconfig_plinth_non:[32,4],busi:[6,83,15,5,8],usr:4,protic:31,lesli:31,jonathan:31,postpost:1,remaind:[54,89],sort:[0,30,55,87,58,34,62,42,71,72,3,13,35,51],mps_ap_create_k:[79,84,25,37,8],clever:46,tag_data:46,fillmutators:6,mps_fmt_create_:35,pfm:51,mps_fix12:[48,33,35,37,8],classes_count:12,cbsfinddeletehigh:50,mps_key_arena_s:[28,37,29],mps_pf_xci3ll:88,rusage_self:32,structu:1,goal:91,interven:[47,12],mps_pf_:[51,88],account:[42,6,57,24,25],hoard:31,retriev:[0,36,18,83,68,90,71,29],augment:60,cannarozzi:31,alia:[84,82,87,60,10,48,70,72,32,34,41],annot:[51,17,15],larch:31,plinth:[0,20,34,32,48,49,74,4,13],obvious:[46,41],meet:[6,51,35,18,50],cbsblockbas:50,tracescanseg:16,fetch:[30,57,17,74],aliv:[61,30,63,9,59,79,8,10,33,78,65,67,44,90,71,72,25,37],proof:10,control:[39,54,55,56,57,17,18,62,65,70,71,72,34,42,59,6,24,7,29,81,30,82,31,45,32,11,46,48,13,85,15,84,16,50,94,37,51,38],config_var_hot:[10,51,66],weaker:74,bitmap:[57,58,65,70,71,13],process:[53,56,57,17,59,62,65,66,67,68,70,71,72,74,4,76,58,42,21,44,24,25,29,30,31,10,8,13,89,15,90,33,37],lock:[39,20,63,43,10,6,45,35,84,90,87,41,34,94,37],loci:42,"0x00000001003f9ae0":16,trap:[74,31,62,80,50,84],high:[30,56,36,18,31,62,50,70,15,59,71,65,33,92,13,58],protix:16,tag:[57,17,59,60,48,67,69,70,71,72,74,58,7,8,30,82,25,46,65,84,35,15,16,33,37,51,52],fprintf:[32,16,37,33],mps_arena_commit_limit_set:[10,57,29],"002d":13,mps_mv_free_siz:75,onlin:51,subsystem:31,giusepp:[93,31],everywher:[37,58],kib:17,"0x7fff5fbff0a0":16,minlength:18,link_:84,six:[92,4,72,31,88],smoothli:[36,37],"0x10012a5a0":16,georg:31,acycl:7,sig:[41,7,31],mps_thread_dereg:[82,94,37],fence_s:1,fencealloc:46,mps_pf_xci3gc:88,l979:31,circular:[61,70,31],prottramp:16,delai:[77,90,16,31],"_addr":[37,33],overridden:[6,41,51],"1078c85b8":13,interchang:[55,72],watch:62,bufferfinish:80,gcc:[39,18,88,16,4,37,51],inst:41,attent:30,attenu:50,faq:[30,15],btfindlong:18,physic:[30,59,68,44,61,62,65,60,69,70,71,72,74],mps_arena_releas:[69,16,29],alloc:[39,53,55,56,57,17,18,54,60,61,62,63,65,66,67,70,40,2,74,75,34,58,42,20,59,43,44,6,78,23,79,24,50,8,27,28,29,81,30,82,9,31,10,25,11,86,46,47,12,92,13,35,85,80,36,48,72,94,89,15,37,84,77,90,16,83,33,41,71,52,1,22,38],drop:[67,24,76],essenti:[0,60,15,71,74,37],mps_fix:[35,33],seriou:[39,30,72],init:[6,50,46,80,84,41],chapman:31,element:[57,6,63,70,16,71,12,50,28,37],issu:[58,59,62,11,90,71,3,94,18,52],chief:[93,29],stavro:[93,58],unaccept:[30,71,65],allow:[0,53,56,57,17,18,54,62,66,69,70,13,72,1,4,34,58,42,59,21,6,24,50,25,26,27,29,30,82,10,8,46,12,41,35,80,15,84,78,91,33,71,37,51],oslo:[0,15],fallback:50,longest:34,mps_tag_a_:46,elif:51,neglect:[0,10,15],poor:[30,36,61,62,11,24,74,37],larson:31,ouput:29,berger:31,train:31,move:[39,54,55,56,57,17,18,61,62,63,65,66,70,71,72,74,75,84,58,42,77,6,79,24,8,26,27,29,9,45,25,12,22,34,35,85,80,87,15,90,33,92,37,38],microsystem:15,meter:51,mps_root_creat:[82,57,37,74],notabl:[42,34,56,59],uniprocessor:31,jni:74,mps_message_gc_live_s:36,perfect:[36,58,74],pai:[30,17],famili:[88,51,15,58],movabl:[38,74],"0x1003fa7d0":[13,16],chosen:[42,17,61,89,69,24,71,37,29],concept:[17,31],mps_os_so:88,culprit:10,whether:[0,53,57,17,18,54,60,63,65,72,74,34,42,5,88,6,24,25,26,29,30,82,50,83,46,41,35,80,87,84,33,92,37,38],mps_addr_t:[84,17,59,48,70,72,34,22,78,25,28,29,81,82,8,83,46,12,13,35,87,90,16,33,37],mps_os_su:[51,88],mps_class_lo:[28,9],therefor:[54,82,57,59,77,50,90,35,24,70,71,72,33,34,66,37,29],symbol_:[84,37,25],trace_max:[6,34],uninitialis:74,cbsfinddelet:50,junction:61,fourth:37,handl:[0,55,17,62,48,66,67,40,72,74,84,42,43,78,79,8,82,32,25,11,46,12,34,35,15,90,16,33,71,94,51,52],auto:[9,22,8,79,33,27,35,38],overal:[44,37,17,18,21],innermost:47,handi:[67,71,74],mention:15,mps_root_create_reg:[84,82,70,94,37],snake:74,arenafre:6,instead:[84,56,57,17,18,63,48,67,70,13,72,75,41,42,6,24,7,25,27,29,81,30,9,10,8,83,46,12,34,32,15,16,33,71],front:[54,63,36,29],arenadestroi:83,scatter:[24,55,31],mps_alloc_dbg:46,mps_arena_clamp:[57,29],type_pair:[13,16,37,33],somewher:[30,82],config_plinth_non:32,anyth:[39,30,82,17,54,42,46,24,33,4,37,51],edit:[6,21],iglio:31,tran:6,myunnoteseg:41,dominiqu:31,arenawrit:83,februari:42,mode:[0,53,82,57,77,50,15,46,16,72,74,34,37,52],mnemon:[34,63,71],obtain:[0,57,5,10,62,89,15,68,71,34,29],stock:[31,15],walgenbach:31,cbsfinddeleteentir:50,whiten:80,subset:[42,82,18,77,80,71,72,50,37],societi:31,"__gc":15,accessnon:34,map:[30,63,57,58,18,54,60,32,6,74,68,46,69,59,71,51,25,62,29,72],arenaringinit:6,chunk:29,artur:31,mps_os_fr:88,remap:74,predic:[68,41,62],consum:[0,65,40,29,51,72],"static":[0,39,56,57,17,59,66,70,71,72,34,43,6,25,30,82,31,45,46,41,87,15,16,33,37],attrfre:34,fluctuat:[77,12],our:[6,11,48,25,34,13,38],mps_res_commit_limit:[10,12],mps_arena_collect:[22,16,29,74],mps_fmt_isfwd_t:[35,65,37],special:[39,54,55,57,58,59,60,63,48,40,72,74,13,5,6,79,8,30,45,10,50,11,41,34,89,15,90,83,33,71,37],out:[39,54,56,57,17,18,60,61,62,63,65,66,68,70,40,80,74,13,42,59,5,6,50,8,26,29,30,10,25,11,46,12,34,35,87,36,48,1,15,84,90,16,33,71,37],variabl:[84,56,57,17,59,60,62,63,48,71,72,1,19,75,13,20,43,77,22,79,24,25,27,29,81,30,82,9,31,32,8,11,46,41,80,15,50,92,52,37,38],eqv:[0,90,16,25],nick:[93,51,31],"th\u00e9se":31,contigu:[54,17,18,60,6,63,65,46,71,50,62,58],bag:58,influenc:[57,15],req:[18,6,83,46,50,41,51],facto:79,bobrow:[56,31,15],categori:[72,13,34,52],pooldescrib:80,mps_key_mfs_unit_s:[28,85],suitabl:[39,54,58,18,62,63,65,59,5,43,8,27,30,82,32,12,13,35,89,50,37,38],sever:[54,56,57,17,18,61,63,71,74,84,42,44,6,29,30,50,11,46,41,1,89,15,77,33,92,37,51],hardwar:[42,55,56,57,58,31,45,62,11,15,23,70,24,59,71,65,74,35,29],iam4cc:88,ref:[42,82,74,18,43,33,83,78,65,37,67,90,71,72,25,26,13,34],old_symtab:37,ree:[18,21,6,43,83,46,7,80,50,26,3,51],franc:31,fmt_o:35,parenthesi:48,fmt_a:35,frank:31,manipul:[30,18,6,63,15,67,7,71,50,94,35],powerpc:[4,65,88],edeadlk:43,"0x1003f9bd8":16,york:31,tempt:[87,48,33],releas:[30,82,36,21,10,6,43,90,48,54,1,80,25,4,94,29],mps_fmt_create_a:[37,35,25],mps_mortal:36,queri:[13,62],afterward:[82,33,29,25],refset:[42,6,34],reslimit:34,"000ae03973336e3c":13,walker:[46,80],intrus:31,tru64:[4,88],unwant:15,could:[55,18,60,62,83,66,70,13,72,4,41,42,24,27,29,82,10,50,11,46,34,87,15,33,37,51],lexer:37,ask:[42,20,37,57,30,83,15,23,12,81,35,29,38],segreg:[54,55,58,63,71,2,75,20,77,22,79,25,27,81,9,8,12,85,86,33,92,38,37,52],timer:13,david:[18,31,43,21,83,80,3,93],counterpart:[84,1],length:[0,87,36,18,8,37,84,16,25,41,13,33,34],enforc:94,wrote:[10,32],outsid:[42,30,55,60,46,38],mortal:[53,36,31,44,22,15,65,27,37],retain:[30,56,57,5,77,11,65,71,50],"universit\u00e9":31,scarc:[54,90],austin:31,softwar:[42,20,56,57,31,5,21,30,45,15,3,29,58],isbn:31,suffix:51,christoph:31,mps_class_amcz:[28,2,25],qualiti:32,port_clos:25,echo:13,date:[42,24,45,37,21],haskel:[11,31],lib:[4,51],facil:[42,43,32,6,46,50,41],redund:74,suffic:25,ecoop:31,prioriti:50,avert:41,supposedli:59,dump:46,strict:[53,57,58,5,71,72,50,41],unknown:[0,10,67,77,39],licens:[39,20,4,5],perfectli:30,system:[39,53,56,57,17,59,54,60,62,63,64,65,66,67,68,70,71,72,74,3,4,41,58,42,20,5,43,44,6,23,24,50,91,8,29,81,30,82,9,31,45,10,25,11,12,13,35,86,48,32,88,89,15,84,90,16,33,94,37,51],messag:[0,20,36,59,30,32,62,83,90,15,54,67,91,25,13,81,84,41,29,52],size_io:46,mps_message_type_t:[0,62,36,90,25],attach:[0,58,6,46,70,12,84,37,62,72],attack:62,poolcheck:7,btcopyinvertrang:18,termin:[54,59,18,10,32,50,70,33,13,84],"final":[0,39,17,54,67,70,72,74,75,42,20,77,6,78,79,25,26,27,28,30,9,31,45,8,83,22,34,85,86,15,90,92,38,37,52],poolreclaim:80,prone:30,configura:83,shell:13,ferrit:57,deregist:[82,83,90,94,37,29,38],"__del__":15,obj_quot:37,juli:[46,31],shallow:7,accompani:[51,5],lockreleaseglob:43,enqueu:[67,71,72,74],diminish:44,exactli:[53,56,57,18,60,8,11,48,46,50,74,34,63,41,51,38],steel:[42,58,31],ben:31,holland:31,cpython:15,bloat:30,tr94:31,couldn:[82,36,35,46,25,37],mps_io_:32,roberto:15,emac:[0,10,53,15],structur:[39,53,56,57,17,18,54,60,62,1,64,65,66,70,71,72,74,41,58,42,20,59,21,6,24,7,8,28,29,81,30,31,45,10,25,11,46,47,12,50,34,35,85,80,87,36,48,32,43,15,84,16,33,94,37,51],epdrinit:41,claim:[43,10,6,70,41,94],mps_res_resourc:[10,12,29],sens:[54,57,58,63,68,71,25,37,38],mps_arena_commit:[62,29],light:30,dubiou:[69,18],exp:16,spaceaccess:80,stdio:30,bet:46,busili:24,exhibit:[63,58],counter:13,"0x00007fff91aeed46":[13,16],freefre:1,mps_root_destroi:[82,37],linker:[71,51],deprec:[81,82,9,18,77,22,33,48,84,79,90,40,2,8,92,13,75,94,27,29,85],mps_pf_align:[85,88,77,61,6,8,75,51,38],correspond:[53,54,17,18,62,70,40,72,58,43,6,78,79,8,28,29,82,25,83,47,34,35,80,88,90,50,94,22,51],arenaaccess:6,corrupt:[30,56,59,10,46,16,1,13],scientif:15,usenix:31,have:[0,39,55,56,57,17,18,54,60,61,62,63,65,67,68,53,70,40,72,74,4,75,34,58,42,50,59,21,77,6,78,76,79,24,7,91,8,27,28,88,29,81,30,82,9,10,25,11,46,47,12,92,13,35,85,80,87,36,48,1,32,43,89,69,15,37,84,90,16,83,33,41,71,93,94,22,51,38],ari:31,need:[0,39,55,56,57,17,18,54,60,61,63,65,66,67,53,40,2,74,4,34,58,42,59,43,22,78,79,24,8,27,29,30,82,9,10,25,11,46,12,92,13,35,80,87,36,48,72,32,15,37,84,90,16,83,33,41,71,94,6,38],wakel:31,finalpool:6,serrano:31,tidi:[0,86,37,51],flip_mask:13,optimis:17,runciman:31,lazili:[83,57],sdram:[56,71],depict:55,mpscamc:[22,2,48,37],min:[6,51,50],findlongresrang:18,"0x1003cbe38":16,accuraci:[67,34],mix:41,unawar:74,discret:[35,80],"0x7fff5fbff7d0":16,which:[0,53,55,56,57,17,18,54,60,61,62,63,65,66,67,68,70,40,72,74,4,34,58,42,59,5,21,77,6,78,76,24,7,25,26,28,88,29,81,30,82,31,10,50,11,46,47,12,13,35,85,80,87,36,48,32,43,89,15,84,90,16,83,33,41,71,94,37,51,38],mps_message_type_fin:[0,54,62,90,25],mip:[4,88],addison:31,type_charact:25,singl:[39,53,56,57,17,18,54,60,62,63,71,72,42,59,43,44,6,24,8,27,28,45,46,41,89,15,16,50,94,37,51],uppercas:48,btisresrang:18,radioact:31,unless:[53,59,48,74,75,13,77,22,24,8,27,30,9,25,50,11,46,84,85,33,92,37],freebsd:[39,4,94,51,88],clash:[41,48],deploy:[39,10,13],transmit:32,jun:[13,16],lockfinish:43,who:[0,10,15,30],discov:[57,44,10,70,46,78,16,25,37,29],mpslib:[32,4],arenacr:6,rankambig:[26,34],awl:[20,56,18,8,67,78,25,19,38],eight:[67,51],intern_str:25,deploi:39,bjarn:[30,15],nostop:16,judici:30,"class":[39,53,56,57,17,18,54,72,1,65,67,68,40,2,74,19,4,75,13,58,20,59,77,22,78,49,79,8,27,28,29,81,30,82,9,45,10,25,83,86,46,12,92,34,35,85,80,48,15,37,84,90,33,41,71,52,94,6,38],morrisett:31,make_port:25,lee:31,placement:[6,59,31,18,74],weiser:[53,30,57,31,15],dens:18,instig:0,gather:[53,71,58],request:[39,54,57,58,18,62,65,66,67,53,71,74,75,84,42,59,21,6,91,25,29,81,10,80,11,46,12,34,85,89,15,16,50,92,37,38],face:[71,62,11,59],inde:[41,6,35,62,33],deni:80,snapshot:[67,71,65],determin:[0,53,56,57,17,59,54,63,65,66,67,68,69,70,71,72,74,3,84,42,21,6,78,24,8,26,29,81,30,82,25,50,46,34,35,80,87,15,90,33,37,38],xavier:31,constrain:[46,34,50],stichnoth:31,fact:[53,54,55,17,18,62,63,48,70,72,34,78,29,82,11,12,41,87,15,90,16,33,37],"000000010992f000":13,arenacheck:6,guei:31,gen_count:36,assert:[0,80,16,57,17,18,1,72,10,32,33,66,7,59,25,13,37,51,52],text:[58,59,45,15,71,80,13],verbos:13,"0x100002130":16,minski:[31,15],poolaccess:80,connect:[53,55,57,60,32,22,11,90,24,72],bring:[29,18],"0x000000010000447d":16,empir:31,totalreturn:16,parentclassnam:41,topmost:[71,36],trivial:[6,84,50],anywai:[41,43,87,25],duck:15,wors:[54,89],insertisolatedrang:50,textual:[80,50],locat:[0,54,55,57,58,18,60,62,63,65,67,40,72,74,34,20,59,43,77,6,24,50,8,29,81,82,45,10,25,11,46,12,41,35,86,87,36,48,32,89,84,90,83,33,71,52,94,37,38],materi:[30,5],"0x00000001003f9a80":16,print:[0,50,15,37,90,16,80,25,13,34,29],youngest:53,correl:77,rash:[57,59,10,66,68,72,51],should:[0,54,17,18,62,65,67,70,72,1,4,75,13,42,44,6,79,7,25,26,27,29,81,30,82,31,10,8,46,47,12,34,35,80,87,36,48,32,84,77,90,16,50,41,37,51,38],mps_ld_merg:87,held:[6,50,12,43],smallest:[53,57,58,89,71,12,50,34],suppos:[26,82,12,18],preturn:80,mps_capac:36,"0x00007fff90509df0":16,various:22,"0x1003fad48":16,local:[54,56,57,17,59,61,62,63,65,68,70,71,72,4,84,58,43,24,7,30,82,31,32,11,48,41,35,89,33,37,51],hope:[82,51],mps_ap_alloc_pattern_begin:[47,72],meant:[54,71],count:[53,54,56,18,60,61,62,63,67,71,72,76,59,43,77,23,24,25,28,29,30,82,31,46,34,15],protstruct:51,changeov:17,mps_fmt_pad_t:[37,35,74],contribut:[42,93],mps_block_siz:12,lii4gc:88,findfirstbefor:50,tract_of_addr:6,make_str:[16,25],mergerang:50,memcpi:[32,34,16,84],bear:44,joint:31,theori:[62,59,58,5],lockinit:43,lockix:10,mps_class_mvt:[77,28],cbsblockdescrib:50,increas:[53,30,57,54,60,10,51,83,67,47,12,13,89,29,72],debugpoolcheckmethod:41,cbsgl:50,thomson:93,obj_fmt:[37,35,25],dirti:[56,57],extract:21,enabl:[0,10,32,8,90,71,25,41,13,37],organ:30,whilst:80,underscan:[27,16,86],caudil:31,stanford:31,symtab:[82,37,25],mpscam:27,grai:[53,57,58,60,65,67,70,71],stuff:51,mps_sac_destroi:12,integr:[39,42,59,88,10,62,15,37,48,46,51,25,34,27,29],partit:[61,6,72,31,45],contain:[84,54,55,57,17,18,72,62,1,65,67,70,71,2,74,4,75,13,58,42,59,5,21,77,22,78,79,24,50,8,27,28,29,30,82,9,25,11,46,48,34,35,85,80,87,36,43,37,90,16,33,41,92,6,51,38],grab:92,btfindlonghigh:18,btfindlongresrangehigh:18,view:[39,42,58,59,43,6,65,54,46],mvff:[20,62,1,92,50,19,75,38],conform:[57,18,32,48,41,51],legaci:4,modulo:87,inexplic:59,bucket:[53,87,57,58,59,74,25,37],frame:[54,56,57,59,65,40,74,75,20,77,22,79,8,27,82,9,92,13,85,16,71,38,52],knowledg:[77,89,11,71,50,41,37],bty:18,btx:18,flip:[42,54,58,45,6,84,70,34,94,13,29],veljko:31,temporarili:47,now:[0,30,57,17,18,54,62,25,83,15,84,80,74,13,81,28,37],stack:[39,55,56,57,17,59,65,66,70,40,72,74,19,20,77,22,79,24,8,27,28,30,82,9,31,11,47,92,84,85,15,90,16,71,94,37],modulu:18,mps_add_fencepost:46,wirf:31,polymorph:[34,41],statu:[30,50,88,8],error:[84,54,56,17,59,60,62,1,65,69,71,72,74,13,58,20,22,8,27,29,81,30,82,25,10,33,83,47,12,34,35,80,87,36,48,32,16,50,37,51,52],correctli:[87,59,33,65,80,84,41],reform:51,mps_os_xc:88,boundari:[57,18,31,63,65,59,71,92],segment:[53,17,18,62,63,65,67,71,72,74,75,34,58,42,59,6,80,46,41,85,13,92],below:[39,57,18,33,80,4,13,43,44,6,24,25,29,30,82,10,8,11,46,41,36,88,89,84,90,16,50,37,51],mps_ap_:[84,48],tend:[58,18,11,67,33,17],favor:30,state:[0,56,57,17,59,62,65,69,71,72,74,34,42,43,6,80,29,81,82,32,50,46,48,22,41,35,15,33,94,37,52],sparecommitlimit:6,entrant:[72,10,35,50],mpseventsql:[86,4,13],mps_fmt_auto_header_:[35,33],crude:60,progress:[42,53,36,31,63,91,74,57,13,29],neither:[81,82,56,74,67,7,50],induc:15,tent:46,locksiz:43,javascript:[11,15],kei:[53,56,17,8,11,15,67,46,78,50,25,28,87],amen:34,lamport:31,appopri:12,supplant:15,mps_res_unimpl:10,job:[30,22,11],entir:[30,80,17,18,44,62,8,11,69,15,24,50,71,65,74,29],rare:[53,63,57,59,10,6,74,70,71,12,50,84,37],fri3gc:[4,88],argument:[0,57,18,64,48,67,2,1,75,41,42,20,8,6,79,25,27,28,29,81,82,9,31,10,33,12,22,34,35,85,84,77,50,92,94,37,52],amer:31,swift:57,addit:[84,56,57,58,18,60,70,13,17,42,77,22,79,24,8,27,29,30,9,11,46,12,41,35,89,15,90,92,37],mps_fix_cal:[35,33],attrpm_no_writ:34,drum:[71,58],bucket_:[87,25],mps_class_mv:[75,28],unformat:[77,46,92,38],obtrus:24,mps_arch_pp:88,ramp:[47,36,72,52],equal:[57,18,31,32,35,67,50,4,34,29,58],jersei:15,mps_pool_creat:[81,9,77,22,79,2,8,92,27,75,85],jin:31,detlef:31,instanc:[54,82,17,59,77,32,6,80,65,67,46,70,71,50,34,41,62,58],grain:[53,61,6,67,50],equat:58,committe:15,mps_class_mf:[75,28,85],section:[42,50,87,18,43,10,8,11,70,45,33,25,4,37,51,38],freeli:[35,5],prot_foo:51,cactu:[71,57],suno:[4,88],boyer:[31,18],"0x00000001003f9b40":16,comment:[0,17,50,33,80,93],unimpl:34,unmark:[62,71],english:[57,36],steadili:77,guidelin:[41,45],rarer:56,arriv:67,arena_high:92,walk:[46,35,80],solv:[30,31,62,25,24,71,50,37],ucb:31,commenc:29,respect:[42,87,58,18,43,10,6,70,15,59,71,50,34,37],leftblock:50,traceset:[6,34],seligmann:31,mailto:5,quit:[30,82,57,59,54,61,15,67,46,24,70,13,37,38],slowli:13,pin:[61,22,33,74],platform:[39,53,18,61,63,48,67,72,74,4,75,13,20,21,77,45,32,34,49,85,86,88,15,50,92,94,37,51,38],addition:[30,18,62,48,47,41,29],decent:38,accumulatorreset:34,compos:[89,31],insuffici:[84,50,40,15,74],compon:[42,30,5,21,6,15,72,4],plezbert:31,treat:[55,56,8,25,90,87,80,74],tactic:37,immedi:[42,30,82,56,81,58,21,77,25,65,68,69,16,40,33,37,29,87],"0x000000010002d020":16,mps_pf_lii3gc:88,field:[84,54,55,57,58,18,60,63,65,70,71,72,74,34,42,6,7,8,26,25,11,46,41,35,80,15,37,51],set_mask:13,memcmp:[32,34],both:[84,56,57,17,18,65,13,72,1,41,43,6,24,25,29,8,33,11,46,92,48,22,34,15,90,50,71,37,38],presenc:[87,59,63,46,24,8],decai:[53,31],forestal:74,bulk:63,zero:[0,56,1,17,59,72,61,63,67,33,2,74,19,13,20,76,24,32,28,30,82,9,25,10,8,12,34,80,15,50,37,38],togeth:[53,54,36,59,18,77,89,11,37,46,72,66,35],colnet:31,reinhold:31,plausibl:[30,18],present:[42,53,43,32,25,11,70,47,71,80,33,34,37,51,38],statist:[13,36,17,29],determinist:16,multi:[39,30,5,31,43,6,63,70,59,72,74,84,94,37,62],cbsinit:50,obj1:41,plain:18,align:[53,1,17,18,61,63,65,67,69,70,80,74,75,84,58,59,88,77,6,79,50,8,27,28,29,82,9,45,10,25,46,12,22,34,35,85,48,16,33,92,37,51,38],event_intern:13,corrigendum:31,fmt_b:35,unsuit:24,defin:[0,54,57,58,18,61,65,66,70,71,72,34,43,7,32,88,82,10,25,83,46,48,41,80,21,90,16,33,37,51],deem:29,talpin:[31,15,72],rightblock:50,glossari:[53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,76,20,30,11,14,93],s7ppmw:88,sep:51,observ:[53,30,58,59,63,90],april:31,mps_os_o1:88,layer:[71,11,89],fwd2_:37,conclus:30,incapacit:13,cell:[60,67,57],almost:[39,30,59,15,67,46,84,37],"5th":31,site:[30,91,54],bodi:[53,41,63,91],mps_pool_class_t:81,archiv:[4,91],cbsinsert:50,attrfmt:[34,80],substanti:[24,56,72,15],buckets_fmt:25,r2000:88,protspong:51,revis:[50,57,31,25],foreign:[54,38,9,74],pda:71,greater:[18,32,68,71,50,34,29],mutat:[42,53,56,57,59,45,6,63,69,15,67,54,24,70,71,65,74,34,62,29,72],mps_arch_:51,mps_mvff_size:92,"0x00000001003f9b80":16,referenti:54,satisfi:[81,54,56,59,18,77,89,35,71,74,84,66,37,38],cross:57,access:[0,53,56,57,58,18,60,62,63,65,66,67,68,69,70,13,72,74,3,4,41,59,43,22,24,8,30,82,9,32,25,11,46,12,34,35,80,87,36,48,15,84,90,16,83,50,71,94,51,38],member:[56,57,48,70,2,75,88,77,6,79,8,27,28,29,9,34,85,15,33,92,93,22],matthew:[93,7,31,50],anachronist:65,mps_reserve_block:[84,48],largest:[67,88,12,59,50],failur:[50,56,10,62,25,70,16,80,32,41,34,87],inc:31,infer:[71,59,15,72],backtrac:[10,16],leaf_pool:25,competit:77,undesign:42,http:[4,43],denot:[4,58,18],expans:[10,34,48,18,21],heapsort:66,maxlength:18,upon:[67,68,41,48,25],effect:[0,54,57,58,18,62,65,13,42,59,44,79,24,29,30,82,31,46,47,12,41,87,48,89,84,16,50,37,51],coffe:29,dai:[42,30,18,8],mps_pf_lii6gc:88,lii3eg:88,sooner:[30,16,17,29],student:15,dealloc:[53,54,56,59,60,62,74,65,66,71,1,75,77,22,79,8,27,30,9,10,80,12,84,85,15,50,92],customalloc:31,decoupl:51,maclisp:[58,31],expand:[88,10,48,15,34,41],mordechai:31,off:[55,57,43,60,89,70,46,16,71,80],cbsmayuseinlin:50,firstli:[6,62,17,15],mps_telemetry_databas:13,builder:51,obj_ap:[16,37,25],well:[0,54,58,18,62,63,48,68,77,40,4,41,42,44,24,50,25,27,30,8,11,46,12,34,35,87,89,15,84,13,33,71,38],morri:31,thought:[13,34],action_find_set_bit:18,exampl:[0,39,56,57,17,18,54,60,62,63,65,66,67,68,53,70,71,2,74,4,75,34,58,42,59,5,21,77,6,78,79,24,7,8,27,28,29,30,82,9,45,32,25,11,86,46,12,13,35,85,80,87,36,48,72,94,88,89,69,37,84,90,16,33,41,92,52,1,22,51,38],frombt:18,ecmascript:15,mpseventcnv:[4,13],choos:[42,20,77,57,17,59,72,44,78,90,84,46,53,70,51,86,19,41,37,29,38],undefin:[30,18,32,6,48,90,70],encourag:[62,89,17],colour:[42,57,18,45,10,67,70,71,34,29],btfindshorthigh:18,mckinlei:31,latest:[0,32,15,71,4,13],test1:18,test2:18,bye:0,paus:[30,36,44,6,11,65,24,72,57,62,29],less:[53,56,57,17,18,71,72,74,75,84,58,77,6,25,29,30,32,11,12,34,36,89,90,50,92,37],conv:[34,18],compel:30,pitfal:24,myseginit:41,mistaken:[84,25,8],metrowerk:[4,51,88],topic:[20,86,8,11,48,25,37],distant:[30,16],heavili:[30,50],type_pad1:[16,37],paul:[93,31],zoneshift:6,systemat:56,brainpow:17,"00000001003fe000":13,gmk:4,web:[91,15],adt:[34,18,43],rapid:[31,15,50],idiom:71,dylan_scan_contig:17,elsevi:31,alloct:46,makefil:[4,51],hall:31,bits_act:18,add:[42,30,82,87,89,10,50,70,15,37,84,46,24,16,12,25,41,4,28,13],divis:[57,58,31,15,67,71],epdldebugcheck:41,mps_telemetry_control:[32,13,70,29],exempt:5,mps_pool_destroi:[81,90,37],ado:17,ought:6,match:[30,66,46,47,12,25,34,28,38],"0x00000001003fb0a0":16,jython:15,branch:[71,84,57,17,51],poolclassstruct:[34,80],dest:32,"002b":13,hpl:31,multiprocess:31,arguabl:41,sigsoft:31,built:[30,82,56,57,17,88,15,48,4,37],realiz:37,five:[42,82,58,77,62,24,35,17],usual:[0,53,55,56,57,17,18,54,61,62,63,65,66,67,68,70,71,72,74,84,58,42,59,24,25,29,30,10,80,11,12,41,35,39,87,89,15,90,33,92,37,51],burden:53,nointersect:50,press:31,redesign:15,lockclaim:43,tr99:31,mps_arena_destroi:[90,13,37,29],motorola:88,resid:[42,56,57,58,67,68,71,72,41],like:[53,54,56,57,17,18,62,65,40,2,4,75,13,42,59,5,77,6,79,24,50,8,27,28,29,30,9,10,25,11,46,47,48,34,85,80,36,89,15,37,84,78,16,33,41,92,22,72],success:[39,53,63,48,66,40,72,41,43,32,29,10,50,11,12,84,35,87,34,15,13,90,33,94],safest:33,corpor:31,resio:34,lose:[60,54,56,71,50],roth:31,stagger:56,ref_p:90,necessari:[84,54,57,48,66,70,13,80,34,43,6,24,25,26,29,30,8,46,65,22,41,87,21,90,33,94,37,51],martin:[93,31],customis:[51,31],async:42,architectur:[57,58,59,63,65,66,67,69,70,71,72,73,74,4,84,42,20,21,6,8,26,82,31,45,80,83,46,13,88,37,51],soft:[67,71,72,15],page:[56,57,17,18,62,63,65,66,67,68,69,70,71,72,74,4,58,59,6,29,30,82,31,13,35,15,37],amd:88,provok:[10,16,30],unreach:[39,53,82,56,57,54,62,80,11,90,15,69,16,72,74,81,37,29,38],exceed:[34,10,6,12],revers:[0,30,18,54,70,71,41,37],unit_s:85,captur:57,"0x7fff5fbff3e0":16,mps_os_:51,yarsun:31,interact:[0,30,31,18,32,62,63,11,65,24,71,25,13,89,29,52],hain:31,self:[54,70,31],certain:[30,80,56,58,54,89,33,11,15,67,68,24,47,70,51,74,71,63,50,29,72],"__kill":[13,16],"_msc_ver":51,superclass:[46,41],flush:[0,32,71,12,13,37,29],piec:[30,57,45,43,89,24,70,1,29],guarante:[54,17,60,65,67,72,58,43,77,6,24,29,30,82,32,46,12,35,87,90,50,37,38],contig:6,peter:31,type_weak_t:8,mainli:[71,11,15,45],win32:43,subramanian:31,trust:72,leaf:[20,63,17,59,54,44,33,68,71,2,25,19,38,35,9],borland:15,lead:[56,36,58,59,60,89,62,63,70,16,71,92,51],broad:34,avoid:[0,53,56,57,17,61,63,65,66,71,2,74,13,58,5,43,44,6,25,29,30,50,83,46,48,41,49,34,89,90,33,37,51,72],mps_res_memori:[10,82,12,29],thank:93,overlap:[42,82,32,47,80,29],debug_opt:[92,27,75,1],estim:[54,36,17,15,29],leav:[30,56,17,18,54,32,46,24,71,29,58],disciplin:[72,15],overlai:72,launch:9,speak:[35,58],pollthreshold:6,mps_os_s7:88,mynoteseg:41,"0x1003fe928":16,milutinov:31,investig:[53,30,27],fromspac:[60,54,70,71],slight:[77,15],aitr:31,journal:31,"enum":50,usag:[36,17,21,62,66,13,37,29,58],hosk:[93,57,31,74],facilit:[71,15],paper:[30,13,70,11],host:32,obei:[37,72],although:[54,57,59,60,62,65,70,71,41,18,43,6,24,7,25,30,11,46,48,34,15,50,38],offset:[80,71,35,18,74],java:[53,30,31,54,11,15,66,67,90,71,72,74],sigabrt:[13,16],stage:[42,17,71,33,13,49,51],about:[0,56,57,17,18,62,63,65,67,69,70,40,72,74,13,58,42,59,77,22,78,24,25,29,81,30,82,80,11,46,41,35,36,34,15,84,90,91,50,94,37,51,38],actual:[0,54,55,56,57,58,62,65,66,40,73,74,42,43,6,24,25,29,30,82,80,11,46,41,92],fri6gc:[4,88],world:[62,11,31,29],findlast:50,column:[13,88],freedom:[68,30,15,46],irix:[60,4,88],justif:[41,18],tracer:[42,6,34,45],mps_key_vm_w3_top_down:[],jouannaud:31,rule:[90,34,37,25],constructor:[30,56,57,59,15,37],fals:[0,81,87,41,18,6,50,48,37,84,12,33,26,92,34,35,29],discard:[0,54,36,50,90,47,12,25,57,84,35,29,38],hypothet:41,disabl:[0,6,17],conflat:50,sleepycat:5,harder:[89,65,15,74],own:[39,57,68,70,71,72,4,34,42,43,6,32,29,30,82,10,25,11,46,41,89,15,84,37],absolut:[12,59,74],roughli:17,kathryn:31,unbox:[58,65,69,71,33,37],around:[61,30,36,17,43,58,32,62,8,69,15,84,46,24,25,34,37,38],mps_build_cx:88,eventdef:13,automat:[39,53,56,57,17,59,72,62,1,65,66,67,40,2,74,19,4,75,20,77,22,23,79,24,50,8,27,29,81,30,82,9,31,10,25,11,46,47,12,92,84,35,85,80,36,48,15,78,33,71,94,37,51,38],warranti:5,guard:[90,6,41,25],refer:[0,39,55,56,57,17,18,54,60,61,62,63,76,65,67,53,70,71,2,74,19,75,34,58,42,20,59,77,22,78,23,79,24,8,26,27,29,81,30,82,9,31,45,10,25,11,93,46,48,13,35,85,80,87,72,89,69,15,84,90,16,83,33,41,92,52,94,37,51,38],awhil:12,lund:31,scanner:[82,63,17,49,33],tito:31,lockreleasempm:43,hysteresi:[77,6,45],pointless:85,mere:[42,46,63,57,87],merg:[87,57,18,50,89,80],mps_fmt_b_:35,behavior:[30,57,31,11,15,71],van:15,obj1struct:41,val:[1,9,77,22,8,37,79,7,2,25,92,27,75,28,35,29,85],pictur:[39,42],assumpt:[22,11,46,90,8,41,34],transfer:[62,63,71,74],findlongresetrang:18,intellig:[63,17,31],trigger:[68,74],lockreleaseglobalrecurs:43,inner:[57,18],define_alias_class:41,"var":[41,51,38],protocolclasssuperclasspoli:41,c90:57,contamin:31,"function":[0,39,56,57,17,18,54,60,62,63,64,65,66,67,68,53,40,72,74,34,42,20,59,43,6,7,8,26,28,29,81,30,82,9,31,45,10,25,11,46,47,12,50,13,35,80,87,48,32,15,37,84,90,16,83,33,41,71,94,22,51,52],btissetrang:18,north:31,unexpect:[16,37,15,33],unwrap:[67,69,72],subsum:42,findlastaft:50,message_typ:0,middleblock:50,mps_debug_class:46,tv_usec:32,type_symbol:[84,16,37,25],gain:[44,15,46,33,94,29],spuriou:42,grate:93,munro:31,eas:[30,15],inlin:[39,30,82,87,84,17,59,33,65,48,50,12,25,4,34],buf:[10,32],poolmark:80,"0x1003f9bf8":16,exit_failur:30,suppli:[89,87,59,43,32,50,11,15,46,65,25,41,35,38],also:[0,39,55,56,57,17,18,54,60,61,62,63,64,65,66,67,68,53,70,40,2,73,74,4,13,58,42,59,5,43,6,76,24,7,25,26,29,30,82,9,31,80,11,46,12,92,34,35,87,36,48,1,89,69,15,37,84,90,91,50,41,71,22,51,72],dmb:58,made:[84,56,17,59,65,66,71,41,58,18,21,6,80,29,30,10,25,46,13,87,43,15,50,93,51],wise:[60,30,56,31,93],clearli:[6,16],wish:43,o1alcc:88,displai:[0,11,21],troubl:[30,56],asynchron:[0,59,11,37,70,16,71,35,29],record:[0,42,56,57,17,18,54,32,6,63,15,67,46,59,71,13,94,76,29,87],btfindlongresrang:18,blockbas:50,ensur:[84,56,17,59,65,67,70,71,13,58,6,24,25,29,30,82,9,32,8,41,35,89,15,90,33,37,51],indefinit:[56,57,59,63,65,66],mps_headers:35,tracepol:[6,16],otherwis:[0,39,55,17,18,54,67,71,2,34,58,42,5,43,6,25,29,81,82,50,11,47,12,13,35,87,36,84,90,33],problem:[53,54,56,59,62,66,70,71,72,74,13,42,6,23,24,8,30,31,25,11,46,34,89,15,90,50,37],walter:93,tracesetismemb:6,succe:[0,30,6,46,84,29],lfp:31,foster:15,multipli:29,immobil:74,evalu:[31,25,65,48,16,12,33,34,84],pascal:[11,15],"int":[54,82,18,10,6,83,48,71,32,41,34,28,37,51],mask:[82,18],dure:[0,54,56,57,18,60,61,62,1,65,67,71,72,74,84,42,43,6,24,80,29,30,50,46,41,35,87,33,37,38],dish:71,memoiz:[62,57,51],xerox:31,pig:74,multic:62,sptab:37,implement:[0,39,55,56,57,17,18,54,60,63,65,66,67,53,70,40,72,74,4,41,58,42,20,59,5,21,77,6,91,24,7,32,26,30,31,45,10,8,11,46,92,12,50,34,85,80,87,48,43,15,37,84,90,16,83,33,71,52,25,51,38],erik:[0,15],protocolsomeclassstruct:41,ing:15,resunimpl:34,eric:31,probabl:[42,30,82,18,54,10,67,53,70,71,72,34,37,29],misleadingli:25,mutual:[43,31,38],sizenews:50,nonetheless:84,buckets_skip:25,detail:[39,53,57,17,18,60,62,65,68,71,13,42,43,50,8,30,45,25,11,46,48,41,87,84,90,33,37],virtual:[17,59,60,62,63,48,66,67,68,69,70,71,72,74,88,6,24,65,29,30,31,10,11,12,84,15,37,52],mps_fmt_check_fenceposts_t:46,ultrasparc:65,other:[0,39,55,56,57,17,18,54,60,61,62,63,65,68,53,70,40,72,74,3,4,34,58,42,50,59,5,21,44,6,78,49,79,24,7,8,27,29,81,30,82,10,25,11,46,12,92,13,35,85,80,87,36,48,43,89,69,15,37,84,77,90,16,33,41,71,94,22,51,38],lookup:[87,58,18,62,65,66,16,25,17],futur:[53,30,82,63,36,17,59,45,10,50,48,67,90,47,80,32,41,57,34,13,58],rememb:[31,30,53,57,17,18,43,72,55,15,42,54,24,67,71,65,34,82,29,38],varieti:[30,63,57,59,18,21,10,45,15,66,68,46,16,72,4,52,13,51,38],deliber:[62,37],siginvalid:6,"0x000000010000341f":16,mps_rank_exact:[55,8,82,79,71,72,25,37],kent:[93,31],naggum:[0,15],repeat:[87,62,25,46,90,70,1,84,37],attardi:[93,31,15],foostruct:80,pooldestroi:80,june:[46,31],neeli:31,throughout:[18,89,48,67,70,71,37],mps_objects_step_t:46,mps_collect:29,vein:59,stai:[59,8],multithread:31,experienc:30,philipp:31,eof:32,eqv_hash:25,refsig:80,pdp:[73,58,31],reliabl:[39,30,82,87,81,15,42,24,16,51,25,84,37,29],indirectli:[67,30,24,41],comparison:[34,50,87,25],pool_class:35,gdbinit:[13,16],portion:[72,57,29,18,74],emerg:[90,6,50,17,25],tightest:89,auxiliari:[72,65,38],suballoc:[30,60,89,11,65,23,71],decemb:31,invari:[10,83,65,67,70,71,15,80],emeri:31,ansi:[39,30,57,58,43,32,48,4,13,51]},objtypes:{"0":"std:option","1":"std:envvar","2":"c:type","3":"c:function","4":"c:macro"},titles:["12. Messages","18. Debugging pools","5. AMCZ (Automatic Mostly-Copying Zero-rank)","18. Software versions","2. Building the Memory Pool System","Memory Pool System Kit Open Source License","1. Arena","4. Checking","7. AWL (Automatic Weak Linked)","8. LO (Leaf Object)","3. Error handing","1. Overview","15. Segregated allocation caches","19. Telemetry","Memory Management Glossary","4. Memory management in various languages","4. Debugging with the Memory Pool System","3. The critical path","2. Bit tables","Pool reference","Memory Pool System","19. Library version mechanism","4. AMC (Automatic Mostly-Copying)","Introduction to memory management","3. Recycling techniques","6. Advanced topics","9. The generic fix function","6. AMS (Automatic Mark and Sweep)","2. Keyword arguments","4. Arenas","5. Frequently Asked Questions","Bibliography","1. Plinth","8. Scanning","17. General MPS types","7. Object formats","11. Garbage collection","3. Garbage collecting a language with the Memory Pool System","1. Choosing a pool class","1. Overview of the Memory Pool System","17. Allocation frames","16. Protocol inheritance","6. Collection framework","14. The lock module","5. Tuning the Memory Pool System for performance","Design","15. Debugging features for client objects","16. Allocation patterns","1. Interface conventions","Internals","3. Coalescing block structure","7. Configuration","Reference","Memory Management Glossary: G","Memory Management Glossary: F","Memory Management Glossary: E","Memory Management Glossary: D","Memory Management Glossary: C","Memory Management Glossary: B","Memory Management Glossary: A","Memory Management Glossary: O","Memory Management Glossary: N","Memory Management Glossary: M","Memory Management Glossary: L","Memory Management Glossary: K","Memory Management Glossary: I","Memory Management Glossary: H","Memory Management Glossary: W","Memory Management Glossary: V","Memory Management Glossary: U","Memory Management Glossary: T","Memory Management Glossary: S","Memory Management Glossary: R","Memory Management Glossary: Q","Memory Management Glossary: P","10. MV (Manual Variable)","Memory Management Glossary: Z","12. MVT (Manual Variable Temporal)","20. Weak references","13. SNC (Stack No Checking)","5. Pool class interface","5. Pools","10. Roots","8. Finalization","6. Allocation","9. MFS (Manual Fixed Small)","Guide","14. Location dependency","2. Platforms","2. Allocation techniques","13. Finalization","Contact us","11. MVFF (Manual Variable First Fit)","Acknowledgements","9. Threads"],objnames:{"0":["std","option","option"],"1":["std","envvar","environment variable"],"2":["c","type","C type"],"3":["c","function","C function"],"4":["c","macro","C macro"]},filenames:["topic/message","topic/debugging","pool/amcz","design/version","guide/build","copyright","design/arena","design/check","pool/awl","pool/lo","topic/error","mmref/begin","topic/cache","topic/telemetry","glossary/index","mmref/lang","guide/debug","topic/critical","design/bt","pool/index","index","design/version-library","pool/amc","mmref/index","mmref/recycle","guide/advanced","design/fix","pool/ams","topic/keyword","topic/arena","mmref/faq","mmref/bib","topic/plinth","topic/scanning","design/type","topic/format","topic/collection","guide/lang","pool/intro","guide/overview","topic/frame","design/protocol","design/collection","design/lock","guide/perf","design/index","design/object-debug","topic/pattern","topic/interface","topic/internals","design/cbs","design/config","topic/index","glossary/g","glossary/f","glossary/e","glossary/d","glossary/c","glossary/b","glossary/a","glossary/o","glossary/n","glossary/m","glossary/l","glossary/k","glossary/i","glossary/h","glossary/w","glossary/v","glossary/u","glossary/t","glossary/s","glossary/r","glossary/q","glossary/p","pool/mv","glossary/z","pool/mvt","topic/weak","pool/snc","design/class-interface","topic/pool","topic/root","design/finalize","topic/allocation","pool/mfs","guide/index","topic/location","topic/platform","mmref/alloc","topic/finalization","contact","pool/mvff","mmref/credit","topic/thread"]}) \ No newline at end of file
diff --git a/mps/manual/html/topic/allocation.html b/mps/manual/html/topic/allocation.html
index 4eb813abcbc..005782b6f88 100644
--- a/mps/manual/html/topic/allocation.html
+++ b/mps/manual/html/topic/allocation.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>5. Allocation &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>6. Allocation &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="6. Object formats" href="format.html" /> 31 <link rel="next" title="7. Object formats" href="format.html" />
32 <link rel="prev" title="4. Pools" href="pool.html" /> 32 <link rel="prev" title="5. Pools" href="pool.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="format.html" title="6. Object formats" 42 <a href="format.html" title="7. Object formats"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="pool.html" title="4. Pools" 45 <a href="pool.html" title="5. Pools"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,9 +55,9 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="allocation"> 57 <div class="section" id="allocation">
58<span id="topic-allocation"></span><span id="index-0"></span><h1>5. Allocation<a class="headerlink" href="#allocation" title="Permalink to this headline">¶</a></h1> 58<span id="topic-allocation"></span><span id="index-0"></span><h1>6. Allocation<a class="headerlink" href="#allocation" title="Permalink to this headline">¶</a></h1>
59<div class="section" id="manual-allocation"> 59<div class="section" id="manual-allocation">
60<span id="index-1"></span><h2>5.1. Manual allocation<a class="headerlink" href="#manual-allocation" title="Permalink to this headline">¶</a></h2> 60<span id="index-1"></span><h2>6.1. Manual allocation<a class="headerlink" href="#manual-allocation" title="Permalink to this headline">¶</a></h2>
61<div class="admonition-note admonition"> 61<div class="admonition-note admonition">
62<p class="first admonition-title">Note</p> 62<p class="first admonition-title">Note</p>
63<p class="last">Not all <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool classes</em></a> support this interface: 63<p class="last">Not all <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool classes</em></a> support this interface:
@@ -108,7 +108,7 @@ all.</p>
108 108
109</div> 109</div>
110<div class="section" id="allocation-points"> 110<div class="section" id="allocation-points">
111<span id="index-2"></span><h2>5.2. Allocation points<a class="headerlink" href="#allocation-points" title="Permalink to this headline">¶</a></h2> 111<span id="index-2"></span><h2>6.2. Allocation points<a class="headerlink" href="#allocation-points" title="Permalink to this headline">¶</a></h2>
112<p><a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">Allocation points</em></a> provide fast, <a class="reference internal" href="../glossary/i.html#term-inline-allocation-1"><em class="xref std std-term">inline</em></a>, nearly <a class="reference internal" href="../glossary/l.html#term-lock-free"><em class="xref std std-term">lock-free</em></a> allocation. 112<p><a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">Allocation points</em></a> provide fast, <a class="reference internal" href="../glossary/i.html#term-inline-allocation-1"><em class="xref std std-term">inline</em></a>, nearly <a class="reference internal" href="../glossary/l.html#term-lock-free"><em class="xref std std-term">lock-free</em></a> allocation.
113They allow code to allocate without calling an allocation function: 113They allow code to allocate without calling an allocation function:
114this is vital for performance in languages or programs that allocate 114this is vital for performance in languages or programs that allocate
@@ -123,16 +123,18 @@ many small objects. They must be used according to the
123</dd></dl> 123</dd></dl>
124 124
125<dl class="function"> 125<dl class="function">
126<dt id="mps_ap_create"> 126<dt id="mps_ap_create_k">
127<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_ap_create</tt><big>(</big><a class="reference internal" href="#mps_ap_t" title="mps_ap_t">mps_ap_t</a><em>&nbsp;*ap_o</em>, <a class="reference internal" href="pool.html#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;pool</em>, ...<big>)</big><a class="headerlink" href="#mps_ap_create" title="Permalink to this definition">¶</a></dt> 127<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_ap_create_k</tt><big>(</big><a class="reference internal" href="#mps_ap_t" title="mps_ap_t">mps_ap_t</a><em>&nbsp;*ap_o</em>, <a class="reference internal" href="pool.html#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;pool</em>, <a class="reference internal" href="keyword.html#mps_arg_s" title="mps_arg_s">mps_arg_s</a><em>&nbsp;args[]</em><big>)</big><a class="headerlink" href="#mps_ap_create_k" title="Permalink to this definition">¶</a></dt>
128<dd><p>Create an <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a> in a <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p> 128<dd><p>Create an <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a> in a <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>.</p>
129<p><tt class="docutils literal"><span class="pre">ap_o</span></tt> points to a location that will hold the address of the 129<p><tt class="docutils literal"><span class="pre">ap_o</span></tt> points to a location that will hold the address of the
130allocation point, if successful.</p> 130allocation point, if successful.</p>
131<p><tt class="docutils literal"><span class="pre">pool</span></tt> is the pool.</p> 131<p><tt class="docutils literal"><span class="pre">pool</span></tt> is the pool.</p>
132<p><tt class="docutils literal"><span class="pre">args</span></tt> are <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a> specific to the pool class
133to which <tt class="docutils literal"><span class="pre">pool</span></tt> belong. See the documentation for that pool
134class. (Most pool classes don&#8217;t take any keyword arguments; in
135those cases you can pass <a class="reference internal" href="keyword.html#mps_args_none" title="mps_args_none"><tt class="xref c c-macro docutils literal"><span class="pre">mps_args_none</span></tt></a>.)</p>
132<p>Returns <a class="reference internal" href="error.html#MPS_RES_OK" title="MPS_RES_OK"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_OK</span></tt></a> if successful, or another 136<p>Returns <a class="reference internal" href="error.html#MPS_RES_OK" title="MPS_RES_OK"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_OK</span></tt></a> if successful, or another
133<a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result code</em></a> if not.</p> 137<a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result code</em></a> if not.</p>
134<p>Some pool classes require additional arguments to be passed to
135<a class="reference internal" href="#mps_ap_create" title="mps_ap_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create()</span></tt></a>. See the documentation for the pool class.</p>
136<div class="admonition warning"> 138<div class="admonition warning">
137<p class="first admonition-title">Warning</p> 139<p class="first admonition-title">Warning</p>
138<p class="last">An allocation point must not be used by more than one 140<p class="last">An allocation point must not be used by more than one
@@ -148,9 +150,31 @@ takes its extra arguments using the standard <a class="reference internal" href=
148</dd></dl> 150</dd></dl>
149 151
150<dl class="function"> 152<dl class="function">
153<dt id="mps_ap_create">
154<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_ap_create</tt><big>(</big><a class="reference internal" href="#mps_ap_t" title="mps_ap_t">mps_ap_t</a><em>&nbsp;*ap_o</em>, <a class="reference internal" href="pool.html#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;pool</em>, ...<big>)</big><a class="headerlink" href="#mps_ap_create" title="Permalink to this definition">¶</a></dt>
155<dd><div class="admonition-deprecated admonition">
156<p class="first admonition-title">Deprecated</p>
157<p>starting with version 1.112.</p>
158<p class="last">Use <a class="reference internal" href="#mps_ap_create_k" title="mps_ap_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create_k()</span></tt></a> instead: the <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword
159arguments</em></a> interface is more reliable and produces better
160error messages.</p>
161</div>
162<p>An alternative to <a class="reference internal" href="#mps_ap_create_k" title="mps_ap_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create_k()</span></tt></a> that takes its extra
163arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> variable argument list
164mechanism.</p>
165</dd></dl>
166
167<dl class="function">
151<dt id="mps_ap_create_v"> 168<dt id="mps_ap_create_v">
152<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_ap_create_v</tt><big>(</big><a class="reference internal" href="#mps_ap_t" title="mps_ap_t">mps_ap_t</a><em>&nbsp;*ap_o</em>, <a class="reference internal" href="pool.html#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;pool</em>, va_list<em>&nbsp;args</em><big>)</big><a class="headerlink" href="#mps_ap_create_v" title="Permalink to this definition">¶</a></dt> 169<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_ap_create_v</tt><big>(</big><a class="reference internal" href="#mps_ap_t" title="mps_ap_t">mps_ap_t</a><em>&nbsp;*ap_o</em>, <a class="reference internal" href="pool.html#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;pool</em>, va_list<em>&nbsp;args</em><big>)</big><a class="headerlink" href="#mps_ap_create_v" title="Permalink to this definition">¶</a></dt>
153<dd><p>An alternative to <a class="reference internal" href="#mps_ap_create" title="mps_ap_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create()</span></tt></a> that takes its extra 170<dd><div class="admonition-deprecated admonition">
171<p class="first admonition-title">Deprecated</p>
172<p>starting with version 1.112.</p>
173<p class="last">Use <a class="reference internal" href="#mps_ap_create_k" title="mps_ap_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create_k()</span></tt></a> instead: the <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword
174arguments</em></a> interface is more reliable and produces better
175error messages.</p>
176</div>
177<p>An alternative to <a class="reference internal" href="#mps_ap_create_k" title="mps_ap_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create_k()</span></tt></a> that takes its extra
154arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> <tt class="docutils literal"><span class="pre">va_list</span></tt> mechanism.</p> 178arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> <tt class="docutils literal"><span class="pre">va_list</span></tt> mechanism.</p>
155</dd></dl> 179</dd></dl>
156 180
@@ -166,7 +190,7 @@ allocated from it, so long as they were successfully
166 190
167</div> 191</div>
168<div class="section" id="allocation-point-protocol"> 192<div class="section" id="allocation-point-protocol">
169<span id="topic-allocation-point-protocol"></span><span id="index-3"></span><h2>5.3. Allocation point protocol<a class="headerlink" href="#allocation-point-protocol" title="Permalink to this headline">¶</a></h2> 193<span id="topic-allocation-point-protocol"></span><span id="index-3"></span><h2>6.3. Allocation point protocol<a class="headerlink" href="#allocation-point-protocol" title="Permalink to this headline">¶</a></h2>
170<p>This protocol is designed to work with <a class="reference internal" href="../glossary/i.html#term-incremental-garbage-collection"><em class="xref std std-term">incremental garbage 194<p>This protocol is designed to work with <a class="reference internal" href="../glossary/i.html#term-incremental-garbage-collection"><em class="xref std std-term">incremental garbage
171collection</em></a> and multiple <a class="reference internal" href="../glossary/t.html#term-thread"><em class="xref std std-term">threads</em></a>, where between any 195collection</em></a> and multiple <a class="reference internal" href="../glossary/t.html#term-thread"><em class="xref std std-term">threads</em></a>, where between any
172two instructions in the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a>, the MPS may run part 196two instructions in the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a>, the MPS may run part
@@ -231,10 +255,10 @@ may point to the old location of blocks that moved.</p>
231</ol> 255</ol>
232<p>The usual implementation of the allocation point protocol in <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> 256<p>The usual implementation of the allocation point protocol in <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a>
233is thus:</p> 257is thus:</p>
234<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_addr_t</span> <span class="n">p</span><span class="p">;</span> 258<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_addr_t</span> <span class="n">p</span><span class="p">;</span>
235<span class="kt">obj_t</span> <span class="n">obj</span><span class="p">;</span> 259<span class="n">obj_t</span> <span class="n">obj</span><span class="p">;</span>
236<span class="k">do</span> <span class="p">{</span> 260<span class="k">do</span> <span class="p">{</span>
237 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span> 261 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
238 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="cm">/* handle the error */</span><span class="p">;</span> 262 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="cm">/* handle the error */</span><span class="p">;</span>
239 <span class="cm">/* p is now an ambiguous reference to the reserved block */</span> 263 <span class="cm">/* p is now an ambiguous reference to the reserved block */</span>
240 <span class="n">obj</span> <span class="o">=</span> <span class="n">p</span><span class="p">;</span> 264 <span class="n">obj</span> <span class="o">=</span> <span class="n">p</span><span class="p">;</span>
@@ -336,20 +360,20 @@ may evaluate its arguments multiple times.</p>
336 360
337</div> 361</div>
338<div class="section" id="example-allocating-a-symbol"> 362<div class="section" id="example-allocating-a-symbol">
339<span id="index-4"></span><h2>5.4. Example: allocating a symbol<a class="headerlink" href="#example-allocating-a-symbol" title="Permalink to this headline">¶</a></h2> 363<span id="index-4"></span><h2>6.4. Example: allocating a symbol<a class="headerlink" href="#example-allocating-a-symbol" title="Permalink to this headline">¶</a></h2>
340<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">symbol_s</span> <span class="p">{</span> 364<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">symbol_s</span> <span class="p">{</span>
341 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_SYMBOL */</span> 365 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_SYMBOL */</span>
342 <span class="kt">size_t</span> <span class="n">length</span><span class="p">;</span> <span class="cm">/* length of symbol string (excl. NUL) */</span> 366 <span class="kt">size_t</span> <span class="n">length</span><span class="p">;</span> <span class="cm">/* length of symbol string (excl. NUL) */</span>
343 <span class="kt">char</span> <span class="n">string</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span> <span class="cm">/* symbol string, NUL terminated */</span> 367 <span class="kt">char</span> <span class="n">string</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span> <span class="cm">/* symbol string, NUL terminated */</span>
344<span class="p">}</span> <span class="n">symbol_s</span><span class="p">,</span> <span class="o">*</span><span class="kt">symbol_t</span><span class="p">;</span> 368<span class="p">}</span> <span class="n">symbol_s</span><span class="p">,</span> <span class="o">*</span><span class="n">symbol_t</span><span class="p">;</span>
345 369
346<span class="kt">symbol_t</span> <span class="nf">make_symbol</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">length</span><span class="p">,</span> <span class="kt">char</span> <span class="n">string</span><span class="p">[])</span> 370<span class="n">symbol_t</span> <span class="nf">make_symbol</span><span class="p">(</span><span class="kt">size_t</span> <span class="n">length</span><span class="p">,</span> <span class="kt">char</span> <span class="n">string</span><span class="p">[])</span>
347<span class="p">{</span> 371<span class="p">{</span>
348 <span class="kt">symbol_t</span> <span class="n">symbol</span><span class="p">;</span> 372 <span class="n">symbol_t</span> <span class="n">symbol</span><span class="p">;</span>
349 <span class="kt">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span> 373 <span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span>
350 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="n">offsetof</span><span class="p">(</span><span class="n">symbol_s</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">+</span> <span class="n">length</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span> 374 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="n">offsetof</span><span class="p">(</span><span class="n">symbol_s</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">+</span> <span class="n">length</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
351 <span class="k">do</span> <span class="p">{</span> 375 <span class="k">do</span> <span class="p">{</span>
352 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span> 376 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">addr</span><span class="p">,</span> <span class="n">ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
353 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_symbol&quot;</span><span class="p">);</span> 377 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory in make_symbol&quot;</span><span class="p">);</span>
354 <span class="n">symbol</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span> 378 <span class="n">symbol</span> <span class="o">=</span> <span class="n">addr</span><span class="p">;</span>
355 <span class="n">symbol</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_SYMBOL</span><span class="p">;</span> 379 <span class="n">symbol</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_SYMBOL</span><span class="p">;</span>
@@ -362,7 +386,7 @@ may evaluate its arguments multiple times.</p>
362</div> 386</div>
363</div> 387</div>
364<div class="section" id="cautions"> 388<div class="section" id="cautions">
365<span id="topic-allocation-cautions"></span><span id="index-5"></span><h2>5.5. Cautions<a class="headerlink" href="#cautions" title="Permalink to this headline">¶</a></h2> 389<span id="topic-allocation-cautions"></span><span id="index-5"></span><h2>6.5. Cautions<a class="headerlink" href="#cautions" title="Permalink to this headline">¶</a></h2>
366<p>While a block is reserved but not yet committed:</p> 390<p>While a block is reserved but not yet committed:</p>
367<ol class="arabic simple"> 391<ol class="arabic simple">
368<li>The client program must not create an <a class="reference internal" href="../glossary/e.html#term-exact-reference"><em class="xref std std-term">exact reference</em></a> to 392<li>The client program must not create an <a class="reference internal" href="../glossary/e.html#term-exact-reference"><em class="xref std std-term">exact reference</em></a> to
@@ -411,24 +435,24 @@ choosing. See <a class="reference internal" href="debugging.html#topic-debugging
411</div> 435</div>
412</div> 436</div>
413<div class="section" id="example-inserting-into-a-doubly-linked-list"> 437<div class="section" id="example-inserting-into-a-doubly-linked-list">
414<span id="index-6"></span><h2>5.6. Example: inserting into a doubly linked list<a class="headerlink" href="#example-inserting-into-a-doubly-linked-list" title="Permalink to this headline">¶</a></h2> 438<span id="index-6"></span><h2>6.6. Example: inserting into a doubly linked list<a class="headerlink" href="#example-inserting-into-a-doubly-linked-list" title="Permalink to this headline">¶</a></h2>
415<p>This example contains several mistakes. See the highlighted lines:</p> 439<p>This example contains several mistakes. See the highlighted lines:</p>
416<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">link_s</span> <span class="p">{</span> 440<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">link_s</span> <span class="p">{</span>
417 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_LINK */</span> 441 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_LINK */</span>
418 <span class="cm">/* all three of these pointers are fixed: */</span> 442 <span class="cm">/* all three of these pointers are fixed: */</span>
419 <span class="k">struct</span> <span class="n">link_s</span> <span class="o">*</span><span class="n">prev</span><span class="p">;</span> 443 <span class="k">struct</span> <span class="n">link_s</span> <span class="o">*</span><span class="n">prev</span><span class="p">;</span>
420 <span class="k">struct</span> <span class="n">link_s</span> <span class="o">*</span><span class="n">next</span><span class="p">;</span> 444 <span class="k">struct</span> <span class="n">link_s</span> <span class="o">*</span><span class="n">next</span><span class="p">;</span>
421 <span class="kt">obj_t</span> <span class="n">obj</span><span class="p">;</span> 445 <span class="n">obj_t</span> <span class="n">obj</span><span class="p">;</span>
422<span class="p">}</span> <span class="n">link_s</span><span class="p">,</span> <span class="o">*</span><span class="kt">link_t</span><span class="p">;</span> 446<span class="p">}</span> <span class="n">link_s</span><span class="p">,</span> <span class="o">*</span><span class="n">link_t</span><span class="p">;</span>
423 447
424<span class="cm">/* insert &#39;obj&#39; into the doubly-linked list after &#39;head&#39; */</span> 448<span class="cm">/* insert &#39;obj&#39; into the doubly-linked list after &#39;head&#39; */</span>
425<span class="kt">link_t</span> <span class="nf">insert_link</span><span class="p">(</span><span class="kt">link_t</span> <span class="n">head</span><span class="p">,</span> <span class="kt">obj_t</span> <span class="n">obj</span><span class="p">)</span> 449<span class="n">link_t</span> <span class="nf">insert_link</span><span class="p">(</span><span class="n">link_t</span> <span class="n">head</span><span class="p">,</span> <span class="n">obj_t</span> <span class="n">obj</span><span class="p">)</span>
426<span class="p">{</span> 450<span class="p">{</span>
427 <span class="kt">mps_addr_t</span> <span class="n">p</span><span class="p">;</span> 451 <span class="n">mps_addr_t</span> <span class="n">p</span><span class="p">;</span>
428 <span class="kt">link_t</span> <span class="n">link</span><span class="p">;</span> 452 <span class="n">link_t</span> <span class="n">link</span><span class="p">;</span>
429 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">link_s</span><span class="p">));</span> 453 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">link_s</span><span class="p">));</span>
430 <span class="k">do</span> <span class="p">{</span> 454 <span class="k">do</span> <span class="p">{</span>
431 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span> 455 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
432 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory&quot;</span><span class="p">);</span> 456 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory&quot;</span><span class="p">);</span>
433 <span class="n">link</span> <span class="o">=</span> <span class="n">p</span><span class="p">;</span> 457 <span class="n">link</span> <span class="o">=</span> <span class="n">p</span><span class="p">;</span>
434 <span class="n">link</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_LINK</span><span class="p">;</span> 458 <span class="n">link</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_LINK</span><span class="p">;</span>
@@ -454,13 +478,13 @@ be deferred until after a successful commit.</li>
454scan method, so it must be initialized before the call to commit.</li> 478scan method, so it must be initialized before the call to commit.</li>
455</ol> 479</ol>
456<p>A correct version of <tt class="docutils literal"><span class="pre">insert_link</span></tt> looks like this:</p> 480<p>A correct version of <tt class="docutils literal"><span class="pre">insert_link</span></tt> looks like this:</p>
457<div class="highlight-c"><div class="highlight"><pre><span class="kt">link_t</span> <span class="nf">insert_link</span><span class="p">(</span><span class="kt">link_t</span> <span class="n">head</span><span class="p">,</span> <span class="kt">obj_t</span> <span class="n">obj</span><span class="p">)</span> 481<div class="highlight-c"><div class="highlight"><pre><span class="n">link_t</span> <span class="nf">insert_link</span><span class="p">(</span><span class="n">link_t</span> <span class="n">head</span><span class="p">,</span> <span class="n">obj_t</span> <span class="n">obj</span><span class="p">)</span>
458<span class="p">{</span> 482<span class="p">{</span>
459 <span class="kt">mps_addr_t</span> <span class="n">p</span><span class="p">;</span> 483 <span class="n">mps_addr_t</span> <span class="n">p</span><span class="p">;</span>
460 <span class="kt">link_t</span> <span class="n">link</span><span class="p">;</span> 484 <span class="n">link_t</span> <span class="n">link</span><span class="p">;</span>
461 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">link_s</span><span class="p">));</span> 485 <span class="kt">size_t</span> <span class="n">size</span> <span class="o">=</span> <span class="n">ALIGN</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">link_s</span><span class="p">));</span>
462 <span class="k">do</span> <span class="p">{</span> 486 <span class="k">do</span> <span class="p">{</span>
463 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span> 487 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">mps_reserve</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">ap</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
464 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory&quot;</span><span class="p">);</span> 488 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;out of memory&quot;</span><span class="p">);</span>
465 <span class="n">link</span> <span class="o">=</span> <span class="n">p</span><span class="p">;</span> 489 <span class="n">link</span> <span class="o">=</span> <span class="n">p</span><span class="p">;</span>
466 <span class="n">link</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_LINK</span><span class="p">;</span> 490 <span class="n">link</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">=</span> <span class="n">TYPE_LINK</span><span class="p">;</span>
@@ -476,7 +500,7 @@ scan method, so it must be initialized before the call to commit.</li>
476</div> 500</div>
477</div> 501</div>
478<div class="section" id="allocation-point-implementation"> 502<div class="section" id="allocation-point-implementation">
479<span id="topic-allocation-point-implementation"></span><span id="index-7"></span><h2>5.7. Allocation point implementation<a class="headerlink" href="#allocation-point-implementation" title="Permalink to this headline">¶</a></h2> 503<span id="topic-allocation-point-implementation"></span><span id="index-7"></span><h2>6.7. Allocation point implementation<a class="headerlink" href="#allocation-point-implementation" title="Permalink to this headline">¶</a></h2>
480<p>An allocation point consists of a structure of type <a class="reference internal" href="#mps_ap_s" title="mps_ap_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_ap_s</span></tt></a> 504<p>An allocation point consists of a structure of type <a class="reference internal" href="#mps_ap_s" title="mps_ap_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_ap_s</span></tt></a>
481and an associated <a class="reference internal" href="../glossary/b.html#term-buffer"><em class="xref std std-term">buffer</em></a>.</p> 505and an associated <a class="reference internal" href="../glossary/b.html#term-buffer"><em class="xref std std-term">buffer</em></a>.</p>
482<div class="figure align-center"> 506<div class="figure align-center">
@@ -574,9 +598,9 @@ instruction at this point.</p>
574<dd><p>The type of the structure used to represent <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation 598<dd><p>The type of the structure used to represent <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation
575points</em></a>:</p> 599points</em></a>:</p>
576<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_ap_s</span> <span class="p">{</span> 600<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_ap_s</span> <span class="p">{</span>
577 <span class="kt">mps_addr_t</span> <span class="n">init</span><span class="p">;</span> 601 <span class="n">mps_addr_t</span> <span class="n">init</span><span class="p">;</span>
578 <span class="kt">mps_addr_t</span> <span class="n">alloc</span><span class="p">;</span> 602 <span class="n">mps_addr_t</span> <span class="n">alloc</span><span class="p">;</span>
579 <span class="kt">mps_addr_t</span> <span class="n">limit</span><span class="p">;</span> 603 <span class="n">mps_addr_t</span> <span class="n">limit</span><span class="p">;</span>
580 <span class="cm">/* ... private fields ... */</span> 604 <span class="cm">/* ... private fields ... */</span>
581<span class="p">}</span> <span class="n">mps_ap_s</span><span class="p">;</span> 605<span class="p">}</span> <span class="n">mps_ap_s</span><span class="p">;</span>
582</pre></div> 606</pre></div>
@@ -588,7 +612,7 @@ points</em></a>:</p>
588provides very fast allocation, and defers the need for 612provides very fast allocation, and defers the need for
589synchronization in a multi-threaded environment.</p> 613synchronization in a multi-threaded environment.</p>
590<p>Create an allocation point for a pool by calling 614<p>Create an allocation point for a pool by calling
591<a class="reference internal" href="#mps_ap_create" title="mps_ap_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create()</span></tt></a>, and allocate memory via one by calling 615<a class="reference internal" href="#mps_ap_create_k" title="mps_ap_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_ap_create_k()</span></tt></a>, and allocate memory via one by calling
592<a class="reference internal" href="#mps_reserve" title="mps_reserve"><tt class="xref c c-func docutils literal"><span class="pre">mps_reserve()</span></tt></a> and <a class="reference internal" href="#mps_commit" title="mps_commit"><tt class="xref c c-func docutils literal"><span class="pre">mps_commit()</span></tt></a>.</p> 616<a class="reference internal" href="#mps_reserve" title="mps_reserve"><tt class="xref c c-func docutils literal"><span class="pre">mps_reserve()</span></tt></a> and <a class="reference internal" href="#mps_commit" title="mps_commit"><tt class="xref c c-func docutils literal"><span class="pre">mps_commit()</span></tt></a>.</p>
593</dd></dl> 617</dd></dl>
594 618
@@ -631,24 +655,24 @@ when the allocation point has insufficient space.</p>
631 </a></p> 655 </a></p>
632 <h3><a href="../index.html">Table Of Contents</a></h3> 656 <h3><a href="../index.html">Table Of Contents</a></h3>
633 <ul> 657 <ul>
634<li><a class="reference internal" href="#">5. Allocation</a><ul> 658<li><a class="reference internal" href="#">6. Allocation</a><ul>
635<li><a class="reference internal" href="#manual-allocation">5.1. Manual allocation</a></li> 659<li><a class="reference internal" href="#manual-allocation">6.1. Manual allocation</a></li>
636<li><a class="reference internal" href="#allocation-points">5.2. Allocation points</a></li> 660<li><a class="reference internal" href="#allocation-points">6.2. Allocation points</a></li>
637<li><a class="reference internal" href="#allocation-point-protocol">5.3. Allocation point protocol</a></li> 661<li><a class="reference internal" href="#allocation-point-protocol">6.3. Allocation point protocol</a></li>
638<li><a class="reference internal" href="#example-allocating-a-symbol">5.4. Example: allocating a symbol</a></li> 662<li><a class="reference internal" href="#example-allocating-a-symbol">6.4. Example: allocating a symbol</a></li>
639<li><a class="reference internal" href="#cautions">5.5. Cautions</a></li> 663<li><a class="reference internal" href="#cautions">6.5. Cautions</a></li>
640<li><a class="reference internal" href="#example-inserting-into-a-doubly-linked-list">5.6. Example: inserting into a doubly linked list</a></li> 664<li><a class="reference internal" href="#example-inserting-into-a-doubly-linked-list">6.6. Example: inserting into a doubly linked list</a></li>
641<li><a class="reference internal" href="#allocation-point-implementation">5.7. Allocation point implementation</a></li> 665<li><a class="reference internal" href="#allocation-point-implementation">6.7. Allocation point implementation</a></li>
642</ul> 666</ul>
643</li> 667</li>
644</ul> 668</ul>
645 669
646 <h4>Previous topic</h4> 670 <h4>Previous topic</h4>
647 <p class="topless"><a href="pool.html" 671 <p class="topless"><a href="pool.html"
648 title="previous chapter">4. Pools</a></p> 672 title="previous chapter">5. Pools</a></p>
649 <h4>Next topic</h4> 673 <h4>Next topic</h4>
650 <p class="topless"><a href="format.html" 674 <p class="topless"><a href="format.html"
651 title="next chapter">6. Object formats</a></p><h4>Downloads</h4> 675 title="next chapter">7. Object formats</a></p><h4>Downloads</h4>
652 676
653<p class="topless"> 677<p class="topless">
654<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 678<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -674,10 +698,10 @@ when the allocation point has insufficient space.</p>
674 <a href="../genindex.html" title="General Index" 698 <a href="../genindex.html" title="General Index"
675 >index</a></li> 699 >index</a></li>
676 <li class="right" > 700 <li class="right" >
677 <a href="format.html" title="6. Object formats" 701 <a href="format.html" title="7. Object formats"
678 >next</a> |</li> 702 >next</a> |</li>
679 <li class="right" > 703 <li class="right" >
680 <a href="pool.html" title="4. Pools" 704 <a href="pool.html" title="5. Pools"
681 >previous</a> |</li> 705 >previous</a> |</li>
682 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 706 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
683 <li><a href="index.html" >Reference</a> &raquo;</li> 707 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/arena.html b/mps/manual/html/topic/arena.html
index c2f30a67512..0acbf18e75f 100644
--- a/mps/manual/html/topic/arena.html
+++ b/mps/manual/html/topic/arena.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>3. Arenas &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>4. Arenas &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="4. Pools" href="pool.html" /> 31 <link rel="next" title="5. Pools" href="pool.html" />
32 <link rel="prev" title="2. Error handing" href="error.html" /> 32 <link rel="prev" title="3. Error handing" href="error.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="pool.html" title="4. Pools" 42 <a href="pool.html" title="5. Pools"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="error.html" title="2. Error handing" 45 <a href="error.html" title="3. Error handing"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,11 +55,11 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="arenas"> 57 <div class="section" id="arenas">
58<span id="topic-arena"></span><span id="index-0"></span><h1>3. Arenas<a class="headerlink" href="#arenas" title="Permalink to this headline">¶</a></h1> 58<span id="topic-arena"></span><span id="index-0"></span><h1>4. Arenas<a class="headerlink" href="#arenas" title="Permalink to this headline">¶</a></h1>
59<p>An arena is an object that encapsulates the state of the Memory Pool 59<p>An arena is an object that encapsulates the state of the Memory Pool
60System, and tells it where to get the memory it manages. You typically 60System, and tells it where to get the memory it manages. You typically
61start a session with the MPS by creating an arena with 61start a session with the MPS by creating an arena with
62<a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> and end the session by destroying it with 62<a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> and end the session by destroying it with
63<a class="reference internal" href="#mps_arena_destroy" title="mps_arena_destroy"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_destroy()</span></tt></a>. The only function you might need to call 63<a class="reference internal" href="#mps_arena_destroy" title="mps_arena_destroy"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_destroy()</span></tt></a>. The only function you might need to call
64before making an arena is <a class="reference internal" href="telemetry.html#mps_telemetry_control" title="mps_telemetry_control"><tt class="xref c c-func docutils literal"><span class="pre">mps_telemetry_control()</span></tt></a>.</p> 64before making an arena is <a class="reference internal" href="telemetry.html#mps_telemetry_control" title="mps_telemetry_control"><tt class="xref c c-func docutils literal"><span class="pre">mps_telemetry_control()</span></tt></a>.</p>
65<p>Before destroying an arena, you must first destroy all objects and 65<p>Before destroying an arena, you must first destroy all objects and
@@ -110,32 +110,48 @@ and for <a class="reference internal" href="../glossary/g.html#term-garbage-coll
110</dd></dl> 110</dd></dl>
111 111
112<dl class="function"> 112<dl class="function">
113<dt id="mps_arena_create"> 113<dt id="mps_arena_create_k">
114<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_arena_create</tt><big>(</big><a class="reference internal" href="#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;*arena_o</em>, <a class="reference internal" href="#mps_arena_class_t" title="mps_arena_class_t">mps_arena_class_t</a><em>&nbsp;arena_class</em>, ...<big>)</big><a class="headerlink" href="#mps_arena_create" title="Permalink to this definition">¶</a></dt> 114<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_arena_create_k</tt><big>(</big><a class="reference internal" href="#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;*arena_o</em>, <a class="reference internal" href="#mps_arena_class_t" title="mps_arena_class_t">mps_arena_class_t</a><em>&nbsp;arena_class</em>, <a class="reference internal" href="keyword.html#mps_arg_s" title="mps_arg_s">mps_arg_s</a><em>&nbsp;args[]</em><big>)</big><a class="headerlink" href="#mps_arena_create_k" title="Permalink to this definition">¶</a></dt>
115<dd><p>Create an <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>.</p> 115<dd><p>Create an <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>.</p>
116<p><tt class="docutils literal"><span class="pre">arena_o</span></tt> points to a location that will hold a pointer to the new 116<p><tt class="docutils literal"><span class="pre">arena_o</span></tt> points to a location that will hold a pointer to the new
117arena.</p> 117arena.</p>
118<p><tt class="docutils literal"><span class="pre">arena_class</span></tt> is the <a class="reference internal" href="../glossary/a.html#term-arena-class"><em class="xref std std-term">arena class</em></a>.</p> 118<p><tt class="docutils literal"><span class="pre">arena_class</span></tt> is the <a class="reference internal" href="../glossary/a.html#term-arena-class"><em class="xref std std-term">arena class</em></a>.</p>
119<p>Some arena classes require additional arguments to be passed to 119<p><tt class="docutils literal"><span class="pre">args</span></tt> are <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a> specific to the arena
120<a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a>. See the documentation for the arena 120class. See the documentation for the arena class.</p>
121class.</p>
122<p>Returns <a class="reference internal" href="error.html#MPS_RES_OK" title="MPS_RES_OK"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_OK</span></tt></a> if the arena is created 121<p>Returns <a class="reference internal" href="error.html#MPS_RES_OK" title="MPS_RES_OK"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_OK</span></tt></a> if the arena is created
123successfully, or another <a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result code</em></a> otherwise.</p> 122successfully, or another <a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result code</em></a> otherwise.</p>
124<p>The arena persists until it is destroyed by calling 123<p>The arena persists until it is destroyed by calling
125<a class="reference internal" href="#mps_arena_destroy" title="mps_arena_destroy"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_destroy()</span></tt></a>.</p> 124<a class="reference internal" href="#mps_arena_destroy" title="mps_arena_destroy"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_destroy()</span></tt></a>.</p>
126<div class="admonition-note admonition"> 125</dd></dl>
127<p class="first admonition-title">Note</p> 126
128<p class="last">There&#8217;s an alternative function <a class="reference internal" href="#mps_arena_create_v" title="mps_arena_create_v"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_v()</span></tt></a> 127<dl class="function">
129that takes its extra arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> 128<dt id="mps_arena_create">
130<tt class="docutils literal"><span class="pre">va_list</span></tt> mechanism.</p> 129<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_arena_create</tt><big>(</big><a class="reference internal" href="#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;*arena_o</em>, <a class="reference internal" href="#mps_arena_class_t" title="mps_arena_class_t">mps_arena_class_t</a><em>&nbsp;arena_class</em>, ...<big>)</big><a class="headerlink" href="#mps_arena_create" title="Permalink to this definition">¶</a></dt>
130<dd><div class="admonition-deprecated admonition">
131<p class="first admonition-title">Deprecated</p>
132<p>starting with version 1.112.</p>
133<p class="last">Use <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> instead: the <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword
134arguments</em></a> interface is more reliable and produces better
135error messages.</p>
131</div> 136</div>
137<p>An alternative to <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> that takes its
138extra arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> variable argument
139list mechanism.</p>
132</dd></dl> 140</dd></dl>
133 141
134<dl class="function"> 142<dl class="function">
135<dt id="mps_arena_create_v"> 143<dt id="mps_arena_create_v">
136<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_arena_create_v</tt><big>(</big><a class="reference internal" href="#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;*arena_o</em>, <a class="reference internal" href="#mps_arena_class_t" title="mps_arena_class_t">mps_arena_class_t</a><em>&nbsp;arena_class</em>, va_list<em>&nbsp;args</em><big>)</big><a class="headerlink" href="#mps_arena_create_v" title="Permalink to this definition">¶</a></dt> 144<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_arena_create_v</tt><big>(</big><a class="reference internal" href="#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;*arena_o</em>, <a class="reference internal" href="#mps_arena_class_t" title="mps_arena_class_t">mps_arena_class_t</a><em>&nbsp;arena_class</em>, va_list<em>&nbsp;args</em><big>)</big><a class="headerlink" href="#mps_arena_create_v" title="Permalink to this definition">¶</a></dt>
137<dd><p>An alternative to <a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> that takes its extra 145<dd><div class="admonition-deprecated admonition">
138arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> <tt class="docutils literal"><span class="pre">va_list</span></tt> mechanism.</p> 146<p class="first admonition-title">Deprecated</p>
147<p>starting with version 1.112.</p>
148<p class="last">Use <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> instead: the <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword
149arguments</em></a> interface is more reliable and produces better
150error messages.</p>
151</div>
152<p>An alternative to <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> that takes its
153extra arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> <tt class="docutils literal"><span class="pre">va_list</span></tt>
154mechanism.</p>
139</dd></dl> 155</dd></dl>
140 156
141<dl class="function"> 157<dl class="function">
@@ -154,7 +170,7 @@ and <a class="reference internal" href="../glossary/r.html#term-root"><em class=
154</dd></dl> 170</dd></dl>
155 171
156<div class="section" id="client-arenas"> 172<div class="section" id="client-arenas">
157<span id="topic-arena-client"></span><span id="index-2"></span><h2>3.1. Client arenas<a class="headerlink" href="#client-arenas" title="Permalink to this headline">¶</a></h2> 173<span id="topic-arena-client"></span><span id="index-2"></span><h2>4.1. Client arenas<a class="headerlink" href="#client-arenas" title="Permalink to this headline">¶</a></h2>
158<div class="highlight-c"><div class="highlight"><pre><span class="cp">#include &quot;mpsacl.h&quot;</span> 174<div class="highlight-c"><div class="highlight"><pre><span class="cp">#include &quot;mpsacl.h&quot;</span>
159</pre></div> 175</pre></div>
160</div> 176</div>
@@ -164,18 +180,24 @@ and <a class="reference internal" href="../glossary/r.html#term-root"><em class=
164<dd><p>Return the <a class="reference internal" href="../glossary/a.html#term-arena-class"><em class="xref std std-term">arena class</em></a> for a <a class="reference internal" href="../glossary/c.html#term-client-arena"><em class="xref std std-term">client arena</em></a>.</p> 180<dd><p>Return the <a class="reference internal" href="../glossary/a.html#term-arena-class"><em class="xref std std-term">arena class</em></a> for a <a class="reference internal" href="../glossary/c.html#term-client-arena"><em class="xref std std-term">client arena</em></a>.</p>
165<p>A client arena gets its managed memory from the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client 181<p>A client arena gets its managed memory from the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client
166program</em></a>. This memory chunk is passed when the arena is created.</p> 182program</em></a>. This memory chunk is passed when the arena is created.</p>
167<p>When creating a client arena, <a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> takes two 183<p>When creating a client arena, <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> requires two
168extra arguments:</p> 184<a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a>:</p>
169<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_arena_create</span><span class="p">(</span><span class="kt">mps_arena_t</span> <span class="o">*</span><span class="n">arena_o</span><span class="p">,</span> 185<ul class="simple">
170 <span class="kt">mps_arena_class_t</span> <span class="n">mps_arena_class_cl</span><span class="p">,</span> 186<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ARENA_CL_ADDR</span></tt> (member <tt class="docutils literal"><span class="pre">.val.addr</span></tt>; type
171 <span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">)</span> 187<a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_addr_t</span></tt></a>) is the <a class="reference internal" href="../glossary/a.html#term-address"><em class="xref std std-term">address</em></a> of the chunk of memory
188that will be managed by the arena.</li>
189<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ARENA_SIZE</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
190<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>) is its size.</li>
191</ul>
192<p>For example (in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>):</p>
193<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_arena_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">arena</span><span class="p">,</span> <span class="n">mps_arena_class_cl</span><span class="p">(),</span>
194 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_ARENA_CL_ADDR</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">base</span><span class="p">},</span>
195 <span class="p">{</span><span class="n">MPS_KEY_ARENA_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">size</span><span class="p">},</span>
196 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
172</pre></div> 197</pre></div>
173</div> 198</div>
174<p><tt class="docutils literal"><span class="pre">base</span></tt> is the <a class="reference internal" href="../glossary/a.html#term-address"><em class="xref std std-term">address</em></a> of the chunk of memory that will
175be managed by the arena.</p>
176<p><tt class="docutils literal"><span class="pre">size</span></tt> is its <a class="reference internal" href="../glossary/s.html#term-size"><em class="xref std std-term">size</em></a>.</p>
177<p>If the chunk is too small to hold the internal arena structures, 199<p>If the chunk is too small to hold the internal arena structures,
178<a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> returns <a class="reference internal" href="error.html#MPS_RES_MEMORY" title="MPS_RES_MEMORY"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_MEMORY</span></tt></a>. In 200<a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> returns <a class="reference internal" href="error.html#MPS_RES_MEMORY" title="MPS_RES_MEMORY"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_MEMORY</span></tt></a>. In
179this case, you need to use a (much) larger chunk.</p> 201this case, you need to use a (much) larger chunk.</p>
180<div class="admonition-note admonition"> 202<div class="admonition-note admonition">
181<p class="first admonition-title">Note</p> 203<p class="first admonition-title">Note</p>
@@ -183,6 +205,17 @@ this case, you need to use a (much) larger chunk.</p>
183call <a class="reference internal" href="#mps_arena_extend" title="mps_arena_extend"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_extend()</span></tt></a> later on.</p> 205call <a class="reference internal" href="#mps_arena_extend" title="mps_arena_extend"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_extend()</span></tt></a> later on.</p>
184<p class="last">Client arenas have no mechanism for returning unused memory.</p> 206<p class="last">Client arenas have no mechanism for returning unused memory.</p>
185</div> 207</div>
208<div class="admonition-deprecated admonition">
209<p class="first admonition-title">Deprecated</p>
210<p>starting with version 1.112.</p>
211<p>When using <a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a>, pass the size and base
212address like this:</p>
213<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_arena_create</span><span class="p">(</span><span class="n">mps_arena_t</span> <span class="o">*</span><span class="n">arena_o</span><span class="p">,</span>
214 <span class="n">mps_arena_class_t</span> <span class="n">mps_arena_class_cl</span><span class="p">,</span>
215 <span class="kt">size_t</span> <span class="n">size</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">)</span>
216</pre></div>
217</div>
218</div>
186</dd></dl> 219</dd></dl>
187 220
188<dl class="function"> 221<dl class="function">
@@ -198,7 +231,7 @@ managed by the arena.</p>
198 231
199</div> 232</div>
200<div class="section" id="virtual-memory-arenas"> 233<div class="section" id="virtual-memory-arenas">
201<span id="topic-arena-vm"></span><span id="index-3"></span><h2>3.2. Virtual memory arenas<a class="headerlink" href="#virtual-memory-arenas" title="Permalink to this headline">¶</a></h2> 234<span id="topic-arena-vm"></span><span id="index-3"></span><h2>4.2. Virtual memory arenas<a class="headerlink" href="#virtual-memory-arenas" title="Permalink to this headline">¶</a></h2>
202<div class="highlight-c"><div class="highlight"><pre><span class="cp">#include &quot;mpsavm.h&quot;</span> 235<div class="highlight-c"><div class="highlight"><pre><span class="cp">#include &quot;mpsavm.h&quot;</span>
203</pre></div> 236</pre></div>
204</div> 237</div>
@@ -213,11 +246,16 @@ it needs to commit memory to. This gives it flexibility as to
213where to place <a class="reference internal" href="../glossary/b.html#term-block"><em class="xref std std-term">blocks</em></a>, which reduces 246where to place <a class="reference internal" href="../glossary/b.html#term-block"><em class="xref std std-term">blocks</em></a>, which reduces
214<a class="reference internal" href="../glossary/f.html#term-fragmentation"><em class="xref std std-term">fragmentation</em></a> and helps make <a class="reference internal" href="../glossary/g.html#term-garbage-collection"><em class="xref std std-term">garbage collection</em></a> 247<a class="reference internal" href="../glossary/f.html#term-fragmentation"><em class="xref std std-term">fragmentation</em></a> and helps make <a class="reference internal" href="../glossary/g.html#term-garbage-collection"><em class="xref std std-term">garbage collection</em></a>
215more efficient.</p> 248more efficient.</p>
216<p>When creating a virtual memory arena, <a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> 249<p>When creating a virtual memory arena, <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a>
217takes one extra argument:</p> 250requires one <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword argument</em></a>:</p>
218<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="n">mps_arena_create</span><span class="p">(</span><span class="kt">mps_arena_t</span> <span class="o">*</span><span class="n">arena_o</span><span class="p">,</span> 251<ul class="simple">
219 <span class="kt">mps_arena_class_t</span> <span class="n">arena_class_vm</span><span class="p">(),</span> 252<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ARENA_SIZE</span></tt> (member <tt class="docutils literal"><span class="pre">.val.size</span></tt>; type
220 <span class="kt">size_t</span> <span class="n">size</span><span class="p">)</span> 253<tt class="xref c c-type docutils literal"><span class="pre">size_t</span></tt>).</li>
254</ul>
255<p>For example (in <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>):</p>
256<div class="highlight-c"><div class="highlight"><pre><span class="n">res</span> <span class="o">=</span> <span class="n">mps_arena_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">arena</span><span class="p">,</span> <span class="n">mps_arena_class_cl</span><span class="p">(),</span>
257 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_ARENA_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">size</span><span class="p">},</span>
258 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
221</pre></div> 259</pre></div>
222</div> 260</div>
223<p><tt class="docutils literal"><span class="pre">size</span></tt> is the initial amount of virtual address space, in 261<p><tt class="docutils literal"><span class="pre">size</span></tt> is the initial amount of virtual address space, in
@@ -235,19 +273,43 @@ several times larger than your peak memory usage.</p>
235more times it has to extend its address space, the less 273more times it has to extend its address space, the less
236efficient garbage collection will become.</p> 274efficient garbage collection will become.</p>
237</div> 275</div>
276<p>An optional <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword argument</em></a> may be passed, but is
277only used on the Windows operating system:</p>
278<ul class="simple">
279<li><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_VMW3_TOP_DOWN</span></tt> (member <tt class="docutils literal"><span class="pre">.val.b</span></tt>; type
280<a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_bool_t</span></tt></a>).</li>
281</ul>
282<p>If true, the arena will allocate address space starting at the
283highest possible address and working downwards through memory.</p>
284<div class="admonition-note admonition">
285<p class="first admonition-title">Note</p>
286<p class="last">This causes the arena to pass the <tt class="docutils literal"><span class="pre">MEM_TOP_DOWN</span></tt> flag to
287<a class="reference external" href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa366887%28v=vs.85%29.aspx">VirtualAlloc</a>.</p>
288</div>
238<p>If the MPS fails to reserve adequate address space to place the 289<p>If the MPS fails to reserve adequate address space to place the
239arena in, <a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> returns 290arena in, <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> returns
240<a class="reference internal" href="error.html#MPS_RES_RESOURCE" title="MPS_RES_RESOURCE"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_RESOURCE</span></tt></a>. Possibly this means that other parts 291<a class="reference internal" href="error.html#MPS_RES_RESOURCE" title="MPS_RES_RESOURCE"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_RESOURCE</span></tt></a>. Possibly this means that other parts
241of the program are reserving too much virtual memory.</p> 292of the program are reserving too much virtual memory.</p>
242<p>If the MPS fails to allocate memory for the internal arena 293<p>If the MPS fails to allocate memory for the internal arena
243structures, <a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> returns 294structures, <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> returns
244<a class="reference internal" href="error.html#MPS_RES_MEMORY" title="MPS_RES_MEMORY"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_MEMORY</span></tt></a>. Either <tt class="docutils literal"><span class="pre">size</span></tt> was far too small or 295<a class="reference internal" href="error.html#MPS_RES_MEMORY" title="MPS_RES_MEMORY"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_MEMORY</span></tt></a>. Either <tt class="docutils literal"><span class="pre">size</span></tt> was far too small or
245the operating system refused to provide enough memory.</p> 296the operating system refused to provide enough memory.</p>
297<div class="admonition-deprecated admonition">
298<p class="first admonition-title">Deprecated</p>
299<p>starting with version 1.112.</p>
300<p>When using <a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a>, pass the size like
301this:</p>
302<div class="last highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">mps_arena_create</span><span class="p">(</span><span class="n">mps_arena_t</span> <span class="o">*</span><span class="n">arena_o</span><span class="p">,</span>
303 <span class="n">mps_arena_class_t</span> <span class="n">arena_class_vm</span><span class="p">(),</span>
304 <span class="kt">size_t</span> <span class="n">size</span><span class="p">)</span>
305</pre></div>
306</div>
307</div>
246</dd></dl> 308</dd></dl>
247 309
248</div> 310</div>
249<div class="section" id="arena-properties"> 311<div class="section" id="arena-properties">
250<span id="index-4"></span><h2>3.3. Arena properties<a class="headerlink" href="#arena-properties" title="Permalink to this headline">¶</a></h2> 312<span id="index-4"></span><h2>4.3. Arena properties<a class="headerlink" href="#arena-properties" title="Permalink to this headline">¶</a></h2>
251<dl class="function"> 313<dl class="function">
252<dt id="mps_collections"> 314<dt id="mps_collections">
253<a class="reference internal" href="interface.html#mps_word_t" title="mps_word_t">mps_word_t</a> <tt class="descname">mps_collections</tt><big>(</big><a class="reference internal" href="#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em><big>)</big><a class="headerlink" href="#mps_collections" title="Permalink to this definition">¶</a></dt> 315<a class="reference internal" href="interface.html#mps_word_t" title="mps_word_t">mps_word_t</a> <tt class="descname">mps_collections</tt><big>(</big><a class="reference internal" href="#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em><big>)</big><a class="headerlink" href="#mps_collections" title="Permalink to this definition">¶</a></dt>
@@ -349,15 +411,16 @@ size_t <tt class="descname">mps_arena_reserved</tt><big>(</big><a class="referen
349reserved via the operating system&#8217;s virtual memory interface.</p> 411reserved via the operating system&#8217;s virtual memory interface.</p>
350<p>For a <a class="reference internal" href="../glossary/c.html#term-client-arena"><em class="xref std std-term">client arena</em></a>, this is the sum of the usable portions 412<p>For a <a class="reference internal" href="../glossary/c.html#term-client-arena"><em class="xref std std-term">client arena</em></a>, this is the sum of the usable portions
351of the chunks of memory passed to the arena by the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client 413of the chunks of memory passed to the arena by the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client
352program</em></a> via <a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> and 414program</em></a> via <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> and
353<a class="reference internal" href="#mps_arena_extend" title="mps_arena_extend"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_extend()</span></tt></a>.</p> 415<a class="reference internal" href="#mps_arena_extend" title="mps_arena_extend"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_extend()</span></tt></a>.</p>
354<div class="admonition-note admonition"> 416<div class="admonition-note admonition">
355<p class="first admonition-title">Note</p> 417<p class="first admonition-title">Note</p>
356<p class="last">For a client arena, the reserved address may be lower than the 418<p class="last">For a client arena, the reserved address may be lower than the
357sum of the <tt class="docutils literal"><span class="pre">size</span></tt> arguments passed to 419sum of the <tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ARENA_SIZE</span></tt> keyword argument
358<a class="reference internal" href="#mps_arena_create" title="mps_arena_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create()</span></tt></a> and <a class="reference internal" href="#mps_arena_extend" title="mps_arena_extend"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_extend()</span></tt></a>, 420passed to <a class="reference internal" href="#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> and the <tt class="docutils literal"><span class="pre">size</span></tt>
359because the arena may be unable to use the whole of each chunk 421arguments passed to <a class="reference internal" href="#mps_arena_extend" title="mps_arena_extend"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_extend()</span></tt></a>, because the
360for reasons of alignment.</p> 422arena may be unable to use the whole of each chunk for reasons
423of alignment.</p>
361</div> 424</div>
362</dd></dl> 425</dd></dl>
363 426
@@ -418,7 +481,7 @@ memory.</p>
418 481
419</div> 482</div>
420<div class="section" id="arena-states"> 483<div class="section" id="arena-states">
421<span id="index-5"></span><h2>3.4. Arena states<a class="headerlink" href="#arena-states" title="Permalink to this headline">¶</a></h2> 484<span id="index-5"></span><h2>4.4. Arena states<a class="headerlink" href="#arena-states" title="Permalink to this headline">¶</a></h2>
422<p>An arena is always in one of three states.</p> 485<p>An arena is always in one of three states.</p>
423<ol class="arabic"> 486<ol class="arabic">
424<li><p id="index-6">In the <em>unclamped state</em>, garbage collection may take place, 487<li><p id="index-6">In the <em>unclamped state</em>, garbage collection may take place,
@@ -496,7 +559,7 @@ motion, and other background activity can take place.</p>
496 559
497</div> 560</div>
498<div class="section" id="running-garbage-collections"> 561<div class="section" id="running-garbage-collections">
499<span id="index-9"></span><h2>3.5. Running garbage collections<a class="headerlink" href="#running-garbage-collections" title="Permalink to this headline">¶</a></h2> 562<span id="index-9"></span><h2>4.5. Running garbage collections<a class="headerlink" href="#running-garbage-collections" title="Permalink to this headline">¶</a></h2>
500<p>The Memory Pool System&#8217;s garbage collector runs <a class="reference internal" href="../glossary/a.html#term-asynchronous-garbage-collector"><em class="xref std std-term">asynchronously</em></a> and <a class="reference internal" href="../glossary/i.html#term-incremental-garbage-collection"><em class="xref std std-term">incrementally</em></a>. This means that it is not normally 563<p>The Memory Pool System&#8217;s garbage collector runs <a class="reference internal" href="../glossary/a.html#term-asynchronous-garbage-collector"><em class="xref std std-term">asynchronously</em></a> and <a class="reference internal" href="../glossary/i.html#term-incremental-garbage-collection"><em class="xref std std-term">incrementally</em></a>. This means that it is not normally
501necessary to tell it when to start garbage collections, or to wait 564necessary to tell it when to start garbage collections, or to wait
502until it has finished collecting. (But if your program has idle time 565until it has finished collecting. (But if your program has idle time
@@ -550,7 +613,7 @@ return until the collection has completed.</p>
550 613
551</div> 614</div>
552<div class="section" id="using-idle-time-for-collection"> 615<div class="section" id="using-idle-time-for-collection">
553<span id="topic-arena-idle"></span><span id="index-10"></span><h2>3.6. Using idle time for collection<a class="headerlink" href="#using-idle-time-for-collection" title="Permalink to this headline">¶</a></h2> 616<span id="topic-arena-idle"></span><span id="index-10"></span><h2>4.6. Using idle time for collection<a class="headerlink" href="#using-idle-time-for-collection" title="Permalink to this headline">¶</a></h2>
554<p>Some types of program have &#8220;idle time&#8221; in which they are waiting for 617<p>Some types of program have &#8220;idle time&#8221; in which they are waiting for
555an external event such as user input or network activity. The MPS 618an external event such as user input or network activity. The MPS
556provides a function, <a class="reference internal" href="#mps_arena_step" title="mps_arena_step"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_step()</span></tt></a>, for making use of idle 619provides a function, <a class="reference internal" href="#mps_arena_step" title="mps_arena_step"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_step()</span></tt></a>, for making use of idle
@@ -620,7 +683,7 @@ state</em></a>, it remains there.</p>
620 683
621</div> 684</div>
622<div class="section" id="arena-introspection"> 685<div class="section" id="arena-introspection">
623<span id="index-11"></span><h2>3.7. Arena introspection<a class="headerlink" href="#arena-introspection" title="Permalink to this headline">¶</a></h2> 686<span id="index-11"></span><h2>4.7. Arena introspection<a class="headerlink" href="#arena-introspection" title="Permalink to this headline">¶</a></h2>
624<div class="admonition-note admonition"> 687<div class="admonition-note admonition">
625<p class="first admonition-title">Note</p> 688<p class="first admonition-title">Note</p>
626<p>Introspection functions covered in other chapters are:</p> 689<p>Introspection functions covered in other chapters are:</p>
@@ -664,7 +727,7 @@ in the <a class="reference internal" href="../glossary/p.html#term-parked-state"
664 727
665</div> 728</div>
666<div class="section" id="protection-interface"> 729<div class="section" id="protection-interface">
667<span id="index-12"></span><h2>3.8. Protection interface<a class="headerlink" href="#protection-interface" title="Permalink to this headline">¶</a></h2> 730<span id="index-12"></span><h2>4.8. Protection interface<a class="headerlink" href="#protection-interface" title="Permalink to this headline">¶</a></h2>
668<dl class="function"> 731<dl class="function">
669<dt id="mps_arena_expose"> 732<dt id="mps_arena_expose">
670void <tt class="descname">mps_arena_expose</tt><big>(</big><a class="reference internal" href="#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em><big>)</big><a class="headerlink" href="#mps_arena_expose" title="Permalink to this definition">¶</a></dt> 733void <tt class="descname">mps_arena_expose</tt><big>(</big><a class="reference internal" href="#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em><big>)</big><a class="headerlink" href="#mps_arena_expose" title="Permalink to this definition">¶</a></dt>
@@ -776,25 +839,25 @@ cannot be restored more than once.</p>
776 </a></p> 839 </a></p>
777 <h3><a href="../index.html">Table Of Contents</a></h3> 840 <h3><a href="../index.html">Table Of Contents</a></h3>
778 <ul> 841 <ul>
779<li><a class="reference internal" href="#">3. Arenas</a><ul> 842<li><a class="reference internal" href="#">4. Arenas</a><ul>
780<li><a class="reference internal" href="#client-arenas">3.1. Client arenas</a></li> 843<li><a class="reference internal" href="#client-arenas">4.1. Client arenas</a></li>
781<li><a class="reference internal" href="#virtual-memory-arenas">3.2. Virtual memory arenas</a></li> 844<li><a class="reference internal" href="#virtual-memory-arenas">4.2. Virtual memory arenas</a></li>
782<li><a class="reference internal" href="#arena-properties">3.3. Arena properties</a></li> 845<li><a class="reference internal" href="#arena-properties">4.3. Arena properties</a></li>
783<li><a class="reference internal" href="#arena-states">3.4. Arena states</a></li> 846<li><a class="reference internal" href="#arena-states">4.4. Arena states</a></li>
784<li><a class="reference internal" href="#running-garbage-collections">3.5. Running garbage collections</a></li> 847<li><a class="reference internal" href="#running-garbage-collections">4.5. Running garbage collections</a></li>
785<li><a class="reference internal" href="#using-idle-time-for-collection">3.6. Using idle time for collection</a></li> 848<li><a class="reference internal" href="#using-idle-time-for-collection">4.6. Using idle time for collection</a></li>
786<li><a class="reference internal" href="#arena-introspection">3.7. Arena introspection</a></li> 849<li><a class="reference internal" href="#arena-introspection">4.7. Arena introspection</a></li>
787<li><a class="reference internal" href="#protection-interface">3.8. Protection interface</a></li> 850<li><a class="reference internal" href="#protection-interface">4.8. Protection interface</a></li>
788</ul> 851</ul>
789</li> 852</li>
790</ul> 853</ul>
791 854
792 <h4>Previous topic</h4> 855 <h4>Previous topic</h4>
793 <p class="topless"><a href="error.html" 856 <p class="topless"><a href="error.html"
794 title="previous chapter">2. Error handing</a></p> 857 title="previous chapter">3. Error handing</a></p>
795 <h4>Next topic</h4> 858 <h4>Next topic</h4>
796 <p class="topless"><a href="pool.html" 859 <p class="topless"><a href="pool.html"
797 title="next chapter">4. Pools</a></p><h4>Downloads</h4> 860 title="next chapter">5. Pools</a></p><h4>Downloads</h4>
798 861
799<p class="topless"> 862<p class="topless">
800<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 863<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -820,10 +883,10 @@ cannot be restored more than once.</p>
820 <a href="../genindex.html" title="General Index" 883 <a href="../genindex.html" title="General Index"
821 >index</a></li> 884 >index</a></li>
822 <li class="right" > 885 <li class="right" >
823 <a href="pool.html" title="4. Pools" 886 <a href="pool.html" title="5. Pools"
824 >next</a> |</li> 887 >next</a> |</li>
825 <li class="right" > 888 <li class="right" >
826 <a href="error.html" title="2. Error handing" 889 <a href="error.html" title="3. Error handing"
827 >previous</a> |</li> 890 >previous</a> |</li>
828 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 891 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
829 <li><a href="index.html" >Reference</a> &raquo;</li> 892 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/cache.html b/mps/manual/html/topic/cache.html
index 6ae1ee1f59d..950113af945 100644
--- a/mps/manual/html/topic/cache.html
+++ b/mps/manual/html/topic/cache.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>14. Segregated allocation caches &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>15. Segregated allocation caches &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="15. Allocation patterns" href="pattern.html" /> 31 <link rel="next" title="16. Allocation patterns" href="pattern.html" />
32 <link rel="prev" title="13. Location dependency" href="location.html" /> 32 <link rel="prev" title="14. Location dependency" href="location.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="pattern.html" title="15. Allocation patterns" 42 <a href="pattern.html" title="16. Allocation patterns"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="location.html" title="13. Location dependency" 45 <a href="location.html" title="14. Location dependency"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="segregated-allocation-caches"> 57 <div class="section" id="segregated-allocation-caches">
58<span id="topic-cache"></span><span id="index-0"></span><h1>14. Segregated allocation caches<a class="headerlink" href="#segregated-allocation-caches" title="Permalink to this headline">¶</a></h1> 58<span id="topic-cache"></span><span id="index-0"></span><h1>15. Segregated allocation caches<a class="headerlink" href="#segregated-allocation-caches" title="Permalink to this headline">¶</a></h1>
59<p>A <em class="dfn">segregated allocation cache</em> is a data structure that can be 59<p>A <em class="dfn">segregated allocation cache</em> is a data structure that can be
60attached to any <a class="reference internal" href="../glossary/m.html#term-manual-memory-management"><em class="xref std std-term">manually managed</em></a> 60attached to any <a class="reference internal" href="../glossary/m.html#term-manual-memory-management"><em class="xref std std-term">manually managed</em></a>
61<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>, that maintains a <a class="reference internal" href="../glossary/s.html#term-segregated-free-list"><em class="xref std std-term">segregated free list</em></a>, that is, 61<a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a>, that maintains a <a class="reference internal" href="../glossary/s.html#term-segregated-free-list"><em class="xref std std-term">segregated free list</em></a>, that is,
@@ -70,7 +70,7 @@ small number of relatively long-lived 128-byte objects, and a large
70number of relatively short-lived 8-byte objects, we might create a 70number of relatively short-lived 8-byte objects, we might create a
71cache as follows:</p> 71cache as follows:</p>
72<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_sac_class_s</span> <span class="n">classes</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">{{</span><span class="mi">8</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">10</span><span class="p">},</span> <span class="p">{</span><span class="mi">128</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">1</span><span class="p">}};</span> 72<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_sac_class_s</span> <span class="n">classes</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">{{</span><span class="mi">8</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">10</span><span class="p">},</span> <span class="p">{</span><span class="mi">128</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">1</span><span class="p">}};</span>
73<span class="kt">mps_sac_t</span> <span class="n">sac</span><span class="p">;</span> 73<span class="n">mps_sac_t</span> <span class="n">sac</span><span class="p">;</span>
74 74
75<span class="n">res</span> <span class="o">=</span> <span class="n">mps_sac_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sac</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="k">sizeof</span> <span class="n">classes</span> <span class="o">/</span> <span class="k">sizeof</span> <span class="n">classes</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">classes</span><span class="p">);</span> 75<span class="n">res</span> <span class="o">=</span> <span class="n">mps_sac_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">sac</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="k">sizeof</span> <span class="n">classes</span> <span class="o">/</span> <span class="k">sizeof</span> <span class="n">classes</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">classes</span><span class="p">);</span>
76<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> 76<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span>
@@ -83,8 +83,8 @@ otherwise from the pool. Similarly, deallocations through the cache
83(using <a class="reference internal" href="#mps_sac_free" title="mps_sac_free"><tt class="xref c c-func docutils literal"><span class="pre">mps_sac_free()</span></tt></a> or <a class="reference internal" href="#MPS_SAC_FREE_FAST" title="MPS_SAC_FREE_FAST"><tt class="xref c c-func docutils literal"><span class="pre">MPS_SAC_FREE_FAST()</span></tt></a>) return 83(using <a class="reference internal" href="#mps_sac_free" title="mps_sac_free"><tt class="xref c c-func docutils literal"><span class="pre">mps_sac_free()</span></tt></a> or <a class="reference internal" href="#MPS_SAC_FREE_FAST" title="MPS_SAC_FREE_FAST"><tt class="xref c c-func docutils literal"><span class="pre">MPS_SAC_FREE_FAST()</span></tt></a>) return
84the block to the appopriate free list for its size. For example:</p> 84the block to the appopriate free list for its size. For example:</p>
85<div class="highlight-c"><div class="highlight"><pre><span class="n">Foo</span> <span class="o">*</span><span class="n">foo</span><span class="p">;</span> 85<div class="highlight-c"><div class="highlight"><pre><span class="n">Foo</span> <span class="o">*</span><span class="n">foo</span><span class="p">;</span>
86<span class="kt">mps_addr_t</span> <span class="n">p</span><span class="p">;</span> 86<span class="n">mps_addr_t</span> <span class="n">p</span><span class="p">;</span>
87<span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 87<span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
88 88
89<span class="n">res</span> <span class="o">=</span> <span class="n">mps_sac_alloc</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">sac</span><span class="p">,</span> <span class="k">sizeof</span> <span class="o">*</span><span class="n">foo</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span> 89<span class="n">res</span> <span class="o">=</span> <span class="n">mps_sac_alloc</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">sac</span><span class="p">,</span> <span class="k">sizeof</span> <span class="o">*</span><span class="n">foo</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
90<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> 90<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span>
@@ -121,7 +121,7 @@ classes: the debugging checks only happen when blocks are moved
121between the cache and the pool.</p> 121between the cache and the pool.</p>
122</div> 122</div>
123<div class="section" id="cache-interface"> 123<div class="section" id="cache-interface">
124<span id="index-1"></span><h2>14.1. Cache interface<a class="headerlink" href="#cache-interface" title="Permalink to this headline">¶</a></h2> 124<span id="index-1"></span><h2>15.1. Cache interface<a class="headerlink" href="#cache-interface" title="Permalink to this headline">¶</a></h2>
125<dl class="type"> 125<dl class="type">
126<dt id="mps_sac_t"> 126<dt id="mps_sac_t">
127<tt class="descname">mps_sac_t</tt><a class="headerlink" href="#mps_sac_t" title="Permalink to this definition">¶</a></dt> 127<tt class="descname">mps_sac_t</tt><a class="headerlink" href="#mps_sac_t" title="Permalink to this definition">¶</a></dt>
@@ -271,7 +271,7 @@ pool.</p>
271 271
272</div> 272</div>
273<div class="section" id="allocation-interface"> 273<div class="section" id="allocation-interface">
274<span id="index-2"></span><h2>14.2. Allocation interface<a class="headerlink" href="#allocation-interface" title="Permalink to this headline">¶</a></h2> 274<span id="index-2"></span><h2>15.2. Allocation interface<a class="headerlink" href="#allocation-interface" title="Permalink to this headline">¶</a></h2>
275<dl class="function"> 275<dl class="function">
276<dt id="mps_sac_alloc"> 276<dt id="mps_sac_alloc">
277<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_sac_alloc</tt><big>(</big><a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;*p_o</em>, <a class="reference internal" href="#mps_sac_t" title="mps_sac_t">mps_sac_t</a><em>&nbsp;sac</em>, size_t<em>&nbsp;size</em>, <a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a><em>&nbsp;has_reservoir_permit</em><big>)</big><a class="headerlink" href="#mps_sac_alloc" title="Permalink to this definition">¶</a></dt> 277<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_sac_alloc</tt><big>(</big><a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;*p_o</em>, <a class="reference internal" href="#mps_sac_t" title="mps_sac_t">mps_sac_t</a><em>&nbsp;sac</em>, size_t<em>&nbsp;size</em>, <a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a><em>&nbsp;has_reservoir_permit</em><big>)</big><a class="headerlink" href="#mps_sac_alloc" title="Permalink to this definition">¶</a></dt>
@@ -400,19 +400,19 @@ the function.</p>
400 </a></p> 400 </a></p>
401 <h3><a href="../index.html">Table Of Contents</a></h3> 401 <h3><a href="../index.html">Table Of Contents</a></h3>
402 <ul> 402 <ul>
403<li><a class="reference internal" href="#">14. Segregated allocation caches</a><ul> 403<li><a class="reference internal" href="#">15. Segregated allocation caches</a><ul>
404<li><a class="reference internal" href="#cache-interface">14.1. Cache interface</a></li> 404<li><a class="reference internal" href="#cache-interface">15.1. Cache interface</a></li>
405<li><a class="reference internal" href="#allocation-interface">14.2. Allocation interface</a></li> 405<li><a class="reference internal" href="#allocation-interface">15.2. Allocation interface</a></li>
406</ul> 406</ul>
407</li> 407</li>
408</ul> 408</ul>
409 409
410 <h4>Previous topic</h4> 410 <h4>Previous topic</h4>
411 <p class="topless"><a href="location.html" 411 <p class="topless"><a href="location.html"
412 title="previous chapter">13. Location dependency</a></p> 412 title="previous chapter">14. Location dependency</a></p>
413 <h4>Next topic</h4> 413 <h4>Next topic</h4>
414 <p class="topless"><a href="pattern.html" 414 <p class="topless"><a href="pattern.html"
415 title="next chapter">15. Allocation patterns</a></p><h4>Downloads</h4> 415 title="next chapter">16. Allocation patterns</a></p><h4>Downloads</h4>
416 416
417<p class="topless"> 417<p class="topless">
418<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 418<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -438,10 +438,10 @@ the function.</p>
438 <a href="../genindex.html" title="General Index" 438 <a href="../genindex.html" title="General Index"
439 >index</a></li> 439 >index</a></li>
440 <li class="right" > 440 <li class="right" >
441 <a href="pattern.html" title="15. Allocation patterns" 441 <a href="pattern.html" title="16. Allocation patterns"
442 >next</a> |</li> 442 >next</a> |</li>
443 <li class="right" > 443 <li class="right" >
444 <a href="location.html" title="13. Location dependency" 444 <a href="location.html" title="14. Location dependency"
445 >previous</a> |</li> 445 >previous</a> |</li>
446 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 446 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
447 <li><a href="index.html" >Reference</a> &raquo;</li> 447 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/collection.html b/mps/manual/html/topic/collection.html
index a2f7d9d3a02..202c1cfc462 100644
--- a/mps/manual/html/topic/collection.html
+++ b/mps/manual/html/topic/collection.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>10. Garbage collection &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>11. Garbage collection &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="11. Messages" href="message.html" /> 31 <link rel="next" title="12. Messages" href="message.html" />
32 <link rel="prev" title="9. Roots" href="root.html" /> 32 <link rel="prev" title="10. Roots" href="root.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="message.html" title="11. Messages" 42 <a href="message.html" title="12. Messages"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="root.html" title="9. Roots" 45 <a href="root.html" title="10. Roots"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,9 +55,9 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="garbage-collection"> 57 <div class="section" id="garbage-collection">
58<span id="topic-collection"></span><span id="index-0"></span><h1>10. Garbage collection<a class="headerlink" href="#garbage-collection" title="Permalink to this headline">¶</a></h1> 58<span id="topic-collection"></span><span id="index-0"></span><h1>11. Garbage collection<a class="headerlink" href="#garbage-collection" title="Permalink to this headline">¶</a></h1>
59<div class="section" id="generation-chains"> 59<div class="section" id="generation-chains">
60<span id="index-1"></span><h2>10.1. Generation chains<a class="headerlink" href="#generation-chains" title="Permalink to this headline">¶</a></h2> 60<span id="index-1"></span><h2>11.1. Generation chains<a class="headerlink" href="#generation-chains" title="Permalink to this headline">¶</a></h2>
61<p>A <a class="reference internal" href="../glossary/g.html#term-generation-chain"><em class="xref std std-term">generation chain</em></a> describes the structure of the 61<p>A <a class="reference internal" href="../glossary/g.html#term-generation-chain"><em class="xref std std-term">generation chain</em></a> describes the structure of the
62<a class="reference internal" href="../glossary/g.html#term-generation"><em class="xref std std-term">generations</em></a> in a set of <a class="reference internal" href="../glossary/a.html#term-automatic-memory-management"><em class="xref std std-term">automatically managed</em></a> <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pools</em></a>. The same generation 62<a class="reference internal" href="../glossary/g.html#term-generation"><em class="xref std std-term">generations</em></a> in a set of <a class="reference internal" href="../glossary/a.html#term-automatic-memory-management"><em class="xref std std-term">automatically managed</em></a> <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pools</em></a>. The same generation
63chain should be used for all pools whose blocks live and die together.</p> 63chain should be used for all pools whose blocks live and die together.</p>
@@ -74,8 +74,8 @@ prepared to start collecting the generation. See
74 <span class="p">{</span> <span class="mi">2048</span><span class="p">,</span> <span class="mf">0.4</span> <span class="p">},</span> 74 <span class="p">{</span> <span class="mi">2048</span><span class="p">,</span> <span class="mf">0.4</span> <span class="p">},</span>
75<span class="p">};</span> 75<span class="p">};</span>
76 76
77<span class="kt">mps_chain_t</span> <span class="n">chain</span><span class="p">;</span> 77<span class="n">mps_chain_t</span> <span class="n">chain</span><span class="p">;</span>
78<span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 78<span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
79<span class="n">res</span> <span class="o">=</span> <span class="n">mps_chain_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">chain</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> 79<span class="n">res</span> <span class="o">=</span> <span class="n">mps_chain_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">chain</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span>
80 <span class="k">sizeof</span><span class="p">(</span><span class="n">gen_params</span><span class="p">)</span> <span class="o">/</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">gen_params</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> 80 <span class="k">sizeof</span><span class="p">(</span><span class="n">gen_params</span><span class="p">)</span> <span class="o">/</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">gen_params</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span>
81 <span class="n">gen_params</span><span class="p">);</span> 81 <span class="n">gen_params</span><span class="p">);</span>
@@ -139,7 +139,7 @@ void <tt class="descname">mps_chain_destroy</tt><big>(</big><a class="reference
139 139
140</div> 140</div>
141<div class="section" id="scheduling-of-collections"> 141<div class="section" id="scheduling-of-collections">
142<span id="topic-collection-schedule"></span><span id="index-2"></span><h2>10.2. Scheduling of collections<a class="headerlink" href="#scheduling-of-collections" title="Permalink to this headline">¶</a></h2> 142<span id="topic-collection-schedule"></span><span id="index-2"></span><h2>11.2. Scheduling of collections<a class="headerlink" href="#scheduling-of-collections" title="Permalink to this headline">¶</a></h2>
143<div class="admonition-note admonition"> 143<div class="admonition-note admonition">
144<p class="first admonition-title">Note</p> 144<p class="first admonition-title">Note</p>
145<p class="last">It&#8217;s likely that the algorithm the MPS uses to schedule its 145<p class="last">It&#8217;s likely that the algorithm the MPS uses to schedule its
@@ -193,7 +193,7 @@ predicted mortality is too low, the collector will take larger time
193slices up front and then find that it is idle later on.</p> 193slices up front and then find that it is idle later on.</p>
194</div> 194</div>
195<div class="section" id="garbage-collection-start-messages"> 195<div class="section" id="garbage-collection-start-messages">
196<span id="index-3"></span><h2>10.3. Garbage collection start messages<a class="headerlink" href="#garbage-collection-start-messages" title="Permalink to this headline">¶</a></h2> 196<span id="index-3"></span><h2>11.3. Garbage collection start messages<a class="headerlink" href="#garbage-collection-start-messages" title="Permalink to this headline">¶</a></h2>
197<dl class="function"> 197<dl class="function">
198<dt id="mps_message_type_gc_start"> 198<dt id="mps_message_type_gc_start">
199<a class="reference internal" href="message.html#mps_message_type_t" title="mps_message_type_t">mps_message_type_t</a> <tt class="descname">mps_message_type_gc_start</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_message_type_gc_start" title="Permalink to this definition">¶</a></dt> 199<a class="reference internal" href="message.html#mps_message_type_t" title="mps_message_type_t">mps_message_type_t</a> <tt class="descname">mps_message_type_gc_start</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_message_type_gc_start" title="Permalink to this definition">¶</a></dt>
@@ -234,7 +234,7 @@ the message is discarded with <a class="reference internal" href="message.html#m
234 234
235</div> 235</div>
236<div class="section" id="garbage-collection-messages"> 236<div class="section" id="garbage-collection-messages">
237<span id="index-4"></span><h2>10.4. Garbage collection messages<a class="headerlink" href="#garbage-collection-messages" title="Permalink to this headline">¶</a></h2> 237<span id="index-4"></span><h2>11.4. Garbage collection messages<a class="headerlink" href="#garbage-collection-messages" title="Permalink to this headline">¶</a></h2>
238<dl class="function"> 238<dl class="function">
239<dt id="mps_message_type_gc"> 239<dt id="mps_message_type_gc">
240<a class="reference internal" href="message.html#mps_message_type_t" title="mps_message_type_t">mps_message_type_t</a> <tt class="descname">mps_message_type_gc</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_message_type_gc" title="Permalink to this definition">¶</a></dt> 240<a class="reference internal" href="message.html#mps_message_type_t" title="mps_message_type_t">mps_message_type_t</a> <tt class="descname">mps_message_type_gc</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_message_type_gc" title="Permalink to this definition">¶</a></dt>
@@ -329,21 +329,21 @@ collection</em></a> that generated the message.</p>
329 </a></p> 329 </a></p>
330 <h3><a href="../index.html">Table Of Contents</a></h3> 330 <h3><a href="../index.html">Table Of Contents</a></h3>
331 <ul> 331 <ul>
332<li><a class="reference internal" href="#">10. Garbage collection</a><ul> 332<li><a class="reference internal" href="#">11. Garbage collection</a><ul>
333<li><a class="reference internal" href="#generation-chains">10.1. Generation chains</a></li> 333<li><a class="reference internal" href="#generation-chains">11.1. Generation chains</a></li>
334<li><a class="reference internal" href="#scheduling-of-collections">10.2. Scheduling of collections</a></li> 334<li><a class="reference internal" href="#scheduling-of-collections">11.2. Scheduling of collections</a></li>
335<li><a class="reference internal" href="#garbage-collection-start-messages">10.3. Garbage collection start messages</a></li> 335<li><a class="reference internal" href="#garbage-collection-start-messages">11.3. Garbage collection start messages</a></li>
336<li><a class="reference internal" href="#garbage-collection-messages">10.4. Garbage collection messages</a></li> 336<li><a class="reference internal" href="#garbage-collection-messages">11.4. Garbage collection messages</a></li>
337</ul> 337</ul>
338</li> 338</li>
339</ul> 339</ul>
340 340
341 <h4>Previous topic</h4> 341 <h4>Previous topic</h4>
342 <p class="topless"><a href="root.html" 342 <p class="topless"><a href="root.html"
343 title="previous chapter">9. Roots</a></p> 343 title="previous chapter">10. Roots</a></p>
344 <h4>Next topic</h4> 344 <h4>Next topic</h4>
345 <p class="topless"><a href="message.html" 345 <p class="topless"><a href="message.html"
346 title="next chapter">11. Messages</a></p><h4>Downloads</h4> 346 title="next chapter">12. Messages</a></p><h4>Downloads</h4>
347 347
348<p class="topless"> 348<p class="topless">
349<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 349<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -369,10 +369,10 @@ collection</em></a> that generated the message.</p>
369 <a href="../genindex.html" title="General Index" 369 <a href="../genindex.html" title="General Index"
370 >index</a></li> 370 >index</a></li>
371 <li class="right" > 371 <li class="right" >
372 <a href="message.html" title="11. Messages" 372 <a href="message.html" title="12. Messages"
373 >next</a> |</li> 373 >next</a> |</li>
374 <li class="right" > 374 <li class="right" >
375 <a href="root.html" title="9. Roots" 375 <a href="root.html" title="10. Roots"
376 >previous</a> |</li> 376 >previous</a> |</li>
377 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 377 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
378 <li><a href="index.html" >Reference</a> &raquo;</li> 378 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/critical.html b/mps/manual/html/topic/critical.html
index a4eb0e900f0..90cd696e770 100644
--- a/mps/manual/html/topic/critical.html
+++ b/mps/manual/html/topic/critical.html
@@ -164,18 +164,18 @@ a client function of type <a class="reference internal" href="format.html#mps_fm
164of the format creation functions. (See <a class="reference internal" href="format.html#topic-format"><em>Object formats</em></a>.)</p> 164of the format creation functions. (See <a class="reference internal" href="format.html#topic-format"><em>Object formats</em></a>.)</p>
165<p>Here is an example of part of a format scanner for scanning contiguous 165<p>Here is an example of part of a format scanner for scanning contiguous
166runs of pointers, from <tt class="docutils literal"><span class="pre">fmtdy.c</span></tt>, the scanner for the <a class="reference external" href="http://opendylan.org/">Open Dylan</a> runtime:</p> 166runs of pointers, from <tt class="docutils literal"><span class="pre">fmtdy.c</span></tt>, the scanner for the <a class="reference external" href="http://opendylan.org/">Open Dylan</a> runtime:</p>
167<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_res_t</span> <span class="nf">dylan_scan_contig</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">mps_ss</span><span class="p">,</span> 167<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_res_t</span> <span class="nf">dylan_scan_contig</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">mps_ss</span><span class="p">,</span>
168 <span class="kt">mps_addr_t</span> <span class="o">*</span><span class="n">base</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="o">*</span><span class="n">limit</span><span class="p">)</span> 168 <span class="n">mps_addr_t</span> <span class="o">*</span><span class="n">base</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="o">*</span><span class="n">limit</span><span class="p">)</span>
169<span class="p">{</span> 169<span class="p">{</span>
170 <span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 170 <span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
171 <span class="kt">mps_addr_t</span> <span class="o">*</span><span class="n">p</span><span class="p">;</span> <span class="cm">/* reference cursor */</span> 171 <span class="n">mps_addr_t</span> <span class="o">*</span><span class="n">p</span><span class="p">;</span> <span class="cm">/* reference cursor */</span>
172 <span class="kt">mps_addr_t</span> <span class="n">r</span><span class="p">;</span> <span class="cm">/* reference to be fixed */</span> 172 <span class="n">mps_addr_t</span> <span class="n">r</span><span class="p">;</span> <span class="cm">/* reference to be fixed */</span>
173 173
174 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">mps_ss</span><span class="p">)</span> <span class="p">{</span> 174 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">mps_ss</span><span class="p">)</span> <span class="p">{</span>
175 <span class="n">p</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> 175 <span class="n">p</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span>
176 <span class="nl">loop:</span> <span class="k">if</span><span class="p">(</span><span class="n">p</span> <span class="o">&gt;=</span> <span class="n">limit</span><span class="p">)</span> <span class="k">goto</span> <span class="n">out</span><span class="p">;</span> 176 <span class="nl">loop:</span> <span class="k">if</span><span class="p">(</span><span class="n">p</span> <span class="o">&gt;=</span> <span class="n">limit</span><span class="p">)</span> <span class="k">goto</span> <span class="n">out</span><span class="p">;</span>
177 <span class="n">r</span> <span class="o">=</span> <span class="o">*</span><span class="n">p</span><span class="o">++</span><span class="p">;</span> 177 <span class="n">r</span> <span class="o">=</span> <span class="o">*</span><span class="n">p</span><span class="o">++</span><span class="p">;</span>
178 <span class="k">if</span><span class="p">(((</span><span class="kt">mps_word_t</span><span class="p">)</span><span class="n">r</span><span class="o">&amp;</span><span class="mi">3</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="cm">/* pointers tagged with 0 */</span> 178 <span class="k">if</span><span class="p">(((</span><span class="n">mps_word_t</span><span class="p">)</span><span class="n">r</span><span class="o">&amp;</span><span class="mi">3</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="cm">/* pointers tagged with 0 */</span>
179 <span class="k">goto</span> <span class="n">loop</span><span class="p">;</span> <span class="cm">/* not a pointer */</span> 179 <span class="k">goto</span> <span class="n">loop</span><span class="p">;</span> <span class="cm">/* not a pointer */</span>
180 <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">mps_ss</span><span class="p">,</span> <span class="n">r</span><span class="p">))</span> <span class="k">goto</span> <span class="n">loop</span><span class="p">;</span> 180 <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">mps_ss</span><span class="p">,</span> <span class="n">r</span><span class="p">))</span> <span class="k">goto</span> <span class="n">loop</span><span class="p">;</span>
181 <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">mps_ss</span><span class="p">,</span> <span class="n">p</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span> 181 <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">mps_ss</span><span class="p">,</span> <span class="n">p</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
diff --git a/mps/manual/html/topic/debugging.html b/mps/manual/html/topic/debugging.html
index 285fc192145..c3fdae2bde9 100644
--- a/mps/manual/html/topic/debugging.html
+++ b/mps/manual/html/topic/debugging.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>17. Debugging pools &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>18. Debugging pools &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="18. Telemetry" href="telemetry.html" /> 31 <link rel="next" title="19. Telemetry" href="telemetry.html" />
32 <link rel="prev" title="16. Allocation frames" href="frame.html" /> 32 <link rel="prev" title="17. Allocation frames" href="frame.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="telemetry.html" title="18. Telemetry" 42 <a href="telemetry.html" title="19. Telemetry"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="frame.html" title="16. Allocation frames" 45 <a href="frame.html" title="17. Allocation frames"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="debugging-pools"> 57 <div class="section" id="debugging-pools">
58<span id="topic-debugging"></span><span id="index-0"></span><h1>17. Debugging pools<a class="headerlink" href="#debugging-pools" title="Permalink to this headline">¶</a></h1> 58<span id="topic-debugging"></span><span id="index-0"></span><h1>18. Debugging pools<a class="headerlink" href="#debugging-pools" title="Permalink to this headline">¶</a></h1>
59<p>Several <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool classes</em></a> have debugging counterparts:</p> 59<p>Several <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool classes</em></a> have debugging counterparts:</p>
60<table border="1" class="docutils"> 60<table border="1" class="docutils">
61<colgroup> 61<colgroup>
@@ -115,18 +115,23 @@ signal an error or stop if wrongly interpreted as executable code.</li>
115 <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="s">&quot;postpost&quot;</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> 115 <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="s">&quot;postpost&quot;</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span>
116 <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="s">&quot;freefree&quot;</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> 116 <span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="p">)</span><span class="s">&quot;freefree&quot;</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span>
117<span class="p">};</span> 117<span class="p">};</span>
118<span class="kt">mps_pool_t</span> <span class="n">pool</span><span class="p">;</span> 118<span class="n">mps_pool_t</span> <span class="n">pool</span><span class="p">;</span>
119<span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 119<span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
120<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_ams_debug</span><span class="p">(),</span> 120<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">mps_class_ams_debug</span><span class="p">(),</span>
121 <span class="o">&amp;</span><span class="n">debug_options</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">fmt</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">chain</span><span class="p">)</span> 121 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_POOL_DEBUG_OPTIONS</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">pool_debug_options</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">debug_options</span><span class="p">},</span>
122 <span class="p">{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">fmt</span><span class="p">},</span>
123 <span class="p">{</span><span class="n">MPS_KEY_CHAIN</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">chain</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">chain</span><span class="p">},</span>
124 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
122<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;can&#39;t create debug pool&quot;</span><span class="p">);</span> 125<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;can&#39;t create debug pool&quot;</span><span class="p">);</span>
123</pre></div> 126</pre></div>
124</div> 127</div>
125<dl class="type"> 128<dl class="type">
126<dt id="mps_pool_debug_option_s"> 129<dt id="mps_pool_debug_option_s">
127<tt class="descname">mps_pool_debug_option_s</tt><a class="headerlink" href="#mps_pool_debug_option_s" title="Permalink to this definition">¶</a></dt> 130<tt class="descname">mps_pool_debug_option_s</tt><a class="headerlink" href="#mps_pool_debug_option_s" title="Permalink to this definition">¶</a></dt>
128<dd><p>The type of the structure used to pass options to 131<dd><p>The type of the structure passed as the
129<a class="reference internal" href="pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> for debugging <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool classes</em></a>.</p> 132<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_POOL_DEBUG_OPTIONS</span></tt> keyword argument to
133<tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> when creating a debugging <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool
134class</em></a>.</p>
130<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_pool_debug_option_s</span> <span class="p">{</span> 135<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_pool_debug_option_s</span> <span class="p">{</span>
131 <span class="kt">void</span> <span class="o">*</span><span class="n">fence_template</span><span class="p">;</span> 136 <span class="kt">void</span> <span class="o">*</span><span class="n">fence_template</span><span class="p">;</span>
132 <span class="kt">size_t</span> <span class="n">fence_size</span><span class="p">;</span> 137 <span class="kt">size_t</span> <span class="n">fence_size</span><span class="p">;</span>
@@ -189,10 +194,10 @@ non-debugging pools.</p>
189 </a></p> 194 </a></p>
190 <h4>Previous topic</h4> 195 <h4>Previous topic</h4>
191 <p class="topless"><a href="frame.html" 196 <p class="topless"><a href="frame.html"
192 title="previous chapter">16. Allocation frames</a></p> 197 title="previous chapter">17. Allocation frames</a></p>
193 <h4>Next topic</h4> 198 <h4>Next topic</h4>
194 <p class="topless"><a href="telemetry.html" 199 <p class="topless"><a href="telemetry.html"
195 title="next chapter">18. Telemetry</a></p><h4>Downloads</h4> 200 title="next chapter">19. Telemetry</a></p><h4>Downloads</h4>
196 201
197<p class="topless"> 202<p class="topless">
198<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 203<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -218,10 +223,10 @@ non-debugging pools.</p>
218 <a href="../genindex.html" title="General Index" 223 <a href="../genindex.html" title="General Index"
219 >index</a></li> 224 >index</a></li>
220 <li class="right" > 225 <li class="right" >
221 <a href="telemetry.html" title="18. Telemetry" 226 <a href="telemetry.html" title="19. Telemetry"
222 >next</a> |</li> 227 >next</a> |</li>
223 <li class="right" > 228 <li class="right" >
224 <a href="frame.html" title="16. Allocation frames" 229 <a href="frame.html" title="17. Allocation frames"
225 >previous</a> |</li> 230 >previous</a> |</li>
226 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 231 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
227 <li><a href="index.html" >Reference</a> &raquo;</li> 232 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/error.html b/mps/manual/html/topic/error.html
index d7b79b1afa1..f73877d68be 100644
--- a/mps/manual/html/topic/error.html
+++ b/mps/manual/html/topic/error.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>2. Error handing &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>3. Error handing &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="3. Arenas" href="arena.html" /> 31 <link rel="next" title="4. Arenas" href="arena.html" />
32 <link rel="prev" title="1. Interface conventions" href="interface.html" /> 32 <link rel="prev" title="2. Keyword arguments" href="keyword.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="arena.html" title="3. Arenas" 42 <a href="arena.html" title="4. Arenas"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="interface.html" title="1. Interface conventions" 45 <a href="keyword.html" title="2. Keyword arguments"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="error-handing"> 57 <div class="section" id="error-handing">
58<span id="topic-error"></span><span id="index-0"></span><h1>2. Error handing<a class="headerlink" href="#error-handing" title="Permalink to this headline">¶</a></h1> 58<span id="topic-error"></span><span id="index-0"></span><h1>3. Error handing<a class="headerlink" href="#error-handing" title="Permalink to this headline">¶</a></h1>
59<p>Operations in the Memory Pool System that might fail return a 59<p>Operations in the Memory Pool System that might fail return a
60<a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result code</em></a> of type <a class="reference internal" href="#mps_res_t" title="mps_res_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_res_t</span></tt></a>, rather than a 60<a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result code</em></a> of type <a class="reference internal" href="#mps_res_t" title="mps_res_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_res_t</span></tt></a>, rather than a
61&#8220;special value&#8221; of the return type.</p> 61&#8220;special value&#8221; of the return type.</p>
@@ -99,7 +99,7 @@ limit</em></a> would be exceeded.</li>
99</dd></dl> 99</dd></dl>
100 100
101<div class="section" id="result-codes"> 101<div class="section" id="result-codes">
102<h2>2.1. Result codes<a class="headerlink" href="#result-codes" title="Permalink to this headline">¶</a></h2> 102<h2>3.1. Result codes<a class="headerlink" href="#result-codes" title="Permalink to this headline">¶</a></h2>
103<dl class="macro"> 103<dl class="macro">
104<dt id="MPS_RES_COMMIT_LIMIT"> 104<dt id="MPS_RES_COMMIT_LIMIT">
105<tt class="descname">MPS_RES_COMMIT_LIMIT</tt><a class="headerlink" href="#MPS_RES_COMMIT_LIMIT" title="Permalink to this definition">¶</a></dt> 105<tt class="descname">MPS_RES_COMMIT_LIMIT</tt><a class="headerlink" href="#MPS_RES_COMMIT_LIMIT" title="Permalink to this definition">¶</a></dt>
@@ -204,7 +204,7 @@ yet supported.</p>
204 204
205</div> 205</div>
206<div class="section" id="assertions"> 206<div class="section" id="assertions">
207<span id="topic-error-assertion"></span><span id="index-1"></span><h2>2.2. Assertions<a class="headerlink" href="#assertions" title="Permalink to this headline">¶</a></h2> 207<span id="topic-error-assertion"></span><span id="index-1"></span><h2>3.2. Assertions<a class="headerlink" href="#assertions" title="Permalink to this headline">¶</a></h2>
208<p>Bugs in the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> may violate the invariants that the 208<p>Bugs in the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> may violate the invariants that the
209MPS relies on. Most functions in the MPS (in most <em>varieties</em>; see 209MPS relies on. Most functions in the MPS (in most <em>varieties</em>; see
210below) assert the correctness of their data structures, so these bugs 210below) assert the correctness of their data structures, so these bugs
@@ -225,7 +225,7 @@ assertions automatically, by adding the following to your <tt class="docutils li
225</div> 225</div>
226</div> 226</div>
227<div class="section" id="common-assertions-and-their-causes"> 227<div class="section" id="common-assertions-and-their-causes">
228<span id="topic-error-cause"></span><span id="index-2"></span><h2>2.3. Common assertions and their causes<a class="headerlink" href="#common-assertions-and-their-causes" title="Permalink to this headline">¶</a></h2> 228<span id="topic-error-cause"></span><span id="index-2"></span><h2>3.3. Common assertions and their causes<a class="headerlink" href="#common-assertions-and-their-causes" title="Permalink to this headline">¶</a></h2>
229<p>This section lists some commonly encountered assertions and suggests 229<p>This section lists some commonly encountered assertions and suggests
230likely causes. If you encounter an assertion not listed here (or an 230likely causes. If you encounter an assertion not listed here (or an
231assertion that is listed here but for which you discovered a different 231assertion that is listed here but for which you discovered a different
@@ -241,7 +241,7 @@ the beginning of an allocated block. See <a class="reference internal" href="deb
241<a class="reference internal" href="debugging.html#topic-debugging"><em>Debugging pools</em></a>.</div></blockquote> 241<a class="reference internal" href="debugging.html#topic-debugging"><em>Debugging pools</em></a>.</div></blockquote>
242<p><tt class="docutils literal"><span class="pre">format.c:</span> <span class="pre">SigCheck</span> <span class="pre">Format:</span> <span class="pre">format</span></tt></p> 242<p><tt class="docutils literal"><span class="pre">format.c:</span> <span class="pre">SigCheck</span> <span class="pre">Format:</span> <span class="pre">format</span></tt></p>
243<blockquote> 243<blockquote>
244<div>The client program called <a class="reference internal" href="pool.html#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> for a 244<div>The client program called <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> for a
245<a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> like <a class="reference internal" href="../pool/amc.html#pool-amc"><em>AMC (Automatic Mostly-Copying)</em></a> that requires a 245<a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> like <a class="reference internal" href="../pool/amc.html#pool-amc"><em>AMC (Automatic Mostly-Copying)</em></a> that requires a
246<a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a>, but passed something other than a 246<a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a>, but passed something other than a
247<a class="reference internal" href="format.html#mps_fmt_t" title="mps_fmt_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_t</span></tt></a> for this argument.</div></blockquote> 247<a class="reference internal" href="format.html#mps_fmt_t" title="mps_fmt_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_t</span></tt></a> for this argument.</div></blockquote>
@@ -277,7 +277,7 @@ have kept the block alive failed to be scanned. Perhaps a
277condition?</div></blockquote> 277condition?</div></blockquote>
278</div> 278</div>
279<div class="section" id="varieties"> 279<div class="section" id="varieties">
280<span id="index-3"></span><h2>2.4. Varieties<a class="headerlink" href="#varieties" title="Permalink to this headline">¶</a></h2> 280<span id="index-3"></span><h2>3.4. Varieties<a class="headerlink" href="#varieties" title="Permalink to this headline">¶</a></h2>
281<p>The MPS has three behaviours with respect to internal checking and 281<p>The MPS has three behaviours with respect to internal checking and
282<a class="reference internal" href="telemetry.html#topic-telemetry"><em>telemetry</em></a>, which need to be selected at 282<a class="reference internal" href="telemetry.html#topic-telemetry"><em>telemetry</em></a>, which need to be selected at
283compile time, by defining one of the following preprocessor 283compile time, by defining one of the following preprocessor
@@ -327,21 +327,21 @@ consequently there are no assertions.</p>
327 </a></p> 327 </a></p>
328 <h3><a href="../index.html">Table Of Contents</a></h3> 328 <h3><a href="../index.html">Table Of Contents</a></h3>
329 <ul> 329 <ul>
330<li><a class="reference internal" href="#">2. Error handing</a><ul> 330<li><a class="reference internal" href="#">3. Error handing</a><ul>
331<li><a class="reference internal" href="#result-codes">2.1. Result codes</a></li> 331<li><a class="reference internal" href="#result-codes">3.1. Result codes</a></li>
332<li><a class="reference internal" href="#assertions">2.2. Assertions</a></li> 332<li><a class="reference internal" href="#assertions">3.2. Assertions</a></li>
333<li><a class="reference internal" href="#common-assertions-and-their-causes">2.3. Common assertions and their causes</a></li> 333<li><a class="reference internal" href="#common-assertions-and-their-causes">3.3. Common assertions and their causes</a></li>
334<li><a class="reference internal" href="#varieties">2.4. Varieties</a></li> 334<li><a class="reference internal" href="#varieties">3.4. Varieties</a></li>
335</ul> 335</ul>
336</li> 336</li>
337</ul> 337</ul>
338 338
339 <h4>Previous topic</h4> 339 <h4>Previous topic</h4>
340 <p class="topless"><a href="interface.html" 340 <p class="topless"><a href="keyword.html"
341 title="previous chapter">1. Interface conventions</a></p> 341 title="previous chapter">2. Keyword arguments</a></p>
342 <h4>Next topic</h4> 342 <h4>Next topic</h4>
343 <p class="topless"><a href="arena.html" 343 <p class="topless"><a href="arena.html"
344 title="next chapter">3. Arenas</a></p><h4>Downloads</h4> 344 title="next chapter">4. Arenas</a></p><h4>Downloads</h4>
345 345
346<p class="topless"> 346<p class="topless">
347<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 347<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -367,10 +367,10 @@ consequently there are no assertions.</p>
367 <a href="../genindex.html" title="General Index" 367 <a href="../genindex.html" title="General Index"
368 >index</a></li> 368 >index</a></li>
369 <li class="right" > 369 <li class="right" >
370 <a href="arena.html" title="3. Arenas" 370 <a href="arena.html" title="4. Arenas"
371 >next</a> |</li> 371 >next</a> |</li>
372 <li class="right" > 372 <li class="right" >
373 <a href="interface.html" title="1. Interface conventions" 373 <a href="keyword.html" title="2. Keyword arguments"
374 >previous</a> |</li> 374 >previous</a> |</li>
375 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 375 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
376 <li><a href="index.html" >Reference</a> &raquo;</li> 376 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/finalization.html b/mps/manual/html/topic/finalization.html
index f55781aeddd..39588e3ffd2 100644
--- a/mps/manual/html/topic/finalization.html
+++ b/mps/manual/html/topic/finalization.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>12. Finalization &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>13. Finalization &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="13. Location dependency" href="location.html" /> 31 <link rel="next" title="14. Location dependency" href="location.html" />
32 <link rel="prev" title="11. Messages" href="message.html" /> 32 <link rel="prev" title="12. Messages" href="message.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="location.html" title="13. Location dependency" 42 <a href="location.html" title="14. Location dependency"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="message.html" title="11. Messages" 45 <a href="message.html" title="12. Messages"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,14 +55,14 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="finalization"> 57 <div class="section" id="finalization">
58<span id="topic-finalization"></span><span id="index-0"></span><h1>12. Finalization<a class="headerlink" href="#finalization" title="Permalink to this headline">¶</a></h1> 58<span id="topic-finalization"></span><span id="index-0"></span><h1>13. Finalization<a class="headerlink" href="#finalization" title="Permalink to this headline">¶</a></h1>
59<p>It is sometimes necessary to perform actions when a block of memory 59<p>It is sometimes necessary to perform actions when a block of memory
60<a class="reference internal" href="../glossary/d.html#term-dead"><em class="xref std std-term">dies</em></a>. For example, a block may represent the 60<a class="reference internal" href="../glossary/d.html#term-dead"><em class="xref std std-term">dies</em></a>. For example, a block may represent the
61acquisition of an external resource such as a file handle or a network 61acquisition of an external resource such as a file handle or a network
62connection. When the block dies, the corresponding resource must be 62connection. When the block dies, the corresponding resource must be
63released. This procedure is known as <a class="reference internal" href="../glossary/f.html#term-finalization"><em class="xref std std-term">finalization</em></a>.</p> 63released. This procedure is known as <a class="reference internal" href="../glossary/f.html#term-finalization"><em class="xref std std-term">finalization</em></a>.</p>
64<p>A block requiring finalization must be registered by calling <a class="reference internal" href="#mps_finalize" title="mps_finalize"><tt class="xref c c-func docutils literal"><span class="pre">mps_finalize()</span></tt></a>:</p> 64<p>A block requiring finalization must be registered by calling <a class="reference internal" href="#mps_finalize" title="mps_finalize"><tt class="xref c c-func docutils literal"><span class="pre">mps_finalize()</span></tt></a>:</p>
65<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_addr_t</span> <span class="n">ref</span> <span class="o">=</span> <span class="n">block_requiring_finalization</span><span class="p">;</span> 65<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_addr_t</span> <span class="n">ref</span> <span class="o">=</span> <span class="n">block_requiring_finalization</span><span class="p">;</span>
66<span class="n">mps_finalize</span><span class="p">(</span><span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">ref</span><span class="p">);</span> 66<span class="n">mps_finalize</span><span class="p">(</span><span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">ref</span><span class="p">);</span>
67</pre></div> 67</pre></div>
68</div> 68</div>
@@ -126,7 +126,7 @@ disappear again.</p>
126</div> 126</div>
127<p>See <a class="reference internal" href="message.html#topic-message"><em>Messages</em></a> for details of the message mechanism.</p> 127<p>See <a class="reference internal" href="message.html#topic-message"><em>Messages</em></a> for details of the message mechanism.</p>
128<div class="section" id="multiple-finalizations"> 128<div class="section" id="multiple-finalizations">
129<span id="index-1"></span><h2>12.1. Multiple finalizations<a class="headerlink" href="#multiple-finalizations" title="Permalink to this headline">¶</a></h2> 129<span id="index-1"></span><h2>13.1. Multiple finalizations<a class="headerlink" href="#multiple-finalizations" title="Permalink to this headline">¶</a></h2>
130<p>A block may be registered for finalization multiple times. A block 130<p>A block may be registered for finalization multiple times. A block
131that has been registered for finalization <em>n</em> times will be finalized 131that has been registered for finalization <em>n</em> times will be finalized
132at most <em>n</em> times.</p> 132at most <em>n</em> times.</p>
@@ -139,7 +139,7 @@ program that registers the same block multiple times must cope with
139either behaviour.</p> 139either behaviour.</p>
140</div> 140</div>
141<div class="section" id="cautions"> 141<div class="section" id="cautions">
142<span id="topic-finalization-cautions"></span><span id="index-2"></span><h2>12.2. Cautions<a class="headerlink" href="#cautions" title="Permalink to this headline">¶</a></h2> 142<span id="topic-finalization-cautions"></span><span id="index-2"></span><h2>13.2. Cautions<a class="headerlink" href="#cautions" title="Permalink to this headline">¶</a></h2>
143<ol class="arabic"> 143<ol class="arabic">
144<li><p class="first">Don&#8217;t rely on finalization for your program to work. Treat it as an 144<li><p class="first">Don&#8217;t rely on finalization for your program to work. Treat it as an
145optimization that enables the freeing of resources that the 145optimization that enables the freeing of resources that the
@@ -208,7 +208,7 @@ collection do so. See the <a class="reference internal" href="../pool/index.html
208</ol> 208</ol>
209</div> 209</div>
210<div class="section" id="finalization-interface"> 210<div class="section" id="finalization-interface">
211<span id="index-3"></span><h2>12.3. Finalization interface<a class="headerlink" href="#finalization-interface" title="Permalink to this headline">¶</a></h2> 211<span id="index-3"></span><h2>13.3. Finalization interface<a class="headerlink" href="#finalization-interface" title="Permalink to this headline">¶</a></h2>
212<dl class="function"> 212<dl class="function">
213<dt id="mps_finalize"> 213<dt id="mps_finalize">
214<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_finalize</tt><big>(</big><a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;*ref_p</em><big>)</big><a class="headerlink" href="#mps_finalize" title="Permalink to this definition">¶</a></dt> 214<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_finalize</tt><big>(</big><a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;*ref_p</em><big>)</big><a class="headerlink" href="#mps_finalize" title="Permalink to this definition">¶</a></dt>
@@ -251,7 +251,7 @@ that the C call stack be a <a class="reference internal" href="../glossary/r.htm
251 251
252</div> 252</div>
253<div class="section" id="finalization-messages"> 253<div class="section" id="finalization-messages">
254<span id="index-4"></span><h2>12.4. Finalization messages<a class="headerlink" href="#finalization-messages" title="Permalink to this headline">¶</a></h2> 254<span id="index-4"></span><h2>13.4. Finalization messages<a class="headerlink" href="#finalization-messages" title="Permalink to this headline">¶</a></h2>
255<dl class="function"> 255<dl class="function">
256<dt id="mps_message_type_finalization"> 256<dt id="mps_message_type_finalization">
257<a class="reference internal" href="message.html#mps_message_type_t" title="mps_message_type_t">mps_message_type_t</a> <tt class="descname">mps_message_type_finalization</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_message_type_finalization" title="Permalink to this definition">¶</a></dt> 257<a class="reference internal" href="message.html#mps_message_type_t" title="mps_message_type_t">mps_message_type_t</a> <tt class="descname">mps_message_type_finalization</tt><big>(</big>void<big>)</big><a class="headerlink" href="#mps_message_type_finalization" title="Permalink to this definition">¶</a></dt>
@@ -320,21 +320,21 @@ prevent its reclamation.</p>
320 </a></p> 320 </a></p>
321 <h3><a href="../index.html">Table Of Contents</a></h3> 321 <h3><a href="../index.html">Table Of Contents</a></h3>
322 <ul> 322 <ul>
323<li><a class="reference internal" href="#">12. Finalization</a><ul> 323<li><a class="reference internal" href="#">13. Finalization</a><ul>
324<li><a class="reference internal" href="#multiple-finalizations">12.1. Multiple finalizations</a></li> 324<li><a class="reference internal" href="#multiple-finalizations">13.1. Multiple finalizations</a></li>
325<li><a class="reference internal" href="#cautions">12.2. Cautions</a></li> 325<li><a class="reference internal" href="#cautions">13.2. Cautions</a></li>
326<li><a class="reference internal" href="#finalization-interface">12.3. Finalization interface</a></li> 326<li><a class="reference internal" href="#finalization-interface">13.3. Finalization interface</a></li>
327<li><a class="reference internal" href="#finalization-messages">12.4. Finalization messages</a></li> 327<li><a class="reference internal" href="#finalization-messages">13.4. Finalization messages</a></li>
328</ul> 328</ul>
329</li> 329</li>
330</ul> 330</ul>
331 331
332 <h4>Previous topic</h4> 332 <h4>Previous topic</h4>
333 <p class="topless"><a href="message.html" 333 <p class="topless"><a href="message.html"
334 title="previous chapter">11. Messages</a></p> 334 title="previous chapter">12. Messages</a></p>
335 <h4>Next topic</h4> 335 <h4>Next topic</h4>
336 <p class="topless"><a href="location.html" 336 <p class="topless"><a href="location.html"
337 title="next chapter">13. Location dependency</a></p><h4>Downloads</h4> 337 title="next chapter">14. Location dependency</a></p><h4>Downloads</h4>
338 338
339<p class="topless"> 339<p class="topless">
340<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 340<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -360,10 +360,10 @@ prevent its reclamation.</p>
360 <a href="../genindex.html" title="General Index" 360 <a href="../genindex.html" title="General Index"
361 >index</a></li> 361 >index</a></li>
362 <li class="right" > 362 <li class="right" >
363 <a href="location.html" title="13. Location dependency" 363 <a href="location.html" title="14. Location dependency"
364 >next</a> |</li> 364 >next</a> |</li>
365 <li class="right" > 365 <li class="right" >
366 <a href="message.html" title="11. Messages" 366 <a href="message.html" title="12. Messages"
367 >previous</a> |</li> 367 >previous</a> |</li>
368 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 368 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
369 <li><a href="index.html" >Reference</a> &raquo;</li> 369 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/format.html b/mps/manual/html/topic/format.html
index 2c5b0d145d5..e150c744687 100644
--- a/mps/manual/html/topic/format.html
+++ b/mps/manual/html/topic/format.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>6. Object formats &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>7. Object formats &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="7. Scanning" href="scanning.html" /> 31 <link rel="next" title="8. Scanning" href="scanning.html" />
32 <link rel="prev" title="5. Allocation" href="allocation.html" /> 32 <link rel="prev" title="6. Allocation" href="allocation.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="scanning.html" title="7. Scanning" 42 <a href="scanning.html" title="8. Scanning"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="allocation.html" title="5. Allocation" 45 <a href="allocation.html" title="6. Allocation"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="object-formats"> 57 <div class="section" id="object-formats">
58<span id="topic-format"></span><span id="index-0"></span><h1>6. Object formats<a class="headerlink" href="#object-formats" title="Permalink to this headline">¶</a></h1> 58<span id="topic-format"></span><span id="index-0"></span><h1>7. Object formats<a class="headerlink" href="#object-formats" title="Permalink to this headline">¶</a></h1>
59<p>The need for some means of describing objects in the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client 59<p>The need for some means of describing objects in the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client
60program</em></a> comes from <a class="reference internal" href="../glossary/t.html#term-trace"><em class="xref std std-term">tracing</em></a> and <a class="reference internal" href="../glossary/m.html#term-moving-memory-manager"><em class="xref std std-term">moving</em></a>. During tracing, when an object is <a class="reference internal" href="../glossary/s.html#term-scan"><em class="xref std std-term">scanned</em></a>, all the <a class="reference internal" href="../glossary/r.html#term-reference"><em class="xref std std-term">references</em></a> in the object must be 60program</em></a> comes from <a class="reference internal" href="../glossary/t.html#term-trace"><em class="xref std std-term">tracing</em></a> and <a class="reference internal" href="../glossary/m.html#term-moving-memory-manager"><em class="xref std std-term">moving</em></a>. During tracing, when an object is <a class="reference internal" href="../glossary/s.html#term-scan"><em class="xref std std-term">scanned</em></a>, all the <a class="reference internal" href="../glossary/r.html#term-reference"><em class="xref std std-term">references</em></a> in the object must be
61identified so that the objects they point to can be scanned in their 61identified so that the objects they point to can be scanned in their
@@ -82,7 +82,7 @@ has moved with a <a class="reference internal" href="../glossary/f.html#term-for
82</dd></dl> 82</dd></dl>
83 83
84<div class="section" id="creating-an-object-format"> 84<div class="section" id="creating-an-object-format">
85<span id="index-1"></span><h2>6.1. Creating an object format<a class="headerlink" href="#creating-an-object-format" title="Permalink to this headline">¶</a></h2> 85<span id="index-1"></span><h2>7.1. Creating an object format<a class="headerlink" href="#creating-an-object-format" title="Permalink to this headline">¶</a></h2>
86<p>Different <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool classes</em></a> use different sets of format methods 86<p>Different <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool classes</em></a> use different sets of format methods
87and values (for example, a non-moving pool does not need forwarding 87and values (for example, a non-moving pool does not need forwarding
88objects, so its object formats do not need to contain a forward 88objects, so its object formats do not need to contain a forward
@@ -114,15 +114,17 @@ of.</p>
114 <span class="n">obj_pad</span> 114 <span class="n">obj_pad</span>
115<span class="p">};</span> 115<span class="p">};</span>
116 116
117<span class="kt">mps_pool_t</span> <span class="n">obj_pool</span><span class="p">;</span> 117<span class="n">mps_pool_t</span> <span class="n">obj_pool</span><span class="p">;</span>
118<span class="kt">mps_fmt_t</span> <span class="n">obj_fmt</span><span class="p">;</span> 118<span class="n">mps_fmt_t</span> <span class="n">obj_fmt</span><span class="p">;</span>
119<span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 119<span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
120 120
121<span class="n">res</span> <span class="o">=</span> <span class="n">mps_fmt_create_A</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_fmt</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">obj_fmt_s</span><span class="p">);</span> 121<span class="n">res</span> <span class="o">=</span> <span class="n">mps_fmt_create_A</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_fmt</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">obj_fmt_s</span><span class="p">);</span>
122<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj format&quot;</span><span class="p">);</span> 122<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj format&quot;</span><span class="p">);</span>
123<span class="cm">/* obj_fmt created successfully */</span> 123<span class="cm">/* obj_fmt created successfully */</span>
124 124
125<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">pool_class</span><span class="p">,</span> <span class="n">obj_fmt</span><span class="p">);</span> 125<span class="n">res</span> <span class="o">=</span> <span class="n">mps_pool_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">obj_pool</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">pool_class</span><span class="p">,</span>
126 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_FORMAT</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">format</span> <span class="o">=</span> <span class="n">obj_fmt</span><span class="p">},</span>
127 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
126<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj pool&quot;</span><span class="p">);</span> 128<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">error</span><span class="p">(</span><span class="s">&quot;Couldn&#39;t create obj pool&quot;</span><span class="p">);</span>
127</pre></div> 129</pre></div>
128</div> 130</div>
@@ -132,13 +134,13 @@ of.</p>
132<dd><p>The type of the structure used to create an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> 134<dd><p>The type of the structure used to create an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a>
133of variant A.</p> 135of variant A.</p>
134<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_fmt_A_s</span> <span class="p">{</span> 136<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_fmt_A_s</span> <span class="p">{</span>
135 <span class="kt">mps_align_t</span> <span class="n">align</span><span class="p">;</span> 137 <span class="n">mps_align_t</span> <span class="n">align</span><span class="p">;</span>
136 <span class="kt">mps_fmt_scan_t</span> <span class="n">scan</span><span class="p">;</span> 138 <span class="n">mps_fmt_scan_t</span> <span class="n">scan</span><span class="p">;</span>
137 <span class="kt">mps_fmt_skip_t</span> <span class="n">skip</span><span class="p">;</span> 139 <span class="n">mps_fmt_skip_t</span> <span class="n">skip</span><span class="p">;</span>
138 <span class="kt">mps_fmt_copy_t</span> <span class="n">copy</span><span class="p">;</span> 140 <span class="n">mps_fmt_copy_t</span> <span class="n">copy</span><span class="p">;</span>
139 <span class="kt">mps_fmt_fwd_t</span> <span class="n">fwd</span><span class="p">;</span> 141 <span class="n">mps_fmt_fwd_t</span> <span class="n">fwd</span><span class="p">;</span>
140 <span class="kt">mps_fmt_isfwd_t</span> <span class="n">isfwd</span><span class="p">;</span> 142 <span class="n">mps_fmt_isfwd_t</span> <span class="n">isfwd</span><span class="p">;</span>
141 <span class="kt">mps_fmt_pad_t</span> <span class="n">pad</span><span class="p">;</span> 143 <span class="n">mps_fmt_pad_t</span> <span class="n">pad</span><span class="p">;</span>
142<span class="p">}</span> <span class="n">mps_fmt_A_s</span><span class="p">;</span> 144<span class="p">}</span> <span class="n">mps_fmt_A_s</span><span class="p">;</span>
143</pre></div> 145</pre></div>
144</div> 146</div>
@@ -189,14 +191,14 @@ calling <a class="reference internal" href="#mps_fmt_destroy" title="mps_fmt_des
189<dd><p>The type of the structure used to create an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> 191<dd><p>The type of the structure used to create an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a>
190of variant B.</p> 192of variant B.</p>
191<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_fmt_B_s</span> <span class="p">{</span> 193<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_fmt_B_s</span> <span class="p">{</span>
192 <span class="kt">mps_align_t</span> <span class="n">align</span><span class="p">;</span> 194 <span class="n">mps_align_t</span> <span class="n">align</span><span class="p">;</span>
193 <span class="kt">mps_fmt_scan_t</span> <span class="n">scan</span><span class="p">;</span> 195 <span class="n">mps_fmt_scan_t</span> <span class="n">scan</span><span class="p">;</span>
194 <span class="kt">mps_fmt_skip_t</span> <span class="n">skip</span><span class="p">;</span> 196 <span class="n">mps_fmt_skip_t</span> <span class="n">skip</span><span class="p">;</span>
195 <span class="kt">mps_fmt_copy_t</span> <span class="n">copy</span><span class="p">;</span> 197 <span class="n">mps_fmt_copy_t</span> <span class="n">copy</span><span class="p">;</span>
196 <span class="kt">mps_fmt_fwd_t</span> <span class="n">fwd</span><span class="p">;</span> 198 <span class="n">mps_fmt_fwd_t</span> <span class="n">fwd</span><span class="p">;</span>
197 <span class="kt">mps_fmt_isfwd_t</span> <span class="n">isfwd</span><span class="p">;</span> 199 <span class="n">mps_fmt_isfwd_t</span> <span class="n">isfwd</span><span class="p">;</span>
198 <span class="kt">mps_fmt_pad_t</span> <span class="n">pad</span><span class="p">;</span> 200 <span class="n">mps_fmt_pad_t</span> <span class="n">pad</span><span class="p">;</span>
199 <span class="kt">mps_fmt_class_t</span> <span class="n">mps_class</span><span class="p">;</span> 201 <span class="n">mps_fmt_class_t</span> <span class="n">mps_class</span><span class="p">;</span>
200<span class="p">}</span> <span class="n">mps_fmt_B_s</span><span class="p">;</span> 202<span class="p">}</span> <span class="n">mps_fmt_B_s</span><span class="p">;</span>
201</pre></div> 203</pre></div>
202</div> 204</div>
@@ -223,12 +225,12 @@ return an appropriate <a class="reference internal" href="../glossary/r.html#ter
223<dd><p>The type of the structure used to create an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> 225<dd><p>The type of the structure used to create an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a>
224of variant auto-header.</p> 226of variant auto-header.</p>
225<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_fmt_auto_header_s</span> <span class="p">{</span> 227<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_fmt_auto_header_s</span> <span class="p">{</span>
226 <span class="kt">mps_align_t</span> <span class="n">align</span><span class="p">;</span> 228 <span class="n">mps_align_t</span> <span class="n">align</span><span class="p">;</span>
227 <span class="kt">mps_fmt_scan_t</span> <span class="n">scan</span><span class="p">;</span> 229 <span class="n">mps_fmt_scan_t</span> <span class="n">scan</span><span class="p">;</span>
228 <span class="kt">mps_fmt_skip_t</span> <span class="n">skip</span><span class="p">;</span> 230 <span class="n">mps_fmt_skip_t</span> <span class="n">skip</span><span class="p">;</span>
229 <span class="kt">mps_fmt_fwd_t</span> <span class="n">fwd</span><span class="p">;</span> 231 <span class="n">mps_fmt_fwd_t</span> <span class="n">fwd</span><span class="p">;</span>
230 <span class="kt">mps_fmt_isfwd_t</span> <span class="n">isfwd</span><span class="p">;</span> 232 <span class="n">mps_fmt_isfwd_t</span> <span class="n">isfwd</span><span class="p">;</span>
231 <span class="kt">mps_fmt_pad_t</span> <span class="n">pad</span><span class="p">;</span> 233 <span class="n">mps_fmt_pad_t</span> <span class="n">pad</span><span class="p">;</span>
232 <span class="kt">size_t</span> <span class="n">mps_headerSize</span><span class="p">;</span> 234 <span class="kt">size_t</span> <span class="n">mps_headerSize</span><span class="p">;</span>
233<span class="p">}</span> <span class="n">mps_fmt_auto_header_s</span><span class="p">;</span> 235<span class="p">}</span> <span class="n">mps_fmt_auto_header_s</span><span class="p">;</span>
234</pre></div> 236</pre></div>
@@ -301,7 +303,7 @@ void <tt class="descname">mps_fmt_destroy</tt><big>(</big><a class="reference in
301 303
302</div> 304</div>
303<div class="section" id="cautions"> 305<div class="section" id="cautions">
304<span id="topic-format-cautions"></span><span id="index-2"></span><h2>6.2. Cautions<a class="headerlink" href="#cautions" title="Permalink to this headline">¶</a></h2> 306<span id="topic-format-cautions"></span><span id="index-2"></span><h2>7.2. Cautions<a class="headerlink" href="#cautions" title="Permalink to this headline">¶</a></h2>
305<ol class="arabic"> 307<ol class="arabic">
306<li><p class="first">The MPS guarantees that format methods have exclusive access to the 308<li><p class="first">The MPS guarantees that format methods have exclusive access to the
307object for the duration of the call. This guarantee may entail 309object for the duration of the call. This guarantee may entail
@@ -353,7 +355,7 @@ their contents;</li>
353</ol> 355</ol>
354</div> 356</div>
355<div class="section" id="format-methods"> 357<div class="section" id="format-methods">
356<span id="index-3"></span><h2>6.3. Format methods<a class="headerlink" href="#format-methods" title="Permalink to this headline">¶</a></h2> 358<span id="index-3"></span><h2>7.3. Format methods<a class="headerlink" href="#format-methods" title="Permalink to this headline">¶</a></h2>
357<dl class="type"> 359<dl class="type">
358<dt id="mps_fmt_class_t"> 360<dt id="mps_fmt_class_t">
359<a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a> <tt class="descname">(*mps_fmt_class_t)</tt><big>(</big><a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;addr</em><big>)</big><a class="headerlink" href="#mps_fmt_class_t" title="Permalink to this definition">¶</a></dt> 361<a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a> <tt class="descname">(*mps_fmt_class_t)</tt><big>(</big><a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;addr</em><big>)</big><a class="headerlink" href="#mps_fmt_class_t" title="Permalink to this definition">¶</a></dt>
@@ -495,7 +497,7 @@ them.</p>
495 497
496</div> 498</div>
497<div class="section" id="object-format-introspection"> 499<div class="section" id="object-format-introspection">
498<span id="index-4"></span><h2>6.4. Object format introspection<a class="headerlink" href="#object-format-introspection" title="Permalink to this headline">¶</a></h2> 500<span id="index-4"></span><h2>7.4. Object format introspection<a class="headerlink" href="#object-format-introspection" title="Permalink to this headline">¶</a></h2>
499<dl class="function"> 501<dl class="function">
500<dt id="mps_addr_fmt"> 502<dt id="mps_addr_fmt">
501<a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a> <tt class="descname">mps_addr_fmt</tt><big>(</big><a class="reference internal" href="#mps_fmt_t" title="mps_fmt_t">mps_fmt_t</a><em>&nbsp;*fmt_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;addr</em><big>)</big><a class="headerlink" href="#mps_addr_fmt" title="Permalink to this definition">¶</a></dt> 503<a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a> <tt class="descname">mps_addr_fmt</tt><big>(</big><a class="reference internal" href="#mps_fmt_t" title="mps_fmt_t">mps_fmt_t</a><em>&nbsp;*fmt_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;addr</em><big>)</big><a class="headerlink" href="#mps_addr_fmt" title="Permalink to this definition">¶</a></dt>
@@ -598,21 +600,21 @@ their contents;</li>
598 </a></p> 600 </a></p>
599 <h3><a href="../index.html">Table Of Contents</a></h3> 601 <h3><a href="../index.html">Table Of Contents</a></h3>
600 <ul> 602 <ul>
601<li><a class="reference internal" href="#">6. Object formats</a><ul> 603<li><a class="reference internal" href="#">7. Object formats</a><ul>
602<li><a class="reference internal" href="#creating-an-object-format">6.1. Creating an object format</a></li> 604<li><a class="reference internal" href="#creating-an-object-format">7.1. Creating an object format</a></li>
603<li><a class="reference internal" href="#cautions">6.2. Cautions</a></li> 605<li><a class="reference internal" href="#cautions">7.2. Cautions</a></li>
604<li><a class="reference internal" href="#format-methods">6.3. Format methods</a></li> 606<li><a class="reference internal" href="#format-methods">7.3. Format methods</a></li>
605<li><a class="reference internal" href="#object-format-introspection">6.4. Object format introspection</a></li> 607<li><a class="reference internal" href="#object-format-introspection">7.4. Object format introspection</a></li>
606</ul> 608</ul>
607</li> 609</li>
608</ul> 610</ul>
609 611
610 <h4>Previous topic</h4> 612 <h4>Previous topic</h4>
611 <p class="topless"><a href="allocation.html" 613 <p class="topless"><a href="allocation.html"
612 title="previous chapter">5. Allocation</a></p> 614 title="previous chapter">6. Allocation</a></p>
613 <h4>Next topic</h4> 615 <h4>Next topic</h4>
614 <p class="topless"><a href="scanning.html" 616 <p class="topless"><a href="scanning.html"
615 title="next chapter">7. Scanning</a></p><h4>Downloads</h4> 617 title="next chapter">8. Scanning</a></p><h4>Downloads</h4>
616 618
617<p class="topless"> 619<p class="topless">
618<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 620<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -638,10 +640,10 @@ their contents;</li>
638 <a href="../genindex.html" title="General Index" 640 <a href="../genindex.html" title="General Index"
639 >index</a></li> 641 >index</a></li>
640 <li class="right" > 642 <li class="right" >
641 <a href="scanning.html" title="7. Scanning" 643 <a href="scanning.html" title="8. Scanning"
642 >next</a> |</li> 644 >next</a> |</li>
643 <li class="right" > 645 <li class="right" >
644 <a href="allocation.html" title="5. Allocation" 646 <a href="allocation.html" title="6. Allocation"
645 >previous</a> |</li> 647 >previous</a> |</li>
646 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 648 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
647 <li><a href="index.html" >Reference</a> &raquo;</li> 649 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/frame.html b/mps/manual/html/topic/frame.html
index e8f6f7fa400..bde14288cb0 100644
--- a/mps/manual/html/topic/frame.html
+++ b/mps/manual/html/topic/frame.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>16. Allocation frames &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>17. Allocation frames &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="17. Debugging pools" href="debugging.html" /> 31 <link rel="next" title="18. Debugging pools" href="debugging.html" />
32 <link rel="prev" title="15. Allocation patterns" href="pattern.html" /> 32 <link rel="prev" title="16. Allocation patterns" href="pattern.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="debugging.html" title="17. Debugging pools" 42 <a href="debugging.html" title="18. Debugging pools"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="pattern.html" title="15. Allocation patterns" 45 <a href="pattern.html" title="16. Allocation patterns"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="allocation-frames"> 57 <div class="section" id="allocation-frames">
58<span id="topic-frame"></span><span id="index-0"></span><h1>16. Allocation frames<a class="headerlink" href="#allocation-frames" title="Permalink to this headline">¶</a></h1> 58<span id="topic-frame"></span><span id="index-0"></span><h1>17. Allocation frames<a class="headerlink" href="#allocation-frames" title="Permalink to this headline">¶</a></h1>
59<div class="admonition-deprecated admonition"> 59<div class="admonition-deprecated admonition">
60<p class="first admonition-title">Deprecated</p> 60<p class="first admonition-title">Deprecated</p>
61<p>starting with version 1.111.</p> 61<p>starting with version 1.111.</p>
@@ -145,10 +145,10 @@ twice (so the sequence &#8220;A = push, pop A, pop A&#8221; is illegal).</p>
145 </a></p> 145 </a></p>
146 <h4>Previous topic</h4> 146 <h4>Previous topic</h4>
147 <p class="topless"><a href="pattern.html" 147 <p class="topless"><a href="pattern.html"
148 title="previous chapter">15. Allocation patterns</a></p> 148 title="previous chapter">16. Allocation patterns</a></p>
149 <h4>Next topic</h4> 149 <h4>Next topic</h4>
150 <p class="topless"><a href="debugging.html" 150 <p class="topless"><a href="debugging.html"
151 title="next chapter">17. Debugging pools</a></p><h4>Downloads</h4> 151 title="next chapter">18. Debugging pools</a></p><h4>Downloads</h4>
152 152
153<p class="topless"> 153<p class="topless">
154<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 154<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -174,10 +174,10 @@ twice (so the sequence &#8220;A = push, pop A, pop A&#8221; is illegal).</p>
174 <a href="../genindex.html" title="General Index" 174 <a href="../genindex.html" title="General Index"
175 >index</a></li> 175 >index</a></li>
176 <li class="right" > 176 <li class="right" >
177 <a href="debugging.html" title="17. Debugging pools" 177 <a href="debugging.html" title="18. Debugging pools"
178 >next</a> |</li> 178 >next</a> |</li>
179 <li class="right" > 179 <li class="right" >
180 <a href="pattern.html" title="15. Allocation patterns" 180 <a href="pattern.html" title="16. Allocation patterns"
181 >previous</a> |</li> 181 >previous</a> |</li>
182 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 182 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
183 <li><a href="index.html" >Reference</a> &raquo;</li> 183 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/index.html b/mps/manual/html/topic/index.html
index c2058d5f2d6..048d6183240 100644
--- a/mps/manual/html/topic/index.html
+++ b/mps/manual/html/topic/index.html
@@ -68,129 +68,130 @@
68<li class="toctree-l2"><a class="reference internal" href="interface.html#general-types">1.9. General types</a></li> 68<li class="toctree-l2"><a class="reference internal" href="interface.html#general-types">1.9. General types</a></li>
69</ul> 69</ul>
70</li> 70</li>
71<li class="toctree-l1"><a class="reference internal" href="error.html">2. Error handing</a><ul> 71<li class="toctree-l1"><a class="reference internal" href="keyword.html">2. Keyword arguments</a></li>
72<li class="toctree-l2"><a class="reference internal" href="error.html#result-codes">2.1. Result codes</a></li> 72<li class="toctree-l1"><a class="reference internal" href="error.html">3. Error handing</a><ul>
73<li class="toctree-l2"><a class="reference internal" href="error.html#assertions">2.2. Assertions</a></li> 73<li class="toctree-l2"><a class="reference internal" href="error.html#result-codes">3.1. Result codes</a></li>
74<li class="toctree-l2"><a class="reference internal" href="error.html#common-assertions-and-their-causes">2.3. Common assertions and their causes</a></li> 74<li class="toctree-l2"><a class="reference internal" href="error.html#assertions">3.2. Assertions</a></li>
75<li class="toctree-l2"><a class="reference internal" href="error.html#varieties">2.4. Varieties</a></li> 75<li class="toctree-l2"><a class="reference internal" href="error.html#common-assertions-and-their-causes">3.3. Common assertions and their causes</a></li>
76<li class="toctree-l2"><a class="reference internal" href="error.html#varieties">3.4. Varieties</a></li>
76</ul> 77</ul>
77</li> 78</li>
78<li class="toctree-l1"><a class="reference internal" href="arena.html">3. Arenas</a><ul> 79<li class="toctree-l1"><a class="reference internal" href="arena.html">4. Arenas</a><ul>
79<li class="toctree-l2"><a class="reference internal" href="arena.html#client-arenas">3.1. Client arenas</a></li> 80<li class="toctree-l2"><a class="reference internal" href="arena.html#client-arenas">4.1. Client arenas</a></li>
80<li class="toctree-l2"><a class="reference internal" href="arena.html#virtual-memory-arenas">3.2. Virtual memory arenas</a></li> 81<li class="toctree-l2"><a class="reference internal" href="arena.html#virtual-memory-arenas">4.2. Virtual memory arenas</a></li>
81<li class="toctree-l2"><a class="reference internal" href="arena.html#arena-properties">3.3. Arena properties</a></li> 82<li class="toctree-l2"><a class="reference internal" href="arena.html#arena-properties">4.3. Arena properties</a></li>
82<li class="toctree-l2"><a class="reference internal" href="arena.html#arena-states">3.4. Arena states</a></li> 83<li class="toctree-l2"><a class="reference internal" href="arena.html#arena-states">4.4. Arena states</a></li>
83<li class="toctree-l2"><a class="reference internal" href="arena.html#running-garbage-collections">3.5. Running garbage collections</a></li> 84<li class="toctree-l2"><a class="reference internal" href="arena.html#running-garbage-collections">4.5. Running garbage collections</a></li>
84<li class="toctree-l2"><a class="reference internal" href="arena.html#using-idle-time-for-collection">3.6. Using idle time for collection</a></li> 85<li class="toctree-l2"><a class="reference internal" href="arena.html#using-idle-time-for-collection">4.6. Using idle time for collection</a></li>
85<li class="toctree-l2"><a class="reference internal" href="arena.html#arena-introspection">3.7. Arena introspection</a></li> 86<li class="toctree-l2"><a class="reference internal" href="arena.html#arena-introspection">4.7. Arena introspection</a></li>
86<li class="toctree-l2"><a class="reference internal" href="arena.html#protection-interface">3.8. Protection interface</a></li> 87<li class="toctree-l2"><a class="reference internal" href="arena.html#protection-interface">4.8. Protection interface</a></li>
87</ul> 88</ul>
88</li> 89</li>
89<li class="toctree-l1"><a class="reference internal" href="pool.html">4. Pools</a><ul> 90<li class="toctree-l1"><a class="reference internal" href="pool.html">5. Pools</a><ul>
90<li class="toctree-l2"><a class="reference internal" href="pool.html#pool-classes">4.1. Pool classes</a></li> 91<li class="toctree-l2"><a class="reference internal" href="pool.html#pool-classes">5.1. Pool classes</a></li>
91<li class="toctree-l2"><a class="reference internal" href="pool.html#pool-introspection">4.2. Pool introspection</a></li> 92<li class="toctree-l2"><a class="reference internal" href="pool.html#pool-introspection">5.2. Pool introspection</a></li>
92</ul> 93</ul>
93</li> 94</li>
94<li class="toctree-l1"><a class="reference internal" href="allocation.html">5. Allocation</a><ul> 95<li class="toctree-l1"><a class="reference internal" href="allocation.html">6. Allocation</a><ul>
95<li class="toctree-l2"><a class="reference internal" href="allocation.html#manual-allocation">5.1. Manual allocation</a></li> 96<li class="toctree-l2"><a class="reference internal" href="allocation.html#manual-allocation">6.1. Manual allocation</a></li>
96<li class="toctree-l2"><a class="reference internal" href="allocation.html#allocation-points">5.2. Allocation points</a></li> 97<li class="toctree-l2"><a class="reference internal" href="allocation.html#allocation-points">6.2. Allocation points</a></li>
97<li class="toctree-l2"><a class="reference internal" href="allocation.html#allocation-point-protocol">5.3. Allocation point protocol</a></li> 98<li class="toctree-l2"><a class="reference internal" href="allocation.html#allocation-point-protocol">6.3. Allocation point protocol</a></li>
98<li class="toctree-l2"><a class="reference internal" href="allocation.html#example-allocating-a-symbol">5.4. Example: allocating a symbol</a></li> 99<li class="toctree-l2"><a class="reference internal" href="allocation.html#example-allocating-a-symbol">6.4. Example: allocating a symbol</a></li>
99<li class="toctree-l2"><a class="reference internal" href="allocation.html#cautions">5.5. Cautions</a></li> 100<li class="toctree-l2"><a class="reference internal" href="allocation.html#cautions">6.5. Cautions</a></li>
100<li class="toctree-l2"><a class="reference internal" href="allocation.html#example-inserting-into-a-doubly-linked-list">5.6. Example: inserting into a doubly linked list</a></li> 101<li class="toctree-l2"><a class="reference internal" href="allocation.html#example-inserting-into-a-doubly-linked-list">6.6. Example: inserting into a doubly linked list</a></li>
101<li class="toctree-l2"><a class="reference internal" href="allocation.html#allocation-point-implementation">5.7. Allocation point implementation</a></li> 102<li class="toctree-l2"><a class="reference internal" href="allocation.html#allocation-point-implementation">6.7. Allocation point implementation</a></li>
102</ul> 103</ul>
103</li> 104</li>
104<li class="toctree-l1"><a class="reference internal" href="format.html">6. Object formats</a><ul> 105<li class="toctree-l1"><a class="reference internal" href="format.html">7. Object formats</a><ul>
105<li class="toctree-l2"><a class="reference internal" href="format.html#creating-an-object-format">6.1. Creating an object format</a></li> 106<li class="toctree-l2"><a class="reference internal" href="format.html#creating-an-object-format">7.1. Creating an object format</a></li>
106<li class="toctree-l2"><a class="reference internal" href="format.html#cautions">6.2. Cautions</a></li> 107<li class="toctree-l2"><a class="reference internal" href="format.html#cautions">7.2. Cautions</a></li>
107<li class="toctree-l2"><a class="reference internal" href="format.html#format-methods">6.3. Format methods</a></li> 108<li class="toctree-l2"><a class="reference internal" href="format.html#format-methods">7.3. Format methods</a></li>
108<li class="toctree-l2"><a class="reference internal" href="format.html#object-format-introspection">6.4. Object format introspection</a></li> 109<li class="toctree-l2"><a class="reference internal" href="format.html#object-format-introspection">7.4. Object format introspection</a></li>
109</ul> 110</ul>
110</li> 111</li>
111<li class="toctree-l1"><a class="reference internal" href="scanning.html">7. Scanning</a><ul> 112<li class="toctree-l1"><a class="reference internal" href="scanning.html">8. Scanning</a><ul>
112<li class="toctree-l2"><a class="reference internal" href="scanning.html#scanning-protocol">7.1. Scanning protocol</a></li> 113<li class="toctree-l2"><a class="reference internal" href="scanning.html#scanning-protocol">8.1. Scanning protocol</a></li>
113<li class="toctree-l2"><a class="reference internal" href="scanning.html#tagged-references">7.2. Tagged references</a></li> 114<li class="toctree-l2"><a class="reference internal" href="scanning.html#tagged-references">8.2. Tagged references</a></li>
114<li class="toctree-l2"><a class="reference internal" href="scanning.html#critical-path">7.3. Critical path</a></li> 115<li class="toctree-l2"><a class="reference internal" href="scanning.html#critical-path">8.3. Critical path</a></li>
115<li class="toctree-l2"><a class="reference internal" href="scanning.html#ambiguous-references">7.4. Ambiguous references</a></li> 116<li class="toctree-l2"><a class="reference internal" href="scanning.html#ambiguous-references">8.4. Ambiguous references</a></li>
116<li class="toctree-l2"><a class="reference internal" href="scanning.html#unfixed-references">7.5. Unfixed references</a></li> 117<li class="toctree-l2"><a class="reference internal" href="scanning.html#unfixed-references">8.5. Unfixed references</a></li>
117<li class="toctree-l2"><a class="reference internal" href="scanning.html#example-scheme-objects">7.6. Example: Scheme objects</a></li> 118<li class="toctree-l2"><a class="reference internal" href="scanning.html#example-scheme-objects">8.6. Example: Scheme objects</a></li>
118<li class="toctree-l2"><a class="reference internal" href="scanning.html#scanning-interface">7.7. Scanning interface</a></li> 119<li class="toctree-l2"><a class="reference internal" href="scanning.html#scanning-interface">8.7. Scanning interface</a></li>
119<li class="toctree-l2"><a class="reference internal" href="scanning.html#fixing-interface">7.8. Fixing interface</a></li> 120<li class="toctree-l2"><a class="reference internal" href="scanning.html#fixing-interface">8.8. Fixing interface</a></li>
120</ul> 121</ul>
121</li> 122</li>
122<li class="toctree-l1"><a class="reference internal" href="thread.html">8. Threads</a><ul> 123<li class="toctree-l1"><a class="reference internal" href="thread.html">9. Threads</a><ul>
123<li class="toctree-l2"><a class="reference internal" href="thread.html#thread-safety">8.1. Thread safety</a></li> 124<li class="toctree-l2"><a class="reference internal" href="thread.html#thread-safety">9.1. Thread safety</a></li>
124<li class="toctree-l2"><a class="reference internal" href="thread.html#thread-registration">8.2. Thread registration</a></li> 125<li class="toctree-l2"><a class="reference internal" href="thread.html#thread-registration">9.2. Thread registration</a></li>
125<li class="toctree-l2"><a class="reference internal" href="thread.html#signal-handling-issues">8.3. Signal handling issues</a></li> 126<li class="toctree-l2"><a class="reference internal" href="thread.html#signal-handling-issues">9.3. Signal handling issues</a></li>
126<li class="toctree-l2"><a class="reference internal" href="thread.html#thread-interface">8.4. Thread interface</a></li> 127<li class="toctree-l2"><a class="reference internal" href="thread.html#thread-interface">9.4. Thread interface</a></li>
127</ul> 128</ul>
128</li> 129</li>
129<li class="toctree-l1"><a class="reference internal" href="root.html">9. Roots</a><ul> 130<li class="toctree-l1"><a class="reference internal" href="root.html">10. Roots</a><ul>
130<li class="toctree-l2"><a class="reference internal" href="root.html#registering-roots">9.1. Registering roots</a></li> 131<li class="toctree-l2"><a class="reference internal" href="root.html#registering-roots">10.1. Registering roots</a></li>
131<li class="toctree-l2"><a class="reference internal" href="root.html#cautions">9.2. Cautions</a></li> 132<li class="toctree-l2"><a class="reference internal" href="root.html#cautions">10.2. Cautions</a></li>
132<li class="toctree-l2"><a class="reference internal" href="root.html#thread-roots">9.3. Thread roots</a></li> 133<li class="toctree-l2"><a class="reference internal" href="root.html#thread-roots">10.3. Thread roots</a></li>
133<li class="toctree-l2"><a class="reference internal" href="root.html#ranks">9.4. Ranks</a></li> 134<li class="toctree-l2"><a class="reference internal" href="root.html#ranks">10.4. Ranks</a></li>
134<li class="toctree-l2"><a class="reference internal" href="root.html#root-modes">9.5. Root modes</a></li> 135<li class="toctree-l2"><a class="reference internal" href="root.html#root-modes">10.5. Root modes</a></li>
135<li class="toctree-l2"><a class="reference internal" href="root.html#root-interface">9.6. Root interface</a></li> 136<li class="toctree-l2"><a class="reference internal" href="root.html#root-interface">10.6. Root interface</a></li>
136<li class="toctree-l2"><a class="reference internal" href="root.html#root-introspection">9.7. Root introspection</a></li> 137<li class="toctree-l2"><a class="reference internal" href="root.html#root-introspection">10.7. Root introspection</a></li>
137</ul> 138</ul>
138</li> 139</li>
139<li class="toctree-l1"><a class="reference internal" href="collection.html">10. Garbage collection</a><ul> 140<li class="toctree-l1"><a class="reference internal" href="collection.html">11. Garbage collection</a><ul>
140<li class="toctree-l2"><a class="reference internal" href="collection.html#generation-chains">10.1. Generation chains</a></li> 141<li class="toctree-l2"><a class="reference internal" href="collection.html#generation-chains">11.1. Generation chains</a></li>
141<li class="toctree-l2"><a class="reference internal" href="collection.html#scheduling-of-collections">10.2. Scheduling of collections</a></li> 142<li class="toctree-l2"><a class="reference internal" href="collection.html#scheduling-of-collections">11.2. Scheduling of collections</a></li>
142<li class="toctree-l2"><a class="reference internal" href="collection.html#garbage-collection-start-messages">10.3. Garbage collection start messages</a></li> 143<li class="toctree-l2"><a class="reference internal" href="collection.html#garbage-collection-start-messages">11.3. Garbage collection start messages</a></li>
143<li class="toctree-l2"><a class="reference internal" href="collection.html#garbage-collection-messages">10.4. Garbage collection messages</a></li> 144<li class="toctree-l2"><a class="reference internal" href="collection.html#garbage-collection-messages">11.4. Garbage collection messages</a></li>
144</ul> 145</ul>
145</li> 146</li>
146<li class="toctree-l1"><a class="reference internal" href="message.html">11. Messages</a><ul> 147<li class="toctree-l1"><a class="reference internal" href="message.html">12. Messages</a><ul>
147<li class="toctree-l2"><a class="reference internal" href="message.html#finalization-messages">11.1. Finalization messages</a></li> 148<li class="toctree-l2"><a class="reference internal" href="message.html#finalization-messages">12.1. Finalization messages</a></li>
148<li class="toctree-l2"><a class="reference internal" href="message.html#example-interactive-chatter">11.2. Example: interactive chatter</a></li> 149<li class="toctree-l2"><a class="reference internal" href="message.html#example-interactive-chatter">12.2. Example: interactive chatter</a></li>
149<li class="toctree-l2"><a class="reference internal" href="message.html#message-types">11.3. Message types</a></li> 150<li class="toctree-l2"><a class="reference internal" href="message.html#message-types">12.3. Message types</a></li>
150<li class="toctree-l2"><a class="reference internal" href="message.html#message-interface">11.4. Message interface</a></li> 151<li class="toctree-l2"><a class="reference internal" href="message.html#message-interface">12.4. Message interface</a></li>
151<li class="toctree-l2"><a class="reference internal" href="message.html#message-queue-interface">11.5. Message queue interface</a></li> 152<li class="toctree-l2"><a class="reference internal" href="message.html#message-queue-interface">12.5. Message queue interface</a></li>
152</ul> 153</ul>
153</li> 154</li>
154<li class="toctree-l1"><a class="reference internal" href="finalization.html">12. Finalization</a><ul> 155<li class="toctree-l1"><a class="reference internal" href="finalization.html">13. Finalization</a><ul>
155<li class="toctree-l2"><a class="reference internal" href="finalization.html#multiple-finalizations">12.1. Multiple finalizations</a></li> 156<li class="toctree-l2"><a class="reference internal" href="finalization.html#multiple-finalizations">13.1. Multiple finalizations</a></li>
156<li class="toctree-l2"><a class="reference internal" href="finalization.html#cautions">12.2. Cautions</a></li> 157<li class="toctree-l2"><a class="reference internal" href="finalization.html#cautions">13.2. Cautions</a></li>
157<li class="toctree-l2"><a class="reference internal" href="finalization.html#finalization-interface">12.3. Finalization interface</a></li> 158<li class="toctree-l2"><a class="reference internal" href="finalization.html#finalization-interface">13.3. Finalization interface</a></li>
158<li class="toctree-l2"><a class="reference internal" href="finalization.html#finalization-messages">12.4. Finalization messages</a></li> 159<li class="toctree-l2"><a class="reference internal" href="finalization.html#finalization-messages">13.4. Finalization messages</a></li>
159</ul> 160</ul>
160</li> 161</li>
161<li class="toctree-l1"><a class="reference internal" href="location.html">13. Location dependency</a><ul> 162<li class="toctree-l1"><a class="reference internal" href="location.html">14. Location dependency</a><ul>
162<li class="toctree-l2"><a class="reference internal" href="location.html#terminology">13.1. Terminology</a></li> 163<li class="toctree-l2"><a class="reference internal" href="location.html#terminology">14.1. Terminology</a></li>
163<li class="toctree-l2"><a class="reference internal" href="location.html#creating-dependencies">13.2. Creating dependencies</a></li> 164<li class="toctree-l2"><a class="reference internal" href="location.html#creating-dependencies">14.2. Creating dependencies</a></li>
164<li class="toctree-l2"><a class="reference internal" href="location.html#adding-dependencies">13.3. Adding dependencies</a></li> 165<li class="toctree-l2"><a class="reference internal" href="location.html#adding-dependencies">14.3. Adding dependencies</a></li>
165<li class="toctree-l2"><a class="reference internal" href="location.html#testing-dependencies-for-staleness">13.4. Testing dependencies for staleness</a></li> 166<li class="toctree-l2"><a class="reference internal" href="location.html#testing-dependencies-for-staleness">14.4. Testing dependencies for staleness</a></li>
166<li class="toctree-l2"><a class="reference internal" href="location.html#thread-safety">13.5. Thread safety</a></li> 167<li class="toctree-l2"><a class="reference internal" href="location.html#thread-safety">14.5. Thread safety</a></li>
167<li class="toctree-l2"><a class="reference internal" href="location.html#location-dependency-interface">13.6. Location dependency interface</a></li> 168<li class="toctree-l2"><a class="reference internal" href="location.html#location-dependency-interface">14.6. Location dependency interface</a></li>
168</ul> 169</ul>
169</li> 170</li>
170<li class="toctree-l1"><a class="reference internal" href="cache.html">14. Segregated allocation caches</a><ul> 171<li class="toctree-l1"><a class="reference internal" href="cache.html">15. Segregated allocation caches</a><ul>
171<li class="toctree-l2"><a class="reference internal" href="cache.html#cache-interface">14.1. Cache interface</a></li> 172<li class="toctree-l2"><a class="reference internal" href="cache.html#cache-interface">15.1. Cache interface</a></li>
172<li class="toctree-l2"><a class="reference internal" href="cache.html#allocation-interface">14.2. Allocation interface</a></li> 173<li class="toctree-l2"><a class="reference internal" href="cache.html#allocation-interface">15.2. Allocation interface</a></li>
173</ul> 174</ul>
174</li> 175</li>
175<li class="toctree-l1"><a class="reference internal" href="pattern.html">15. Allocation patterns</a><ul> 176<li class="toctree-l1"><a class="reference internal" href="pattern.html">16. Allocation patterns</a><ul>
176<li class="toctree-l2"><a class="reference internal" href="pattern.html#ramp-allocation">15.1. Ramp allocation</a></li> 177<li class="toctree-l2"><a class="reference internal" href="pattern.html#ramp-allocation">16.1. Ramp allocation</a></li>
177</ul> 178</ul>
178</li> 179</li>
179<li class="toctree-l1"><a class="reference internal" href="frame.html">16. Allocation frames</a></li> 180<li class="toctree-l1"><a class="reference internal" href="frame.html">17. Allocation frames</a></li>
180<li class="toctree-l1"><a class="reference internal" href="debugging.html">17. Debugging pools</a></li> 181<li class="toctree-l1"><a class="reference internal" href="debugging.html">18. Debugging pools</a></li>
181<li class="toctree-l1"><a class="reference internal" href="telemetry.html">18. Telemetry</a><ul> 182<li class="toctree-l1"><a class="reference internal" href="telemetry.html">19. Telemetry</a><ul>
182<li class="toctree-l2"><a class="reference internal" href="telemetry.html#telemetry-utilities">18.1. Telemetry utilities</a></li> 183<li class="toctree-l2"><a class="reference internal" href="telemetry.html#telemetry-utilities">19.1. Telemetry utilities</a></li>
183<li class="toctree-l2"><a class="reference internal" href="telemetry.html#example">18.2. Example</a></li> 184<li class="toctree-l2"><a class="reference internal" href="telemetry.html#example">19.2. Example</a></li>
184<li class="toctree-l2"><a class="reference internal" href="telemetry.html#event-categories">18.3. Event categories</a></li> 185<li class="toctree-l2"><a class="reference internal" href="telemetry.html#event-categories">19.3. Event categories</a></li>
185<li class="toctree-l2"><a class="reference internal" href="telemetry.html#environment-variables">18.4. Environment variables</a></li> 186<li class="toctree-l2"><a class="reference internal" href="telemetry.html#environment-variables">19.4. Environment variables</a></li>
186<li class="toctree-l2"><a class="reference internal" href="telemetry.html#decoding-the-telemetry-stream">18.5. Decoding the telemetry stream</a></li> 187<li class="toctree-l2"><a class="reference internal" href="telemetry.html#decoding-the-telemetry-stream">19.5. Decoding the telemetry stream</a></li>
187<li class="toctree-l2"><a class="reference internal" href="telemetry.html#making-the-telemetry-stream-readable">18.6. Making the telemetry stream readable</a></li> 188<li class="toctree-l2"><a class="reference internal" href="telemetry.html#making-the-telemetry-stream-readable">19.6. Making the telemetry stream readable</a></li>
188<li class="toctree-l2"><a class="reference internal" href="telemetry.html#loading-the-telemetry-stream-into-sqlite">18.7. Loading the telemetry stream into SQLite</a></li> 189<li class="toctree-l2"><a class="reference internal" href="telemetry.html#loading-the-telemetry-stream-into-sqlite">19.7. Loading the telemetry stream into SQLite</a></li>
189<li class="toctree-l2"><a class="reference internal" href="telemetry.html#telemetry-interface">18.8. Telemetry interface</a></li> 190<li class="toctree-l2"><a class="reference internal" href="telemetry.html#telemetry-interface">19.8. Telemetry interface</a></li>
190<li class="toctree-l2"><a class="reference internal" href="telemetry.html#telemetry-labels">18.9. Telemetry labels</a></li> 191<li class="toctree-l2"><a class="reference internal" href="telemetry.html#telemetry-labels">19.9. Telemetry labels</a></li>
191</ul> 192</ul>
192</li> 193</li>
193<li class="toctree-l1"><a class="reference internal" href="weak.html">19. Weak references</a></li> 194<li class="toctree-l1"><a class="reference internal" href="weak.html">20. Weak references</a></li>
194</ul> 195</ul>
195</div> 196</div>
196</div> 197</div>
diff --git a/mps/manual/html/topic/interface.html b/mps/manual/html/topic/interface.html
index d3514e18445..5adcd3e94c0 100644
--- a/mps/manual/html/topic/interface.html
+++ b/mps/manual/html/topic/interface.html
@@ -28,7 +28,7 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="2. Error handing" href="error.html" /> 31 <link rel="next" title="2. Keyword arguments" href="keyword.html" />
32 <link rel="prev" title="Reference" href="index.html" /> 32 <link rel="prev" title="Reference" href="index.html" />
33 </head> 33 </head>
34 <body> 34 <body>
@@ -39,7 +39,7 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="error.html" title="2. Error handing" 42 <a href="keyword.html" title="2. Keyword arguments"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="index.html" title="Reference" 45 <a href="index.html" title="Reference"
@@ -89,8 +89,8 @@ notice in future releases.</p>
89<div class="section" id="language"> 89<div class="section" id="language">
90<span id="index-2"></span><h2>1.2. Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h2> 90<span id="index-2"></span><h2>1.2. Language<a class="headerlink" href="#language" title="Permalink to this headline">¶</a></h2>
91<ol class="arabic simple"> 91<ol class="arabic simple">
92<li>The MPS public interface conforms to ANSI/ISO Standard C (IEC 92<li>The MPS public interface conforms to <a class="reference internal" href="../mmref/bib.html#c1990"><em>ANSI/ISO Standard C (IEC
939899:1990).</li> 939899:1990)</em></a>.</li>
94</ol> 94</ol>
95</div> 95</div>
96<div class="section" id="headers"> 96<div class="section" id="headers">
@@ -177,6 +177,9 @@ update the value does so via an <a class="reference internal" href="../glossary/
177the same as an out parameter except that the location it points to 177the same as an out parameter except that the location it points to
178is read by the function. See for example <a class="reference internal" href="scanning.html#MPS_FIX12" title="MPS_FIX12"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX12()</span></tt></a>.</li> 178is read by the function. See for example <a class="reference internal" href="scanning.html#MPS_FIX12" title="MPS_FIX12"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX12()</span></tt></a>.</li>
179<li>In/out parameters have names ending with <tt class="docutils literal"><span class="pre">_io</span></tt>.</li> 179<li>In/out parameters have names ending with <tt class="docutils literal"><span class="pre">_io</span></tt>.</li>
180<li>A function that takes optional arguments does so in the form of an
181array of keyword argument structures. These functions have names
182ending with <tt class="docutils literal"><span class="pre">_k</span></tt>. See <a class="reference internal" href="keyword.html#topic-keyword"><em>Keyword arguments</em></a>.</li>
180</ol> 183</ol>
181</div> 184</div>
182<div class="section" id="type-punning"> 185<div class="section" id="type-punning">
@@ -185,7 +188,7 @@ is read by the function. See for example <a class="reference internal" href="sca
185out parameter, like this:</p> 188out parameter, like this:</p>
186<div class="highlight-c"><div class="highlight"><pre><span class="cm">/* allocate a struct foo */</span> 189<div class="highlight-c"><div class="highlight"><pre><span class="cm">/* allocate a struct foo */</span>
187<span class="k">struct</span> <span class="n">foo</span> <span class="o">*</span><span class="n">fp</span><span class="p">;</span> 190<span class="k">struct</span> <span class="n">foo</span> <span class="o">*</span><span class="n">fp</span><span class="p">;</span>
188<span class="n">res</span> <span class="o">=</span> <span class="n">mps_alloc</span><span class="p">((</span><span class="kt">mps_addr_t</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">fp</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span> <span class="n">foo</span><span class="p">));</span> 191<span class="n">res</span> <span class="o">=</span> <span class="n">mps_alloc</span><span class="p">((</span><span class="n">mps_addr_t</span> <span class="o">*</span><span class="p">)</span><span class="o">&amp;</span><span class="n">fp</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span> <span class="n">foo</span><span class="p">));</span>
189</pre></div> 192</pre></div>
190</div> 193</div>
191<p>This is known as <a class="reference internal" href="../glossary/t.html#term-type-punning"><em class="xref std std-term">type punning</em></a>, and its behaviour is not 194<p>This is known as <a class="reference internal" href="../glossary/t.html#term-type-punning"><em class="xref std std-term">type punning</em></a>, and its behaviour is not
@@ -194,7 +197,7 @@ defined in ANSI/ISO Standard C. See <a class="reference internal" href="../mmref
194another: the behaviour of this cast is not covered by any of the cases 197another: the behaviour of this cast is not covered by any of the cases
195in the standard.</p> 198in the standard.</p>
196<p>Instead, we recommend this approach:</p> 199<p>Instead, we recommend this approach:</p>
197<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_addr_t</span> <span class="n">p</span><span class="p">;</span> 200<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_addr_t</span> <span class="n">p</span><span class="p">;</span>
198<span class="k">struct</span> <span class="n">foo</span> <span class="o">*</span><span class="n">fp</span><span class="p">;</span> 201<span class="k">struct</span> <span class="n">foo</span> <span class="o">*</span><span class="n">fp</span><span class="p">;</span>
199<span class="n">res</span> <span class="o">=</span> <span class="n">mps_alloc</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span> <span class="n">foo</span><span class="p">));</span> 202<span class="n">res</span> <span class="o">=</span> <span class="n">mps_alloc</span><span class="p">(</span><span class="o">&amp;</span><span class="n">p</span><span class="p">,</span> <span class="n">pool</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="k">struct</span> <span class="n">foo</span><span class="p">));</span>
200<span class="k">if</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="cm">/* handle error case */</span><span class="p">;</span> 203<span class="k">if</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="cm">/* handle error case */</span><span class="p">;</span>
@@ -352,8 +355,8 @@ or function return from the MPS, 0 means &#8220;false&#8221;, and 1 means
352 <p class="topless"><a href="index.html" 355 <p class="topless"><a href="index.html"
353 title="previous chapter">Reference</a></p> 356 title="previous chapter">Reference</a></p>
354 <h4>Next topic</h4> 357 <h4>Next topic</h4>
355 <p class="topless"><a href="error.html" 358 <p class="topless"><a href="keyword.html"
356 title="next chapter">2. Error handing</a></p><h4>Downloads</h4> 359 title="next chapter">2. Keyword arguments</a></p><h4>Downloads</h4>
357 360
358<p class="topless"> 361<p class="topless">
359<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 362<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -379,7 +382,7 @@ or function return from the MPS, 0 means &#8220;false&#8221;, and 1 means
379 <a href="../genindex.html" title="General Index" 382 <a href="../genindex.html" title="General Index"
380 >index</a></li> 383 >index</a></li>
381 <li class="right" > 384 <li class="right" >
382 <a href="error.html" title="2. Error handing" 385 <a href="keyword.html" title="2. Keyword arguments"
383 >next</a> |</li> 386 >next</a> |</li>
384 <li class="right" > 387 <li class="right" >
385 <a href="index.html" title="Reference" 388 <a href="index.html" title="Reference"
diff --git a/mps/manual/html/topic/keyword.html b/mps/manual/html/topic/keyword.html
new file mode 100644
index 00000000000..ca6167951bd
--- /dev/null
+++ b/mps/manual/html/topic/keyword.html
@@ -0,0 +1,369 @@
1
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
6
7<html xmlns="http://www.w3.org/1999/xhtml">
8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10
11 <title>2. Keyword arguments &mdash; Memory Pool System 1.111.0 documentation</title>
12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
15
16 <script type="text/javascript">
17 var DOCUMENTATION_OPTIONS = {
18 URL_ROOT: '../',
19 VERSION: '1.111.0',
20 COLLAPSE_INDEX: false,
21 FILE_SUFFIX: '.html',
22 HAS_SOURCE: true
23 };
24 </script>
25 <script type="text/javascript" src="../_static/jquery.js"></script>
26 <script type="text/javascript" src="../_static/underscore.js"></script>
27 <script type="text/javascript" src="../_static/doctools.js"></script>
28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="3. Error handing" href="error.html" />
32 <link rel="prev" title="1. Interface conventions" href="interface.html" />
33 </head>
34 <body>
35 <div class="related">
36 <h3>Navigation</h3>
37 <ul>
38 <li class="right" style="margin-right: 10px">
39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li>
41 <li class="right" >
42 <a href="error.html" title="3. Error handing"
43 accesskey="N">next</a> |</li>
44 <li class="right" >
45 <a href="interface.html" title="1. Interface conventions"
46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
49 </ul>
50 </div>
51
52 <div class="document">
53 <div class="documentwrapper">
54 <div class="bodywrapper">
55 <div class="body">
56
57 <div class="section" id="keyword-arguments">
58<span id="topic-keyword"></span><span id="index-0"></span><h1>2. Keyword arguments<a class="headerlink" href="#keyword-arguments" title="Permalink to this headline">¶</a></h1>
59<p>Some functions in the MPS interface take <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a> in
60order to pass values that might be optional, or are only required in
61some circumstances. For example, the function
62<a class="reference internal" href="arena.html#mps_arena_create_k" title="mps_arena_create_k"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_create_k()</span></tt></a> creates any class of <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>, but
63<a class="reference internal" href="../glossary/c.html#term-client-arena"><em class="xref std std-term">client arenas</em></a> require you to specify a base address. These
64arguments are passed in a keyword argument array, like this:</p>
65<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
66<span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">;</span>
67<span class="n">mps_arg_s</span> <span class="n">args</span><span class="p">[</span><span class="mi">3</span><span class="p">];</span>
68<span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">key</span> <span class="o">=</span> <span class="n">MPS_KEY_ARENA_SIZE</span><span class="p">;</span>
69<span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">6553600</span><span class="p">;</span>
70<span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">key</span> <span class="o">=</span> <span class="n">MPS_KEY_ARENA_CL_ADDR</span><span class="p">;</span>
71<span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="n">val</span><span class="p">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">base_address</span><span class="p">;</span>
72<span class="n">args</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="n">key</span> <span class="o">=</span> <span class="n">MPS_KEY_ARGS_END</span><span class="p">;</span>
73<span class="n">res</span> <span class="o">=</span> <span class="n">mps_arena_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">arena</span><span class="p">,</span> <span class="n">mps_arena_class_cl</span><span class="p">(),</span> <span class="n">args</span><span class="p">);</span>
74</pre></div>
75</div>
76<p>Each keyword argument in the array is a structure of type
77<a class="reference internal" href="#mps_arg_s" title="mps_arg_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_arg_s</span></tt></a>.</p>
78<p>For convenience and robustness, the MPS interface includes macros to
79help with forming keyword argument lists:</p>
80<div class="highlight-c"><div class="highlight"><pre><span class="n">MPS_ARGS_BEGIN</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="p">{</span>
81 <span class="n">MPS_ARGS_ADD</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">MPS_KEY_ARENA_SIZE</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="mi">6553600</span><span class="p">);</span>
82 <span class="n">MPS_ARGS_ADD</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">MPS_KEY_ARENA_CL_ADDR</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">base_address</span><span class="p">);</span>
83 <span class="n">MPS_ARGS_DONE</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
84 <span class="n">res</span> <span class="o">=</span> <span class="n">mps_arena_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">arena</span><span class="p">,</span> <span class="n">mps_arena_class_cl</span><span class="p">(),</span> <span class="n">args</span><span class="p">);</span>
85<span class="p">}</span> <span class="n">MPS_ARGS_END</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
86</pre></div>
87</div>
88<p>But if you are writing <a class="reference internal" href="../glossary/c.html#term-c99"><em class="xref std std-term">C99</em></a>, you can write this more concisely as:</p>
89<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
90<span class="n">mps_arena_t</span> <span class="n">arena</span><span class="p">;</span>
91<span class="n">res</span> <span class="o">=</span> <span class="n">mps_arena_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">arena</span><span class="p">,</span> <span class="n">mps_arena_class_cl</span><span class="p">(),</span>
92 <span class="p">(</span><span class="n">mps_arg_s</span><span class="p">[]){{</span><span class="n">MPS_KEY_ARENA_SIZE</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">6553600</span><span class="p">},</span>
93 <span class="p">{</span><span class="n">MPS_KEY_ARENA_CL_ADDR</span><span class="p">,</span> <span class="p">.</span><span class="n">val</span><span class="p">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">base_address</span><span class="p">},</span>
94 <span class="p">{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}});</span>
95</pre></div>
96</div>
97<p>The argument array must not be <tt class="docutils literal"><span class="pre">NULL</span></tt>, and must end with
98<tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ARGS_END</span></tt>. If you don&#8217;t want to pass any arguments, you can
99either call the equivalent function that does not take keyword arguments
100(named without the <tt class="docutils literal"><span class="pre">_k</span></tt>) or pass <a class="reference internal" href="#mps_args_none" title="mps_args_none"><tt class="xref c c-macro docutils literal"><span class="pre">mps_args_none</span></tt></a>.</p>
101<p>When a function that takes keyword arguments returns, the keyword
102argument array has been <em>modified</em> to remove any arguments that have
103been used. If all arguments have been used, the first element key is
104now <tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ARGS_END</span></tt>.</p>
105<dl class="type">
106<dt id="mps_arg_s">
107<tt class="descname">mps_arg_s</tt><a class="headerlink" href="#mps_arg_s" title="Permalink to this definition">¶</a></dt>
108<dd><p>The type of the structure used to represent a single
109<a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword argument</em></a> to a function.</p>
110<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_arg_s</span> <span class="p">{</span>
111 <span class="n">mps_key_t</span> <span class="n">key</span><span class="p">;</span>
112 <span class="k">union</span> <span class="p">{</span>
113 <span class="n">mps_bool_t</span> <span class="n">b</span><span class="p">;</span>
114 <span class="kt">char</span> <span class="n">c</span><span class="p">;</span>
115 <span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="n">string</span><span class="p">;</span>
116 <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
117 <span class="kt">unsigned</span> <span class="n">u</span><span class="p">;</span>
118 <span class="kt">long</span> <span class="n">l</span><span class="p">;</span>
119 <span class="kt">unsigned</span> <span class="kt">long</span> <span class="n">ul</span><span class="p">;</span>
120 <span class="kt">size_t</span> <span class="n">size</span><span class="p">;</span>
121 <span class="n">mps_addr_t</span> <span class="n">addr</span><span class="p">;</span>
122 <span class="n">mps_fmt_t</span> <span class="n">format</span><span class="p">;</span>
123 <span class="n">mps_chain_t</span> <span class="n">chain</span><span class="p">;</span>
124 <span class="k">struct</span> <span class="n">mps_pool_debug_option_s</span> <span class="o">*</span><span class="n">pool_debug_options</span><span class="p">;</span>
125 <span class="n">mps_addr_t</span> <span class="p">(</span><span class="o">*</span><span class="n">addr_method</span><span class="p">)(</span><span class="n">mps_addr_t</span><span class="p">);</span>
126 <span class="n">mps_align_t</span> <span class="n">align</span><span class="p">;</span>
127 <span class="n">mps_word_t</span> <span class="n">count</span><span class="p">;</span>
128 <span class="kt">void</span> <span class="o">*</span><span class="n">p</span><span class="p">;</span>
129 <span class="n">mps_rank_t</span> <span class="n">rank</span><span class="p">;</span>
130 <span class="p">}</span> <span class="n">val</span><span class="p">;</span>
131<span class="p">}</span> <span class="n">mps_arg_s</span><span class="p">;</span>
132</pre></div>
133</div>
134<p><tt class="docutils literal"><span class="pre">key</span></tt> identifies the key. It must be one of the legal values
135of <a class="reference internal" href="#mps_key_t" title="mps_key_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_key_t</span></tt></a> listed in the documentation for that type.</p>
136<p><tt class="docutils literal"><span class="pre">val</span></tt> is the corresponding value. The documentation for each
137value of the type <a class="reference internal" href="#mps_key_t" title="mps_key_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_key_t</span></tt></a> explains which structure
138member is used by that keyword.</p>
139</dd></dl>
140
141<dl class="macro">
142<dt id="mps_args_none">
143<tt class="descname">mps_args_none</tt><a class="headerlink" href="#mps_args_none" title="Permalink to this definition">¶</a></dt>
144<dd><p>An array of <a class="reference internal" href="#mps_arg_s" title="mps_arg_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_arg_s</span></tt></a> representing the empty list of
145keyword arguments. Equivalent to:</p>
146<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_arg_s</span> <span class="n">mps_args_none</span><span class="p">[]</span> <span class="o">=</span> <span class="p">{{</span><span class="n">MPS_KEY_ARGS_END</span><span class="p">}};</span>
147</pre></div>
148</div>
149</dd></dl>
150
151<dl class="type">
152<dt id="mps_key_t">
153<tt class="descname">mps_key_t</tt><a class="headerlink" href="#mps_key_t" title="Permalink to this definition">¶</a></dt>
154<dd><p>The type of <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword argument</em></a> keys. Must take one of the
155following values:</p>
156<table border="1" class="docutils">
157<colgroup>
158<col width="19%" />
159<col width="10%" />
160<col width="71%" />
161</colgroup>
162<thead valign="bottom">
163<tr class="row-odd"><th class="head">Keyword</th>
164<th class="head">Value slot</th>
165<th class="head">See</th>
166</tr>
167</thead>
168<tbody valign="top">
169<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ARGS_END</span></tt></td>
170<td><em>none</em></td>
171<td><em>see above</em></td>
172</tr>
173<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ALIGN</span></tt></td>
174<td><tt class="docutils literal"><span class="pre">align</span></tt></td>
175<td><a class="reference internal" href="../pool/mvff.html#mps_class_mvff" title="mps_class_mvff"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvff()</span></tt></a></td>
176</tr>
177<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_AMS_SUPPORT_AMBIGUOUS</span></tt></td>
178<td><tt class="docutils literal"><span class="pre">b</span></tt></td>
179<td><a class="reference internal" href="../pool/ams.html#mps_class_ams" title="mps_class_ams"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_ams()</span></tt></a></td>
180</tr>
181<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ARENA_CL_ADDR</span></tt></td>
182<td><tt class="docutils literal"><span class="pre">addr</span></tt></td>
183<td><a class="reference internal" href="arena.html#mps_arena_class_cl" title="mps_arena_class_cl"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_class_cl()</span></tt></a></td>
184</tr>
185<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_ARENA_SIZE</span></tt></td>
186<td><tt class="docutils literal"><span class="pre">size</span></tt></td>
187<td><a class="reference internal" href="arena.html#mps_arena_class_vm" title="mps_arena_class_vm"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_class_vm()</span></tt></a>, <a class="reference internal" href="arena.html#mps_arena_class_cl" title="mps_arena_class_cl"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_class_cl()</span></tt></a></td>
188</tr>
189<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_AWL_FIND_DEPENDENT</span></tt></td>
190<td><tt class="docutils literal"><span class="pre">addr_method</span></tt></td>
191<td><a class="reference internal" href="../pool/awl.html#mps_class_awl" title="mps_class_awl"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_awl()</span></tt></a></td>
192</tr>
193<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_CHAIN</span></tt></td>
194<td><tt class="docutils literal"><span class="pre">chain</span></tt></td>
195<td><a class="reference internal" href="../pool/amc.html#mps_class_amc" title="mps_class_amc"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_amc()</span></tt></a>, <a class="reference internal" href="../pool/amcz.html#mps_class_amcz" title="mps_class_amcz"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_amcz()</span></tt></a>, <a class="reference internal" href="../pool/ams.html#mps_class_ams" title="mps_class_ams"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_ams()</span></tt></a></td>
196</tr>
197<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_EXTEND_BY</span></tt></td>
198<td><tt class="docutils literal"><span class="pre">size</span></tt></td>
199<td><a class="reference internal" href="../pool/mfs.html#mps_class_mfs" title="mps_class_mfs"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mfs()</span></tt></a>, <a class="reference internal" href="../pool/mv.html#mps_class_mv" title="mps_class_mv"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mv()</span></tt></a>, <a class="reference internal" href="../pool/mvff.html#mps_class_mvff" title="mps_class_mvff"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvff()</span></tt></a></td>
200</tr>
201<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_FORMAT</span></tt></td>
202<td><tt class="docutils literal"><span class="pre">format</span></tt></td>
203<td><a class="reference internal" href="../pool/amc.html#mps_class_amc" title="mps_class_amc"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_amc()</span></tt></a>, <a class="reference internal" href="../pool/amcz.html#mps_class_amcz" title="mps_class_amcz"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_amcz()</span></tt></a>, <a class="reference internal" href="../pool/ams.html#mps_class_ams" title="mps_class_ams"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_ams()</span></tt></a>, <a class="reference internal" href="../pool/awl.html#mps_class_awl" title="mps_class_awl"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_awl()</span></tt></a>, <a class="reference internal" href="../pool/lo.html#mps_class_lo" title="mps_class_lo"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_lo()</span></tt></a> , <a class="reference internal" href="../pool/snc.html#mps_class_snc" title="mps_class_snc"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_snc()</span></tt></a></td>
204</tr>
205<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MAX_SIZE</span></tt></td>
206<td><tt class="docutils literal"><span class="pre">size</span></tt></td>
207<td><a class="reference internal" href="../pool/mv.html#mps_class_mv" title="mps_class_mv"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mv()</span></tt></a></td>
208</tr>
209<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MEAN_SIZE</span></tt></td>
210<td><tt class="docutils literal"><span class="pre">size</span></tt></td>
211<td><a class="reference internal" href="../pool/mv.html#mps_class_mv" title="mps_class_mv"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mv()</span></tt></a>, <a class="reference internal" href="../pool/mvt.html#mps_class_mvt" title="mps_class_mvt"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvt()</span></tt></a>, <a class="reference internal" href="../pool/mvff.html#mps_class_mvff" title="mps_class_mvff"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvff()</span></tt></a></td>
212</tr>
213<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MFS_UNIT_SIZE</span></tt></td>
214<td><tt class="docutils literal"><span class="pre">size</span></tt></td>
215<td><a class="reference internal" href="../pool/mfs.html#mps_class_mfs" title="mps_class_mfs"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mfs()</span></tt></a></td>
216</tr>
217<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MIN_SIZE</span></tt></td>
218<td><tt class="docutils literal"><span class="pre">size</span></tt></td>
219<td><a class="reference internal" href="../pool/mvt.html#mps_class_mvt" title="mps_class_mvt"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvt()</span></tt></a></td>
220</tr>
221<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_ARENA_HIGH</span></tt></td>
222<td><tt class="docutils literal"><span class="pre">b</span></tt></td>
223<td><a class="reference internal" href="../pool/mvff.html#mps_class_mvff" title="mps_class_mvff"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvff()</span></tt></a></td>
224</tr>
225<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_FIRST_FIT</span></tt></td>
226<td><tt class="docutils literal"><span class="pre">b</span></tt></td>
227<td><a class="reference internal" href="../pool/mvff.html#mps_class_mvff" title="mps_class_mvff"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvff()</span></tt></a></td>
228</tr>
229<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVFF_SLOT_HIGH</span></tt></td>
230<td><tt class="docutils literal"><span class="pre">b</span></tt></td>
231<td><a class="reference internal" href="../pool/mvff.html#mps_class_mvff" title="mps_class_mvff"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvff()</span></tt></a></td>
232</tr>
233<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVT_FRAG_LIMIT</span></tt></td>
234<td><tt class="docutils literal"><span class="pre">count</span></tt></td>
235<td><a class="reference internal" href="../pool/mvt.html#mps_class_mvt" title="mps_class_mvt"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvt()</span></tt></a></td>
236</tr>
237<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_MVT_RESERVE_DEPTH</span></tt></td>
238<td><tt class="docutils literal"><span class="pre">count</span></tt></td>
239<td><a class="reference internal" href="../pool/mvt.html#mps_class_mvt" title="mps_class_mvt"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvt()</span></tt></a></td>
240</tr>
241<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_POOL_DEBUG_OPTIONS</span></tt></td>
242<td><tt class="docutils literal"><span class="pre">pool_debug_options</span></tt></td>
243<td><a class="reference internal" href="../pool/ams.html#mps_class_ams_debug" title="mps_class_ams_debug"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_ams_debug()</span></tt></a>, <a class="reference internal" href="../pool/mv.html#mps_class_mv_debug" title="mps_class_mv_debug"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mv_debug()</span></tt></a>, <a class="reference internal" href="../pool/mvff.html#mps_class_mvff_debug" title="mps_class_mvff_debug"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_mvff_debug()</span></tt></a></td>
244</tr>
245<tr class="row-odd"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_RANK</span></tt></td>
246<td><tt class="docutils literal"><span class="pre">rank</span></tt></td>
247<td><a class="reference internal" href="../pool/awl.html#mps_class_awl" title="mps_class_awl"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_awl()</span></tt></a>, <a class="reference internal" href="../pool/snc.html#mps_class_snc" title="mps_class_snc"><tt class="xref c c-func docutils literal"><span class="pre">mps_class_snc()</span></tt></a></td>
248</tr>
249<tr class="row-even"><td><tt class="xref c c-macro docutils literal"><span class="pre">MPS_KEY_VMW3_TOP_DOWN</span></tt></td>
250<td><tt class="docutils literal"><span class="pre">b</span></tt></td>
251<td><a class="reference internal" href="arena.html#mps_arena_class_vm" title="mps_arena_class_vm"><tt class="xref c c-func docutils literal"><span class="pre">mps_arena_class_vm()</span></tt></a></td>
252</tr>
253</tbody>
254</table>
255</dd></dl>
256
257<dl class="function">
258<dt id="MPS_ARGS_BEGIN">
259<tt class="descname">MPS_ARGS_BEGIN</tt><big>(</big>args<big>)</big><a class="headerlink" href="#MPS_ARGS_BEGIN" title="Permalink to this definition">¶</a></dt>
260<dd><p>Start construction of a list of keyword arguments. This macro must
261be used like this:</p>
262<div class="highlight-c"><div class="highlight"><pre><span class="n">MPS_ARGS_BEGIN</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="p">{</span>
263 <span class="n">MPS_ARGS_ADD</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">MPS_KEY_ARENA_SIZE</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="mi">6553600</span><span class="p">);</span>
264 <span class="n">MPS_ARGS_ADD</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">MPS_KEY_ARENA_CL_ADDR</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">base_address</span><span class="p">);</span>
265 <span class="n">MPS_ARGS_DONE</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
266 <span class="n">res</span> <span class="o">=</span> <span class="n">mps_arena_create_k</span><span class="p">(</span><span class="o">&amp;</span><span class="n">arena</span><span class="p">,</span> <span class="n">mps_arena_class_cl</span><span class="p">(),</span> <span class="n">args</span><span class="p">);</span>
267<span class="p">}</span> <span class="n">MPS_ARGS_END</span><span class="p">(</span><span class="n">args</span><span class="p">);</span>
268</pre></div>
269</div>
270<p>That is, you must call <a class="reference internal" href="#MPS_ARGS_ADD" title="MPS_ARGS_ADD"><tt class="xref c c-func docutils literal"><span class="pre">MPS_ARGS_ADD()</span></tt></a> zero or more times,
271and then call <a class="reference internal" href="#MPS_ARGS_DONE" title="MPS_ARGS_DONE"><tt class="xref c c-func docutils literal"><span class="pre">MPS_ARGS_DONE()</span></tt></a> before passing the arguments
272to a function.</p>
273<p><tt class="docutils literal"><span class="pre">args</span></tt> is the name of the array that contains the keyword
274arguments. The array is stack-allocated, and exists between
275<a class="reference internal" href="#MPS_ARGS_BEGIN" title="MPS_ARGS_BEGIN"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_ARGS_BEGIN</span></tt></a> and <a class="reference internal" href="#MPS_ARGS_END" title="MPS_ARGS_END"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_ARGS_END</span></tt></a>.</p>
276<p>It is safe to nest blocks created by <a class="reference internal" href="#MPS_ARGS_BEGIN" title="MPS_ARGS_BEGIN"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_ARGS_BEGIN</span></tt></a> and
277<a class="reference internal" href="#MPS_ARGS_END" title="MPS_ARGS_END"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_ARGS_END</span></tt></a>.</p>
278</dd></dl>
279
280<dl class="function">
281<dt id="MPS_ARGS_ADD">
282<tt class="descname">MPS_ARGS_ADD</tt><big>(</big><a class="reference internal" href="#mps_arg_s" title="mps_arg_s">mps_arg_s</a><em>&nbsp;args[]</em>, <a class="reference internal" href="#mps_key_t" title="mps_key_t">mps_key_t</a><em>&nbsp;key</em>, value<big>)</big><a class="headerlink" href="#MPS_ARGS_ADD" title="Permalink to this definition">¶</a></dt>
283<dd><p>Add an argument to a list of keyword arguments. This macro must be
284used only between <a class="reference internal" href="#MPS_ARGS_BEGIN" title="MPS_ARGS_BEGIN"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_ARGS_BEGIN</span></tt></a> and
285<a class="reference internal" href="#MPS_ARGS_END" title="MPS_ARGS_END"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_ARGS_END</span></tt></a>.</p>
286<p><tt class="docutils literal"><span class="pre">args</span></tt> is the name of array that contains the keyword arguments.
287It must match the argument to the preceding call to
288<a class="reference internal" href="#MPS_ARGS_BEGIN" title="MPS_ARGS_BEGIN"><tt class="xref c c-func docutils literal"><span class="pre">MPS_ARGS_BEGIN()</span></tt></a>.</p>
289</dd></dl>
290
291<dl class="function">
292<dt id="MPS_ARGS_DONE">
293<tt class="descname">MPS_ARGS_DONE</tt><big>(</big>args<big>)</big><a class="headerlink" href="#MPS_ARGS_DONE" title="Permalink to this definition">¶</a></dt>
294<dd><p>Finalize a list of keyword arguments. This macro must be used only
295between <a class="reference internal" href="#MPS_ARGS_BEGIN" title="MPS_ARGS_BEGIN"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_ARGS_BEGIN</span></tt></a> and <a class="reference internal" href="#MPS_ARGS_END" title="MPS_ARGS_END"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_ARGS_END</span></tt></a>.</p>
296<p><tt class="docutils literal"><span class="pre">args</span></tt> is the name of array that contains the keyword arguments.
297It must match the argument to the preceding call to
298<a class="reference internal" href="#MPS_ARGS_BEGIN" title="MPS_ARGS_BEGIN"><tt class="xref c c-func docutils literal"><span class="pre">MPS_ARGS_BEGIN()</span></tt></a>.</p>
299<p>After calling this macro, the array <tt class="docutils literal"><span class="pre">args</span></tt> is ready to pass to a
300function.</p>
301</dd></dl>
302
303<dl class="function">
304<dt id="MPS_ARGS_END">
305<tt class="descname">MPS_ARGS_END</tt><big>(</big>args<big>)</big><a class="headerlink" href="#MPS_ARGS_END" title="Permalink to this definition">¶</a></dt>
306<dd><p>Finish using a list of keyword arguments whose construction was
307started by <a class="reference internal" href="#MPS_ARGS_BEGIN" title="MPS_ARGS_BEGIN"><tt class="xref c c-func docutils literal"><span class="pre">MPS_ARGS_BEGIN()</span></tt></a>.</p>
308<p><tt class="docutils literal"><span class="pre">args</span></tt> is the name of array that contains the keyword arguments.
309It must match the argument to the preceding call to
310<a class="reference internal" href="#MPS_ARGS_BEGIN" title="MPS_ARGS_BEGIN"><tt class="xref c c-func docutils literal"><span class="pre">MPS_ARGS_BEGIN()</span></tt></a>.</p>
311</dd></dl>
312
313</div>
314
315
316 </div>
317 </div>
318 </div>
319 <div class="sphinxsidebar">
320 <div class="sphinxsidebarwrapper">
321 <p class="logo"><a href="../index.html">
322 <img class="logo" src="../_static/logo.png" alt="Logo"/>
323 </a></p>
324 <h4>Previous topic</h4>
325 <p class="topless"><a href="interface.html"
326 title="previous chapter">1. Interface conventions</a></p>
327 <h4>Next topic</h4>
328 <p class="topless"><a href="error.html"
329 title="next chapter">3. Error handing</a></p><h4>Downloads</h4>
330
331<p class="topless">
332<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
333<a href="http://www.ravenbrook.com/project/mps/release/">All MPS Kit releases</a>
334</p>
335
336<h4>Issues</h4>
337
338<p class="topless">
339<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>
340<a href="http://www.ravenbrook.com/project/mps/issue/?action=fixed&release_fixed=1.111.0">Issues fixed in release 1.111.0</a>
341</p><h4>Contact us</h4>
342
343<p class="topless"><a href="mailto:mps-questions@ravenbrook.com">mps-questions@ravenbrook.com</a></p>
344 </div>
345 </div>
346 <div class="clearer"></div>
347 </div>
348 <div class="related">
349 <h3>Navigation</h3>
350 <ul>
351 <li class="right" style="margin-right: 10px">
352 <a href="../genindex.html" title="General Index"
353 >index</a></li>
354 <li class="right" >
355 <a href="error.html" title="3. Error handing"
356 >next</a> |</li>
357 <li class="right" >
358 <a href="interface.html" title="1. Interface conventions"
359 >previous</a> |</li>
360 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
361 <li><a href="index.html" >Reference</a> &raquo;</li>
362 </ul>
363 </div>
364 <div class="footer">
365 &copy; <a href="../copyright.html">Copyright</a> 2013, Ravenbrook Limited.
366 Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
367 </div>
368 </body>
369</html> \ No newline at end of file
diff --git a/mps/manual/html/topic/location.html b/mps/manual/html/topic/location.html
index 4e7f1151098..466d21f4b29 100644
--- a/mps/manual/html/topic/location.html
+++ b/mps/manual/html/topic/location.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>13. Location dependency &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>14. Location dependency &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="14. Segregated allocation caches" href="cache.html" /> 31 <link rel="next" title="15. Segregated allocation caches" href="cache.html" />
32 <link rel="prev" title="12. Finalization" href="finalization.html" /> 32 <link rel="prev" title="13. Finalization" href="finalization.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="cache.html" title="14. Segregated allocation caches" 42 <a href="cache.html" title="15. Segregated allocation caches"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="finalization.html" title="12. Finalization" 45 <a href="finalization.html" title="13. Finalization"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="location-dependency"> 57 <div class="section" id="location-dependency">
58<span id="topic-location"></span><span id="index-0"></span><h1>13. Location dependency<a class="headerlink" href="#location-dependency" title="Permalink to this headline">¶</a></h1> 58<span id="topic-location"></span><span id="index-0"></span><h1>14. Location dependency<a class="headerlink" href="#location-dependency" title="Permalink to this headline">¶</a></h1>
59<p>Location dependencies provide a means by which the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client 59<p>Location dependencies provide a means by which the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client
60program</em></a> can depend on the <em class="dfn">location</em> of blocks (that is, on the 60program</em></a> can depend on the <em class="dfn">location</em> of blocks (that is, on the
61bits in pointers to the blocks) in the presence of a <a class="reference internal" href="../glossary/m.html#term-moving-memory-manager"><em class="xref std std-term">moving 61bits in pointers to the blocks) in the presence of a <a class="reference internal" href="../glossary/m.html#term-moving-memory-manager"><em class="xref std std-term">moving
@@ -66,7 +66,7 @@ address-based hash tables and that will be used as a running example.
66See the section <a class="reference internal" href="../guide/advanced.html#guide-advanced-location"><em>Location dependency</em></a> in the Guide for a more 66See the section <a class="reference internal" href="../guide/advanced.html#guide-advanced-location"><em>Location dependency</em></a> in the Guide for a more
67detailed look at this example.</p> 67detailed look at this example.</p>
68<div class="section" id="terminology"> 68<div class="section" id="terminology">
69<h2>13.1. Terminology<a class="headerlink" href="#terminology" title="Permalink to this headline">¶</a></h2> 69<h2>14.1. Terminology<a class="headerlink" href="#terminology" title="Permalink to this headline">¶</a></h2>
70<p>A <em class="dfn">location dependency</em> is represented by an structure of type 70<p>A <em class="dfn">location dependency</em> is represented by an structure of type
71<a class="reference internal" href="#mps_ld_s" title="mps_ld_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_ld_s</span></tt></a>. It encapsulates a set of dependencies on the 71<a class="reference internal" href="#mps_ld_s" title="mps_ld_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_ld_s</span></tt></a>. It encapsulates a set of dependencies on the
72locations of blocks. It can be used to determine whether any of the 72locations of blocks. It can be used to determine whether any of the
@@ -85,7 +85,7 @@ if any of the blocks whose location has been depended on might have
85moved since the respective dependency was made.</p> 85moved since the respective dependency was made.</p>
86</div> 86</div>
87<div class="section" id="creating-dependencies"> 87<div class="section" id="creating-dependencies">
88<span id="index-1"></span><h2>13.2. Creating dependencies<a class="headerlink" href="#creating-dependencies" title="Permalink to this headline">¶</a></h2> 88<span id="index-1"></span><h2>14.2. Creating dependencies<a class="headerlink" href="#creating-dependencies" title="Permalink to this headline">¶</a></h2>
89<p>The <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> must provide space for the 89<p>The <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> must provide space for the
90<a class="reference internal" href="#mps_ld_s" title="mps_ld_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_ld_s</span></tt></a> structure. Typically, this will be inlined in some 90<a class="reference internal" href="#mps_ld_s" title="mps_ld_s"><tt class="xref c c-type docutils literal"><span class="pre">mps_ld_s</span></tt></a> structure. Typically, this will be inlined in some
91larger structure. This structure can be in memory managed by the MPS 91larger structure. This structure can be in memory managed by the MPS
@@ -93,11 +93,11 @@ or elsewhere; that doesn&#8217;t matter.</p>
93<p>For example, the toy Scheme interpreter inlines the location 93<p>For example, the toy Scheme interpreter inlines the location
94dependency in its hash table structure:</p> 94dependency in its hash table structure:</p>
95<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">table_s</span> <span class="p">{</span> 95<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">table_s</span> <span class="p">{</span>
96 <span class="kt">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_TABLE */</span> 96 <span class="n">type_t</span> <span class="n">type</span><span class="p">;</span> <span class="cm">/* TYPE_TABLE */</span>
97 <span class="kt">hash_t</span> <span class="n">hash</span><span class="p">;</span> <span class="cm">/* hash function */</span> 97 <span class="n">hash_t</span> <span class="n">hash</span><span class="p">;</span> <span class="cm">/* hash function */</span>
98 <span class="kt">cmp_t</span> <span class="n">cmp</span><span class="p">;</span> <span class="cm">/* comparison function */</span> 98 <span class="n">cmp_t</span> <span class="n">cmp</span><span class="p">;</span> <span class="cm">/* comparison function */</span>
99<span class="hll"> <span class="n">mps_ld_s</span> <span class="n">ld</span><span class="p">;</span> <span class="cm">/* location dependency */</span> 99<span class="hll"> <span class="n">mps_ld_s</span> <span class="n">ld</span><span class="p">;</span> <span class="cm">/* location dependency */</span>
100</span> <span class="kt">obj_t</span> <span class="n">buckets</span><span class="p">;</span> <span class="cm">/* hash buckets */</span> 100</span> <span class="n">obj_t</span> <span class="n">buckets</span><span class="p">;</span> <span class="cm">/* hash buckets */</span>
101<span class="p">}</span> <span class="n">table_s</span><span class="p">;</span> 101<span class="p">}</span> <span class="n">table_s</span><span class="p">;</span>
102</pre></div> 102</pre></div>
103</div> 103</div>
@@ -113,7 +113,7 @@ dependencies from the structure. For example, this is normally done
113whenever <a class="reference internal" href="#mps_ld_isstale" title="mps_ld_isstale"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_isstale()</span></tt></a> returns true.</p> 113whenever <a class="reference internal" href="#mps_ld_isstale" title="mps_ld_isstale"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_isstale()</span></tt></a> returns true.</p>
114</div> 114</div>
115<div class="section" id="adding-dependencies"> 115<div class="section" id="adding-dependencies">
116<span id="index-2"></span><h2>13.3. Adding dependencies<a class="headerlink" href="#adding-dependencies" title="Permalink to this headline">¶</a></h2> 116<span id="index-2"></span><h2>14.3. Adding dependencies<a class="headerlink" href="#adding-dependencies" title="Permalink to this headline">¶</a></h2>
117<p><em>Before</em> the location of a block is depended on (for example, 117<p><em>Before</em> the location of a block is depended on (for example,
118hashed) a reference to the block may be added to a location 118hashed) a reference to the block may be added to a location
119dependency by calling <a class="reference internal" href="#mps_ld_add" title="mps_ld_add"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_add()</span></tt></a>. Dependencies on many 119dependency by calling <a class="reference internal" href="#mps_ld_add" title="mps_ld_add"><tt class="xref c c-func docutils literal"><span class="pre">mps_ld_add()</span></tt></a>. Dependencies on many
@@ -125,18 +125,18 @@ references from one dependency to another.</p>
125that is added to the table must be added to the dependency before its 125that is added to the table must be added to the dependency before its
126address is hashed. In the toy Scheme interpreter this is most easily 126address is hashed. In the toy Scheme interpreter this is most easily
127done in the function that hashes an address:</p> 127done in the function that hashes an address:</p>
128<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">unsigned</span> <span class="kt">long</span> <span class="nf">eq_hash</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">obj</span><span class="p">,</span> <span class="kt">mps_ld_t</span> <span class="n">ld</span><span class="p">)</span> 128<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">unsigned</span> <span class="kt">long</span> <span class="nf">eq_hash</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">obj</span><span class="p">,</span> <span class="n">mps_ld_t</span> <span class="n">ld</span><span class="p">)</span>
129<span class="p">{</span> 129<span class="p">{</span>
130 <span class="k">union</span> <span class="p">{</span><span class="kt">char</span> <span class="n">s</span><span class="p">[</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">obj_t</span><span class="p">)];</span> <span class="kt">obj_t</span> <span class="n">addr</span><span class="p">;}</span> <span class="n">u</span><span class="p">;</span> 130 <span class="k">union</span> <span class="p">{</span><span class="kt">char</span> <span class="n">s</span><span class="p">[</span><span class="k">sizeof</span><span class="p">(</span><span class="n">obj_t</span><span class="p">)];</span> <span class="n">obj_t</span> <span class="n">addr</span><span class="p">;}</span> <span class="n">u</span><span class="p">;</span>
131<span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">ld</span><span class="p">)</span> <span class="n">mps_ld_add</span><span class="p">(</span><span class="n">ld</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">obj</span><span class="p">);</span> 131<span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">ld</span><span class="p">)</span> <span class="n">mps_ld_add</span><span class="p">(</span><span class="n">ld</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">obj</span><span class="p">);</span>
132</span> <span class="n">u</span><span class="p">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">obj</span><span class="p">;</span> 132</span> <span class="n">u</span><span class="p">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">obj</span><span class="p">;</span>
133 <span class="k">return</span> <span class="n">hash</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">s</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="kt">obj_t</span><span class="p">));</span> 133 <span class="k">return</span> <span class="n">hash</span><span class="p">(</span><span class="n">u</span><span class="p">.</span><span class="n">s</span><span class="p">,</span> <span class="k">sizeof</span><span class="p">(</span><span class="n">obj_t</span><span class="p">));</span>
134<span class="p">}</span> 134<span class="p">}</span>
135</pre></div> 135</pre></div>
136</div> 136</div>
137</div> 137</div>
138<div class="section" id="testing-dependencies-for-staleness"> 138<div class="section" id="testing-dependencies-for-staleness">
139<span id="index-3"></span><h2>13.4. Testing dependencies for staleness<a class="headerlink" href="#testing-dependencies-for-staleness" title="Permalink to this headline">¶</a></h2> 139<span id="index-3"></span><h2>14.4. Testing dependencies for staleness<a class="headerlink" href="#testing-dependencies-for-staleness" title="Permalink to this headline">¶</a></h2>
140<p>When the locations of blocks are used (during a hash table lookup for 140<p>When the locations of blocks are used (during a hash table lookup for
141example), the computation should be carried out and the result used in 141example), the computation should be carried out and the result used in
142the usual way (for example, the pointer is hashed and the has used to 142the usual way (for example, the pointer is hashed and the has used to
@@ -168,7 +168,7 @@ old locations of the blocks; and</li>
168</ol> 168</ol>
169<p>For example, in the case of a hash table you should rehash based on 169<p>For example, in the case of a hash table you should rehash based on
170the new locations of the blocks.</p> 170the new locations of the blocks.</p>
171<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">obj_t</span> <span class="nf">table_ref</span><span class="p">(</span><span class="kt">obj_t</span> <span class="n">tbl</span><span class="p">,</span> <span class="kt">obj_t</span> <span class="n">key</span><span class="p">)</span> 171<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">obj_t</span> <span class="nf">table_ref</span><span class="p">(</span><span class="n">obj_t</span> <span class="n">tbl</span><span class="p">,</span> <span class="n">obj_t</span> <span class="n">key</span><span class="p">)</span>
172<span class="p">{</span> 172<span class="p">{</span>
173 <span class="k">struct</span> <span class="n">bucket_s</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="n">buckets_find</span><span class="p">(</span><span class="n">tbl</span><span class="p">,</span> <span class="n">tbl</span><span class="o">-&gt;</span><span class="n">table</span><span class="p">.</span><span class="n">buckets</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span> 173 <span class="k">struct</span> <span class="n">bucket_s</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="n">buckets_find</span><span class="p">(</span><span class="n">tbl</span><span class="p">,</span> <span class="n">tbl</span><span class="o">-&gt;</span><span class="n">table</span><span class="p">.</span><span class="n">buckets</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="nb">NULL</span><span class="p">);</span>
174 <span class="k">if</span> <span class="p">(</span><span class="n">b</span> <span class="o">&amp;&amp;</span> <span class="n">b</span><span class="o">-&gt;</span><span class="n">key</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span> <span class="n">b</span><span class="o">-&gt;</span><span class="n">key</span> <span class="o">!=</span> <span class="n">obj_deleted</span><span class="p">)</span> 174 <span class="k">if</span> <span class="p">(</span><span class="n">b</span> <span class="o">&amp;&amp;</span> <span class="n">b</span><span class="o">-&gt;</span><span class="n">key</span> <span class="o">!=</span> <span class="nb">NULL</span> <span class="o">&amp;&amp;</span> <span class="n">b</span><span class="o">-&gt;</span><span class="n">key</span> <span class="o">!=</span> <span class="n">obj_deleted</span><span class="p">)</span>
@@ -195,7 +195,7 @@ it might as well find the bucket containing <tt class="docutils literal"><span c
195and return it.</p> 195and return it.</p>
196</div> 196</div>
197<div class="section" id="thread-safety"> 197<div class="section" id="thread-safety">
198<span id="index-4"></span><h2>13.5. Thread safety<a class="headerlink" href="#thread-safety" title="Permalink to this headline">¶</a></h2> 198<span id="index-4"></span><h2>14.5. Thread safety<a class="headerlink" href="#thread-safety" title="Permalink to this headline">¶</a></h2>
199<p>The functions are all thread-safe with respect to operations on 199<p>The functions are all thread-safe with respect to operations on
200different location dependencies. That means that it is not necessary 200different location dependencies. That means that it is not necessary
201for threads to interlock if they are performing operations on 201for threads to interlock if they are performing operations on
@@ -204,7 +204,7 @@ functions detail their thread-safety attributes if multiple threads
204need to access the same location dependency.</p> 204need to access the same location dependency.</p>
205</div> 205</div>
206<div class="section" id="location-dependency-interface"> 206<div class="section" id="location-dependency-interface">
207<span id="index-5"></span><h2>13.6. Location dependency interface<a class="headerlink" href="#location-dependency-interface" title="Permalink to this headline">¶</a></h2> 207<span id="index-5"></span><h2>14.6. Location dependency interface<a class="headerlink" href="#location-dependency-interface" title="Permalink to this headline">¶</a></h2>
208<dl class="type"> 208<dl class="type">
209<dt id="mps_ld_t"> 209<dt id="mps_ld_t">
210<tt class="descname">mps_ld_t</tt><a class="headerlink" href="#mps_ld_t" title="Permalink to this definition">¶</a></dt> 210<tt class="descname">mps_ld_t</tt><a class="headerlink" href="#mps_ld_t" title="Permalink to this definition">¶</a></dt>
@@ -229,7 +229,7 @@ found in the table.</p>
229<dd><p>The type of the structure used to represent a <a class="reference internal" href="../glossary/l.html#term-location-dependency"><em class="xref std std-term">location 229<dd><p>The type of the structure used to represent a <a class="reference internal" href="../glossary/l.html#term-location-dependency"><em class="xref std std-term">location
230dependency</em></a>.</p> 230dependency</em></a>.</p>
231<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_ld_s</span> <span class="p">{</span> 231<div class="highlight-c"><div class="highlight"><pre><span class="k">typedef</span> <span class="k">struct</span> <span class="n">mps_ld_s</span> <span class="p">{</span>
232 <span class="kt">mps_word_t</span> <span class="n">w0</span><span class="p">,</span> <span class="n">w1</span><span class="p">;</span> 232 <span class="n">mps_word_t</span> <span class="n">w0</span><span class="p">,</span> <span class="n">w1</span><span class="p">;</span>
233<span class="p">}</span> <span class="n">mps_ld_s</span><span class="p">;</span> 233<span class="p">}</span> <span class="n">mps_ld_s</span><span class="p">;</span>
234</pre></div> 234</pre></div>
235</div> 235</div>
@@ -353,23 +353,23 @@ other location dependency function.</p>
353 </a></p> 353 </a></p>
354 <h3><a href="../index.html">Table Of Contents</a></h3> 354 <h3><a href="../index.html">Table Of Contents</a></h3>
355 <ul> 355 <ul>
356<li><a class="reference internal" href="#">13. Location dependency</a><ul> 356<li><a class="reference internal" href="#">14. Location dependency</a><ul>
357<li><a class="reference internal" href="#terminology">13.1. Terminology</a></li> 357<li><a class="reference internal" href="#terminology">14.1. Terminology</a></li>
358<li><a class="reference internal" href="#creating-dependencies">13.2. Creating dependencies</a></li> 358<li><a class="reference internal" href="#creating-dependencies">14.2. Creating dependencies</a></li>
359<li><a class="reference internal" href="#adding-dependencies">13.3. Adding dependencies</a></li> 359<li><a class="reference internal" href="#adding-dependencies">14.3. Adding dependencies</a></li>
360<li><a class="reference internal" href="#testing-dependencies-for-staleness">13.4. Testing dependencies for staleness</a></li> 360<li><a class="reference internal" href="#testing-dependencies-for-staleness">14.4. Testing dependencies for staleness</a></li>
361<li><a class="reference internal" href="#thread-safety">13.5. Thread safety</a></li> 361<li><a class="reference internal" href="#thread-safety">14.5. Thread safety</a></li>
362<li><a class="reference internal" href="#location-dependency-interface">13.6. Location dependency interface</a></li> 362<li><a class="reference internal" href="#location-dependency-interface">14.6. Location dependency interface</a></li>
363</ul> 363</ul>
364</li> 364</li>
365</ul> 365</ul>
366 366
367 <h4>Previous topic</h4> 367 <h4>Previous topic</h4>
368 <p class="topless"><a href="finalization.html" 368 <p class="topless"><a href="finalization.html"
369 title="previous chapter">12. Finalization</a></p> 369 title="previous chapter">13. Finalization</a></p>
370 <h4>Next topic</h4> 370 <h4>Next topic</h4>
371 <p class="topless"><a href="cache.html" 371 <p class="topless"><a href="cache.html"
372 title="next chapter">14. Segregated allocation caches</a></p><h4>Downloads</h4> 372 title="next chapter">15. Segregated allocation caches</a></p><h4>Downloads</h4>
373 373
374<p class="topless"> 374<p class="topless">
375<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 375<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -395,10 +395,10 @@ other location dependency function.</p>
395 <a href="../genindex.html" title="General Index" 395 <a href="../genindex.html" title="General Index"
396 >index</a></li> 396 >index</a></li>
397 <li class="right" > 397 <li class="right" >
398 <a href="cache.html" title="14. Segregated allocation caches" 398 <a href="cache.html" title="15. Segregated allocation caches"
399 >next</a> |</li> 399 >next</a> |</li>
400 <li class="right" > 400 <li class="right" >
401 <a href="finalization.html" title="12. Finalization" 401 <a href="finalization.html" title="13. Finalization"
402 >previous</a> |</li> 402 >previous</a> |</li>
403 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 403 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
404 <li><a href="index.html" >Reference</a> &raquo;</li> 404 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/message.html b/mps/manual/html/topic/message.html
index 82d6dd19e33..68f46940050 100644
--- a/mps/manual/html/topic/message.html
+++ b/mps/manual/html/topic/message.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>11. Messages &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>12. Messages &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="12. Finalization" href="finalization.html" /> 31 <link rel="next" title="13. Finalization" href="finalization.html" />
32 <link rel="prev" title="10. Garbage collection" href="collection.html" /> 32 <link rel="prev" title="11. Garbage collection" href="collection.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="finalization.html" title="12. Finalization" 42 <a href="finalization.html" title="13. Finalization"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="collection.html" title="10. Garbage collection" 45 <a href="collection.html" title="11. Garbage collection"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="messages"> 57 <div class="section" id="messages">
58<span id="topic-message"></span><span id="index-0"></span><h1>11. Messages<a class="headerlink" href="#messages" title="Permalink to this headline">¶</a></h1> 58<span id="topic-message"></span><span id="index-0"></span><h1>12. Messages<a class="headerlink" href="#messages" title="Permalink to this headline">¶</a></h1>
59<p>The MPS sometimes needs to communicate with the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> 59<p>The MPS sometimes needs to communicate with the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a>
60about events which occur <a class="reference internal" href="../glossary/a.html#term-asynchronous-garbage-collector"><em class="xref std std-term">asynchronously</em></a>, and so information cannot be returned as function call 60about events which occur <a class="reference internal" href="../glossary/a.html#term-asynchronous-garbage-collector"><em class="xref std std-term">asynchronously</em></a>, and so information cannot be returned as function call
61results.</p> 61results.</p>
@@ -79,7 +79,7 @@ message queue to grow without limit will eventually find that new
79garbage collections no longer start until some of these messages are 79garbage collections no longer start until some of these messages are
80retrieved and discarded.</p> 80retrieved and discarded.</p>
81<div class="section" id="finalization-messages"> 81<div class="section" id="finalization-messages">
82<span id="index-1"></span><h2>11.1. Finalization messages<a class="headerlink" href="#finalization-messages" title="Permalink to this headline">¶</a></h2> 82<span id="index-1"></span><h2>12.1. Finalization messages<a class="headerlink" href="#finalization-messages" title="Permalink to this headline">¶</a></h2>
83<p><a class="reference internal" href="../glossary/f.html#term-finalization"><em class="xref std std-term">Finalization</em></a> is implemented by posting a finalization message 83<p><a class="reference internal" href="../glossary/f.html#term-finalization"><em class="xref std std-term">Finalization</em></a> is implemented by posting a finalization message
84(of type <a class="reference internal" href="finalization.html#mps_message_type_finalization" title="mps_message_type_finalization"><tt class="xref c c-func docutils literal"><span class="pre">mps_message_type_finalization()</span></tt></a>) to the arena&#8217;s 84(of type <a class="reference internal" href="finalization.html#mps_message_type_finalization" title="mps_message_type_finalization"><tt class="xref c c-func docutils literal"><span class="pre">mps_message_type_finalization()</span></tt></a>) to the arena&#8217;s
85message queue. This allows the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> to perform the 85message queue. This allows the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> to perform the
@@ -91,7 +91,7 @@ removed from the message queue and discarded, by calling
91<p>See <a class="reference internal" href="finalization.html#topic-finalization"><em>Finalization</em></a>.</p> 91<p>See <a class="reference internal" href="finalization.html#topic-finalization"><em>Finalization</em></a>.</p>
92</div> 92</div>
93<div class="section" id="example-interactive-chatter"> 93<div class="section" id="example-interactive-chatter">
94<span id="index-2"></span><h2>11.2. Example: interactive chatter<a class="headerlink" href="#example-interactive-chatter" title="Permalink to this headline">¶</a></h2> 94<span id="index-2"></span><h2>12.2. Example: interactive chatter<a class="headerlink" href="#example-interactive-chatter" title="Permalink to this headline">¶</a></h2>
95<p>The toy Scheme interpreter enables garbage collection messages when 95<p>The toy Scheme interpreter enables garbage collection messages when
96started in interactive mode:</p> 96started in interactive mode:</p>
97<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_message_type_enable</span><span class="p">(</span><span class="n">arena</span><span class="p">,</span> <span class="n">mps_message_type_gc</span><span class="p">());</span> 97<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_message_type_enable</span><span class="p">(</span><span class="n">arena</span><span class="p">,</span> <span class="n">mps_message_type_gc</span><span class="p">());</span>
@@ -103,11 +103,11 @@ messages from the message queue and prints a description of the
103contents of each one:</p> 103contents of each one:</p>
104<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">mps_chat</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> 104<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">void</span> <span class="nf">mps_chat</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
105<span class="p">{</span> 105<span class="p">{</span>
106 <span class="kt">mps_message_type_t</span> <span class="n">type</span><span class="p">;</span> 106 <span class="n">mps_message_type_t</span> <span class="n">type</span><span class="p">;</span>
107 107
108 <span class="k">while</span> <span class="p">(</span><span class="n">mps_message_queue_type</span><span class="p">(</span><span class="o">&amp;</span><span class="n">type</span><span class="p">,</span> <span class="n">arena</span><span class="p">))</span> <span class="p">{</span> 108 <span class="k">while</span> <span class="p">(</span><span class="n">mps_message_queue_type</span><span class="p">(</span><span class="o">&amp;</span><span class="n">type</span><span class="p">,</span> <span class="n">arena</span><span class="p">))</span> <span class="p">{</span>
109 <span class="kt">mps_message_t</span> <span class="n">message</span><span class="p">;</span> 109 <span class="n">mps_message_t</span> <span class="n">message</span><span class="p">;</span>
110 <span class="kt">mps_bool_t</span> <span class="n">b</span><span class="p">;</span> 110 <span class="n">mps_bool_t</span> <span class="n">b</span><span class="p">;</span>
111 <span class="n">b</span> <span class="o">=</span> <span class="n">mps_message_get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">message</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">type</span><span class="p">);</span> 111 <span class="n">b</span> <span class="o">=</span> <span class="n">mps_message_get</span><span class="p">(</span><span class="o">&amp;</span><span class="n">message</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> <span class="n">type</span><span class="p">);</span>
112 <span class="n">assert</span><span class="p">(</span><span class="n">b</span><span class="p">);</span> <span class="cm">/* we just checked there was one */</span> 112 <span class="n">assert</span><span class="p">(</span><span class="n">b</span><span class="p">);</span> <span class="cm">/* we just checked there was one */</span>
113 113
@@ -165,7 +165,7 @@ slowing Emacs down and tell them that it had been sped up.</div></blockquote>
165</div> 165</div>
166</div> 166</div>
167<div class="section" id="message-types"> 167<div class="section" id="message-types">
168<span id="index-3"></span><h2>11.3. Message types<a class="headerlink" href="#message-types" title="Permalink to this headline">¶</a></h2> 168<span id="index-3"></span><h2>12.3. Message types<a class="headerlink" href="#message-types" title="Permalink to this headline">¶</a></h2>
169<dl class="type"> 169<dl class="type">
170<dt id="mps_message_type_t"> 170<dt id="mps_message_type_t">
171<tt class="descname">mps_message_type_t</tt><a class="headerlink" href="#mps_message_type_t" title="Permalink to this definition">¶</a></dt> 171<tt class="descname">mps_message_type_t</tt><a class="headerlink" href="#mps_message_type_t" title="Permalink to this definition">¶</a></dt>
@@ -221,7 +221,7 @@ already enabled, in which case it has no effect.</p>
221 221
222</div> 222</div>
223<div class="section" id="message-interface"> 223<div class="section" id="message-interface">
224<span id="index-4"></span><h2>11.4. Message interface<a class="headerlink" href="#message-interface" title="Permalink to this headline">¶</a></h2> 224<span id="index-4"></span><h2>12.4. Message interface<a class="headerlink" href="#message-interface" title="Permalink to this headline">¶</a></h2>
225<dl class="type"> 225<dl class="type">
226<dt id="mps_message_t"> 226<dt id="mps_message_t">
227<tt class="descname">mps_message_t</tt><a class="headerlink" href="#mps_message_t" title="Permalink to this definition">¶</a></dt> 227<tt class="descname">mps_message_t</tt><a class="headerlink" href="#mps_message_t" title="Permalink to this definition">¶</a></dt>
@@ -297,7 +297,7 @@ not yet discarded.</p>
297 297
298</div> 298</div>
299<div class="section" id="message-queue-interface"> 299<div class="section" id="message-queue-interface">
300<span id="index-5"></span><h2>11.5. Message queue interface<a class="headerlink" href="#message-queue-interface" title="Permalink to this headline">¶</a></h2> 300<span id="index-5"></span><h2>12.5. Message queue interface<a class="headerlink" href="#message-queue-interface" title="Permalink to this headline">¶</a></h2>
301<dl class="function"> 301<dl class="function">
302<dt id="mps_message_get"> 302<dt id="mps_message_get">
303<a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a> <tt class="descname">mps_message_get</tt><big>(</big><a class="reference internal" href="#mps_message_t" title="mps_message_t">mps_message_t</a><em>&nbsp;*message_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="#mps_message_type_t" title="mps_message_type_t">mps_message_type_t</a><em>&nbsp;message_type</em><big>)</big><a class="headerlink" href="#mps_message_get" title="Permalink to this definition">¶</a></dt> 303<a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a> <tt class="descname">mps_message_get</tt><big>(</big><a class="reference internal" href="#mps_message_t" title="mps_message_t">mps_message_t</a><em>&nbsp;*message_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="#mps_message_type_t" title="mps_message_type_t">mps_message_type_t</a><em>&nbsp;message_type</em><big>)</big><a class="headerlink" href="#mps_message_get" title="Permalink to this definition">¶</a></dt>
@@ -362,22 +362,22 @@ usually simpler to call <a class="reference internal" href="#mps_message_get" ti
362 </a></p> 362 </a></p>
363 <h3><a href="../index.html">Table Of Contents</a></h3> 363 <h3><a href="../index.html">Table Of Contents</a></h3>
364 <ul> 364 <ul>
365<li><a class="reference internal" href="#">11. Messages</a><ul> 365<li><a class="reference internal" href="#">12. Messages</a><ul>
366<li><a class="reference internal" href="#finalization-messages">11.1. Finalization messages</a></li> 366<li><a class="reference internal" href="#finalization-messages">12.1. Finalization messages</a></li>
367<li><a class="reference internal" href="#example-interactive-chatter">11.2. Example: interactive chatter</a></li> 367<li><a class="reference internal" href="#example-interactive-chatter">12.2. Example: interactive chatter</a></li>
368<li><a class="reference internal" href="#message-types">11.3. Message types</a></li> 368<li><a class="reference internal" href="#message-types">12.3. Message types</a></li>
369<li><a class="reference internal" href="#message-interface">11.4. Message interface</a></li> 369<li><a class="reference internal" href="#message-interface">12.4. Message interface</a></li>
370<li><a class="reference internal" href="#message-queue-interface">11.5. Message queue interface</a></li> 370<li><a class="reference internal" href="#message-queue-interface">12.5. Message queue interface</a></li>
371</ul> 371</ul>
372</li> 372</li>
373</ul> 373</ul>
374 374
375 <h4>Previous topic</h4> 375 <h4>Previous topic</h4>
376 <p class="topless"><a href="collection.html" 376 <p class="topless"><a href="collection.html"
377 title="previous chapter">10. Garbage collection</a></p> 377 title="previous chapter">11. Garbage collection</a></p>
378 <h4>Next topic</h4> 378 <h4>Next topic</h4>
379 <p class="topless"><a href="finalization.html" 379 <p class="topless"><a href="finalization.html"
380 title="next chapter">12. Finalization</a></p><h4>Downloads</h4> 380 title="next chapter">13. Finalization</a></p><h4>Downloads</h4>
381 381
382<p class="topless"> 382<p class="topless">
383<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 383<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -403,10 +403,10 @@ usually simpler to call <a class="reference internal" href="#mps_message_get" ti
403 <a href="../genindex.html" title="General Index" 403 <a href="../genindex.html" title="General Index"
404 >index</a></li> 404 >index</a></li>
405 <li class="right" > 405 <li class="right" >
406 <a href="finalization.html" title="12. Finalization" 406 <a href="finalization.html" title="13. Finalization"
407 >next</a> |</li> 407 >next</a> |</li>
408 <li class="right" > 408 <li class="right" >
409 <a href="collection.html" title="10. Garbage collection" 409 <a href="collection.html" title="11. Garbage collection"
410 >previous</a> |</li> 410 >previous</a> |</li>
411 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 411 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
412 <li><a href="index.html" >Reference</a> &raquo;</li> 412 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/pattern.html b/mps/manual/html/topic/pattern.html
index 2e677d70a96..abd9ef06d87 100644
--- a/mps/manual/html/topic/pattern.html
+++ b/mps/manual/html/topic/pattern.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>15. Allocation patterns &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>16. Allocation patterns &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="16. Allocation frames" href="frame.html" /> 31 <link rel="next" title="17. Allocation frames" href="frame.html" />
32 <link rel="prev" title="14. Segregated allocation caches" href="cache.html" /> 32 <link rel="prev" title="15. Segregated allocation caches" href="cache.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="frame.html" title="16. Allocation frames" 42 <a href="frame.html" title="17. Allocation frames"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="cache.html" title="14. Segregated allocation caches" 45 <a href="cache.html" title="15. Segregated allocation caches"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="allocation-patterns"> 57 <div class="section" id="allocation-patterns">
58<span id="topic-pattern"></span><span id="index-0"></span><h1>15. Allocation patterns<a class="headerlink" href="#allocation-patterns" title="Permalink to this headline">¶</a></h1> 58<span id="topic-pattern"></span><span id="index-0"></span><h1>16. Allocation patterns<a class="headerlink" href="#allocation-patterns" title="Permalink to this headline">¶</a></h1>
59<p>An <em class="dfn">allocation pattern</em> is a hint to the MPS to expect a 59<p>An <em class="dfn">allocation pattern</em> is a hint to the MPS to expect a
60particular pattern of allocation on an <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a>. The 60particular pattern of allocation on an <a class="reference internal" href="../glossary/a.html#term-allocation-point"><em class="xref std std-term">allocation point</em></a>. The
61MPS may use this hint to schedule more effective garbage collection.</p> 61MPS may use this hint to schedule more effective garbage collection.</p>
@@ -129,7 +129,7 @@ that point in time.</p>
129</dd></dl> 129</dd></dl>
130 130
131<div class="section" id="ramp-allocation"> 131<div class="section" id="ramp-allocation">
132<span id="topic-pattern-ramp"></span><span id="index-1"></span><h2>15.1. Ramp allocation<a class="headerlink" href="#ramp-allocation" title="Permalink to this headline">¶</a></h2> 132<span id="topic-pattern-ramp"></span><span id="index-1"></span><h2>16.1. Ramp allocation<a class="headerlink" href="#ramp-allocation" title="Permalink to this headline">¶</a></h2>
133<p><em class="dfn">Ramp allocation</em> a pattern of allocation whereby the 133<p><em class="dfn">Ramp allocation</em> a pattern of allocation whereby the
134<a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> builds up an increasingly large data structure, 134<a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> builds up an increasingly large data structure,
135the live size of which increases until a particular time, at which 135the live size of which increases until a particular time, at which
@@ -187,18 +187,18 @@ ended.</p>
187 </a></p> 187 </a></p>
188 <h3><a href="../index.html">Table Of Contents</a></h3> 188 <h3><a href="../index.html">Table Of Contents</a></h3>
189 <ul> 189 <ul>
190<li><a class="reference internal" href="#">15. Allocation patterns</a><ul> 190<li><a class="reference internal" href="#">16. Allocation patterns</a><ul>
191<li><a class="reference internal" href="#ramp-allocation">15.1. Ramp allocation</a></li> 191<li><a class="reference internal" href="#ramp-allocation">16.1. Ramp allocation</a></li>
192</ul> 192</ul>
193</li> 193</li>
194</ul> 194</ul>
195 195
196 <h4>Previous topic</h4> 196 <h4>Previous topic</h4>
197 <p class="topless"><a href="cache.html" 197 <p class="topless"><a href="cache.html"
198 title="previous chapter">14. Segregated allocation caches</a></p> 198 title="previous chapter">15. Segregated allocation caches</a></p>
199 <h4>Next topic</h4> 199 <h4>Next topic</h4>
200 <p class="topless"><a href="frame.html" 200 <p class="topless"><a href="frame.html"
201 title="next chapter">16. Allocation frames</a></p><h4>Downloads</h4> 201 title="next chapter">17. Allocation frames</a></p><h4>Downloads</h4>
202 202
203<p class="topless"> 203<p class="topless">
204<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 204<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -224,10 +224,10 @@ ended.</p>
224 <a href="../genindex.html" title="General Index" 224 <a href="../genindex.html" title="General Index"
225 >index</a></li> 225 >index</a></li>
226 <li class="right" > 226 <li class="right" >
227 <a href="frame.html" title="16. Allocation frames" 227 <a href="frame.html" title="17. Allocation frames"
228 >next</a> |</li> 228 >next</a> |</li>
229 <li class="right" > 229 <li class="right" >
230 <a href="cache.html" title="14. Segregated allocation caches" 230 <a href="cache.html" title="15. Segregated allocation caches"
231 >previous</a> |</li> 231 >previous</a> |</li>
232 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 232 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
233 <li><a href="index.html" >Reference</a> &raquo;</li> 233 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/plinth.html b/mps/manual/html/topic/plinth.html
index cb9a212e302..ef82a373bc7 100644
--- a/mps/manual/html/topic/plinth.html
+++ b/mps/manual/html/topic/plinth.html
@@ -218,13 +218,13 @@ scheduling decisions and the quality of telemetry output. For
218instance, with <tt class="docutils literal"><span class="pre">getrusage()</span></tt>:</p> 218instance, with <tt class="docutils literal"><span class="pre">getrusage()</span></tt>:</p>
219<div class="highlight-c"><div class="highlight"><pre><span class="cp">#include &lt;sys/resource.h&gt;</span> 219<div class="highlight-c"><div class="highlight"><pre><span class="cp">#include &lt;sys/resource.h&gt;</span>
220 220
221<span class="kt">mps_clock_t</span> <span class="nf">mps_clock</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="p">{</span> 221<span class="n">mps_clock_t</span> <span class="nf">mps_clock</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span> <span class="p">{</span>
222 <span class="k">struct</span> <span class="n">rusage</span> <span class="n">s</span><span class="p">;</span> 222 <span class="k">struct</span> <span class="n">rusage</span> <span class="n">s</span><span class="p">;</span>
223 <span class="kt">int</span> <span class="n">res</span> <span class="o">=</span> <span class="n">getrusage</span><span class="p">(</span><span class="n">RUSAGE_SELF</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">);</span> 223 <span class="kt">int</span> <span class="n">res</span> <span class="o">=</span> <span class="n">getrusage</span><span class="p">(</span><span class="n">RUSAGE_SELF</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">s</span><span class="p">);</span>
224 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> 224 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
225 <span class="cm">/* handle error */</span> 225 <span class="cm">/* handle error */</span>
226 <span class="p">}</span> 226 <span class="p">}</span>
227 <span class="k">return</span> <span class="p">((</span><span class="kt">mps_clock_t</span><span class="p">)</span><span class="n">s</span><span class="p">.</span><span class="n">ru_utime</span><span class="p">.</span><span class="n">tv_sec</span><span class="p">)</span> <span class="o">*</span> <span class="mi">1000000</span> <span class="o">+</span> <span class="n">s</span><span class="p">.</span><span class="n">ru_utime</span><span class="p">.</span><span class="n">tv_usec</span><span class="p">;</span> 227 <span class="k">return</span> <span class="p">((</span><span class="n">mps_clock_t</span><span class="p">)</span><span class="n">s</span><span class="p">.</span><span class="n">ru_utime</span><span class="p">.</span><span class="n">tv_sec</span><span class="p">)</span> <span class="o">*</span> <span class="mi">1000000</span> <span class="o">+</span> <span class="n">s</span><span class="p">.</span><span class="n">ru_utime</span><span class="p">.</span><span class="n">tv_usec</span><span class="p">;</span>
228<span class="p">}</span> 228<span class="p">}</span>
229</pre></div> 229</pre></div>
230</div> 230</div>
diff --git a/mps/manual/html/topic/pool.html b/mps/manual/html/topic/pool.html
index 41a59d242b9..090b1b45ffd 100644
--- a/mps/manual/html/topic/pool.html
+++ b/mps/manual/html/topic/pool.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>4. Pools &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>5. Pools &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="5. Allocation" href="allocation.html" /> 31 <link rel="next" title="6. Allocation" href="allocation.html" />
32 <link rel="prev" title="3. Arenas" href="arena.html" /> 32 <link rel="prev" title="4. Arenas" href="arena.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="allocation.html" title="5. Allocation" 42 <a href="allocation.html" title="6. Allocation"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="arena.html" title="3. Arenas" 45 <a href="arena.html" title="4. Arenas"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="pools"> 57 <div class="section" id="pools">
58<span id="topic-pool"></span><span id="index-0"></span><h1>4. Pools<a class="headerlink" href="#pools" title="Permalink to this headline">¶</a></h1> 58<span id="topic-pool"></span><span id="index-0"></span><h1>5. Pools<a class="headerlink" href="#pools" title="Permalink to this headline">¶</a></h1>
59<p>Within an <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a> a client program creates one or more pools. A 59<p>Within an <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a> a client program creates one or more pools. A
60pool is responsible for requesting memory from the <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a> and 60pool is responsible for requesting memory from the <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a> and
61making it available for allocation.</p> 61making it available for allocation.</p>
@@ -70,31 +70,46 @@ and making it available to the <a class="reference internal" href="../glossary/c
70 70
71<dl class="function"> 71<dl class="function">
72<dt id="mps_pool_create"> 72<dt id="mps_pool_create">
73<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_pool_create</tt><big>(</big><a class="reference internal" href="#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;*pool_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="#mps_class_t" title="mps_class_t">mps_class_t</a><em>&nbsp;class</em>, ...<big>)</big><a class="headerlink" href="#mps_pool_create" title="Permalink to this definition">¶</a></dt> 73<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_pool_create</tt><big>(</big><a class="reference internal" href="#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;*pool_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="#mps_class_t" title="mps_class_t">mps_class_t</a><em>&nbsp;class</em>, <a class="reference internal" href="keyword.html#mps_arg_s" title="mps_arg_s">mps_arg_s</a><em>&nbsp;args[]</em><big>)</big><a class="headerlink" href="#mps_pool_create" title="Permalink to this definition">¶</a></dt>
74<dd><p>Create a <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a> in an <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>.</p> 74<dd><p>Create a <a class="reference internal" href="../glossary/p.html#term-pool"><em class="xref std std-term">pool</em></a> in an <a class="reference internal" href="../glossary/a.html#term-arena"><em class="xref std std-term">arena</em></a>.</p>
75<p><tt class="docutils literal"><span class="pre">pool_o</span></tt> points to a location that will hold a pointer to the new 75<p><tt class="docutils literal"><span class="pre">pool_o</span></tt> points to a location that will hold a pointer to the new
76pool.</p> 76pool.</p>
77<p><tt class="docutils literal"><span class="pre">arena</span></tt> is the arena in which to create the pool.</p> 77<p><tt class="docutils literal"><span class="pre">arena</span></tt> is the arena in which to create the pool.</p>
78<p><tt class="docutils literal"><span class="pre">class</span></tt> is the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> of the new pool.</p> 78<p><tt class="docutils literal"><span class="pre">class</span></tt> is the <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool class</em></a> of the new pool.</p>
79<p>Some pool classes require additional arguments to be passed to 79<p><tt class="docutils literal"><span class="pre">args</span></tt> are <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword arguments</em></a> specific to the pool class.
80<a class="reference internal" href="#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a>. See the documentation for the pool 80See the documentation for the pool class.</p>
81class.</p>
82<p>Returns <a class="reference internal" href="error.html#MPS_RES_OK" title="MPS_RES_OK"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_OK</span></tt></a> if the pool is created successfully, 81<p>Returns <a class="reference internal" href="error.html#MPS_RES_OK" title="MPS_RES_OK"><tt class="xref c c-macro docutils literal"><span class="pre">MPS_RES_OK</span></tt></a> if the pool is created successfully,
83or another <a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result code</em></a> otherwise.</p> 82or another <a class="reference internal" href="../glossary/r.html#term-result-code"><em class="xref std std-term">result code</em></a> otherwise.</p>
84<p>The pool persists until it is destroyed by calling 83<p>The pool persists until it is destroyed by calling
85<a class="reference internal" href="#mps_pool_destroy" title="mps_pool_destroy"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_destroy()</span></tt></a>.</p> 84<a class="reference internal" href="#mps_pool_destroy" title="mps_pool_destroy"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_destroy()</span></tt></a>.</p>
86<div class="admonition-note admonition"> 85</dd></dl>
87<p class="first admonition-title">Note</p> 86
88<p class="last">There&#8217;s an alternative function <tt class="xref c c-func docutils literal"><span class="pre">pool_create_v()</span></tt> that 87<dl class="function">
89takes its extra arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> 88<dt>
90<tt class="docutils literal"><span class="pre">va_list</span></tt> mechanism.</p> 89<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_pool_create</tt><big>(</big><a class="reference internal" href="#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;*pool_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="#mps_class_t" title="mps_class_t">mps_class_t</a><em>&nbsp;class</em>, ...<big>)</big></dt>
90<dd><div class="admonition-deprecated admonition">
91<p class="first admonition-title">Deprecated</p>
92<p>starting with version 1.112.</p>
93<p class="last">Use <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> instead: the <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword
94arguments</em></a> interface is more reliable and produces better
95error messages.</p>
91</div> 96</div>
97<p>An alternative to <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> that takes its
98extra arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> variable argument
99list mechanism.</p>
92</dd></dl> 100</dd></dl>
93 101
94<dl class="function"> 102<dl class="function">
95<dt id="mps_pool_create_v"> 103<dt id="mps_pool_create_v">
96<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_pool_create_v</tt><big>(</big><a class="reference internal" href="#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;*pool_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="#mps_class_t" title="mps_class_t">mps_class_t</a><em>&nbsp;class</em>, va_list<em>&nbsp;args</em><big>)</big><a class="headerlink" href="#mps_pool_create_v" title="Permalink to this definition">¶</a></dt> 104<a class="reference internal" href="error.html#mps_res_t" title="mps_res_t">mps_res_t</a> <tt class="descname">mps_pool_create_v</tt><big>(</big><a class="reference internal" href="#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;*pool_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="#mps_class_t" title="mps_class_t">mps_class_t</a><em>&nbsp;class</em>, va_list<em>&nbsp;args</em><big>)</big><a class="headerlink" href="#mps_pool_create_v" title="Permalink to this definition">¶</a></dt>
97<dd><p>An alternative to <a class="reference internal" href="#mps_pool_create" title="mps_pool_create"><tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create()</span></tt></a> that takes its extra 105<dd><div class="admonition-deprecated admonition">
106<p class="first admonition-title">Deprecated</p>
107<p>starting with version 1.112.</p>
108<p class="last">Use <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> instead: the <a class="reference internal" href="../glossary/k.html#term-keyword-argument"><em class="xref std std-term">keyword
109arguments</em></a> interface is more reliable and produces better
110error messages.</p>
111</div>
112<p>An alternative to <tt class="xref c c-func docutils literal"><span class="pre">mps_pool_create_k()</span></tt> that takes its extra
98arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> <tt class="docutils literal"><span class="pre">va_list</span></tt> mechanism.</p> 113arguments using the standard <a class="reference internal" href="../mmref/lang.html#term-c"><em class="xref std std-term">C</em></a> <tt class="docutils literal"><span class="pre">va_list</span></tt> mechanism.</p>
99</dd></dl> 114</dd></dl>
100 115
@@ -114,7 +129,7 @@ created in the pool.</p>
114</dd></dl> 129</dd></dl>
115 130
116<div class="section" id="pool-classes"> 131<div class="section" id="pool-classes">
117<span id="index-1"></span><h2>4.1. Pool classes<a class="headerlink" href="#pool-classes" title="Permalink to this headline">¶</a></h2> 132<span id="index-1"></span><h2>5.1. Pool classes<a class="headerlink" href="#pool-classes" title="Permalink to this headline">¶</a></h2>
118<p>Pools belong to <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool classes</em></a> that specify policies for how 133<p>Pools belong to <a class="reference internal" href="../glossary/p.html#term-pool-class"><em class="xref std std-term">pool classes</em></a> that specify policies for how
119their memory is managed. Some pools are <a class="reference internal" href="../glossary/m.html#term-manual-memory-management"><em class="xref std std-term">manually managed</em></a> (you must call <a class="reference internal" href="allocation.html#mps_free" title="mps_free"><tt class="xref c c-func docutils literal"><span class="pre">mps_free()</span></tt></a> to 134their memory is managed. Some pools are <a class="reference internal" href="../glossary/m.html#term-manual-memory-management"><em class="xref std std-term">manually managed</em></a> (you must call <a class="reference internal" href="allocation.html#mps_free" title="mps_free"><tt class="xref c c-func docutils literal"><span class="pre">mps_free()</span></tt></a> to
120return a block of memory to the pool) and others are 135return a block of memory to the pool) and others are
@@ -134,7 +149,7 @@ it is too late to change it now.</p>
134 149
135</div> 150</div>
136<div class="section" id="pool-introspection"> 151<div class="section" id="pool-introspection">
137<span id="index-2"></span><h2>4.2. Pool introspection<a class="headerlink" href="#pool-introspection" title="Permalink to this headline">¶</a></h2> 152<span id="index-2"></span><h2>5.2. Pool introspection<a class="headerlink" href="#pool-introspection" title="Permalink to this headline">¶</a></h2>
138<dl class="function"> 153<dl class="function">
139<dt id="mps_addr_pool"> 154<dt id="mps_addr_pool">
140<a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a> <tt class="descname">mps_addr_pool</tt><big>(</big><a class="reference internal" href="#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;*pool_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;addr</em><big>)</big><a class="headerlink" href="#mps_addr_pool" title="Permalink to this definition">¶</a></dt> 155<a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a> <tt class="descname">mps_addr_pool</tt><big>(</big><a class="reference internal" href="#mps_pool_t" title="mps_pool_t">mps_pool_t</a><em>&nbsp;*pool_o</em>, <a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;addr</em><big>)</big><a class="headerlink" href="#mps_addr_pool" title="Permalink to this definition">¶</a></dt>
@@ -178,19 +193,19 @@ the <a class="reference internal" href="../glossary/p.html#term-parked-state"><e
178 </a></p> 193 </a></p>
179 <h3><a href="../index.html">Table Of Contents</a></h3> 194 <h3><a href="../index.html">Table Of Contents</a></h3>
180 <ul> 195 <ul>
181<li><a class="reference internal" href="#">4. Pools</a><ul> 196<li><a class="reference internal" href="#">5. Pools</a><ul>
182<li><a class="reference internal" href="#pool-classes">4.1. Pool classes</a></li> 197<li><a class="reference internal" href="#pool-classes">5.1. Pool classes</a></li>
183<li><a class="reference internal" href="#pool-introspection">4.2. Pool introspection</a></li> 198<li><a class="reference internal" href="#pool-introspection">5.2. Pool introspection</a></li>
184</ul> 199</ul>
185</li> 200</li>
186</ul> 201</ul>
187 202
188 <h4>Previous topic</h4> 203 <h4>Previous topic</h4>
189 <p class="topless"><a href="arena.html" 204 <p class="topless"><a href="arena.html"
190 title="previous chapter">3. Arenas</a></p> 205 title="previous chapter">4. Arenas</a></p>
191 <h4>Next topic</h4> 206 <h4>Next topic</h4>
192 <p class="topless"><a href="allocation.html" 207 <p class="topless"><a href="allocation.html"
193 title="next chapter">5. Allocation</a></p><h4>Downloads</h4> 208 title="next chapter">6. Allocation</a></p><h4>Downloads</h4>
194 209
195<p class="topless"> 210<p class="topless">
196<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 211<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -216,10 +231,10 @@ the <a class="reference internal" href="../glossary/p.html#term-parked-state"><e
216 <a href="../genindex.html" title="General Index" 231 <a href="../genindex.html" title="General Index"
217 >index</a></li> 232 >index</a></li>
218 <li class="right" > 233 <li class="right" >
219 <a href="allocation.html" title="5. Allocation" 234 <a href="allocation.html" title="6. Allocation"
220 >next</a> |</li> 235 >next</a> |</li>
221 <li class="right" > 236 <li class="right" >
222 <a href="arena.html" title="3. Arenas" 237 <a href="arena.html" title="4. Arenas"
223 >previous</a> |</li> 238 >previous</a> |</li>
224 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 239 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
225 <li><a href="index.html" >Reference</a> &raquo;</li> 240 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/root.html b/mps/manual/html/topic/root.html
index 7a505831331..3b8534782a4 100644
--- a/mps/manual/html/topic/root.html
+++ b/mps/manual/html/topic/root.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>9. Roots &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>10. Roots &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="10. Garbage collection" href="collection.html" /> 31 <link rel="next" title="11. Garbage collection" href="collection.html" />
32 <link rel="prev" title="8. Threads" href="thread.html" /> 32 <link rel="prev" title="9. Threads" href="thread.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="collection.html" title="10. Garbage collection" 42 <a href="collection.html" title="11. Garbage collection"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="thread.html" title="8. Threads" 45 <a href="thread.html" title="9. Threads"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="roots"> 57 <div class="section" id="roots">
58<span id="topic-root"></span><span id="index-0"></span><h1>9. Roots<a class="headerlink" href="#roots" title="Permalink to this headline">¶</a></h1> 58<span id="topic-root"></span><span id="index-0"></span><h1>10. Roots<a class="headerlink" href="#roots" title="Permalink to this headline">¶</a></h1>
59<p><a class="reference internal" href="../glossary/r.html#term-root"><em class="xref std std-term">Roots</em></a> tell the <a class="reference internal" href="../glossary/g.html#term-garbage-collector"><em class="xref std std-term">garbage collector</em></a> where to start 59<p><a class="reference internal" href="../glossary/r.html#term-root"><em class="xref std std-term">Roots</em></a> tell the <a class="reference internal" href="../glossary/g.html#term-garbage-collector"><em class="xref std std-term">garbage collector</em></a> where to start
60<a class="reference internal" href="../glossary/t.html#term-trace"><em class="xref std std-term">tracing</em></a>. The garbage collector determines which blocks 60<a class="reference internal" href="../glossary/t.html#term-trace"><em class="xref std std-term">tracing</em></a>. The garbage collector determines which blocks
61are <a class="reference internal" href="../glossary/r.html#term-reachable"><em class="xref std std-term">reachable</em></a> from the roots, and (in <a class="reference internal" href="../glossary/a.html#term-automatic-memory-management"><em class="xref std std-term">automatically 61are <a class="reference internal" href="../glossary/r.html#term-reachable"><em class="xref std std-term">reachable</em></a> from the roots, and (in <a class="reference internal" href="../glossary/a.html#term-automatic-memory-management"><em class="xref std std-term">automatically
@@ -70,7 +70,7 @@ all references stored in static data are roots; the Memory Pool System
70is more flexible, but requires the client program to declare which 70is more flexible, but requires the client program to declare which
71references are roots.</p> 71references are roots.</p>
72<div class="section" id="registering-roots"> 72<div class="section" id="registering-roots">
73<span id="index-1"></span><h2>9.1. Registering roots<a class="headerlink" href="#registering-roots" title="Permalink to this headline">¶</a></h2> 73<span id="index-1"></span><h2>10.1. Registering roots<a class="headerlink" href="#registering-roots" title="Permalink to this headline">¶</a></h2>
74<p>You can register a root at any time by calling one of the 74<p>You can register a root at any time by calling one of the
75<tt class="docutils literal"><span class="pre">mps_root_create</span></tt> functions. Roots may not be registered twice, and 75<tt class="docutils literal"><span class="pre">mps_root_create</span></tt> functions. Roots may not be registered twice, and
76no two roots may overlap (that is, each reference is <a class="reference internal" href="../glossary/f.html#term-fix"><em class="xref std std-term">fixed</em></a> by 76no two roots may overlap (that is, each reference is <a class="reference internal" href="../glossary/f.html#term-fix"><em class="xref std std-term">fixed</em></a> by
@@ -129,7 +129,7 @@ registers and control stack of a thread. See
129</ol> 129</ol>
130</div> 130</div>
131<div class="section" id="cautions"> 131<div class="section" id="cautions">
132<span id="index-2"></span><h2>9.2. Cautions<a class="headerlink" href="#cautions" title="Permalink to this headline">¶</a></h2> 132<span id="index-2"></span><h2>10.2. Cautions<a class="headerlink" href="#cautions" title="Permalink to this headline">¶</a></h2>
133<p>Creating a root and then registering is similar to reserving a block 133<p>Creating a root and then registering is similar to reserving a block
134and then committing it (in the 134and then committing it (in the
135<a class="reference internal" href="allocation.html#topic-allocation-point-protocol"><em>Allocation point protocol</em></a>), and similar <a class="reference internal" href="allocation.html#topic-allocation-cautions"><em>cautions</em></a> apply. Before registering a root:</p> 135<a class="reference internal" href="allocation.html#topic-allocation-point-protocol"><em>Allocation point protocol</em></a>), and similar <a class="reference internal" href="allocation.html#topic-allocation-cautions"><em>cautions</em></a> apply. Before registering a root:</p>
@@ -152,7 +152,7 @@ values.</li>
152</ol> 152</ol>
153</div> 153</div>
154<div class="section" id="thread-roots"> 154<div class="section" id="thread-roots">
155<span id="topic-root-thread"></span><span id="index-3"></span><h2>9.3. Thread roots<a class="headerlink" href="#thread-roots" title="Permalink to this headline">¶</a></h2> 155<span id="topic-root-thread"></span><span id="index-3"></span><h2>10.3. Thread roots<a class="headerlink" href="#thread-roots" title="Permalink to this headline">¶</a></h2>
156<p>Every thread&#8217;s registers and control stack potentially contain 156<p>Every thread&#8217;s registers and control stack potentially contain
157references to allocated objects, so should be registered as a root by 157references to allocated objects, so should be registered as a root by
158calling <a class="reference internal" href="#mps_root_create_reg" title="mps_root_create_reg"><tt class="xref c c-func docutils literal"><span class="pre">mps_root_create_reg()</span></tt></a>. It&#8217;s not easy to write a 158calling <a class="reference internal" href="#mps_root_create_reg" title="mps_root_create_reg"><tt class="xref c c-func docutils literal"><span class="pre">mps_root_create_reg()</span></tt></a>. It&#8217;s not easy to write a
@@ -168,8 +168,8 @@ the work function is not inlined so that the address is definitely in
168the stack frame below any potential roots.</p> 168the stack frame below any potential roots.</p>
169<p id="index-4">For example, here&#8217;s the code from the toy Scheme interpreter that 169<p id="index-4">For example, here&#8217;s the code from the toy Scheme interpreter that
170registers a thread root and then calls the program:</p> 170registers a thread root and then calls the program:</p>
171<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_thr_t</span> <span class="kr">thread</span><span class="p">;</span> 171<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_thr_t</span> <span class="kr">thread</span><span class="p">;</span>
172<span class="kt">mps_root_t</span> <span class="n">reg_root</span><span class="p">;</span> 172<span class="n">mps_root_t</span> <span class="n">reg_root</span><span class="p">;</span>
173<span class="kt">int</span> <span class="n">exit_code</span><span class="p">;</span> 173<span class="kt">int</span> <span class="n">exit_code</span><span class="p">;</span>
174<span class="kt">void</span> <span class="o">*</span><span class="n">marker</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">marker</span><span class="p">;</span> 174<span class="kt">void</span> <span class="o">*</span><span class="n">marker</span> <span class="o">=</span> <span class="o">&amp;</span><span class="n">marker</span><span class="p">;</span>
175 175
@@ -194,7 +194,7 @@ registers a thread root and then calls the program:</p>
194</div> 194</div>
195</div> 195</div>
196<div class="section" id="ranks"> 196<div class="section" id="ranks">
197<span id="index-5"></span><h2>9.4. Ranks<a class="headerlink" href="#ranks" title="Permalink to this headline">¶</a></h2> 197<span id="index-5"></span><h2>10.4. Ranks<a class="headerlink" href="#ranks" title="Permalink to this headline">¶</a></h2>
198<dl class="type"> 198<dl class="type">
199<dt id="mps_rank_t"> 199<dt id="mps_rank_t">
200<tt class="descname">mps_rank_t</tt><a class="headerlink" href="#mps_rank_t" title="Permalink to this definition">¶</a></dt> 200<tt class="descname">mps_rank_t</tt><a class="headerlink" href="#mps_rank_t" title="Permalink to this definition">¶</a></dt>
@@ -222,7 +222,7 @@ and clarity.</p>
222 222
223</div> 223</div>
224<div class="section" id="root-modes"> 224<div class="section" id="root-modes">
225<span id="index-6"></span><h2>9.5. Root modes<a class="headerlink" href="#root-modes" title="Permalink to this headline">¶</a></h2> 225<span id="index-6"></span><h2>10.5. Root modes<a class="headerlink" href="#root-modes" title="Permalink to this headline">¶</a></h2>
226<p>The root mode provides a way for the client to declare various facts 226<p>The root mode provides a way for the client to declare various facts
227about a root that allow the MPS to make optimizations. Roots that are 227about a root that allow the MPS to make optimizations. Roots that are
228declared to be <em>constant</em> need not be re-scanned, and roots that are 228declared to be <em>constant</em> need not be re-scanned, and roots that are
@@ -291,7 +291,7 @@ operating systems can&#8217;t cope with writing to protected pages.</p>
291 291
292</div> 292</div>
293<div class="section" id="root-interface"> 293<div class="section" id="root-interface">
294<span id="index-7"></span><h2>9.6. Root interface<a class="headerlink" href="#root-interface" title="Permalink to this headline">¶</a></h2> 294<span id="index-7"></span><h2>10.6. Root interface<a class="headerlink" href="#root-interface" title="Permalink to this headline">¶</a></h2>
295<dl class="type"> 295<dl class="type">
296<dt id="mps_root_t"> 296<dt id="mps_root_t">
297<tt class="descname">mps_root_t</tt><a class="headerlink" href="#mps_root_t" title="Permalink to this definition">¶</a></dt> 297<tt class="descname">mps_root_t</tt><a class="headerlink" href="#mps_root_t" title="Permalink to this definition">¶</a></dt>
@@ -499,17 +499,17 @@ calling <a class="reference internal" href="#mps_root_destroy" title="mps_root_d
499<span class="cm">/* Global symbol table. */</span> 499<span class="cm">/* Global symbol table. */</span>
500<span class="kt">size_t</span> <span class="n">symtab_size</span><span class="p">;</span> 500<span class="kt">size_t</span> <span class="n">symtab_size</span><span class="p">;</span>
501<span class="k">struct</span> <span class="p">{</span> 501<span class="k">struct</span> <span class="p">{</span>
502 <span class="kt">obj_t</span> <span class="n">symbol</span><span class="p">;</span> 502 <span class="n">obj_t</span> <span class="n">symbol</span><span class="p">;</span>
503 <span class="kt">obj_t</span> <span class="n">value</span><span class="p">;</span> 503 <span class="n">obj_t</span> <span class="n">value</span><span class="p">;</span>
504<span class="p">}</span> <span class="o">*</span><span class="n">symtab</span><span class="p">;</span> 504<span class="p">}</span> <span class="o">*</span><span class="n">symtab</span><span class="p">;</span>
505 505
506<span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 506<span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
507<span class="kt">mps_root_t</span> <span class="n">root</span><span class="p">;</span> 507<span class="n">mps_root_t</span> <span class="n">root</span><span class="p">;</span>
508<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create_table_masked</span><span class="p">(</span><span class="o">&amp;</span><span class="n">root</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span> 508<span class="n">res</span> <span class="o">=</span> <span class="n">mps_root_create_table_masked</span><span class="p">(</span><span class="o">&amp;</span><span class="n">root</span><span class="p">,</span> <span class="n">arena</span><span class="p">,</span>
509 <span class="n">mps_rank_exact</span><span class="p">(),</span> 509 <span class="n">mps_rank_exact</span><span class="p">(),</span>
510 <span class="p">(</span><span class="kt">mps_rm_t</span><span class="p">)</span><span class="mi">0</span><span class="p">,</span> 510 <span class="p">(</span><span class="n">mps_rm_t</span><span class="p">)</span><span class="mi">0</span><span class="p">,</span>
511 <span class="n">symtab</span><span class="p">,</span> <span class="n">symtab_size</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span> 511 <span class="n">symtab</span><span class="p">,</span> <span class="n">symtab_size</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span>
512 <span class="p">(</span><span class="kt">mps_word_t</span><span class="p">)</span><span class="n">TAG_MASK</span><span class="p">);</span> 512 <span class="p">(</span><span class="n">mps_word_t</span><span class="p">)</span><span class="n">TAG_MASK</span><span class="p">);</span>
513<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">errror</span><span class="p">(</span><span class="s">&quot;can&#39;t create symtab root&quot;</span><span class="p">);</span> 513<span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="n">errror</span><span class="p">(</span><span class="s">&quot;can&#39;t create symtab root&quot;</span><span class="p">);</span>
514</pre></div> 514</pre></div>
515</div> 515</div>
@@ -524,7 +524,7 @@ void <tt class="descname">mps_root_destroy</tt><big>(</big><a class="reference i
524 524
525</div> 525</div>
526<div class="section" id="root-introspection"> 526<div class="section" id="root-introspection">
527<span id="index-8"></span><h2>9.7. Root introspection<a class="headerlink" href="#root-introspection" title="Permalink to this headline">¶</a></h2> 527<span id="index-8"></span><h2>10.7. Root introspection<a class="headerlink" href="#root-introspection" title="Permalink to this headline">¶</a></h2>
528<dl class="function"> 528<dl class="function">
529<dt id="mps_arena_roots_walk"> 529<dt id="mps_arena_roots_walk">
530void <tt class="descname">mps_arena_roots_walk</tt><big>(</big><a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="#mps_roots_stepper_t" title="mps_roots_stepper_t">mps_roots_stepper_t</a><em>&nbsp;f</em>, void<em>&nbsp;*p</em>, size_t<em>&nbsp;s</em><big>)</big><a class="headerlink" href="#mps_arena_roots_walk" title="Permalink to this definition">¶</a></dt> 530void <tt class="descname">mps_arena_roots_walk</tt><big>(</big><a class="reference internal" href="arena.html#mps_arena_t" title="mps_arena_t">mps_arena_t</a><em>&nbsp;arena</em>, <a class="reference internal" href="#mps_roots_stepper_t" title="mps_roots_stepper_t">mps_roots_stepper_t</a><em>&nbsp;f</em>, void<em>&nbsp;*p</em>, size_t<em>&nbsp;s</em><big>)</big><a class="headerlink" href="#mps_arena_roots_walk" title="Permalink to this definition">¶</a></dt>
@@ -598,24 +598,24 @@ it might point to somewhere in the middle of an allocated block.</p>
598 </a></p> 598 </a></p>
599 <h3><a href="../index.html">Table Of Contents</a></h3> 599 <h3><a href="../index.html">Table Of Contents</a></h3>
600 <ul> 600 <ul>
601<li><a class="reference internal" href="#">9. Roots</a><ul> 601<li><a class="reference internal" href="#">10. Roots</a><ul>
602<li><a class="reference internal" href="#registering-roots">9.1. Registering roots</a></li> 602<li><a class="reference internal" href="#registering-roots">10.1. Registering roots</a></li>
603<li><a class="reference internal" href="#cautions">9.2. Cautions</a></li> 603<li><a class="reference internal" href="#cautions">10.2. Cautions</a></li>
604<li><a class="reference internal" href="#thread-roots">9.3. Thread roots</a></li> 604<li><a class="reference internal" href="#thread-roots">10.3. Thread roots</a></li>
605<li><a class="reference internal" href="#ranks">9.4. Ranks</a></li> 605<li><a class="reference internal" href="#ranks">10.4. Ranks</a></li>
606<li><a class="reference internal" href="#root-modes">9.5. Root modes</a></li> 606<li><a class="reference internal" href="#root-modes">10.5. Root modes</a></li>
607<li><a class="reference internal" href="#root-interface">9.6. Root interface</a></li> 607<li><a class="reference internal" href="#root-interface">10.6. Root interface</a></li>
608<li><a class="reference internal" href="#root-introspection">9.7. Root introspection</a></li> 608<li><a class="reference internal" href="#root-introspection">10.7. Root introspection</a></li>
609</ul> 609</ul>
610</li> 610</li>
611</ul> 611</ul>
612 612
613 <h4>Previous topic</h4> 613 <h4>Previous topic</h4>
614 <p class="topless"><a href="thread.html" 614 <p class="topless"><a href="thread.html"
615 title="previous chapter">8. Threads</a></p> 615 title="previous chapter">9. Threads</a></p>
616 <h4>Next topic</h4> 616 <h4>Next topic</h4>
617 <p class="topless"><a href="collection.html" 617 <p class="topless"><a href="collection.html"
618 title="next chapter">10. Garbage collection</a></p><h4>Downloads</h4> 618 title="next chapter">11. Garbage collection</a></p><h4>Downloads</h4>
619 619
620<p class="topless"> 620<p class="topless">
621<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 621<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -641,10 +641,10 @@ it might point to somewhere in the middle of an allocated block.</p>
641 <a href="../genindex.html" title="General Index" 641 <a href="../genindex.html" title="General Index"
642 >index</a></li> 642 >index</a></li>
643 <li class="right" > 643 <li class="right" >
644 <a href="collection.html" title="10. Garbage collection" 644 <a href="collection.html" title="11. Garbage collection"
645 >next</a> |</li> 645 >next</a> |</li>
646 <li class="right" > 646 <li class="right" >
647 <a href="thread.html" title="8. Threads" 647 <a href="thread.html" title="9. Threads"
648 >previous</a> |</li> 648 >previous</a> |</li>
649 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 649 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
650 <li><a href="index.html" >Reference</a> &raquo;</li> 650 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/scanning.html b/mps/manual/html/topic/scanning.html
index 03758e8d070..4bdbc1680a7 100644
--- a/mps/manual/html/topic/scanning.html
+++ b/mps/manual/html/topic/scanning.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>7. Scanning &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>8. Scanning &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="8. Threads" href="thread.html" /> 31 <link rel="next" title="9. Threads" href="thread.html" />
32 <link rel="prev" title="6. Object formats" href="format.html" /> 32 <link rel="prev" title="7. Object formats" href="format.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="thread.html" title="8. Threads" 42 <a href="thread.html" title="9. Threads"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="format.html" title="6. Object formats" 45 <a href="format.html" title="7. Object formats"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="scanning"> 57 <div class="section" id="scanning">
58<span id="topic-scanning"></span><span id="index-0"></span><h1>7. Scanning<a class="headerlink" href="#scanning" title="Permalink to this headline">¶</a></h1> 58<span id="topic-scanning"></span><span id="index-0"></span><h1>8. Scanning<a class="headerlink" href="#scanning" title="Permalink to this headline">¶</a></h1>
59<p><a class="reference internal" href="../glossary/s.html#term-scan"><em class="xref std std-term">Scanning</em></a> is the process of identifying the 59<p><a class="reference internal" href="../glossary/s.html#term-scan"><em class="xref std std-term">Scanning</em></a> is the process of identifying the
60<a class="reference internal" href="../glossary/r.html#term-reference"><em class="xref std std-term">references</em></a> in a block of memory and 60<a class="reference internal" href="../glossary/r.html#term-reference"><em class="xref std std-term">references</em></a> in a block of memory and
61<a class="reference internal" href="../glossary/f.html#term-fix"><em class="xref std std-term">&#8220;fixing&#8221;</em></a> them. It&#8217;s the process at the heart of the 61<a class="reference internal" href="../glossary/f.html#term-fix"><em class="xref std std-term">&#8220;fixing&#8221;</em></a> them. It&#8217;s the process at the heart of the
@@ -69,7 +69,7 @@ references that need to be updated to point to the new locations of
69these objects. Both tasks use the same scanning protocol, described 69these objects. Both tasks use the same scanning protocol, described
70here.</p> 70here.</p>
71<div class="section" id="scanning-protocol"> 71<div class="section" id="scanning-protocol">
72<span id="topic-scanning-protocol"></span><span id="index-1"></span><h2>7.1. Scanning protocol<a class="headerlink" href="#scanning-protocol" title="Permalink to this headline">¶</a></h2> 72<span id="topic-scanning-protocol"></span><span id="index-1"></span><h2>8.1. Scanning protocol<a class="headerlink" href="#scanning-protocol" title="Permalink to this headline">¶</a></h2>
73<p>There are several types of scanning functions (the <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan method</em></a> 73<p>There are several types of scanning functions (the <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan method</em></a>
74in an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a>, of type <a class="reference internal" href="format.html#mps_fmt_scan_t" title="mps_fmt_scan_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_scan_t</span></tt></a>, and 74in an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a>, of type <a class="reference internal" href="format.html#mps_fmt_scan_t" title="mps_fmt_scan_t"><tt class="xref c c-type docutils literal"><span class="pre">mps_fmt_scan_t</span></tt></a>, and
75root scanning functions of various types) but all take a <a class="reference internal" href="../glossary/s.html#term-scan-state"><em class="xref std std-term">scan 75root scanning functions of various types) but all take a <a class="reference internal" href="../glossary/s.html#term-scan-state"><em class="xref std std-term">scan
@@ -101,7 +101,7 @@ reference is stored back to the region being scanned.</li>
101details, which are covered in the following sections.</p> 101details, which are covered in the following sections.</p>
102</div> 102</div>
103<div class="section" id="tagged-references"> 103<div class="section" id="tagged-references">
104<span id="topic-scanning-tag"></span><span id="index-2"></span><h2>7.2. Tagged references<a class="headerlink" href="#tagged-references" title="Permalink to this headline">¶</a></h2> 104<span id="topic-scanning-tag"></span><span id="index-2"></span><h2>8.2. Tagged references<a class="headerlink" href="#tagged-references" title="Permalink to this headline">¶</a></h2>
105<p>If your references are <a class="reference internal" href="../glossary/t.html#term-tagged-reference"><em class="xref std std-term">tagged</em></a> (or otherwise 105<p>If your references are <a class="reference internal" href="../glossary/t.html#term-tagged-reference"><em class="xref std std-term">tagged</em></a> (or otherwise
106&#8220;encrypted&#8221;), then you must remove the tag (or decrypt them) before 106&#8220;encrypted&#8221;), then you must remove the tag (or decrypt them) before
107passing them to <a class="reference internal" href="#MPS_FIX1" title="MPS_FIX1"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX1()</span></tt></a> and <a class="reference internal" href="#MPS_FIX2" title="MPS_FIX2"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX2()</span></tt></a>.</p> 107passing them to <a class="reference internal" href="#MPS_FIX1" title="MPS_FIX1"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX1()</span></tt></a> and <a class="reference internal" href="#MPS_FIX2" title="MPS_FIX2"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX2()</span></tt></a>.</p>
@@ -121,12 +121,12 @@ reference is within the object and need not be stripped. So your code
121might look like this:</p> 121might look like this:</p>
122<div class="highlight-c"><div class="highlight"><pre><span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span> 122<div class="highlight-c"><div class="highlight"><pre><span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span><span class="p">))</span> <span class="p">{</span>
123 <span class="cm">/* strip the tag */</span> 123 <span class="cm">/* strip the tag */</span>
124 <span class="kt">mps_addr_t</span> <span class="n">p</span> <span class="o">=</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span> <span class="o">&amp;</span> <span class="o">~</span><span class="mh">0x7</span><span class="p">;</span> 124 <span class="n">mps_addr_t</span> <span class="n">p</span> <span class="o">=</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span> <span class="o">&amp;</span> <span class="o">~</span><span class="mh">0x7</span><span class="p">;</span>
125 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span> 125 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span>
126 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span> 126 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span>
127 <span class="cm">/* restore the tag and update reference */</span> 127 <span class="cm">/* restore the tag and update reference */</span>
128 <span class="kt">mps_word_t</span> <span class="n">tag</span> <span class="o">=</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span> <span class="o">&amp;</span> <span class="mh">0x7</span><span class="p">;</span> 128 <span class="n">mps_word_t</span> <span class="n">tag</span> <span class="o">=</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span> <span class="o">&amp;</span> <span class="mh">0x7</span><span class="p">;</span>
129 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span> <span class="o">=</span> <span class="p">(</span><span class="kt">obj_t</span><span class="p">)((</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">p</span> <span class="o">+</span> <span class="n">tag</span><span class="p">);</span> 129 <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span> <span class="o">=</span> <span class="p">(</span><span class="n">obj_t</span><span class="p">)((</span><span class="kt">char</span> <span class="o">*</span><span class="p">)</span><span class="n">p</span> <span class="o">+</span> <span class="n">tag</span><span class="p">);</span>
130<span class="p">}</span> 130<span class="p">}</span>
131</pre></div> 131</pre></div>
132</div> 132</div>
@@ -138,7 +138,7 @@ before calling <a class="reference internal" href="#MPS_FIX2" title="MPS_FIX2"><
138belongs to an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> of variant auto-header).</p> 138belongs to an <a class="reference internal" href="../glossary/o.html#term-object-format"><em class="xref std std-term">object format</em></a> of variant auto-header).</p>
139</div> 139</div>
140<div class="section" id="critical-path"> 140<div class="section" id="critical-path">
141<span id="index-3"></span><h2>7.3. Critical path<a class="headerlink" href="#critical-path" title="Permalink to this headline">¶</a></h2> 141<span id="index-3"></span><h2>8.3. Critical path<a class="headerlink" href="#critical-path" title="Permalink to this headline">¶</a></h2>
142<p>Scanning is an operation on the critical path of the MPS and so it is 142<p>Scanning is an operation on the critical path of the MPS and so it is
143vital that it runs fast. The scanning protocol is designed to ensure 143vital that it runs fast. The scanning protocol is designed to ensure
144that as much of the scanning code can be run inline in the client 144that as much of the scanning code can be run inline in the client
@@ -176,7 +176,7 @@ references into <a class="reference internal" href="../glossary/l.html#term-leaf
176objects do not need to be scanned at all.</p> 176objects do not need to be scanned at all.</p>
177</div> 177</div>
178<div class="section" id="ambiguous-references"> 178<div class="section" id="ambiguous-references">
179<span id="index-4"></span><h2>7.4. Ambiguous references<a class="headerlink" href="#ambiguous-references" title="Permalink to this headline">¶</a></h2> 179<span id="index-4"></span><h2>8.4. Ambiguous references<a class="headerlink" href="#ambiguous-references" title="Permalink to this headline">¶</a></h2>
180<p>If the references in the object being scanned are <a class="reference internal" href="../glossary/a.html#term-ambiguous-reference"><em class="xref std std-term">ambiguous</em></a> then <a class="reference internal" href="#MPS_FIX2" title="MPS_FIX2"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX2()</span></tt></a> does not update the 180<p>If the references in the object being scanned are <a class="reference internal" href="../glossary/a.html#term-ambiguous-reference"><em class="xref std std-term">ambiguous</em></a> then <a class="reference internal" href="#MPS_FIX2" title="MPS_FIX2"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX2()</span></tt></a> does not update the
181reference (because it can&#8217;t know if it&#8217;s a genuine reference). The MPS 181reference (because it can&#8217;t know if it&#8217;s a genuine reference). The MPS
182handles an ambiguous reference by <a class="reference internal" href="../glossary/p.html#term-pinning"><em class="xref std std-term">pinning</em></a> the block pointed to 182handles an ambiguous reference by <a class="reference internal" href="../glossary/p.html#term-pinning"><em class="xref std std-term">pinning</em></a> the block pointed to
@@ -193,7 +193,7 @@ encounter this case.</p>
193</div> 193</div>
194</div> 194</div>
195<div class="section" id="unfixed-references"> 195<div class="section" id="unfixed-references">
196<span id="index-5"></span><h2>7.5. Unfixed references<a class="headerlink" href="#unfixed-references" title="Permalink to this headline">¶</a></h2> 196<span id="index-5"></span><h2>8.5. Unfixed references<a class="headerlink" href="#unfixed-references" title="Permalink to this headline">¶</a></h2>
197<p>The MPS does not require you to <a class="reference internal" href="../glossary/f.html#term-fix"><em class="xref std std-term">fix</em></a> all your <a class="reference internal" href="../glossary/r.html#term-reference"><em class="xref std std-term">references</em></a>. But if a reference is not fixed:</p> 197<p>The MPS does not require you to <a class="reference internal" href="../glossary/f.html#term-fix"><em class="xref std std-term">fix</em></a> all your <a class="reference internal" href="../glossary/r.html#term-reference"><em class="xref std std-term">references</em></a>. But if a reference is not fixed:</p>
198<ol class="arabic simple"> 198<ol class="arabic simple">
199<li>it does not keep its target alive (this might be acceptable if you 199<li>it does not keep its target alive (this might be acceptable if you
@@ -212,7 +212,7 @@ different <a class="reference internal" href="../glossary/p.html#term-pool-class
212references.</p> 212references.</p>
213</div> 213</div>
214<div class="section" id="example-scheme-objects"> 214<div class="section" id="example-scheme-objects">
215<span id="index-6"></span><h2>7.6. Example: Scheme objects<a class="headerlink" href="#example-scheme-objects" title="Permalink to this headline">¶</a></h2> 215<span id="index-6"></span><h2>8.6. Example: Scheme objects<a class="headerlink" href="#example-scheme-objects" title="Permalink to this headline">¶</a></h2>
216<p>Scanning tends to be a repetitive procedure and so you&#8217;ll find it is 216<p>Scanning tends to be a repetitive procedure and so you&#8217;ll find it is
217usually helpful to define macros to reduce the size of the source 217usually helpful to define macros to reduce the size of the source
218code. The MPS provides a convenience macro <a class="reference internal" href="#MPS_FIX12" title="MPS_FIX12"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX12()</span></tt></a> for the 218code. The MPS provides a convenience macro <a class="reference internal" href="#MPS_FIX12" title="MPS_FIX12"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX12()</span></tt></a> for the
@@ -244,11 +244,11 @@ reference and cast it to this type. The behaviour of such a cast
244is not defined by the C standard. See <a class="reference internal" href="interface.html#topic-interface-pun"><em>Type punning</em></a>.</p> 244is not defined by the C standard. See <a class="reference internal" href="interface.html#topic-interface-pun"><em>Type punning</em></a>.</p>
245</div> 245</div>
246<p>Here&#8217;s the Scheme scanner:</p> 246<p>Here&#8217;s the Scheme scanner:</p>
247<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="kt">mps_res_t</span> <span class="nf">obj_scan</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span> 247<div class="highlight-c"><div class="highlight"><pre><span class="k">static</span> <span class="n">mps_res_t</span> <span class="nf">obj_scan</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span>
248<span class="p">{</span> 248<span class="p">{</span>
249 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span> 249 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span>
250 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span> 250 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
251 <span class="kt">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> 251 <span class="n">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span>
252 <span class="k">switch</span> <span class="p">(</span><span class="n">obj</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">.</span><span class="n">type</span><span class="p">)</span> <span class="p">{</span> 252 <span class="k">switch</span> <span class="p">(</span><span class="n">obj</span><span class="o">-&gt;</span><span class="n">type</span><span class="p">.</span><span class="n">type</span><span class="p">)</span> <span class="p">{</span>
253 <span class="k">case</span> <span class="n">TYPE_PAIR</span>: 253 <span class="k">case</span> <span class="n">TYPE_PAIR</span>:
254 <span class="n">FIX</span><span class="p">(</span><span class="n">obj</span><span class="o">-&gt;</span><span class="n">pair</span><span class="p">.</span><span class="n">car</span><span class="p">);</span> 254 <span class="n">FIX</span><span class="p">(</span><span class="n">obj</span><span class="o">-&gt;</span><span class="n">pair</span><span class="p">.</span><span class="n">car</span><span class="p">);</span>
@@ -285,7 +285,7 @@ not at all optimized.</p>
285</div> 285</div>
286</div> 286</div>
287<div class="section" id="scanning-interface"> 287<div class="section" id="scanning-interface">
288<span id="index-7"></span><h2>7.7. Scanning interface<a class="headerlink" href="#scanning-interface" title="Permalink to this headline">¶</a></h2> 288<span id="index-7"></span><h2>8.7. Scanning interface<a class="headerlink" href="#scanning-interface" title="Permalink to this headline">¶</a></h2>
289<dl class="type"> 289<dl class="type">
290<dt id="mps_ss_t"> 290<dt id="mps_ss_t">
291<tt class="descname">mps_ss_t</tt><a class="headerlink" href="#mps_ss_t" title="Permalink to this definition">¶</a></dt> 291<tt class="descname">mps_ss_t</tt><a class="headerlink" href="#mps_ss_t" title="Permalink to this definition">¶</a></dt>
@@ -366,10 +366,10 @@ references inside the object&#8217;s <tt class="docutils literal"><span class="p
366<tt class="docutils literal"><span class="pre">data_scan</span></tt>. In order to ensure that the scan state is passed 366<tt class="docutils literal"><span class="pre">data_scan</span></tt>. In order to ensure that the scan state is passed
367correctly to <tt class="docutils literal"><span class="pre">data_scan</span></tt>, the call must be wrapped in 367correctly to <tt class="docutils literal"><span class="pre">data_scan</span></tt>, the call must be wrapped in
368<a class="reference internal" href="#MPS_FIX_CALL" title="MPS_FIX_CALL"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX_CALL()</span></tt></a>.</p> 368<a class="reference internal" href="#MPS_FIX_CALL" title="MPS_FIX_CALL"><tt class="xref c c-func docutils literal"><span class="pre">MPS_FIX_CALL()</span></tt></a>.</p>
369<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="nf">obj_scan</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span> 369<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="nf">obj_scan</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span>
370<span class="p">{</span> 370<span class="p">{</span>
371 <span class="kt">obj_t</span> <span class="n">obj</span><span class="p">;</span> 371 <span class="n">obj_t</span> <span class="n">obj</span><span class="p">;</span>
372 <span class="kt">mps_res_t</span> <span class="n">res</span><span class="p">;</span> 372 <span class="n">mps_res_t</span> <span class="n">res</span><span class="p">;</span>
373 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span> 373 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span>
374 <span class="k">for</span> <span class="p">(</span><span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> <span class="n">obj</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">;</span> <span class="n">obj</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span> 374 <span class="k">for</span> <span class="p">(</span><span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> <span class="n">obj</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">;</span> <span class="n">obj</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
375 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX12</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">obj</span><span class="o">-&gt;</span><span class="n">left</span><span class="p">)</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> 375 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX12</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">obj</span><span class="o">-&gt;</span><span class="n">left</span><span class="p">)</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span>
@@ -395,7 +395,7 @@ need to be measured against the loss in performance.</p>
395 395
396</div> 396</div>
397<div class="section" id="fixing-interface"> 397<div class="section" id="fixing-interface">
398<span id="index-8"></span><h2>7.8. Fixing interface<a class="headerlink" href="#fixing-interface" title="Permalink to this headline">¶</a></h2> 398<span id="index-8"></span><h2>8.8. Fixing interface<a class="headerlink" href="#fixing-interface" title="Permalink to this headline">¶</a></h2>
399<dl class="function"> 399<dl class="function">
400<dt id="MPS_FIX1"> 400<dt id="MPS_FIX1">
401<a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a> <tt class="descname">MPS_FIX1</tt><big>(</big><a class="reference internal" href="#mps_ss_t" title="mps_ss_t">mps_ss_t</a><em>&nbsp;ss</em>, <a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;ref</em><big>)</big><a class="headerlink" href="#MPS_FIX1" title="Permalink to this definition">¶</a></dt> 401<a class="reference internal" href="interface.html#mps_bool_t" title="mps_bool_t">mps_bool_t</a> <tt class="descname">MPS_FIX1</tt><big>(</big><a class="reference internal" href="#mps_ss_t" title="mps_ss_t">mps_ss_t</a><em>&nbsp;ss</em>, <a class="reference internal" href="interface.html#mps_addr_t" title="mps_addr_t">mps_addr_t</a><em>&nbsp;ref</em><big>)</big><a class="headerlink" href="#MPS_FIX1" title="Permalink to this definition">¶</a></dt>
@@ -508,25 +508,25 @@ ensure that the scan state is passed correctly.</p>
508 </a></p> 508 </a></p>
509 <h3><a href="../index.html">Table Of Contents</a></h3> 509 <h3><a href="../index.html">Table Of Contents</a></h3>
510 <ul> 510 <ul>
511<li><a class="reference internal" href="#">7. Scanning</a><ul> 511<li><a class="reference internal" href="#">8. Scanning</a><ul>
512<li><a class="reference internal" href="#scanning-protocol">7.1. Scanning protocol</a></li> 512<li><a class="reference internal" href="#scanning-protocol">8.1. Scanning protocol</a></li>
513<li><a class="reference internal" href="#tagged-references">7.2. Tagged references</a></li> 513<li><a class="reference internal" href="#tagged-references">8.2. Tagged references</a></li>
514<li><a class="reference internal" href="#critical-path">7.3. Critical path</a></li> 514<li><a class="reference internal" href="#critical-path">8.3. Critical path</a></li>
515<li><a class="reference internal" href="#ambiguous-references">7.4. Ambiguous references</a></li> 515<li><a class="reference internal" href="#ambiguous-references">8.4. Ambiguous references</a></li>
516<li><a class="reference internal" href="#unfixed-references">7.5. Unfixed references</a></li> 516<li><a class="reference internal" href="#unfixed-references">8.5. Unfixed references</a></li>
517<li><a class="reference internal" href="#example-scheme-objects">7.6. Example: Scheme objects</a></li> 517<li><a class="reference internal" href="#example-scheme-objects">8.6. Example: Scheme objects</a></li>
518<li><a class="reference internal" href="#scanning-interface">7.7. Scanning interface</a></li> 518<li><a class="reference internal" href="#scanning-interface">8.7. Scanning interface</a></li>
519<li><a class="reference internal" href="#fixing-interface">7.8. Fixing interface</a></li> 519<li><a class="reference internal" href="#fixing-interface">8.8. Fixing interface</a></li>
520</ul> 520</ul>
521</li> 521</li>
522</ul> 522</ul>
523 523
524 <h4>Previous topic</h4> 524 <h4>Previous topic</h4>
525 <p class="topless"><a href="format.html" 525 <p class="topless"><a href="format.html"
526 title="previous chapter">6. Object formats</a></p> 526 title="previous chapter">7. Object formats</a></p>
527 <h4>Next topic</h4> 527 <h4>Next topic</h4>
528 <p class="topless"><a href="thread.html" 528 <p class="topless"><a href="thread.html"
529 title="next chapter">8. Threads</a></p><h4>Downloads</h4> 529 title="next chapter">9. Threads</a></p><h4>Downloads</h4>
530 530
531<p class="topless"> 531<p class="topless">
532<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 532<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -552,10 +552,10 @@ ensure that the scan state is passed correctly.</p>
552 <a href="../genindex.html" title="General Index" 552 <a href="../genindex.html" title="General Index"
553 >index</a></li> 553 >index</a></li>
554 <li class="right" > 554 <li class="right" >
555 <a href="thread.html" title="8. Threads" 555 <a href="thread.html" title="9. Threads"
556 >next</a> |</li> 556 >next</a> |</li>
557 <li class="right" > 557 <li class="right" >
558 <a href="format.html" title="6. Object formats" 558 <a href="format.html" title="7. Object formats"
559 >previous</a> |</li> 559 >previous</a> |</li>
560 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 560 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
561 <li><a href="index.html" >Reference</a> &raquo;</li> 561 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/telemetry.html b/mps/manual/html/topic/telemetry.html
index 1bab8e7814b..97bbc82228d 100644
--- a/mps/manual/html/topic/telemetry.html
+++ b/mps/manual/html/topic/telemetry.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>18. Telemetry &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>19. Telemetry &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="19. Weak references" href="weak.html" /> 31 <link rel="next" title="20. Weak references" href="weak.html" />
32 <link rel="prev" title="17. Debugging pools" href="debugging.html" /> 32 <link rel="prev" title="18. Debugging pools" href="debugging.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="weak.html" title="19. Weak references" 42 <a href="weak.html" title="20. Weak references"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="debugging.html" title="17. Debugging pools" 45 <a href="debugging.html" title="18. Debugging pools"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="telemetry"> 57 <div class="section" id="telemetry">
58<span id="topic-telemetry"></span><h1>18. Telemetry<a class="headerlink" href="#telemetry" title="Permalink to this headline">¶</a></h1> 58<span id="topic-telemetry"></span><h1>19. Telemetry<a class="headerlink" href="#telemetry" title="Permalink to this headline">¶</a></h1>
59<p>In its <a class="reference internal" href="../glossary/c.html#term-cool"><em class="xref std std-term">cool</em></a> and <a class="reference internal" href="../glossary/h.html#term-hot"><em class="xref std std-term">hot</em></a> <a class="reference internal" href="../glossary/v.html#term-variety"><em class="xref std std-term">varieties</em></a>, the MPS is 59<p>In its <a class="reference internal" href="../glossary/c.html#term-cool"><em class="xref std std-term">cool</em></a> and <a class="reference internal" href="../glossary/h.html#term-hot"><em class="xref std std-term">hot</em></a> <a class="reference internal" href="../glossary/v.html#term-variety"><em class="xref std std-term">varieties</em></a>, the MPS is
60capable of outputting a configurable stream of events to assist with 60capable of outputting a configurable stream of events to assist with
61debugging and profiling.</p> 61debugging and profiling.</p>
@@ -93,7 +93,7 @@ audience were incapacitated with laughter. I think some of them
93thought we were victims of a practical joker.</p> 93thought we were victims of a practical joker.</p>
94</div></blockquote> 94</div></blockquote>
95<div class="section" id="telemetry-utilities"> 95<div class="section" id="telemetry-utilities">
96<span id="index-2"></span><h2>18.1. Telemetry utilities<a class="headerlink" href="#telemetry-utilities" title="Permalink to this headline">¶</a></h2> 96<span id="index-2"></span><h2>19.1. Telemetry utilities<a class="headerlink" href="#telemetry-utilities" title="Permalink to this headline">¶</a></h2>
97<p>The telemetry system relies on three utility programs:</p> 97<p>The telemetry system relies on three utility programs:</p>
98<ul class="simple"> 98<ul class="simple">
99<li><a class="reference internal" href="#telemetry-mpseventcnv"><em>mpseventcnv</em></a> decodes the 99<li><a class="reference internal" href="#telemetry-mpseventcnv"><em>mpseventcnv</em></a> decodes the
@@ -111,7 +111,7 @@ SQLite database for further analysis.</li>
111<a class="reference internal" href="../guide/build.html#guide-build"><em>Building the Memory Pool System</em></a>. Thee programs are described in more detail below.</p> 111<a class="reference internal" href="../guide/build.html#guide-build"><em>Building the Memory Pool System</em></a>. Thee programs are described in more detail below.</p>
112</div> 112</div>
113<div class="section" id="example"> 113<div class="section" id="example">
114<span id="index-3"></span><h2>18.2. Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2> 114<span id="index-3"></span><h2>19.2. Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
115<p>Here&#8217;s an example of turning on telemetry in the debugger and then 115<p>Here&#8217;s an example of turning on telemetry in the debugger and then
116encountering a corrupted object:</p> 116encountering a corrupted object:</p>
117<div class="highlight-none"><div class="highlight"><pre>$ gdb ./scheme 117<div class="highlight-none"><div class="highlight"><pre>$ gdb ./scheme
@@ -190,7 +190,7 @@ address was never fixed (no <tt class="docutils literal"><span class="pre">Trace
190</div> 190</div>
191</div> 191</div>
192<div class="section" id="event-categories"> 192<div class="section" id="event-categories">
193<span id="index-4"></span><h2>18.3. Event categories<a class="headerlink" href="#event-categories" title="Permalink to this headline">¶</a></h2> 193<span id="index-4"></span><h2>19.3. Event categories<a class="headerlink" href="#event-categories" title="Permalink to this headline">¶</a></h2>
194<p>The &#8220;bit&#8221; column gives the bit number in the <a class="reference internal" href="../glossary/t.html#term-telemetry-filter"><em class="xref std std-term">telemetry filter</em></a>. 194<p>The &#8220;bit&#8221; column gives the bit number in the <a class="reference internal" href="../glossary/t.html#term-telemetry-filter"><em class="xref std std-term">telemetry filter</em></a>.
195These numbers are liable to change, but the current meanings (zero 195These numbers are liable to change, but the current meanings (zero
196being the least significant bit) are:</p> 196being the least significant bit) are:</p>
@@ -239,7 +239,7 @@ being the least significant bit) are:</p>
239</table> 239</table>
240</div> 240</div>
241<div class="section" id="environment-variables"> 241<div class="section" id="environment-variables">
242<span id="index-5"></span><h2>18.4. Environment variables<a class="headerlink" href="#environment-variables" title="Permalink to this headline">¶</a></h2> 242<span id="index-5"></span><h2>19.4. Environment variables<a class="headerlink" href="#environment-variables" title="Permalink to this headline">¶</a></h2>
243<p>In the ANSI <a class="reference internal" href="../glossary/p.html#term-plinth"><em class="xref std std-term">plinth</em></a> (the plinth that comes as default with the 243<p>In the ANSI <a class="reference internal" href="../glossary/p.html#term-plinth"><em class="xref std std-term">plinth</em></a> (the plinth that comes as default with the
244MPS), these two environment variables control the behaviour of the 244MPS), these two environment variables control the behaviour of the
245telemetry feature.</p> 245telemetry feature.</p>
@@ -285,7 +285,7 @@ with the <tt class="docutils literal"><span class="pre">-d</span></tt> option. I
285 285
286</div> 286</div>
287<div class="section" id="decoding-the-telemetry-stream"> 287<div class="section" id="decoding-the-telemetry-stream">
288<span id="telemetry-mpseventcnv"></span><span id="index-6"></span><h2>18.5. Decoding the telemetry stream<a class="headerlink" href="#decoding-the-telemetry-stream" title="Permalink to this headline">¶</a></h2> 288<span id="telemetry-mpseventcnv"></span><span id="index-6"></span><h2>19.5. Decoding the telemetry stream<a class="headerlink" href="#decoding-the-telemetry-stream" title="Permalink to this headline">¶</a></h2>
289<p>The MPS writes the telemetry stream in a binary encoded format for 289<p>The MPS writes the telemetry stream in a binary encoded format for
290speed. The encoding is specific to the platform the program was 290speed. The encoding is specific to the platform the program was
291running on, and so the output needs to be decoded before it can be 291running on, and so the output needs to be decoded before it can be
@@ -328,7 +328,7 @@ columns contain parameters related to the event.</p>
328</div> 328</div>
329</div> 329</div>
330<div class="section" id="making-the-telemetry-stream-readable"> 330<div class="section" id="making-the-telemetry-stream-readable">
331<span id="telemetry-mpseventtxt"></span><span id="index-7"></span><h2>18.6. Making the telemetry stream readable<a class="headerlink" href="#making-the-telemetry-stream-readable" title="Permalink to this headline">¶</a></h2> 331<span id="telemetry-mpseventtxt"></span><span id="index-7"></span><h2>19.6. Making the telemetry stream readable<a class="headerlink" href="#making-the-telemetry-stream-readable" title="Permalink to this headline">¶</a></h2>
332<p>The output of <a class="reference internal" href="#telemetry-mpseventcnv"><em>mpseventcnv</em></a> can be made 332<p>The output of <a class="reference internal" href="#telemetry-mpseventcnv"><em>mpseventcnv</em></a> can be made
333more readable by passing it through <strong class="program">mpseventtxt</strong>, which 333more readable by passing it through <strong class="program">mpseventtxt</strong>, which
334takes the following options:</p> 334takes the following options:</p>
@@ -360,7 +360,7 @@ through <strong class="program">mpseventtxt</strong>:</p>
360</div> 360</div>
361</div> 361</div>
362<div class="section" id="loading-the-telemetry-stream-into-sqlite"> 362<div class="section" id="loading-the-telemetry-stream-into-sqlite">
363<span id="telemetry-mpseventsql"></span><span id="index-8"></span><h2>18.7. Loading the telemetry stream into SQLite<a class="headerlink" href="#loading-the-telemetry-stream-into-sqlite" title="Permalink to this headline">¶</a></h2> 363<span id="telemetry-mpseventsql"></span><span id="index-8"></span><h2>19.7. Loading the telemetry stream into SQLite<a class="headerlink" href="#loading-the-telemetry-stream-into-sqlite" title="Permalink to this headline">¶</a></h2>
364<p>The decoded telemetry stream (as output by <a class="reference internal" href="#telemetry-mpseventcnv"><em>mpseventcnv</em></a>) can be loaded into a SQLite database for 364<p>The decoded telemetry stream (as output by <a class="reference internal" href="#telemetry-mpseventcnv"><em>mpseventcnv</em></a>) can be loaded into a SQLite database for
365further analysis by running <strong class="program">mpseventsql</strong>.</p> 365further analysis by running <strong class="program">mpseventsql</strong>.</p>
366<p><strong class="program">mpseventsql</strong> takes the following options:</p> 366<p><strong class="program">mpseventsql</strong> takes the following options:</p>
@@ -431,7 +431,7 @@ descriptions in <tt class="docutils literal"><span class="pre">eventdef.h</span>
431 431
432</div> 432</div>
433<div class="section" id="telemetry-interface"> 433<div class="section" id="telemetry-interface">
434<span id="index-10"></span><h2>18.8. Telemetry interface<a class="headerlink" href="#telemetry-interface" title="Permalink to this headline">¶</a></h2> 434<span id="index-10"></span><h2>19.8. Telemetry interface<a class="headerlink" href="#telemetry-interface" title="Permalink to this headline">¶</a></h2>
435<dl class="function"> 435<dl class="function">
436<dt id="mps_telemetry_control"> 436<dt id="mps_telemetry_control">
437<a class="reference internal" href="interface.html#mps_word_t" title="mps_word_t">mps_word_t</a> <tt class="descname">mps_telemetry_control</tt><big>(</big><a class="reference internal" href="interface.html#mps_word_t" title="mps_word_t">mps_word_t</a><em>&nbsp;reset_mask</em>, <a class="reference internal" href="interface.html#mps_word_t" title="mps_word_t">mps_word_t</a><em>&nbsp;flip_mask</em><big>)</big><a class="headerlink" href="#mps_telemetry_control" title="Permalink to this definition">¶</a></dt> 437<a class="reference internal" href="interface.html#mps_word_t" title="mps_word_t">mps_word_t</a> <tt class="descname">mps_telemetry_control</tt><big>(</big><a class="reference internal" href="interface.html#mps_word_t" title="mps_word_t">mps_word_t</a><em>&nbsp;reset_mask</em>, <a class="reference internal" href="interface.html#mps_word_t" title="mps_word_t">mps_word_t</a><em>&nbsp;flip_mask</em><big>)</big><a class="headerlink" href="#mps_telemetry_control" title="Permalink to this definition">¶</a></dt>
@@ -528,7 +528,7 @@ telemetry filter that should be reset.</p>
528 528
529</div> 529</div>
530<div class="section" id="telemetry-labels"> 530<div class="section" id="telemetry-labels">
531<span id="index-11"></span><h2>18.9. Telemetry labels<a class="headerlink" href="#telemetry-labels" title="Permalink to this headline">¶</a></h2> 531<span id="index-11"></span><h2>19.9. Telemetry labels<a class="headerlink" href="#telemetry-labels" title="Permalink to this headline">¶</a></h2>
532<p>Telemetry labels allow the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> to associate strings 532<p>Telemetry labels allow the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> to associate strings
533with addresses in the telemetry stream. The string must first be 533with addresses in the telemetry stream. The string must first be
534<em>interned</em> by calling <a class="reference internal" href="#mps_telemetry_intern" title="mps_telemetry_intern"><tt class="xref c c-func docutils literal"><span class="pre">mps_telemetry_intern()</span></tt></a>, returning a 534<em>interned</em> by calling <a class="reference internal" href="#mps_telemetry_intern" title="mps_telemetry_intern"><tt class="xref c c-func docutils literal"><span class="pre">mps_telemetry_intern()</span></tt></a>, returning a
@@ -613,26 +613,26 @@ then calling this function has no effect.</p>
613 </a></p> 613 </a></p>
614 <h3><a href="../index.html">Table Of Contents</a></h3> 614 <h3><a href="../index.html">Table Of Contents</a></h3>
615 <ul> 615 <ul>
616<li><a class="reference internal" href="#">18. Telemetry</a><ul> 616<li><a class="reference internal" href="#">19. Telemetry</a><ul>
617<li><a class="reference internal" href="#telemetry-utilities">18.1. Telemetry utilities</a></li> 617<li><a class="reference internal" href="#telemetry-utilities">19.1. Telemetry utilities</a></li>
618<li><a class="reference internal" href="#example">18.2. Example</a></li> 618<li><a class="reference internal" href="#example">19.2. Example</a></li>
619<li><a class="reference internal" href="#event-categories">18.3. Event categories</a></li> 619<li><a class="reference internal" href="#event-categories">19.3. Event categories</a></li>
620<li><a class="reference internal" href="#environment-variables">18.4. Environment variables</a></li> 620<li><a class="reference internal" href="#environment-variables">19.4. Environment variables</a></li>
621<li><a class="reference internal" href="#decoding-the-telemetry-stream">18.5. Decoding the telemetry stream</a></li> 621<li><a class="reference internal" href="#decoding-the-telemetry-stream">19.5. Decoding the telemetry stream</a></li>
622<li><a class="reference internal" href="#making-the-telemetry-stream-readable">18.6. Making the telemetry stream readable</a></li> 622<li><a class="reference internal" href="#making-the-telemetry-stream-readable">19.6. Making the telemetry stream readable</a></li>
623<li><a class="reference internal" href="#loading-the-telemetry-stream-into-sqlite">18.7. Loading the telemetry stream into SQLite</a></li> 623<li><a class="reference internal" href="#loading-the-telemetry-stream-into-sqlite">19.7. Loading the telemetry stream into SQLite</a></li>
624<li><a class="reference internal" href="#telemetry-interface">18.8. Telemetry interface</a></li> 624<li><a class="reference internal" href="#telemetry-interface">19.8. Telemetry interface</a></li>
625<li><a class="reference internal" href="#telemetry-labels">18.9. Telemetry labels</a></li> 625<li><a class="reference internal" href="#telemetry-labels">19.9. Telemetry labels</a></li>
626</ul> 626</ul>
627</li> 627</li>
628</ul> 628</ul>
629 629
630 <h4>Previous topic</h4> 630 <h4>Previous topic</h4>
631 <p class="topless"><a href="debugging.html" 631 <p class="topless"><a href="debugging.html"
632 title="previous chapter">17. Debugging pools</a></p> 632 title="previous chapter">18. Debugging pools</a></p>
633 <h4>Next topic</h4> 633 <h4>Next topic</h4>
634 <p class="topless"><a href="weak.html" 634 <p class="topless"><a href="weak.html"
635 title="next chapter">19. Weak references</a></p><h4>Downloads</h4> 635 title="next chapter">20. Weak references</a></p><h4>Downloads</h4>
636 636
637<p class="topless"> 637<p class="topless">
638<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 638<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -658,10 +658,10 @@ then calling this function has no effect.</p>
658 <a href="../genindex.html" title="General Index" 658 <a href="../genindex.html" title="General Index"
659 >index</a></li> 659 >index</a></li>
660 <li class="right" > 660 <li class="right" >
661 <a href="weak.html" title="19. Weak references" 661 <a href="weak.html" title="20. Weak references"
662 >next</a> |</li> 662 >next</a> |</li>
663 <li class="right" > 663 <li class="right" >
664 <a href="debugging.html" title="17. Debugging pools" 664 <a href="debugging.html" title="18. Debugging pools"
665 >previous</a> |</li> 665 >previous</a> |</li>
666 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 666 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
667 <li><a href="index.html" >Reference</a> &raquo;</li> 667 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/thread.html b/mps/manual/html/topic/thread.html
index 1a346b85628..e558a0d4f02 100644
--- a/mps/manual/html/topic/thread.html
+++ b/mps/manual/html/topic/thread.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>8. Threads &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>9. Threads &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -28,8 +28,8 @@
28 <link rel="copyright" title="Copyright" href="../copyright.html" /> 28 <link rel="copyright" title="Copyright" href="../copyright.html" />
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="9. Roots" href="root.html" /> 31 <link rel="next" title="10. Roots" href="root.html" />
32 <link rel="prev" title="7. Scanning" href="scanning.html" /> 32 <link rel="prev" title="8. Scanning" href="scanning.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -39,10 +39,10 @@
39 <a href="../genindex.html" title="General Index" 39 <a href="../genindex.html" title="General Index"
40 accesskey="I">index</a></li> 40 accesskey="I">index</a></li>
41 <li class="right" > 41 <li class="right" >
42 <a href="root.html" title="9. Roots" 42 <a href="root.html" title="10. Roots"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="scanning.html" title="7. Scanning" 45 <a href="scanning.html" title="8. Scanning"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,9 +55,9 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="threads"> 57 <div class="section" id="threads">
58<span id="topic-thread"></span><span id="index-0"></span><h1>8. Threads<a class="headerlink" href="#threads" title="Permalink to this headline">¶</a></h1> 58<span id="topic-thread"></span><span id="index-0"></span><h1>9. Threads<a class="headerlink" href="#threads" title="Permalink to this headline">¶</a></h1>
59<div class="section" id="thread-safety"> 59<div class="section" id="thread-safety">
60<span id="index-1"></span><h2>8.1. Thread safety<a class="headerlink" href="#thread-safety" title="Permalink to this headline">¶</a></h2> 60<span id="index-1"></span><h2>9.1. Thread safety<a class="headerlink" href="#thread-safety" title="Permalink to this headline">¶</a></h2>
61<p>The MPS is designed to run in an environment with multiple threads all 61<p>The MPS is designed to run in an environment with multiple threads all
62calling into the MPS. Some code is known to operate with exclusive 62calling into the MPS. Some code is known to operate with exclusive
63access to the data it manipulates (for example, allocation via 63access to the data it manipulates (for example, allocation via
@@ -70,7 +70,7 @@ at most a single thread (per arena) running &#8220;inside&#8221; the MPS at a
70time.</p> 70time.</p>
71</div> 71</div>
72<div class="section" id="thread-registration"> 72<div class="section" id="thread-registration">
73<span id="topic-thread-register"></span><span id="index-2"></span><h2>8.2. Thread registration<a class="headerlink" href="#thread-registration" title="Permalink to this headline">¶</a></h2> 73<span id="topic-thread-register"></span><span id="index-2"></span><h2>9.2. Thread registration<a class="headerlink" href="#thread-registration" title="Permalink to this headline">¶</a></h2>
74<p>In order to scan a thread&#8217;s registers for references (which happens at 74<p>In order to scan a thread&#8217;s registers for references (which happens at
75each <a class="reference internal" href="../glossary/f.html#term-flip"><em class="xref std std-term">flip</em></a>), the MPS needs to be able to suspend that thread, 75each <a class="reference internal" href="../glossary/f.html#term-flip"><em class="xref std std-term">flip</em></a>), the MPS needs to be able to suspend that thread,
76and in order to gain exclusive atomic access to memory in order to 76and in order to gain exclusive atomic access to memory in order to
@@ -100,7 +100,7 @@ needs to co-operate with the MPS.</p>
100</div> 100</div>
101</div> 101</div>
102<div class="section" id="signal-handling-issues"> 102<div class="section" id="signal-handling-issues">
103<span id="index-3"></span><h2>8.3. Signal handling issues<a class="headerlink" href="#signal-handling-issues" title="Permalink to this headline">¶</a></h2> 103<span id="index-3"></span><h2>9.3. Signal handling issues<a class="headerlink" href="#signal-handling-issues" title="Permalink to this headline">¶</a></h2>
104<p>The MPS uses <a class="reference internal" href="../glossary/b.html#term-barrier-1"><em class="xref std std-term">barriers<sup>(1)</sup></em></a> to <a class="reference internal" href="../glossary/p.html#term-protection"><em class="xref std std-term">protect</em></a> 104<p>The MPS uses <a class="reference internal" href="../glossary/b.html#term-barrier-1"><em class="xref std std-term">barriers<sup>(1)</sup></em></a> to <a class="reference internal" href="../glossary/p.html#term-protection"><em class="xref std std-term">protect</em></a>
105memory from the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> and handles the signals that 105memory from the <a class="reference internal" href="../glossary/c.html#term-client-program"><em class="xref std std-term">client program</em></a> and handles the signals that
106result from barrier hits.</p> 106result from barrier hits.</p>
@@ -115,7 +115,7 @@ the MPS.</p>
115</div> 115</div>
116</div> 116</div>
117<div class="section" id="thread-interface"> 117<div class="section" id="thread-interface">
118<span id="index-4"></span><h2>8.4. Thread interface<a class="headerlink" href="#thread-interface" title="Permalink to this headline">¶</a></h2> 118<span id="index-4"></span><h2>9.4. Thread interface<a class="headerlink" href="#thread-interface" title="Permalink to this headline">¶</a></h2>
119<dl class="type"> 119<dl class="type">
120<dt id="mps_thr_t"> 120<dt id="mps_thr_t">
121<tt class="descname">mps_thr_t</tt><a class="headerlink" href="#mps_thr_t" title="Permalink to this definition">¶</a></dt> 121<tt class="descname">mps_thr_t</tt><a class="headerlink" href="#mps_thr_t" title="Permalink to this definition">¶</a></dt>
@@ -223,21 +223,21 @@ to <a class="reference internal" href="#mps_tramp" title="mps_tramp"><tt class="
223 </a></p> 223 </a></p>
224 <h3><a href="../index.html">Table Of Contents</a></h3> 224 <h3><a href="../index.html">Table Of Contents</a></h3>
225 <ul> 225 <ul>
226<li><a class="reference internal" href="#">8. Threads</a><ul> 226<li><a class="reference internal" href="#">9. Threads</a><ul>
227<li><a class="reference internal" href="#thread-safety">8.1. Thread safety</a></li> 227<li><a class="reference internal" href="#thread-safety">9.1. Thread safety</a></li>
228<li><a class="reference internal" href="#thread-registration">8.2. Thread registration</a></li> 228<li><a class="reference internal" href="#thread-registration">9.2. Thread registration</a></li>
229<li><a class="reference internal" href="#signal-handling-issues">8.3. Signal handling issues</a></li> 229<li><a class="reference internal" href="#signal-handling-issues">9.3. Signal handling issues</a></li>
230<li><a class="reference internal" href="#thread-interface">8.4. Thread interface</a></li> 230<li><a class="reference internal" href="#thread-interface">9.4. Thread interface</a></li>
231</ul> 231</ul>
232</li> 232</li>
233</ul> 233</ul>
234 234
235 <h4>Previous topic</h4> 235 <h4>Previous topic</h4>
236 <p class="topless"><a href="scanning.html" 236 <p class="topless"><a href="scanning.html"
237 title="previous chapter">7. Scanning</a></p> 237 title="previous chapter">8. Scanning</a></p>
238 <h4>Next topic</h4> 238 <h4>Next topic</h4>
239 <p class="topless"><a href="root.html" 239 <p class="topless"><a href="root.html"
240 title="next chapter">9. Roots</a></p><h4>Downloads</h4> 240 title="next chapter">10. Roots</a></p><h4>Downloads</h4>
241 241
242<p class="topless"> 242<p class="topless">
243<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br> 243<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
@@ -263,10 +263,10 @@ to <a class="reference internal" href="#mps_tramp" title="mps_tramp"><tt class="
263 <a href="../genindex.html" title="General Index" 263 <a href="../genindex.html" title="General Index"
264 >index</a></li> 264 >index</a></li>
265 <li class="right" > 265 <li class="right" >
266 <a href="root.html" title="9. Roots" 266 <a href="root.html" title="10. Roots"
267 >next</a> |</li> 267 >next</a> |</li>
268 <li class="right" > 268 <li class="right" >
269 <a href="scanning.html" title="7. Scanning" 269 <a href="scanning.html" title="8. Scanning"
270 >previous</a> |</li> 270 >previous</a> |</li>
271 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 271 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
272 <li><a href="index.html" >Reference</a> &raquo;</li> 272 <li><a href="index.html" >Reference</a> &raquo;</li>
diff --git a/mps/manual/html/topic/weak.html b/mps/manual/html/topic/weak.html
index 8e4a7e8b893..901739b1cfb 100644
--- a/mps/manual/html/topic/weak.html
+++ b/mps/manual/html/topic/weak.html
@@ -8,7 +8,7 @@
8 <head> 8 <head>
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 10
11 <title>19. Weak references &mdash; Memory Pool System 1.111.0 documentation</title> 11 <title>20. Weak references &mdash; Memory Pool System 1.111.0 documentation</title>
12 12
13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" /> 13 <link rel="stylesheet" href="../_static/mps.css" type="text/css" />
14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> 14 <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -29,7 +29,7 @@
29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" /> 29 <link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
30 <link rel="up" title="Reference" href="index.html" /> 30 <link rel="up" title="Reference" href="index.html" />
31 <link rel="next" title="Pool reference" href="../pool/index.html" /> 31 <link rel="next" title="Pool reference" href="../pool/index.html" />
32 <link rel="prev" title="18. Telemetry" href="telemetry.html" /> 32 <link rel="prev" title="19. Telemetry" href="telemetry.html" />
33 </head> 33 </head>
34 <body> 34 <body>
35 <div class="related"> 35 <div class="related">
@@ -42,7 +42,7 @@
42 <a href="../pool/index.html" title="Pool reference" 42 <a href="../pool/index.html" title="Pool reference"
43 accesskey="N">next</a> |</li> 43 accesskey="N">next</a> |</li>
44 <li class="right" > 44 <li class="right" >
45 <a href="telemetry.html" title="18. Telemetry" 45 <a href="telemetry.html" title="19. Telemetry"
46 accesskey="P">previous</a> |</li> 46 accesskey="P">previous</a> |</li>
47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 47 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li> 48 <li><a href="index.html" accesskey="U">Reference</a> &raquo;</li>
@@ -55,7 +55,7 @@
55 <div class="body"> 55 <div class="body">
56 56
57 <div class="section" id="weak-references"> 57 <div class="section" id="weak-references">
58<span id="topic-weak"></span><span id="index-0"></span><h1>19. Weak references<a class="headerlink" href="#weak-references" title="Permalink to this headline">¶</a></h1> 58<span id="topic-weak"></span><span id="index-0"></span><h1>20. Weak references<a class="headerlink" href="#weak-references" title="Permalink to this headline">¶</a></h1>
59<p>A <em class="dfn">weak reference</em> is a <a class="reference internal" href="../glossary/r.html#term-reference"><em class="xref std std-term">reference</em></a> that does not keep the 59<p>A <em class="dfn">weak reference</em> is a <a class="reference internal" href="../glossary/r.html#term-reference"><em class="xref std std-term">reference</em></a> that does not keep the
60block it refers to <a class="reference internal" href="../glossary/l.html#term-live"><em class="xref std std-term">alive</em></a>.</p> 60block it refers to <a class="reference internal" href="../glossary/l.html#term-live"><em class="xref std std-term">alive</em></a>.</p>
61<p>The open source MPS supports weak references only:</p> 61<p>The open source MPS supports weak references only:</p>
@@ -78,14 +78,14 @@ all weak references to the block have been splatted, the block may be
78reclaimed.</p> 78reclaimed.</p>
79<p>For example, a <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan method</em></a> for objects in an AWL pool might 79<p>For example, a <a class="reference internal" href="../glossary/s.html#term-scan-method"><em class="xref std std-term">scan method</em></a> for objects in an AWL pool might
80look like this:</p> 80look like this:</p>
81<div class="highlight-c"><div class="highlight"><pre><span class="kt">mps_res_t</span> <span class="nf">obj_scan</span><span class="p">(</span><span class="kt">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="kt">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span> 81<div class="highlight-c"><div class="highlight"><pre><span class="n">mps_res_t</span> <span class="nf">obj_scan</span><span class="p">(</span><span class="n">mps_ss_t</span> <span class="n">ss</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">base</span><span class="p">,</span> <span class="n">mps_addr_t</span> <span class="n">limit</span><span class="p">)</span>
82<span class="p">{</span> 82<span class="p">{</span>
83 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span> 83 <span class="n">MPS_SCAN_BEGIN</span><span class="p">(</span><span class="n">ss</span><span class="p">)</span> <span class="p">{</span>
84 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span> 84 <span class="k">while</span> <span class="p">(</span><span class="n">base</span> <span class="o">&lt;</span> <span class="n">limit</span><span class="p">)</span> <span class="p">{</span>
85 <span class="kt">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span> 85 <span class="n">obj_t</span> <span class="n">obj</span> <span class="o">=</span> <span class="n">base</span><span class="p">;</span>
86 <span class="kt">mps_addr_t</span> <span class="n">p</span> <span class="o">=</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span><span class="p">;</span> 86 <span class="n">mps_addr_t</span> <span class="n">p</span> <span class="o">=</span> <span class="n">obj</span><span class="o">-&gt;</span><span class="n">ref</span><span class="p">;</span>
87 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">p</span><span class="p">))</span> <span class="p">{</span> 87 <span class="k">if</span> <span class="p">(</span><span class="n">MPS_FIX1</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="n">p</span><span class="p">))</span> <span class="p">{</span>
88 <span class="kt">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span> 88 <span class="n">mps_res_t</span> <span class="n">res</span> <span class="o">=</span> <span class="n">MPS_FIX2</span><span class="p">(</span><span class="n">ss</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">p</span><span class="p">);</span>
89 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span> 89 <span class="k">if</span> <span class="p">(</span><span class="n">res</span> <span class="o">!=</span> <span class="n">MPS_RES_OK</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span><span class="p">;</span>
90 <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span> 90 <span class="k">if</span> <span class="p">(</span><span class="n">p</span> <span class="o">==</span> <span class="nb">NULL</span><span class="p">)</span> <span class="p">{</span>
91 <span class="cm">/* reference was splatted */</span> 91 <span class="cm">/* reference was splatted */</span>
@@ -141,7 +141,7 @@ that block from being splatted. See <a class="reference internal" href="finaliza
141 </a></p> 141 </a></p>
142 <h4>Previous topic</h4> 142 <h4>Previous topic</h4>
143 <p class="topless"><a href="telemetry.html" 143 <p class="topless"><a href="telemetry.html"
144 title="previous chapter">18. Telemetry</a></p> 144 title="previous chapter">19. Telemetry</a></p>
145 <h4>Next topic</h4> 145 <h4>Next topic</h4>
146 <p class="topless"><a href="../pool/index.html" 146 <p class="topless"><a href="../pool/index.html"
147 title="next chapter">Pool reference</a></p><h4>Downloads</h4> 147 title="next chapter">Pool reference</a></p><h4>Downloads</h4>
@@ -173,7 +173,7 @@ that block from being splatted. See <a class="reference internal" href="finaliza
173 <a href="../pool/index.html" title="Pool reference" 173 <a href="../pool/index.html" title="Pool reference"
174 >next</a> |</li> 174 >next</a> |</li>
175 <li class="right" > 175 <li class="right" >
176 <a href="telemetry.html" title="18. Telemetry" 176 <a href="telemetry.html" title="19. Telemetry"
177 >previous</a> |</li> 177 >previous</a> |</li>
178 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li> 178 <li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
179 <li><a href="index.html" >Reference</a> &raquo;</li> 179 <li><a href="index.html" >Reference</a> &raquo;</li>