diff --git a/mps/manual/html/_sources/design/abq.txt b/mps/manual/html/_sources/design/abq.txt index a6846871029..97022f2265d 100644 --- a/mps/manual/html/_sources/design/abq.txt +++ b/mps/manual/html/_sources/design/abq.txt @@ -1,5 +1,3 @@ -.. _design-abq: - Queue design ============ diff --git a/mps/manual/html/_sources/design/alloc-frame.txt b/mps/manual/html/_sources/design/alloc-frame.txt index 9333d6e4414..09e5adb2521 100644 --- a/mps/manual/html/_sources/design/alloc-frame.txt +++ b/mps/manual/html/_sources/design/alloc-frame.txt @@ -1,9 +1,9 @@ -.. _design-alloc-frame: - .. index:: pair: allocation frames; design +.. _design-alloc-frame: + Allocation frame protocol ========================= diff --git a/mps/manual/html/_sources/design/arena.txt b/mps/manual/html/_sources/design/arena.txt index c0f671e419d..379816523b0 100644 --- a/mps/manual/html/_sources/design/arena.txt +++ b/mps/manual/html/_sources/design/arena.txt @@ -1,9 +1,9 @@ -.. _design-arena: - .. index:: pair: arena; design +.. _design-arena: + Arena ===== diff --git a/mps/manual/html/_sources/design/arenavm.txt b/mps/manual/html/_sources/design/arenavm.txt index a5a7483dde7..ded7b9af631 100644 --- a/mps/manual/html/_sources/design/arenavm.txt +++ b/mps/manual/html/_sources/design/arenavm.txt @@ -1,10 +1,10 @@ -.. _design-arenavm: - .. index:: pair: virtual memory arena; design pair: VM arena; design +.. _design-arenavm: + Virtual Memory Arena ==================== diff --git a/mps/manual/html/_sources/design/boot.txt b/mps/manual/html/_sources/design/boot.txt deleted file mode 100644 index ce4d55de18e..00000000000 --- a/mps/manual/html/_sources/design/boot.txt +++ /dev/null @@ -1,37 +0,0 @@ -.. _design-boot: - - -The MPS Bootstrap -================= - -.. mps:prefix:: design.mps.boot - - -Introduction ------------- -The `Memory Pool System`_ starts with no memory, but must somehow -allocate its own control structures in order to provide memory to the -client program. The MPS is freestanding [ref?] and so it can't get its -memory from the C library's ``malloc``. So how does it get off the -ground? It pulls itself up by its own bootstraps. This document -describes how. - -.. note:: - - This document was written as a prelude to reforming the bootstrap, - so it shouldn't be taken as advocating it as an amazing piece of - design. - - -Pretty much the first call to the MPS is to ``ArenaCreate``, which calls the -arena class specific ``init`` method. That must create an initialized arena, -except for the "control pool", from which many MPS data structures will be -allocated. - -In the case of the VM arena, ``VMArenaInit`` creates a VM large enough to hold -a :c:type:`VMArenaStruct` (which contains the generic :c:type:`ArenaStruct`) and maps -pages into it. It then calls ``ArenaInit`` to initialise the generic part, -before filling in the VM-specific part. Having done that, it adds the initial -``VMChunk`` -- a large area of address space -- that will be used to supply -memory via ``ArenaAlloc``. - diff --git a/mps/manual/html/_sources/design/bt.txt b/mps/manual/html/_sources/design/bt.txt index fa2f3bb6722..5ccd999e60e 100644 --- a/mps/manual/html/_sources/design/bt.txt +++ b/mps/manual/html/_sources/design/bt.txt @@ -1,9 +1,9 @@ -.. _design-bt: - .. index:: pair: bit tables; design +.. _design-bt: + Bit tables ========== diff --git a/mps/manual/html/_sources/design/buffer.txt b/mps/manual/html/_sources/design/buffer.txt index fdef030275c..bc6f4e43437 100644 --- a/mps/manual/html/_sources/design/buffer.txt +++ b/mps/manual/html/_sources/design/buffer.txt @@ -1,9 +1,9 @@ -.. _design-buffer: - .. index:: pair: buffers; design +.. _design-buffer: + Allocation buffers and allocation points ======================================== diff --git a/mps/manual/html/_sources/design/cbs.txt b/mps/manual/html/_sources/design/cbs.txt index 8cc005422f0..6204c0ef394 100644 --- a/mps/manual/html/_sources/design/cbs.txt +++ b/mps/manual/html/_sources/design/cbs.txt @@ -1,5 +1,3 @@ -.. _design-cbs: - Coalescing block structure ========================== diff --git a/mps/manual/html/_sources/design/check.txt b/mps/manual/html/_sources/design/check.txt index 8e7a121b38b..c68b439e3e1 100644 --- a/mps/manual/html/_sources/design/check.txt +++ b/mps/manual/html/_sources/design/check.txt @@ -1,9 +1,9 @@ -.. _design-check: - .. index:: pair: checking; design +.. _design-check: + Checking ======== diff --git a/mps/manual/html/_sources/design/class-interface.txt b/mps/manual/html/_sources/design/class-interface.txt index 8e317c93e21..fda134cd5f0 100644 --- a/mps/manual/html/_sources/design/class-interface.txt +++ b/mps/manual/html/_sources/design/class-interface.txt @@ -1,9 +1,9 @@ -.. _design-class-interface: - .. index:: pair: class interface; design +.. _design-class-interface: + Pool class interface ==================== diff --git a/mps/manual/html/_sources/design/collection.txt b/mps/manual/html/_sources/design/collection.txt index fae198acf86..89e176837e2 100644 --- a/mps/manual/html/_sources/design/collection.txt +++ b/mps/manual/html/_sources/design/collection.txt @@ -1,9 +1,9 @@ -.. _design-collection: - .. index:: pair: collection framework; design +.. _design-collection: + Collection framework ==================== diff --git a/mps/manual/html/_sources/design/config.txt b/mps/manual/html/_sources/design/config.txt index d045a51225c..d80ca819cbb 100644 --- a/mps/manual/html/_sources/design/config.txt +++ b/mps/manual/html/_sources/design/config.txt @@ -1,9 +1,9 @@ -.. _design-config: - .. index:: pair: configuration; design +.. _design-config: + MPS Configuration ================= diff --git a/mps/manual/html/_sources/design/critical-path.txt b/mps/manual/html/_sources/design/critical-path.txt index 26830c82baf..7ff7c56651c 100644 --- a/mps/manual/html/_sources/design/critical-path.txt +++ b/mps/manual/html/_sources/design/critical-path.txt @@ -1,11 +1,11 @@ -.. _design-critical-path: - .. index:: single: critical path single: path; critical single: Memory Pool System; critical path +.. _design-critical-path: + The critical path through the MPS ================================= diff --git a/mps/manual/html/_sources/design/diag.txt b/mps/manual/html/_sources/design/diag.txt index d13cdd6d0f9..a244ba58832 100644 --- a/mps/manual/html/_sources/design/diag.txt +++ b/mps/manual/html/_sources/design/diag.txt @@ -1,9 +1,9 @@ -.. _design-diag: - .. index:: pair: diagnostic feedback; design +.. _design-diag: + Diagnostic feedback =================== diff --git a/mps/manual/html/_sources/design/finalize.txt b/mps/manual/html/_sources/design/finalize.txt index 01fbc83f1ab..1b1f09ee99c 100644 --- a/mps/manual/html/_sources/design/finalize.txt +++ b/mps/manual/html/_sources/design/finalize.txt @@ -1,9 +1,9 @@ -.. _design-finalize: - .. index:: pair: finalization; design +.. _design-finalize: + Finalization ============ diff --git a/mps/manual/html/_sources/design/fix.txt b/mps/manual/html/_sources/design/fix.txt index 9b2b059bc0a..38903133dcc 100644 --- a/mps/manual/html/_sources/design/fix.txt +++ b/mps/manual/html/_sources/design/fix.txt @@ -1,9 +1,9 @@ -.. _design-fix: - .. index:: pair: fix function; design +.. _design-fix: + The generic fix function ======================== diff --git a/mps/manual/html/_sources/design/freelist.txt b/mps/manual/html/_sources/design/freelist.txt index c8a12533345..444244901b5 100644 --- a/mps/manual/html/_sources/design/freelist.txt +++ b/mps/manual/html/_sources/design/freelist.txt @@ -1,5 +1,3 @@ -.. _design-freelist: - Free list allocator =================== diff --git a/mps/manual/html/_sources/design/guide.hex.trans.txt b/mps/manual/html/_sources/design/guide.hex.trans.txt index 5f31fb48d26..887a10e362f 100644 --- a/mps/manual/html/_sources/design/guide.hex.trans.txt +++ b/mps/manual/html/_sources/design/guide.hex.trans.txt @@ -1,9 +1,9 @@ -.. _design-guide.hex.trans: - .. index:: pair: hexadecimal; transliterating +.. _design-guide.hex.trans: + Transliterating the alphabet into hexadecimal ============================================= diff --git a/mps/manual/html/_sources/design/guide.impl.c.format.txt b/mps/manual/html/_sources/design/guide.impl.c.format.txt index 89dad45e73b..513a5329db6 100644 --- a/mps/manual/html/_sources/design/guide.impl.c.format.txt +++ b/mps/manual/html/_sources/design/guide.impl.c.format.txt @@ -1,10 +1,10 @@ -.. _design-guide.impl.c.format: - .. index:: pair: C language; formatting guide pair: C language formatting; guide +.. _design-guide.impl.c.format: + C Style -- formatting ===================== diff --git a/mps/manual/html/_sources/design/interface-c.txt b/mps/manual/html/_sources/design/interface-c.txt index b8db5831226..0dcaa658138 100644 --- a/mps/manual/html/_sources/design/interface-c.txt +++ b/mps/manual/html/_sources/design/interface-c.txt @@ -1,9 +1,9 @@ -.. _design-interface-c: - .. index:: pair: C interface; design +.. _design-interface-c: + C interface design ================== diff --git a/mps/manual/html/_sources/design/io.txt b/mps/manual/html/_sources/design/io.txt index d5cecd5b936..ba09800ad3e 100644 --- a/mps/manual/html/_sources/design/io.txt +++ b/mps/manual/html/_sources/design/io.txt @@ -1,9 +1,9 @@ -.. _design-io: - .. index:: pair: I/O subsystem; design +.. _design-io: + I/O subsystem ============= diff --git a/mps/manual/html/_sources/design/keyword-arguments.txt b/mps/manual/html/_sources/design/keyword-arguments.txt index 179ba64fde9..aed39c24af4 100644 --- a/mps/manual/html/_sources/design/keyword-arguments.txt +++ b/mps/manual/html/_sources/design/keyword-arguments.txt @@ -1,9 +1,9 @@ -.. _design-keyword-arguments: - .. index:: pair: keyword arguments; design +.. _design-keyword-arguments: + Keyword arguments in the MPS ============================ diff --git a/mps/manual/html/_sources/design/lib.txt b/mps/manual/html/_sources/design/lib.txt index e176f8f6995..f4ffa9b52bc 100644 --- a/mps/manual/html/_sources/design/lib.txt +++ b/mps/manual/html/_sources/design/lib.txt @@ -1,9 +1,9 @@ -.. _design-lib: - .. index:: pair: library interface; design +.. _design-lib: + Library interface ================= diff --git a/mps/manual/html/_sources/design/lock.txt b/mps/manual/html/_sources/design/lock.txt index d89df3d7788..43110279314 100644 --- a/mps/manual/html/_sources/design/lock.txt +++ b/mps/manual/html/_sources/design/lock.txt @@ -1,9 +1,9 @@ -.. _design-lock: - .. index:: pair: locking; design +.. _design-lock: + The lock module =============== diff --git a/mps/manual/html/_sources/design/locus.txt b/mps/manual/html/_sources/design/locus.txt index 3525778a872..6e7776dbcc8 100644 --- a/mps/manual/html/_sources/design/locus.txt +++ b/mps/manual/html/_sources/design/locus.txt @@ -1,9 +1,9 @@ -.. _design-locus: - .. index:: pair: locus manager; design +.. _design-locus: + MPS Configuration ================= diff --git a/mps/manual/html/_sources/design/message-gc.txt b/mps/manual/html/_sources/design/message-gc.txt index da5e614e286..d9d20c28833 100644 --- a/mps/manual/html/_sources/design/message-gc.txt +++ b/mps/manual/html/_sources/design/message-gc.txt @@ -1,9 +1,9 @@ -.. _design-message-gc: - .. index:: pair: garbage collection messages; design +.. _design-message-gc: + GC messages =========== diff --git a/mps/manual/html/_sources/design/message.txt b/mps/manual/html/_sources/design/message.txt index c46909e8b69..b34cf5f218a 100644 --- a/mps/manual/html/_sources/design/message.txt +++ b/mps/manual/html/_sources/design/message.txt @@ -1,10 +1,10 @@ -.. _design-message: - .. index:: pair: messages; design single: client message protocol +.. _design-message: + Client message protocol ======================= diff --git a/mps/manual/html/_sources/design/object-debug.txt b/mps/manual/html/_sources/design/object-debug.txt index d8072476c52..1e59bec0552 100644 --- a/mps/manual/html/_sources/design/object-debug.txt +++ b/mps/manual/html/_sources/design/object-debug.txt @@ -1,9 +1,9 @@ -.. _design-object-debug: - .. index:: pair: debugging; design +.. _design-object-debug: + Debugging features for client objects ===================================== diff --git a/mps/manual/html/_sources/design/old.txt b/mps/manual/html/_sources/design/old.txt index 29525beab6d..38d22aa270d 100644 --- a/mps/manual/html/_sources/design/old.txt +++ b/mps/manual/html/_sources/design/old.txt @@ -40,6 +40,8 @@ Old design poollo poolmfs poolmrg + poolmv + poolmvt poolmvff prot protan @@ -54,7 +56,9 @@ Old design shield splay sso1al + strategy telemetry + tests thread-manager thread-safety trace diff --git a/mps/manual/html/_sources/design/pool.txt b/mps/manual/html/_sources/design/pool.txt index fbfb9fcd36c..dceb7aa7b44 100644 --- a/mps/manual/html/_sources/design/pool.txt +++ b/mps/manual/html/_sources/design/pool.txt @@ -1,9 +1,9 @@ -.. _design-pool: - .. index:: pair: pool class mechanism; design +.. _design-pool: + Pool and pool class mechanisms ============================== diff --git a/mps/manual/html/_sources/design/poolamc.txt b/mps/manual/html/_sources/design/poolamc.txt index b40c1f01d28..19d13d9c8ef 100644 --- a/mps/manual/html/_sources/design/poolamc.txt +++ b/mps/manual/html/_sources/design/poolamc.txt @@ -1,10 +1,10 @@ -.. _design-poolamc: - .. index:: pair: AMC pool class; design single: pool class; AMC design +.. _design-poolamc: + AMC pool class ============== diff --git a/mps/manual/html/_sources/design/poolams.txt b/mps/manual/html/_sources/design/poolams.txt index 7bd64320d64..94bd80af9dc 100644 --- a/mps/manual/html/_sources/design/poolams.txt +++ b/mps/manual/html/_sources/design/poolams.txt @@ -1,10 +1,10 @@ -.. _design-poolams: - .. index:: pair: AMS pool class; design single: pool class; AMS design +.. _design-poolams: + AMS pool class ============== diff --git a/mps/manual/html/_sources/design/poolawl.txt b/mps/manual/html/_sources/design/poolawl.txt index 53350ff20e5..e0859d89085 100644 --- a/mps/manual/html/_sources/design/poolawl.txt +++ b/mps/manual/html/_sources/design/poolawl.txt @@ -1,10 +1,10 @@ -.. _design-poolawl: - .. index:: pair: AWL pool class; design single: pool class; AWL design +.. _design-poolawl: + AWL pool class ============== diff --git a/mps/manual/html/_sources/design/poollo.txt b/mps/manual/html/_sources/design/poollo.txt index 8a51b2ebb2f..82bd7be57f7 100644 --- a/mps/manual/html/_sources/design/poollo.txt +++ b/mps/manual/html/_sources/design/poollo.txt @@ -1,10 +1,10 @@ -.. _design-poollo: - .. index:: pair: LO pool class; design single: pool class; LO design +.. _design-poollo: + LO pool class ============= diff --git a/mps/manual/html/_sources/design/poolmfs.txt b/mps/manual/html/_sources/design/poolmfs.txt index c817b64fc91..f0213e2b501 100644 --- a/mps/manual/html/_sources/design/poolmfs.txt +++ b/mps/manual/html/_sources/design/poolmfs.txt @@ -1,10 +1,10 @@ -.. _design-poolmfs: - .. index:: pair: MFS pool class; design single: pool class; MFS design +.. _design-poolmfs: + MFS pool class ============== diff --git a/mps/manual/html/_sources/design/poolmrg.txt b/mps/manual/html/_sources/design/poolmrg.txt index 853983cce87..91aa61a5c3e 100644 --- a/mps/manual/html/_sources/design/poolmrg.txt +++ b/mps/manual/html/_sources/design/poolmrg.txt @@ -1,10 +1,10 @@ -.. _design-poolmrg: - .. index:: pair: MRG pool class; design single: pool class; MRG design +.. _design-poolmrg: + MRG pool class ============== diff --git a/mps/manual/html/_sources/design/poolmv.txt b/mps/manual/html/_sources/design/poolmv.txt index dd15e4381af..76fbbd24cb4 100644 --- a/mps/manual/html/_sources/design/poolmv.txt +++ b/mps/manual/html/_sources/design/poolmv.txt @@ -1,5 +1,3 @@ -.. _design-poolmv: - MV pool class ============= diff --git a/mps/manual/html/_sources/design/poolmvff.txt b/mps/manual/html/_sources/design/poolmvff.txt index c01308cf2f5..9c8a17eb456 100644 --- a/mps/manual/html/_sources/design/poolmvff.txt +++ b/mps/manual/html/_sources/design/poolmvff.txt @@ -1,10 +1,10 @@ -.. _design-poolmvff: - .. index:: pair: MVFF pool class; design single: pool class; MVFF design +.. _design-poolmvff: + MVFF pool class =============== diff --git a/mps/manual/html/_sources/design/poolmvt.txt b/mps/manual/html/_sources/design/poolmvt.txt index 32bb4ef900d..a3a5e9fc6d5 100644 --- a/mps/manual/html/_sources/design/poolmvt.txt +++ b/mps/manual/html/_sources/design/poolmvt.txt @@ -1,5 +1,3 @@ -.. _design-poolmvt: - Manual Variable Temporal (MVT) pool design diff --git a/mps/manual/html/_sources/design/prot.txt b/mps/manual/html/_sources/design/prot.txt index a3b9ad04a02..84ddcd8208b 100644 --- a/mps/manual/html/_sources/design/prot.txt +++ b/mps/manual/html/_sources/design/prot.txt @@ -1,9 +1,9 @@ -.. _design-prot: - .. index:: pair: protection interface; design +.. _design-prot: + The protection module ===================== diff --git a/mps/manual/html/_sources/design/protan.txt b/mps/manual/html/_sources/design/protan.txt index 9ceb972aad1..c7d81177c13 100644 --- a/mps/manual/html/_sources/design/protan.txt +++ b/mps/manual/html/_sources/design/protan.txt @@ -1,10 +1,10 @@ -.. _design-protan: - .. index:: pair: ANSI; protection interface design pair: ANSI protection interface; design +.. _design-protan: + ANSI implementation of protection module ======================================== diff --git a/mps/manual/html/_sources/design/protli.txt b/mps/manual/html/_sources/design/protli.txt index a10e4077e19..461fd889592 100644 --- a/mps/manual/html/_sources/design/protli.txt +++ b/mps/manual/html/_sources/design/protli.txt @@ -1,10 +1,10 @@ -.. _design-protli: - .. index:: pair: Linux; protection interface design pair: Linux protection interface; design +.. _design-protli: + Linux implementation of protection module ========================================= diff --git a/mps/manual/html/_sources/design/protocol.txt b/mps/manual/html/_sources/design/protocol.txt index 74020429335..da603657764 100644 --- a/mps/manual/html/_sources/design/protocol.txt +++ b/mps/manual/html/_sources/design/protocol.txt @@ -1,9 +1,9 @@ -.. _design-protocol: - .. index:: pair: protocol inheritance; design +.. _design-protocol: + Protocol inheritance ==================== diff --git a/mps/manual/html/_sources/design/protsu.txt b/mps/manual/html/_sources/design/protsu.txt index 530e446ae76..c8c32f6853b 100644 --- a/mps/manual/html/_sources/design/protsu.txt +++ b/mps/manual/html/_sources/design/protsu.txt @@ -1,10 +1,10 @@ -.. _design-protsu: - .. index:: pair: SunOS 4; protection interface design pair: SunOS 4 protection interface; design +.. _design-protsu: + SunOS 4 protection module ========================= diff --git a/mps/manual/html/_sources/design/pthreadext.txt b/mps/manual/html/_sources/design/pthreadext.txt index 90ed4a1a3b6..2e2154eaf2c 100644 --- a/mps/manual/html/_sources/design/pthreadext.txt +++ b/mps/manual/html/_sources/design/pthreadext.txt @@ -1,9 +1,9 @@ -.. _design-pthreadext: - .. index:: pair: POSIX thread extensions; design +.. _design-pthreadext: + POSIX thread extensions ======================= diff --git a/mps/manual/html/_sources/design/range.txt b/mps/manual/html/_sources/design/range.txt index a681fd4d6c6..02a0cd08c06 100644 --- a/mps/manual/html/_sources/design/range.txt +++ b/mps/manual/html/_sources/design/range.txt @@ -1,5 +1,3 @@ -.. _design-range: - Ranges ====== diff --git a/mps/manual/html/_sources/design/reservoir.txt b/mps/manual/html/_sources/design/reservoir.txt index 0bc6dcce290..e9ab2519206 100644 --- a/mps/manual/html/_sources/design/reservoir.txt +++ b/mps/manual/html/_sources/design/reservoir.txt @@ -1,9 +1,9 @@ -.. _design-reservoir: - .. index:: pair: reservoir; design +.. _design-reservoir: + The low-memory reservoir ======================== diff --git a/mps/manual/html/_sources/design/ring.txt b/mps/manual/html/_sources/design/ring.txt index 501e3d52c82..deba7b03ff2 100644 --- a/mps/manual/html/_sources/design/ring.txt +++ b/mps/manual/html/_sources/design/ring.txt @@ -1,9 +1,9 @@ -.. _design-ring: - .. index:: pair: ring structure; design +.. _design-ring: + Ring data structure =================== diff --git a/mps/manual/html/_sources/design/root.txt b/mps/manual/html/_sources/design/root.txt index 26c74156c05..276144997e5 100644 --- a/mps/manual/html/_sources/design/root.txt +++ b/mps/manual/html/_sources/design/root.txt @@ -1,9 +1,9 @@ -.. _design-root: - .. index:: pair: root manager; design +.. _design-root: + Root manager ============ diff --git a/mps/manual/html/_sources/design/scan.txt b/mps/manual/html/_sources/design/scan.txt index ef6b29ceb35..36dedd72a00 100644 --- a/mps/manual/html/_sources/design/scan.txt +++ b/mps/manual/html/_sources/design/scan.txt @@ -1,9 +1,9 @@ -.. _design-scan: - .. index:: pair: generic scanner; design +.. _design-scan: + The generic scanner =================== diff --git a/mps/manual/html/_sources/design/seg.txt b/mps/manual/html/_sources/design/seg.txt index 7dae28c1715..2c0f6488cac 100644 --- a/mps/manual/html/_sources/design/seg.txt +++ b/mps/manual/html/_sources/design/seg.txt @@ -1,9 +1,9 @@ -.. _design-seg: - .. index:: pair: segments; design +.. _design-seg: + Segment data structure ====================== diff --git a/mps/manual/html/_sources/design/shield.txt b/mps/manual/html/_sources/design/shield.txt index 653937a2449..16d1e0ab08f 100644 --- a/mps/manual/html/_sources/design/shield.txt +++ b/mps/manual/html/_sources/design/shield.txt @@ -1,9 +1,9 @@ -.. _design-shield: - .. index:: pair: shield; design +.. _design-shield: + Shield ====== diff --git a/mps/manual/html/_sources/design/sig.txt b/mps/manual/html/_sources/design/sig.txt index d450855903d..2a7370d13d1 100644 --- a/mps/manual/html/_sources/design/sig.txt +++ b/mps/manual/html/_sources/design/sig.txt @@ -1,10 +1,10 @@ -.. _design-sig: - .. index:: pair: structure signatures; design single: signatures +.. _design-sig: + Signatures in the MPS ===================== diff --git a/mps/manual/html/_sources/design/splay.txt b/mps/manual/html/_sources/design/splay.txt index 2b1ab560fc2..c6f778d97b4 100644 --- a/mps/manual/html/_sources/design/splay.txt +++ b/mps/manual/html/_sources/design/splay.txt @@ -1,9 +1,9 @@ -.. _design-splay: - .. index:: pair: splay trees; design +.. _design-splay: + Splay trees =========== diff --git a/mps/manual/html/_sources/design/sso1al.txt b/mps/manual/html/_sources/design/sso1al.txt index bad65430022..58292857e36 100644 --- a/mps/manual/html/_sources/design/sso1al.txt +++ b/mps/manual/html/_sources/design/sso1al.txt @@ -1,10 +1,10 @@ -.. _design-sso1al: - .. index:: pair: Digital Unix on Alpha stack scanner; design pair: Digital Unix on Alpha; stack scanner design +.. _design-sso1al: + Stack scanner for Digital Unix on Alpha ======================================= @@ -126,6 +126,8 @@ is lower in memory than the bottom of the stack. References ---------- -.. [DEC_Assembler] Digital Equipment Corporation. 1996; . .. [DEC_Alpha_Calling_Standard] "Calling Standard for Alpha Systems"; Digital Equipment Corporation. 1996. "`Assembly Language Programmer's Guide `__". +.. [DEC_Assembler] Digital Equipment Corporation. 1996. "`Assembly Language Programmer's Guide `__". + +.. [DEC_Alpha_Calling_Standard] Digital Equipment Corporation. 1996. "`Calling Standard for Alpha Systems `__". diff --git a/mps/manual/html/_sources/design/strategy.txt b/mps/manual/html/_sources/design/strategy.txt index 03671cdf9f7..9286f8cdbf8 100644 --- a/mps/manual/html/_sources/design/strategy.txt +++ b/mps/manual/html/_sources/design/strategy.txt @@ -1,5 +1,3 @@ -.. _design-strategy: - MPS Strategy ============ diff --git a/mps/manual/html/_sources/design/telemetry.txt b/mps/manual/html/_sources/design/telemetry.txt index e9e682896ac..58964d1fdd1 100644 --- a/mps/manual/html/_sources/design/telemetry.txt +++ b/mps/manual/html/_sources/design/telemetry.txt @@ -1,9 +1,9 @@ -.. _design-telemetry: - .. index:: pair: telemetry; design +.. _design-telemetry: + Telemetry ========= diff --git a/mps/manual/html/_sources/design/tests.txt b/mps/manual/html/_sources/design/tests.txt index 2d6ab4addca..b9fd87a4e4f 100644 --- a/mps/manual/html/_sources/design/tests.txt +++ b/mps/manual/html/_sources/design/tests.txt @@ -1,5 +1,3 @@ -.. _design-tests: - Tests ===== diff --git a/mps/manual/html/_sources/design/thread-manager.txt b/mps/manual/html/_sources/design/thread-manager.txt index 4392775d217..dc34c1e241e 100644 --- a/mps/manual/html/_sources/design/thread-manager.txt +++ b/mps/manual/html/_sources/design/thread-manager.txt @@ -1,9 +1,9 @@ -.. _design-thread-manager: - .. index:: pair: thread manager; design +.. _design-thread-manager: + Thread Manager ============== diff --git a/mps/manual/html/_sources/design/thread-safety.txt b/mps/manual/html/_sources/design/thread-safety.txt index eb43b437ff3..b0dded04f6c 100644 --- a/mps/manual/html/_sources/design/thread-safety.txt +++ b/mps/manual/html/_sources/design/thread-safety.txt @@ -1,9 +1,9 @@ -.. _design-thread-safety: - .. index:: pair: thread safety; design +.. _design-thread-safety: + Thread safety in the MPS ======================== diff --git a/mps/manual/html/_sources/design/trace.txt b/mps/manual/html/_sources/design/trace.txt index 0816dea309e..b87a51a0a6a 100644 --- a/mps/manual/html/_sources/design/trace.txt +++ b/mps/manual/html/_sources/design/trace.txt @@ -1,9 +1,9 @@ -.. _design-trace: - .. index:: pair: tracer; design +.. _design-trace: + Tracer ====== diff --git a/mps/manual/html/_sources/design/type.txt b/mps/manual/html/_sources/design/type.txt index c931c65fafb..29ffb23658b 100644 --- a/mps/manual/html/_sources/design/type.txt +++ b/mps/manual/html/_sources/design/type.txt @@ -1,9 +1,9 @@ -.. _design-type: - .. index:: pair: general types; design +.. _design-type: + General MPS types ================= diff --git a/mps/manual/html/_sources/design/version-library.txt b/mps/manual/html/_sources/design/version-library.txt index 4b5d59a4f35..dd7f4366555 100644 --- a/mps/manual/html/_sources/design/version-library.txt +++ b/mps/manual/html/_sources/design/version-library.txt @@ -1,9 +1,9 @@ -.. _design-version-library: - .. index:: pair: library version mechanism; design +.. _design-version-library: + Library version mechanism ========================= diff --git a/mps/manual/html/_sources/design/version.txt b/mps/manual/html/_sources/design/version.txt index 9cdb3e9fb8d..ad09d6bce60 100644 --- a/mps/manual/html/_sources/design/version.txt +++ b/mps/manual/html/_sources/design/version.txt @@ -1,10 +1,10 @@ -.. _design-version: - .. index:: pair: software versions; design single: versions; design +.. _design-version: + Software versions ================= diff --git a/mps/manual/html/_sources/design/vm.txt b/mps/manual/html/_sources/design/vm.txt index 919145babb9..fbe6862dc09 100644 --- a/mps/manual/html/_sources/design/vm.txt +++ b/mps/manual/html/_sources/design/vm.txt @@ -1,9 +1,9 @@ -.. _design-vm: - .. index:: pair: virtual mapping; design +.. _design-vm: + Virtual mapping =============== diff --git a/mps/manual/html/_sources/design/vman.txt b/mps/manual/html/_sources/design/vman.txt index 73c46235d1d..23ff51f3fc1 100644 --- a/mps/manual/html/_sources/design/vman.txt +++ b/mps/manual/html/_sources/design/vman.txt @@ -1,9 +1,9 @@ -.. _design-vman: - .. index:: pair: ANSI fake VM; design +.. _design-vman: + ANSI fake VM ============ diff --git a/mps/manual/html/_sources/design/vmo1.txt b/mps/manual/html/_sources/design/vmo1.txt index 6715c5bd01f..575ff93cc3e 100644 --- a/mps/manual/html/_sources/design/vmo1.txt +++ b/mps/manual/html/_sources/design/vmo1.txt @@ -1,9 +1,9 @@ -.. _design-vmo1: - .. index:: pair: VM for Digital Unix; design +.. _design-vmo1: + VM for Digital Unix =================== diff --git a/mps/manual/html/_sources/design/vmso.txt b/mps/manual/html/_sources/design/vmso.txt index 561a07dec5e..3ab20b63a8e 100644 --- a/mps/manual/html/_sources/design/vmso.txt +++ b/mps/manual/html/_sources/design/vmso.txt @@ -1,9 +1,9 @@ -.. _design-vmso: - .. index:: pair: VM for Solaris; design +.. _design-vmso: + VM for Solaris ============== diff --git a/mps/manual/html/_sources/design/writef.txt b/mps/manual/html/_sources/design/writef.txt index 6d442ee1f01..4432ff5060b 100644 --- a/mps/manual/html/_sources/design/writef.txt +++ b/mps/manual/html/_sources/design/writef.txt @@ -1,9 +1,9 @@ -.. _design-writef: - .. index:: pair: WriteF function; design +.. _design-writef: + The WriteF function =================== diff --git a/mps/manual/html/_sources/index.txt b/mps/manual/html/_sources/index.txt index a3fdc221aff..161a13ad3b3 100644 --- a/mps/manual/html/_sources/index.txt +++ b/mps/manual/html/_sources/index.txt @@ -35,5 +35,6 @@ Appendices glossary/index copyright contact + release * :ref:`genindex` diff --git a/mps/manual/html/_sources/pool/intro.txt b/mps/manual/html/_sources/pool/intro.txt index 2228a66c8de..f94336a4194 100644 --- a/mps/manual/html/_sources/pool/intro.txt +++ b/mps/manual/html/_sources/pool/intro.txt @@ -20,50 +20,63 @@ of pools, choosing the most appropriate pool class for each. class in the open source MPS exactly matches your needs, then it is possible to develop new pool classes. See :ref:`pool-writing`. -First, answer these questions about your data: +First, do you need the MPS to :term:`automatically ` :term:`reclaim` :term:`unreachable` blocks? If so, you +need an automatically managed (garbage collected) pool class and you +should consult :ref:`pool-choose-automatic` below. +Otherwise, you need a manually managed pool class and you should +consult :ref:`pool-choose-manual` below. -1. Do you need the MPS to :term:`automatically ` :term:`reclaim` :term:`unreachable` blocks? -2. Is it acceptable for the MPS to :term:`move ` blocks in memory and to place :term:`barriers (1)` on blocks? (For example, it might not be acceptable to move a block if it has been passed to :term:`foreign code` that remembered its location.) -3. Do your blocks contain :term:`references` to blocks stored in +2. Do your blocks contain :term:`references` to blocks stored in automatically managed pools (including references to other blocks in the same pool, if it's automatically managed)? And if so, are - these references :term:`exact `, :term:`ambiguous - ` or :term:`weak `? + these references :term:`exact ` or :term:`weak + `? Second, look up your answers in this table to find the recommended pool class to use: -========== ====================== =========== ==================================== -Automatic? Movable & protectable? References? Use this pool class -========== ====================== =========== ==================================== -yes yes none :ref:`pool-amcz` -yes yes exact :ref:`pool-amc` -yes yes ambiguous nothing suitable -yes yes weak :ref:`pool-awl` -yes no none :ref:`pool-lo` -yes no exact :ref:`pool-ams` -yes no ambiguous nothing suitable -yes no weak nothing suitable -no *any* none :ref:`pool-mvff` -no *any* exact :ref:`pool-mvff` [1]_ -no *any* ambiguous :ref:`pool-mvff` [1]_ -no *any* weak :ref:`pool-mvff` [1]_ -========== ====================== =========== ==================================== +====================== =========== =================== +Movable & protectable? References? Use this pool class +====================== =========== =================== +yes none :ref:`pool-amcz` +yes exact :ref:`pool-amc` +yes weak :ref:`pool-awl` +no none :ref:`pool-lo` +no exact :ref:`pool-ams` +no weak nothing suitable +====================== =========== =================== -.. note:: - .. [1] :ref:`pool-mvff` doesn't scan for references, but you can - work around this by registering your blocks as - :term:`roots` (with the appropriate :term:`rank`) just - after they are allocated, and deregistering them just - before freeing them. +.. _pool-choose-manual: + +Choosing a manual pool class +---------------------------- + +Answer these questions about your data: + +1. Are the blocks fixed in size? If so, use :ref:`pool-mfs`. + +2. Are the lifetimes of blocks predictable? If so, use + :ref:`pool-mvt`, and arrange that objects that are predicted to die + at about the same time are allocated from the same + :term:`allocation point`. + +3. Otherwise, use :ref:`pool-mvff`. .. Sources: diff --git a/mps/manual/html/_sources/pool/mv.txt b/mps/manual/html/_sources/pool/mv.txt index 7d9b32cbf8c..810460f6ff9 100644 --- a/mps/manual/html/_sources/pool/mv.txt +++ b/mps/manual/html/_sources/pool/mv.txt @@ -9,7 +9,7 @@ MV (Manual Variable) .. deprecated:: starting with version 1.111. - :ref:`pool-mvff` should be used instead. + :ref:`pool-mvff` or :ref:`pool-mvt` should be used instead. **MV** is a general-purpose :term:`manually managed ` :term:`pool class` that manages :term:`blocks` of diff --git a/mps/manual/html/_sources/pool/mvff.txt b/mps/manual/html/_sources/pool/mvff.txt index 4f105bffc28..1ceae617f2b 100644 --- a/mps/manual/html/_sources/pool/mvff.txt +++ b/mps/manual/html/_sources/pool/mvff.txt @@ -125,7 +125,7 @@ MVFF interface efficient if this is wrong, but nothing will break. * :c:macro:`MPS_KEY_ALIGN` (type :c:type:`mps_align_t`, default is - smallest general purpose alignment for the architecture) is the + :c:macro:`MPS_PF_ALIGN`) is the :term:`alignment` of addresses for allocation (and freeing) in the pool. If an unaligned size is passed to :c:func:`mps_alloc` or :c:func:`mps_free`, it will be rounded up to the pool's alignment. diff --git a/mps/manual/html/_sources/pool/mvt.txt b/mps/manual/html/_sources/pool/mvt.txt index fd56d1a299c..30b63d90be0 100644 --- a/mps/manual/html/_sources/pool/mvt.txt +++ b/mps/manual/html/_sources/pool/mvt.txt @@ -78,10 +78,6 @@ MVT properties * Allocations may be variable in size. -* The :term:`alignment` of blocks is not configurable: it is the - :term:`natural alignment` of the platform (see - :c:macro:`MPS_PF_ALIGN`). - * Blocks do not have :term:`dependent objects`. * Blocks are not automatically :term:`reclaimed`. @@ -116,7 +112,7 @@ MVT interface six :term:`keyword arguments`: * :c:macro:`MPS_KEY_ALIGN` (type :c:type:`mps_align_t`, default is - smallest general purpose alignment for the architecture) is the + :c:macro:`MPS_PF_ALIGN`) is the :term:`alignment` of addresses for allocation (and freeing) in the pool. If an unaligned size is passed to :c:func:`mps_alloc` or :c:func:`mps_free`, it will be rounded up to the pool's alignment. @@ -124,7 +120,7 @@ MVT interface ``sizeof(void *)``. * :c:macro:`MPS_KEY_MIN_SIZE` (type :c:type:`size_t`, default is - smallest general purpose alignment for the architecture) is the + :c:macro:`MPS_PF_ALIGN`) is the predicted minimum size of blocks that will be allocated from the pool. @@ -143,9 +139,9 @@ MVT interface that will break is the partial freeing of large blocks. * :c:macro:`MPS_KEY_MVT_RESERVE_DEPTH` (type - :c:type:`mps_count_t`) is the expected hysteresis of the - population of the pool. When blocks are freed, the pool will - retain sufficient storage to allocate this many blocks of the + :c:type:`mps_count_t`, default 1024) is the expected hysteresis + of the population of the pool. When blocks are freed, the pool + will retain sufficient storage to allocate this many blocks of the mean size for near term allocations (rather than immediately making that storage available to other pools). @@ -167,14 +163,14 @@ MVT interface object population does vary, at a slight cost in efficiency. The reserve does not guarantee any particular amount of allocation. - * :c:macro:`MPS_KEY_MVT_FRAG_LIMIT` (type :c:type:`mps_count_t`) - is a double from 0.0 to 1.0 (inclusive). It sets an upper - limit on the space overhead of an MVT pool, in case block death - times and allocations do not correlate well. If the free space - managed by the pool as a ratio of all the space managed by the - pool exceeds the fragmentation limit, the pool falls back to a - first fit allocation policy, exploiting space more efficiently - at a cost in time efficiency. A fragmentation limit of 0.0 would + * :c:macro:`MPS_KEY_MVT_FRAG_LIMIT` (type :c:type:`double`, + default 0.3) is a double from 0.0 to 1.0 (inclusive). It sets an + upper limit on the space overhead of an MVT pool, in case block + death times and allocations do not correlate well. If the free + space managed by the pool as a ratio of all the space managed by + the pool exceeds the fragmentation limit, the pool falls back to a + first fit allocation policy, exploiting space more efficiently at + a cost in time efficiency. A fragmentation limit of 0.0 would cause the pool to operate as a first-fit pool, at a significant cost in time efficiency: therefore this is not permitted. diff --git a/mps/manual/html/_sources/release.txt b/mps/manual/html/_sources/release.txt new file mode 100644 index 00000000000..d780237bd7b --- /dev/null +++ b/mps/manual/html/_sources/release.txt @@ -0,0 +1,72 @@ +.. _release-notes: + +Release notes +============= + +.. _release-notes-1.112: + +Release 1.112.0 +--------------- + +Interface changes +................. + +1. In the :term:`hot` (production) variety, the MPS now prints + assertion messages to standard error but does *not* terminate the + program. This is because most assertions do not indicate *fatal* + error conditions, and continuing gives the application a chance to + shut down safely and save work, or even to limp along indefinitely. + See :ref:`topic-error-assertion-handling`. + +2. The behaviour when an assertion is triggered is now configurable in + the standard ANSI :term:`plinth` by installing an assertion + handler. See :c:func:`mps_lib_assert_fail_install`. + +3. Functions that take a variable number of arguments + (:c:func:`mps_arena_create`, :c:func:`mps_pool_create`, + :c:func:`mps_fmt_create` and :c:func:`mps_ap_create`) are now + deprecated in favour of functions that use a :term:`keyword + argument` interface (:c:func:`mps_arena_create_k`, + :c:func:`mps_pool_create_k`, :c:func:`mps_fmt_create_k` and + :c:func:`mps_ap_create_k`). The new interface provides better + reporting of errors, provides default values for arguments, and + provides forward compatibility. See :ref:`topic-keyword`. + + (The old interface continues to be supported, but new features will + only be available through the keyword interface.) + +4. :ref:`pool-mfs` no longer refuses to manage blocks that are smaller + than the platform alignment. It now rounds up smaller sizes + internally if necessary. + +5. :ref:`pool-mvt` now allows the client to specify the alignment of + blocks allocated from the pool. Use the keyword argument + :c:macro:`MPS_KEY_ALIGN` when creating a pool of class + :c:func:`mps_class_mvt`. + +6. On Windows, you can now request that the MPS allocate address space + from the top down, allowing a 32-bit executable linked with + ``/LARGEADDRESSAWARE`` to use the top half of the address space. + Use the keyword argument :c:macro:`MPS_KEY_VMW3_TOP_DOWN` when + creating an arena of class :c:func:`mps_arena_class_vm`. + + +Other changes +............. + +1. On Windows, an execute exception no longer triggers an assertion. + See job003301_. + + .. _job003301: https://www.ravenbrook.com/project/mps/issue/job003301/ + +2. Rehashing of large address-based hash tables no longer provokes a + nursery collection that immediately renders the hash table stale + again. See job003435_. + + .. _job003435: https://www.ravenbrook.com/project/mps/issue/job003435/ + +3. :ref:`pool-mvt` no longer triggers an assertion failure when it + runs out of space on its reserved block queue. See job003486_. + + .. _job003486: https://www.ravenbrook.com/project/mps/issue/job003486/ + diff --git a/mps/manual/html/_sources/topic/error.txt b/mps/manual/html/_sources/topic/error.txt index abf1a1c2600..97ec2f73216 100644 --- a/mps/manual/html/_sources/topic/error.txt +++ b/mps/manual/html/_sources/topic/error.txt @@ -232,6 +232,13 @@ assertion that is listed here but for which you discovered a different cause), please :ref:`let us know ` so that we can improve this documentation. +``arenavm.c: BTIsResRange(vmChunk->pageTableMapped, 0, chunk->pageTablePages)`` + + The client program called :c:func:`mps_arena_destroy` without + having destroyed all pools in that arena first. (The assertion is + from the virtual memory manager which is checking that all pages + have been unmapped.) + ``dbgpool.c: fencepost check on free`` 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 @@ .highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #333333 } /* Generic.Output */ +.highlight .go { color: #303030 } /* Generic.Output */ .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .gt { color: #0040D0 } /* Generic.Traceback */ .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ diff --git a/mps/manual/html/contact.html b/mps/manual/html/contact.html index 91a7007fbfe..b82ffcc0113 100644 --- a/mps/manual/html/contact.html +++ b/mps/manual/html/contact.html @@ -27,6 +27,7 @@ + @@ -36,6 +37,9 @@
  • index
  • +
  • + next |
  • previous |
  • @@ -80,7 +84,10 @@ Ravenbrook’s web site.

    Previous topic

    Memory Pool System Kit Open Source License

    Downloads

    + title="previous chapter">Memory Pool System Kit Open Source License

    +

    Next topic

    +

    Release notes

    Downloads

    MPS Kit release 1.111.0
    @@ -105,6 +112,9 @@ Ravenbrook’s web site.

  • index
  • +
  • + next |
  • previous |
  • diff --git a/mps/manual/html/design/abq.html b/mps/manual/html/design/abq.html index 405c1e57661..52dda7a90ea 100644 --- a/mps/manual/html/design/abq.html +++ b/mps/manual/html/design/abq.html @@ -55,7 +55,7 @@
    -

    1. Queue design

    +

    1. Queue design

    1.1. Introduction

    .intro: This is the design of the ABQ module, which implements a diff --git a/mps/manual/html/design/alloc-frame.html b/mps/manual/html/design/alloc-frame.html index 51d1c2656d6..aec754e14be 100644 --- a/mps/manual/html/design/alloc-frame.html +++ b/mps/manual/html/design/alloc-frame.html @@ -54,8 +54,8 @@

    -
    -

    1. Allocation frame protocol

    +
    +

    1. Allocation frame protocol

    1.1. Introduction

    .intro: This document explains the design of the support for @@ -407,9 +407,9 @@ responding to a Sel

    .lw-frame.state-impl: Each AP contains 3 additional fields to hold this state:

    -
    mps_addr_t frameptr;
    -mps_bool_t enabled;
    -mps_bool_t lwPopPending;
    +
    mps_addr_t frameptr;
    +mps_bool_t enabled;
    +mps_bool_t lwPopPending;
     

    .lw-frame.enabled: The enabled slot holds the following values for diff --git a/mps/manual/html/design/arena.html b/mps/manual/html/design/arena.html index 3ddabd37c0f..ea17e453da4 100644 --- a/mps/manual/html/design/arena.html +++ b/mps/manual/html/design/arena.html @@ -54,8 +54,8 @@

    -
    -

    2. Arena

    +
    +

    2. Arena

    2.1. Introduction

    .intro: This is the design of the arena structure.

    diff --git a/mps/manual/html/design/arenavm.html b/mps/manual/html/design/arenavm.html index 106c3a5c42f..09729528309 100644 --- a/mps/manual/html/design/arenavm.html +++ b/mps/manual/html/design/arenavm.html @@ -54,8 +54,8 @@
    -
    -

    3. Virtual Memory Arena

    +
    +

    3. Virtual Memory Arena

    3.1. Introduction

    .intro: This document describes the detailed design of the Virtual diff --git a/mps/manual/html/design/boot.html b/mps/manual/html/design/boot.html deleted file mode 100644 index bacb6afe21e..00000000000 --- a/mps/manual/html/design/boot.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - The MPS Bootstrap — Memory Pool System 1.111.0 documentation - - - - - - - - - - - - -

    - -
    -
    -
    -
    - -
    -

    The MPS Bootstrap

    -
    -

    Introduction

    -

    The `Memory Pool System`_ starts with no memory, but must somehow -allocate its own control structures in order to provide memory to the -client program. The MPS is freestanding [ref?] and so it can’t get its -memory from the C library’s malloc. So how does it get off the -ground? It pulls itself up by its own bootstraps. This document -describes how.

    -
    -

    Note

    -

    This document was written as a prelude to reforming the bootstrap, -so it shouldn’t be taken as advocating it as an amazing piece of -design.

    -
    -

    Pretty much the first call to the MPS is to ArenaCreate, which calls the -arena class specific init method. That must create an initialized arena, -except for the “control pool”, from which many MPS data structures will be -allocated.

    -

    In the case of the VM arena, VMArenaInit creates a VM large enough to hold -a VMArenaStruct (which contains the generic ArenaStruct) and maps -pages into it. It then calls ArenaInit to initialise the generic part, -before filling in the VM-specific part. Having done that, it adds the initial -VMChunk – a large area of address space – that will be used to supply -memory via ArenaAlloc.

    -
    -
    - - -
    -
    -
    - -
    -
    - - - - \ No newline at end of file diff --git a/mps/manual/html/design/bt.html b/mps/manual/html/design/bt.html index c7338dea279..f159cd81e7a 100644 --- a/mps/manual/html/design/bt.html +++ b/mps/manual/html/design/bt.html @@ -54,8 +54,8 @@
    -
    -

    4. Bit tables

    +
    +

    4. Bit tables

    4.1. Introduction

    .intro: This is the design of the Bit Tables module. A Bit Table is a @@ -400,7 +400,7 @@ now return 0 for base otherwise. Meets .non-req.ops.test.range.same.

    .if.find.general: There are four functions (below) to find reset ranges. All the functions have the same prototype (for symmetry):

    -
    Bool find(Index *baseReturn, Index *limitReturn,
    +
    Bool find(Index *baseReturn, Index *limitReturn,
               BT bt,
               Index searchBase, Index searchLimit,
               Count length);
    diff --git a/mps/manual/html/design/buffer.html b/mps/manual/html/design/buffer.html
    index ba31277c751..db7f213bca1 100644
    --- a/mps/manual/html/design/buffer.html
    +++ b/mps/manual/html/design/buffer.html
    @@ -54,8 +54,8 @@
             
    -
    -

    5. Allocation buffers and allocation points

    +
    +

    5. Allocation buffers and allocation points

    5.1. Introduction

    .scope: This document describes the design of allocation buffers diff --git a/mps/manual/html/design/cbs.html b/mps/manual/html/design/cbs.html index 8242ce8331a..1f3a4b6c4e6 100644 --- a/mps/manual/html/design/cbs.html +++ b/mps/manual/html/design/cbs.html @@ -55,7 +55,7 @@

    -

    2. Coalescing block structure

    +

    2. Coalescing block structure

    2.1. Introduction

    .intro: This is the design for impl.c.cbs, which implements a data diff --git a/mps/manual/html/design/check.html b/mps/manual/html/design/check.html index 6600fa47ee5..0da920900d6 100644 --- a/mps/manual/html/design/check.html +++ b/mps/manual/html/design/check.html @@ -54,8 +54,8 @@

    -
    -

    6. Checking

    +
    +

    6. Checking

    6.1. Introduction

    .intro: This documents the design of structure checking within the diff --git a/mps/manual/html/design/class-interface.html b/mps/manual/html/design/class-interface.html index 86ddbf7b7b1..11c2952bbd0 100644 --- a/mps/manual/html/design/class-interface.html +++ b/mps/manual/html/design/class-interface.html @@ -54,8 +54,8 @@

    -
    -

    7. Pool class interface

    +
    +

    7. Pool class interface

    7.1. Introduction

    .intro: This document describes the interface and protocols between diff --git a/mps/manual/html/design/collection.html b/mps/manual/html/design/collection.html index 27fc50f68d7..d56e4ff0b9f 100644 --- a/mps/manual/html/design/collection.html +++ b/mps/manual/html/design/collection.html @@ -54,8 +54,8 @@

    -
    -

    8. Collection framework

    +
    +

    8. Collection framework

    8.1. Introduction

    .intro: This document describes the Collection Framework. It’s a diff --git a/mps/manual/html/design/config.html b/mps/manual/html/design/config.html index 4110bca1318..5988de687e4 100644 --- a/mps/manual/html/design/config.html +++ b/mps/manual/html/design/config.html @@ -54,8 +54,8 @@

    -
    -

    3. MPS Configuration

    +
    +

    3. MPS Configuration

    3.1. Introduction

    .intro: This document describes how the Memory Pool System source code is configured so @@ -440,19 +440,19 @@ possibly their types, depending on the protocol defined configuration parameter. However, the concrete interface may vary.

    For example, this isn’t allowed, because there is a change in the interface:

    #if defined(PROT_FOO)
    -void ProtSpong(Foo foo, Bar bar);
    +void ProtSpong(Foo foo, Bar bar);
     #else
    -int ProtSpong(Bar bar, Foo foo);
    +int ProtSpong(Bar bar, Foo foo);
     #endif
     

    This example shows how:

    #ifdef PROTECTION
    -void ProtSync(Space space);
    -/* more decls. */
    +void ProtSync(Space space);
    +/* more decls. */
     #else /* PROTECTION not */
     #define ProtSync(space) NOOP
    -/* more decls. */
    +/* more decls. */
     #endif /* PROTECTION */
     
    diff --git a/mps/manual/html/design/critical-path.html b/mps/manual/html/design/critical-path.html index 14f379b06b8..c0eb90c825b 100644 --- a/mps/manual/html/design/critical-path.html +++ b/mps/manual/html/design/critical-path.html @@ -54,8 +54,8 @@
    -
    -

    4. The critical path through the MPS

    +
    +

    4. The critical path through the MPS

    single: critical path single: path; critical @@ -181,18 +181,18 @@ registered with one of the Here is an example of part of a format scanner for scanning contiguous runs of pointers, from fmtdy.c, the scanner for the Open Dylan runtime:

    -
    static mps_res_t dylan_scan_contig(mps_ss_t mps_ss,
    -                                   mps_addr_t *base, mps_addr_t *limit)
    +
    static mps_res_t dylan_scan_contig(mps_ss_t mps_ss,
    +                                   mps_addr_t *base, mps_addr_t *limit)
     {
    -  mps_res_t res;
    -  mps_addr_t *p;        /* reference cursor */
    -  mps_addr_t r;         /* reference to be fixed */
    +  mps_res_t res;
    +  mps_addr_t *p;        /* reference cursor */
    +  mps_addr_t r;         /* reference to be fixed */
     
       MPS_SCAN_BEGIN(mps_ss) {
               p = base;
         loop: if(p >= limit) goto out;
               r = *p++;
    -          if(((mps_word_t)r&3) != 0) /* pointers tagged with 0 */
    +          if(((mps_word_t)r&3) != 0) /* pointers tagged with 0 */
                 goto loop;             /* not a pointer */
               if(!MPS_FIX1(mps_ss, r)) goto loop;
               res = MPS_FIX2(mps_ss, p-1);
    diff --git a/mps/manual/html/design/diag.html b/mps/manual/html/design/diag.html
    index 2f0dca5841a..0a5c0f34206 100644
    --- a/mps/manual/html/design/diag.html
    +++ b/mps/manual/html/design/diag.html
    @@ -54,8 +54,8 @@
             
    -
    -

    9. Diagnostic feedback

    +
    +

    9. Diagnostic feedback

    9.1. Introduction

    .intro: This document describes how to use the diagnostic feedback @@ -99,33 +99,34 @@ places where you want to inspect data structures (or wait for the debugger to be entered via an abort() call or unhandled segmentation fault). Then at the debugger command prompt, run Describe() commands of your choice. For example:

    -
    (gdb) run
    -Starting program: mv2test
    -Reading symbols for shared libraries +............................. done
    -cbs.c:94: MPS ASSERTION FAILED: !cbs->inCBS
    +
    (gdb) run
    +Starting program: mv2test
    +Reading symbols for shared libraries +............................. done
    +cbs.c:94: MPS ASSERTION FAILED: !cbs->inCBS
     
    -Program received signal SIGABRT, Aborted.
    -0x00007fff83e42d46 in __kill ()
    -(gdb) frame 12
    -#12 0x000000010000b1fc in MVTFree (pool=0x103ffe160, base=0x101dfd000, size=5024) at poolmv2.c:711
    -711         Res res = CBSInsert(MVTCBS(mvt), base, limit);
    -(gdb) p MVTDescribe(mvt, mps_lib_get_stdout())
    -MVT 0000000103FFE160
    -{
    -  minSize: 8
    -  meanSize: 42
    -  maxSize: 8192
    -  fragLimit: 30
    -  reuseSize: 16384
    -  fillSize: 8192
    -  availLimit: 1110835
    -  abqOverflow: FALSE
    -  splinter: TRUE
    -  splinterSeg: 0000000103FEE780
    -  splinterBase: 0000000101D7ABB8
    -  splinterLimit: 0000000101D7B000
    -  # ... etc ...
    -}
    +Program received signal SIGABRT, Aborted. +0x00007fff83e42d46 in __kill () +(gdb) frame 12 +#12 0x000000010000b1fc in MVTFree (pool=0x103ffe160, base=0x101dfd000, size=5024) at poolmv2.c:711 +711 Res res = CBSInsert(MVTCBS(mvt), base, limit); +(gdb) p MVTDescribe(mvt, mps_lib_get_stdout()) +MVT 0000000103FFE160 +{ + minSize: 8 + meanSize: 42 + maxSize: 8192 + fragLimit: 30 + reuseSize: 16384 + fillSize: 8192 + availLimit: 1110835 + abqOverflow: FALSE + splinter: TRUE + splinterSeg: 0000000103FEE780 + splinterBase: 0000000101D7ABB8 + splinterLimit: 0000000101D7B000 + # ... etc ... +} +
    diff --git a/mps/manual/html/design/finalize.html b/mps/manual/html/design/finalize.html index 0370c0446b0..62c6ce6751d 100644 --- a/mps/manual/html/design/finalize.html +++ b/mps/manual/html/design/finalize.html @@ -54,8 +54,8 @@
    -
    -

    10. Finalization

    +
    +

    10. Finalization

    10.1. Overview

    .overview: Finalization is implemented internally using the diff --git a/mps/manual/html/design/fix.html b/mps/manual/html/design/fix.html index f6730444bfd..3a0057a275e 100644 --- a/mps/manual/html/design/fix.html +++ b/mps/manual/html/design/fix.html @@ -54,8 +54,8 @@

    -
    -

    11. The generic fix function

    +
    +

    11. The generic fix function

    11.1. Introduction

    .intro: Fix is the interface through which the existence of diff --git a/mps/manual/html/design/freelist.html b/mps/manual/html/design/freelist.html index 6b6e7447d95..13482cccabd 100644 --- a/mps/manual/html/design/freelist.html +++ b/mps/manual/html/design/freelist.html @@ -55,7 +55,7 @@

    -

    5. Free list allocator

    +

    5. Free list allocator

    5.1. Introduction

    .intro: This document describes the free list allocator for the diff --git a/mps/manual/html/design/guide.hex.trans.html b/mps/manual/html/design/guide.hex.trans.html index 3af49325e2c..5764ebc1aee 100644 --- a/mps/manual/html/design/guide.hex.trans.html +++ b/mps/manual/html/design/guide.hex.trans.html @@ -54,8 +54,8 @@

    -
    -

    6. Transliterating the alphabet into hexadecimal

    +
    +

    6. Transliterating the alphabet into hexadecimal

    6.1. Introduction

    .scope: This document explains how to represent the alphabet as diff --git a/mps/manual/html/design/guide.impl.c.format.html b/mps/manual/html/design/guide.impl.c.format.html index 35f39a9dbaf..51775d94743 100644 --- a/mps/manual/html/design/guide.impl.c.format.html +++ b/mps/manual/html/design/guide.impl.c.format.html @@ -54,8 +54,8 @@

    -
    -

    7. C Style – formatting

    +
    +

    7. C Style – formatting

    7.1. Introduction

    .scope: This document describes the Ravenbrook conventions for the diff --git a/mps/manual/html/design/interface-c.html b/mps/manual/html/design/interface-c.html index b04ebc977c7..77ca5f53ef7 100644 --- a/mps/manual/html/design/interface-c.html +++ b/mps/manual/html/design/interface-c.html @@ -54,8 +54,8 @@

    -
    -

    12. C interface design

    +
    +

    12. C interface design

    12.1. Introduction

    .scope: This document is the design for the Memory Pool System @@ -175,19 +175,19 @@ as pointer to function) are declared a prototype should be used and the parameters to the function should not be named. This includes the case where you are declaring the prototype for an interface function.

    .type.fun.example: So use:

    -
    extern mps_res_t mps_alloc(mps_addr_t *, mps_pool_t, size_t, ...);
    +
    extern mps_res_t mps_alloc(mps_addr_t *, mps_pool_t, size_t, ...);
     

    rather than:

    -
    extern mps_res_t mps_alloc(mps_addr_t *addr_return, mps_pool_t pool , size_t size, ...);
    +
    extern mps_res_t mps_alloc(mps_addr_t *addr_return, mps_pool_t pool , size_t size, ...);
     

    and:

    -
    typedef mps_addr_t (*mps_fmt_class_t)(mps_addr_t);
    +
    typedef mps_addr_t (*mps_fmt_class_t)(mps_addr_t);
     

    rather than:

    -
    typedef mps_addr_t (*mps_fmt_class_t)(mps_addr_t object);
    +
    typedef mps_addr_t (*mps_fmt_class_t)(mps_addr_t object);
     

    See guide.impl.c.misc.prototype.parameters.

    diff --git a/mps/manual/html/design/io.html b/mps/manual/html/design/io.html index cda8b724e48..9c478dc9e94 100644 --- a/mps/manual/html/design/io.html +++ b/mps/manual/html/design/io.html @@ -54,8 +54,8 @@
    -
    -

    13. I/O subsystem

    +
    +

    13. I/O subsystem

    13.1. Introduction

    .intro: This document is the design of the MPS I/O Subsystem, a @@ -190,7 +190,7 @@ liberty to define this structure.

    several different types. It will probably choose to send them to different destinations based on their type: telemetry to the measurement tool, debugging output to the debugger, etc.

    -
    typedef int mps_io_type_t;
    +
    typedef int mps_io_type_t;
     enum {
       MPS_IO_TYPE_TELEMETRY,
       MPS_IO_TYPE_DEBUG
    @@ -293,11 +293,11 @@ just a few old messages. What can you do with it?

    struct sockaddr_in debugging; } mps_io_s; -static mps_bool_t inited = 0; +static mps_bool_t inited = 0; static mps_io_s state; -mps_res_t mps_io_create(mps_io_t *mps_io_o) +mps_res_t mps_io_create(mps_io_t *mps_io_o) { int sock, r; @@ -329,7 +329,7 @@ just a few old messages. What can you do with it?

    } -void mps_io_destroy(mps_io_t mps_io) +void mps_io_destroy(mps_io_t mps_io) { assert(mps_io == &state); assert(inited); @@ -340,7 +340,7 @@ just a few old messages. What can you do with it?

    } -mps_res_t mps_io_send(mps_io_t mps_io, mps_type_t type, +mps_res_t mps_io_send(mps_io_t mps_io, mps_type_t type, void *message, size_t size) { struct sockaddr *toaddr; @@ -368,7 +368,7 @@ just a few old messages. What can you do with it?

    } -mps_res_t mps_io_receive(mps_io_t mps_io, +mps_res_t mps_io_receive(mps_io_t mps_io, void **message_o, size_t **size_o) { int r; diff --git a/mps/manual/html/design/keyword-arguments.html b/mps/manual/html/design/keyword-arguments.html index 19f17506f36..57e1ca1135c 100644 --- a/mps/manual/html/design/keyword-arguments.html +++ b/mps/manual/html/design/keyword-arguments.html @@ -54,8 +54,8 @@
    -
    -

    8. Keyword arguments in the MPS

    +
    +

    8. Keyword arguments in the MPS

    8.1. Introduction

    Up to version 1.111, the Memory Pool System used varags to pass arguments @@ -70,9 +70,9 @@ parameters.

    8.2. Overview

    The basic design is not specific to the MPS. The keyword argument list is passed as an array of argument structures which look like this:

    -
    typedef struct mps_key_s *mps_key_t;
    +
    typedef struct mps_key_s *mps_key_t;
     typedef struct mps_arg_s {
    -  mps_key_t key;
    +  mps_key_t key;
       union {
         int i;
         char c;
    @@ -127,7 +127,7 @@ a checking method for the argument, like this:

    typedef struct mps_key_s { Sig sig; /* Always KeySig */ const char *name; - Bool check(Arg arg); + Bool check(Arg arg); } KeyStruct;
    diff --git a/mps/manual/html/design/lib.html b/mps/manual/html/design/lib.html index 2f06085c540..262b516d7cb 100644 --- a/mps/manual/html/design/lib.html +++ b/mps/manual/html/design/lib.html @@ -54,8 +54,8 @@
    -
    -

    14. Library interface

    +
    +

    14. Library interface

    14.1. Introduction

    .intro: This document is the design of the MPS Library Interface, a diff --git a/mps/manual/html/design/lock.html b/mps/manual/html/design/lock.html index 59b77ecf36b..3a644bfb3b5 100644 --- a/mps/manual/html/design/lock.html +++ b/mps/manual/html/design/lock.html @@ -54,8 +54,8 @@

    -
    -

    15. The lock module

    +
    +

    15. The lock module

    15.1. Purpose

    .purpose: Support the locking needs of the thread-safe design. In diff --git a/mps/manual/html/design/locus.html b/mps/manual/html/design/locus.html index 5ee7f2337e4..ab8d1e542ec 100644 --- a/mps/manual/html/design/locus.html +++ b/mps/manual/html/design/locus.html @@ -54,8 +54,8 @@

    -
    -

    16. MPS Configuration

    +
    +

    16. MPS Configuration

    16.1. Introduction

    .intro: The locus manager coordinates between the pools and takes diff --git a/mps/manual/html/design/message-gc.html b/mps/manual/html/design/message-gc.html index 35177656e55..27a67303e02 100644 --- a/mps/manual/html/design/message-gc.html +++ b/mps/manual/html/design/message-gc.html @@ -54,8 +54,8 @@

    -
    -

    18. GC messages

    +
    +

    18. GC messages

    18.1. Introduction

    .intro: This document describes the design of the MPS garbage diff --git a/mps/manual/html/design/message.html b/mps/manual/html/design/message.html index 5223019b610..bd4f090bdf9 100644 --- a/mps/manual/html/design/message.html +++ b/mps/manual/html/design/message.html @@ -54,8 +54,8 @@

    -
    -

    17. Client message protocol

    +
    +

    17. Client message protocol

    17.1. Introduction

    .intro: The client message protocol provides a means by which diff --git a/mps/manual/html/design/object-debug.html b/mps/manual/html/design/object-debug.html index d684197a658..ac0633385d7 100644 --- a/mps/manual/html/design/object-debug.html +++ b/mps/manual/html/design/object-debug.html @@ -54,8 +54,8 @@

    -
    -

    19. Debugging features for client objects

    +
    +

    19. Debugging features for client objects

    19.1. Introduction

    .intro: This is the design for all the various debugging features diff --git a/mps/manual/html/design/old.html b/mps/manual/html/design/old.html index ceacd37afa8..d6fc8aa1c39 100644 --- a/mps/manual/html/design/old.html +++ b/mps/manual/html/design/old.html @@ -505,265 +505,324 @@ date, they will be moved to the main 26.12. Notes -

  • 27. MVFF pool class
  • @@ -45,9 +55,9 @@
    -

    MV pool class

    +

    27. MV pool class

    -

    Implementation

    +

    27.1. Implementation

    .lost: It is possible for MV to “lose” memory when freeing an objects. This happens when an extra block descriptor is needed (ie the interior of a block is being freed) and the call to allocate the block @@ -66,12 +76,18 @@ fails.

    Table Of Contents