mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-04-27 08:43:40 -07:00
Bringing strategy design up to date with changes to zone allocation.
Adding design documents to Xcode project for easier editing and source control. Copied from Perforce Change: 184218 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
02962f64ca
commit
9cdb3dd03b
3 changed files with 157 additions and 41 deletions
|
|
@ -1188,6 +1188,74 @@
|
|||
3114A6BA156E9768001E0AA3 /* walkt0.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = walkt0.c; sourceTree = "<group>"; };
|
||||
3114A6C6156E9815001E0AA3 /* mpseventcnv */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mpseventcnv; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3114A6D0156E9829001E0AA3 /* eventcnv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = eventcnv.c; sourceTree = "<group>"; };
|
||||
31160D921899540D0071EB17 /* abq.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = abq.txt; path = ../design/abq.txt; sourceTree = "<group>"; };
|
||||
31160D931899540D0071EB17 /* alloc-frame.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "alloc-frame.txt"; path = "../design/alloc-frame.txt"; sourceTree = "<group>"; };
|
||||
31160D941899540D0071EB17 /* arena.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = arena.txt; path = ../design/arena.txt; sourceTree = "<group>"; };
|
||||
31160D951899540D0071EB17 /* arenavm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = arenavm.txt; path = ../design/arenavm.txt; sourceTree = "<group>"; };
|
||||
31160D961899540D0071EB17 /* bt.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = bt.txt; path = ../design/bt.txt; sourceTree = "<group>"; };
|
||||
31160D971899540D0071EB17 /* buffer.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = buffer.txt; path = ../design/buffer.txt; sourceTree = "<group>"; };
|
||||
31160D981899540D0071EB17 /* cbs.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = cbs.txt; path = ../design/cbs.txt; sourceTree = "<group>"; };
|
||||
31160D991899540D0071EB17 /* check.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = check.txt; path = ../design/check.txt; sourceTree = "<group>"; };
|
||||
31160D9A1899540D0071EB17 /* class-interface.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "class-interface.txt"; path = "../design/class-interface.txt"; sourceTree = "<group>"; };
|
||||
31160D9B1899540D0071EB17 /* collection.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = collection.txt; path = ../design/collection.txt; sourceTree = "<group>"; };
|
||||
31160D9C1899540D0071EB17 /* config.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = config.txt; path = ../design/config.txt; sourceTree = "<group>"; };
|
||||
31160D9D1899540D0071EB17 /* critical-path.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "critical-path.txt"; path = "../design/critical-path.txt"; sourceTree = "<group>"; };
|
||||
31160D9E1899540D0071EB17 /* diag.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = diag.txt; path = ../design/diag.txt; sourceTree = "<group>"; };
|
||||
31160D9F1899540D0071EB17 /* finalize.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = finalize.txt; path = ../design/finalize.txt; sourceTree = "<group>"; };
|
||||
31160DA01899540D0071EB17 /* fix.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = fix.txt; path = ../design/fix.txt; sourceTree = "<group>"; };
|
||||
31160DA11899540D0071EB17 /* freelist.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = freelist.txt; path = ../design/freelist.txt; sourceTree = "<group>"; };
|
||||
31160DA21899540D0071EB17 /* guide.hex.trans.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = guide.hex.trans.txt; path = ../design/guide.hex.trans.txt; sourceTree = "<group>"; };
|
||||
31160DA31899540D0071EB17 /* guide.impl.c.format.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = guide.impl.c.format.txt; path = ../design/guide.impl.c.format.txt; sourceTree = "<group>"; };
|
||||
31160DA41899540D0071EB17 /* index.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = index.txt; path = ../design/index.txt; sourceTree = "<group>"; };
|
||||
31160DA51899540D0071EB17 /* interface-c.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "interface-c.txt"; path = "../design/interface-c.txt"; sourceTree = "<group>"; };
|
||||
31160DA61899540D0071EB17 /* io.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = io.txt; path = ../design/io.txt; sourceTree = "<group>"; };
|
||||
31160DA71899540D0071EB17 /* keyword-arguments.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "keyword-arguments.txt"; path = "../design/keyword-arguments.txt"; sourceTree = "<group>"; };
|
||||
31160DA81899540D0071EB17 /* lib.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = lib.txt; path = ../design/lib.txt; sourceTree = "<group>"; };
|
||||
31160DA91899540D0071EB17 /* lock.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = lock.txt; path = ../design/lock.txt; sourceTree = "<group>"; };
|
||||
31160DAA1899540D0071EB17 /* locus.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = locus.txt; path = ../design/locus.txt; sourceTree = "<group>"; };
|
||||
31160DAB1899540D0071EB17 /* message-gc.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "message-gc.txt"; path = "../design/message-gc.txt"; sourceTree = "<group>"; };
|
||||
31160DAC1899540D0071EB17 /* message.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = message.txt; path = ../design/message.txt; sourceTree = "<group>"; };
|
||||
31160DAD1899540D0071EB17 /* object-debug.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "object-debug.txt"; path = "../design/object-debug.txt"; sourceTree = "<group>"; };
|
||||
31160DAE1899540D0071EB17 /* pool.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = pool.txt; path = ../design/pool.txt; sourceTree = "<group>"; };
|
||||
31160DAF1899540D0071EB17 /* poolamc.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = poolamc.txt; path = ../design/poolamc.txt; sourceTree = "<group>"; };
|
||||
31160DB01899540D0071EB17 /* poolams.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = poolams.txt; path = ../design/poolams.txt; sourceTree = "<group>"; };
|
||||
31160DB11899540D0071EB17 /* poolawl.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = poolawl.txt; path = ../design/poolawl.txt; sourceTree = "<group>"; };
|
||||
31160DB21899540D0071EB17 /* poollo.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = poollo.txt; path = ../design/poollo.txt; sourceTree = "<group>"; };
|
||||
31160DB31899540D0071EB17 /* poolmfs.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = poolmfs.txt; path = ../design/poolmfs.txt; sourceTree = "<group>"; };
|
||||
31160DB41899540D0071EB17 /* poolmrg.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = poolmrg.txt; path = ../design/poolmrg.txt; sourceTree = "<group>"; };
|
||||
31160DB51899540D0071EB17 /* poolmv.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = poolmv.txt; path = ../design/poolmv.txt; sourceTree = "<group>"; };
|
||||
31160DB61899540D0071EB17 /* poolmvff.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = poolmvff.txt; path = ../design/poolmvff.txt; sourceTree = "<group>"; };
|
||||
31160DB71899540D0071EB17 /* poolmvt.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = poolmvt.txt; path = ../design/poolmvt.txt; sourceTree = "<group>"; };
|
||||
31160DB81899540D0071EB17 /* prot.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = prot.txt; path = ../design/prot.txt; sourceTree = "<group>"; };
|
||||
31160DB91899540D0071EB17 /* protan.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = protan.txt; path = ../design/protan.txt; sourceTree = "<group>"; };
|
||||
31160DBA1899540D0071EB17 /* protli.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = protli.txt; path = ../design/protli.txt; sourceTree = "<group>"; };
|
||||
31160DBB1899540D0071EB17 /* protocol.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = protocol.txt; path = ../design/protocol.txt; sourceTree = "<group>"; };
|
||||
31160DBC1899540D0071EB17 /* protsu.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = protsu.txt; path = ../design/protsu.txt; sourceTree = "<group>"; };
|
||||
31160DBD1899540D0071EB17 /* pthreadext.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = pthreadext.txt; path = ../design/pthreadext.txt; sourceTree = "<group>"; };
|
||||
31160DBE1899540D0071EB17 /* range.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = range.txt; path = ../design/range.txt; sourceTree = "<group>"; };
|
||||
31160DBF1899540D0071EB17 /* reservoir.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = reservoir.txt; path = ../design/reservoir.txt; sourceTree = "<group>"; };
|
||||
31160DC01899540D0071EB17 /* ring.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = ring.txt; path = ../design/ring.txt; sourceTree = "<group>"; };
|
||||
31160DC11899540D0071EB17 /* root.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = root.txt; path = ../design/root.txt; sourceTree = "<group>"; };
|
||||
31160DC21899540D0071EB17 /* scan.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = scan.txt; path = ../design/scan.txt; sourceTree = "<group>"; };
|
||||
31160DC31899540D0071EB17 /* seg.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = seg.txt; path = ../design/seg.txt; sourceTree = "<group>"; };
|
||||
31160DC41899540D0071EB17 /* shield.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = shield.txt; path = ../design/shield.txt; sourceTree = "<group>"; };
|
||||
31160DC51899540D0071EB17 /* sig.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = sig.txt; path = ../design/sig.txt; sourceTree = "<group>"; };
|
||||
31160DC61899540D0071EB17 /* splay.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = splay.txt; path = ../design/splay.txt; sourceTree = "<group>"; };
|
||||
31160DC71899540D0071EB17 /* sso1al.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = sso1al.txt; path = ../design/sso1al.txt; sourceTree = "<group>"; };
|
||||
31160DC81899540D0071EB17 /* strategy.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = strategy.txt; path = ../design/strategy.txt; sourceTree = "<group>"; };
|
||||
31160DC91899540D0071EB17 /* telemetry.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = telemetry.txt; path = ../design/telemetry.txt; sourceTree = "<group>"; };
|
||||
31160DCA1899540D0071EB17 /* tests.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = tests.txt; path = ../design/tests.txt; sourceTree = "<group>"; };
|
||||
31160DCB1899540D0071EB17 /* thread-manager.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "thread-manager.txt"; path = "../design/thread-manager.txt"; sourceTree = "<group>"; };
|
||||
31160DCC1899540D0071EB17 /* thread-safety.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "thread-safety.txt"; path = "../design/thread-safety.txt"; sourceTree = "<group>"; };
|
||||
31160DCD1899540D0071EB17 /* trace.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = trace.txt; path = ../design/trace.txt; sourceTree = "<group>"; };
|
||||
31160DCE1899540D0071EB17 /* type.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = type.txt; path = ../design/type.txt; sourceTree = "<group>"; };
|
||||
31160DCF1899540D0071EB17 /* version-library.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "version-library.txt"; path = "../design/version-library.txt"; sourceTree = "<group>"; };
|
||||
31160DD01899540D0071EB17 /* version.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = version.txt; path = ../design/version.txt; sourceTree = "<group>"; };
|
||||
31160DD11899540D0071EB17 /* vm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = vm.txt; path = ../design/vm.txt; sourceTree = "<group>"; };
|
||||
31160DD21899540D0071EB17 /* vman.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = vman.txt; path = ../design/vman.txt; sourceTree = "<group>"; };
|
||||
31160DD31899540D0071EB17 /* vmo1.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = vmo1.txt; path = ../design/vmo1.txt; sourceTree = "<group>"; };
|
||||
31160DD41899540D0071EB17 /* vmso.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = vmso.txt; path = ../design/vmso.txt; sourceTree = "<group>"; };
|
||||
31160DD51899540D0071EB17 /* writef.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = writef.txt; path = ../design/writef.txt; sourceTree = "<group>"; };
|
||||
31172ABA17750F9D009488E5 /* thxc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = thxc.c; sourceTree = "<group>"; };
|
||||
31172ABB177512F6009488E5 /* prmci3xc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = prmci3xc.c; sourceTree = "<group>"; };
|
||||
31172ABC1775131C009488E5 /* prmci6xc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = prmci6xc.c; sourceTree = "<group>"; };
|
||||
|
|
@ -1689,6 +1757,81 @@
|
|||
name = mpseventcnv;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
31160D90189953D50071EB17 /* Design */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
31160D921899540D0071EB17 /* abq.txt */,
|
||||
31160D931899540D0071EB17 /* alloc-frame.txt */,
|
||||
31160D941899540D0071EB17 /* arena.txt */,
|
||||
31160D951899540D0071EB17 /* arenavm.txt */,
|
||||
31160D961899540D0071EB17 /* bt.txt */,
|
||||
31160D971899540D0071EB17 /* buffer.txt */,
|
||||
31160D981899540D0071EB17 /* cbs.txt */,
|
||||
31160D991899540D0071EB17 /* check.txt */,
|
||||
31160D9A1899540D0071EB17 /* class-interface.txt */,
|
||||
31160D9B1899540D0071EB17 /* collection.txt */,
|
||||
31160D9C1899540D0071EB17 /* config.txt */,
|
||||
31160D9D1899540D0071EB17 /* critical-path.txt */,
|
||||
31160D9E1899540D0071EB17 /* diag.txt */,
|
||||
31160D9F1899540D0071EB17 /* finalize.txt */,
|
||||
31160DA01899540D0071EB17 /* fix.txt */,
|
||||
31160DA11899540D0071EB17 /* freelist.txt */,
|
||||
31160DA21899540D0071EB17 /* guide.hex.trans.txt */,
|
||||
31160DA31899540D0071EB17 /* guide.impl.c.format.txt */,
|
||||
31160DA41899540D0071EB17 /* index.txt */,
|
||||
31160DA51899540D0071EB17 /* interface-c.txt */,
|
||||
31160DA61899540D0071EB17 /* io.txt */,
|
||||
31160DA71899540D0071EB17 /* keyword-arguments.txt */,
|
||||
31160DA81899540D0071EB17 /* lib.txt */,
|
||||
31160DA91899540D0071EB17 /* lock.txt */,
|
||||
31160DAA1899540D0071EB17 /* locus.txt */,
|
||||
31160DAB1899540D0071EB17 /* message-gc.txt */,
|
||||
31160DAC1899540D0071EB17 /* message.txt */,
|
||||
31160DAD1899540D0071EB17 /* object-debug.txt */,
|
||||
31160DAE1899540D0071EB17 /* pool.txt */,
|
||||
31160DAF1899540D0071EB17 /* poolamc.txt */,
|
||||
31160DB01899540D0071EB17 /* poolams.txt */,
|
||||
31160DB11899540D0071EB17 /* poolawl.txt */,
|
||||
31160DB21899540D0071EB17 /* poollo.txt */,
|
||||
31160DB31899540D0071EB17 /* poolmfs.txt */,
|
||||
31160DB41899540D0071EB17 /* poolmrg.txt */,
|
||||
31160DB51899540D0071EB17 /* poolmv.txt */,
|
||||
31160DB61899540D0071EB17 /* poolmvff.txt */,
|
||||
31160DB71899540D0071EB17 /* poolmvt.txt */,
|
||||
31160DB81899540D0071EB17 /* prot.txt */,
|
||||
31160DB91899540D0071EB17 /* protan.txt */,
|
||||
31160DBA1899540D0071EB17 /* protli.txt */,
|
||||
31160DBB1899540D0071EB17 /* protocol.txt */,
|
||||
31160DBC1899540D0071EB17 /* protsu.txt */,
|
||||
31160DBD1899540D0071EB17 /* pthreadext.txt */,
|
||||
31160DBE1899540D0071EB17 /* range.txt */,
|
||||
31160DBF1899540D0071EB17 /* reservoir.txt */,
|
||||
31160DC01899540D0071EB17 /* ring.txt */,
|
||||
31160DC11899540D0071EB17 /* root.txt */,
|
||||
31160DC21899540D0071EB17 /* scan.txt */,
|
||||
31160DC31899540D0071EB17 /* seg.txt */,
|
||||
31160DC41899540D0071EB17 /* shield.txt */,
|
||||
31160DC51899540D0071EB17 /* sig.txt */,
|
||||
31160DC61899540D0071EB17 /* splay.txt */,
|
||||
31160DC71899540D0071EB17 /* sso1al.txt */,
|
||||
31160DC81899540D0071EB17 /* strategy.txt */,
|
||||
31160DC91899540D0071EB17 /* telemetry.txt */,
|
||||
31160DCA1899540D0071EB17 /* tests.txt */,
|
||||
31160DCB1899540D0071EB17 /* thread-manager.txt */,
|
||||
31160DCC1899540D0071EB17 /* thread-safety.txt */,
|
||||
31160DCD1899540D0071EB17 /* trace.txt */,
|
||||
31160DCE1899540D0071EB17 /* type.txt */,
|
||||
31160DCF1899540D0071EB17 /* version-library.txt */,
|
||||
31160DD01899540D0071EB17 /* version.txt */,
|
||||
31160DD11899540D0071EB17 /* vm.txt */,
|
||||
31160DD21899540D0071EB17 /* vman.txt */,
|
||||
31160DD31899540D0071EB17 /* vmo1.txt */,
|
||||
31160DD41899540D0071EB17 /* vmso.txt */,
|
||||
31160DD51899540D0071EB17 /* writef.txt */,
|
||||
);
|
||||
name = Design;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3124CAB3156BE1B700753214 /* Tests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -1764,6 +1907,7 @@
|
|||
2D07B97B163705E400DB751B /* libsqlite3.dylib */,
|
||||
3114A6D6156E9846001E0AA3 /* Tools */,
|
||||
31A47BA8156C1E930039B1C2 /* MPS */,
|
||||
31160D90189953D50071EB17 /* Design */,
|
||||
3124CAB3156BE1B700753214 /* Tests */,
|
||||
318DA8C21892B0B20089718C /* Benchmarks */,
|
||||
31FCAE171769247F008C034C /* Scheme */,
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ shield_ Shield abstraction: separate control of collector access
|
|||
sig_ Signatures in the MPS
|
||||
splay_ Design of splay trees
|
||||
sso1al_ Stack scanner for Digital Unix / Alpha systems
|
||||
strategy_ Collection strategy
|
||||
telemetry_ The design of the MPS telemetry mechanism
|
||||
tests_ The design of MPS internal tests
|
||||
thread-manager_ The design of the MPS thread manager
|
||||
|
|
@ -156,6 +157,7 @@ writef_ The design of the MPS writef function
|
|||
.. _sig: sig
|
||||
.. _splay: splay
|
||||
.. _sso1al: sso1al
|
||||
.. _strategy: strategy
|
||||
.. _telemetry: telemetry
|
||||
.. _tests: tests
|
||||
.. _thread-manager: thread-manager
|
||||
|
|
@ -199,6 +201,7 @@ Document History
|
|||
- 2013-05-22 GDR_ Add link to keyword-arguments.
|
||||
- 2013-05-25 RB_ Replacing "cstyle" with reworked "guide.impl.c.format".
|
||||
- 2013-06-07 RB_ Converting to reST_. Linking to [RB_2002-06-18]_.
|
||||
- 2014-01-29 RB_ The arena no longer manages generation zonesets.
|
||||
|
||||
.. _RB: http://www.ravenbrook.com/consultants/rb
|
||||
.. _NB: http://www.ravenbrook.com/consultants/nb
|
||||
|
|
|
|||
|
|
@ -166,47 +166,14 @@ automatic-pool segment in any zone in the zoneset. It is not limited
|
|||
to the segments actually associated with the condemned generation(s).
|
||||
|
||||
An attempt is made to use distinct zonesets for different generations.
|
||||
Whenever a segment is allocated (``AMCBufferFill()``), a
|
||||
``SegPref`` is created containing the generation number
|
||||
(obtained from ``amcBuf->gen->pgen->nr``) and passed to
|
||||
``SegAlloc()``. The arena keeps a zoneset for each generation
|
||||
number (up to ``VMArenaGenCount``, defined in
|
||||
``arenavm.c`` to be ``MPS_WORD_WIDTH/2``), and a
|
||||
``freeSet``. The zoneset for each generation number starts out
|
||||
empty, and the ``freeSet`` starts out ``ZoneSetUNIV``.
|
||||
When a segment is allocated with a ``SegPref`` with a generation
|
||||
number, an attempt is made to allocate it in the corresponding zoneset
|
||||
(``pagesFindFreeInZones()``). If the zoneset is empty, an
|
||||
attempt is made to allocate it in the ``freeSet`` zoneset.
|
||||
After it is allocated, the zones it occupies are removed from the
|
||||
``freeSet`` and (if there's a generation ``SegPref``)
|
||||
added to the zoneset for that generation number.
|
||||
Segments are allocated from ``AMCBufferFill()`` using ``ChainAlloc()``
|
||||
which creates a ``SegPref`` using the zoneset from the generation's
|
||||
``GenDesc``. The zoneset for each generation number starts out
|
||||
empty. If the zoneset is empty, an attempt is made to allocate from a
|
||||
free zone. The ``GenDesc`` zoneset is augmented with whichever zones the
|
||||
new segment occupies.
|
||||
|
||||
Note that this zone placement code knows nothing of chains,
|
||||
generations, pool classes, etc. It is based solely on the generation
|
||||
*number*, so generations with the same number from different chains
|
||||
share a zoneset preference for the purpose of placing newly allocated
|
||||
segments. Combined with the fact that condemnation is per-zone, this
|
||||
effectively means that generations in distinct chains are collected
|
||||
together. One consequence of this is that we don't have a very fine
|
||||
granularity of control over collection: a garbage collection of all
|
||||
chains together is triggered by the most eager chain. There's no way
|
||||
for a library or other small part of a client program to arrange
|
||||
independent collection of a separate pool or chain.
|
||||
|
||||
When ``AMCBufferFill()`` gets the allocated segment back, it
|
||||
adds it to the zoneset associated with that generation in the pool's
|
||||
controlling chain. Note that a chain's per-generation zonesets, which
|
||||
represent the zones in which segments for that generation in that
|
||||
chain have been placed, are quite distinct from the arena-wide
|
||||
per-generation-number zonesets, which represent the zones in which
|
||||
segments for that generation number in any chain have been placed.
|
||||
The arena-wide per-generation-number zoneset
|
||||
``vmArena->genZoneSet[N]`` is augmented in
|
||||
``vmAllocComm()``. The per-chain per-generation zoneset
|
||||
``chain->gen[N].zones`` is augmented in
|
||||
``PoolGenUpdateZones()``. Neither kind of zoneset can ever
|
||||
shrink.
|
||||
Note that this zoneset can never shrink.
|
||||
|
||||
Accounting
|
||||
..........
|
||||
|
|
@ -413,10 +380,12 @@ TODO: When do we do some tracing work? How much tracing work do we do?
|
|||
|
||||
Document History
|
||||
----------------
|
||||
- 2013-06-04 NB Checked this in although it's far from complete.
|
||||
- 2013-06-04 NB_ Checked this in although it's far from complete.
|
||||
Pasted in my 'ramping notes' from email, which mention some bugs
|
||||
which I may have fixed (TODO: check this).
|
||||
- 2014-01-29 RB_ The arena no longer manages generation zonesets.
|
||||
|
||||
.. _RB: http://www.ravenbrook.com/consultants/rb
|
||||
.. _NB: http://www.ravenbrook.com/consultants/nb/
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue