mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-03-26 08:41:47 -07:00
Remove references to arenaalign from the design.
Copied from Perforce Change: 186581 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
1b7de24015
commit
9edb44cd70
3 changed files with 11 additions and 10 deletions
|
|
@ -128,8 +128,8 @@ Placement pads are the BEF and LSP pads created in "to-space" when
|
|||
placing objects into segments. This wasted space is an expected
|
||||
space-cost of AMC's naive (but time-efficient) approach to placement
|
||||
of objects into segments. This is normally not a severe problem. (The
|
||||
worst case is a client that always requests ``ArenaAlign() + 1`` byte
|
||||
objects: this has a nearly 100% overhead).
|
||||
worst case is a client that always requests objects that are one byte
|
||||
larger than the arena grain size: this has a nearly 100% overhead).
|
||||
|
||||
|
||||
Retained pads could be a problem
|
||||
|
|
@ -159,7 +159,7 @@ Small, medium, and large segments
|
|||
AMC categorises segments as **small** (one page), **medium**
|
||||
(several pages), or **large** (``AMCLargeSegPAGES`` or more)::
|
||||
|
||||
pages = SegSize(seg) / ArenaAlign(arena);
|
||||
pages = SegSize(seg) / ArenaGrainSize(arena);
|
||||
if(pages == 1) {
|
||||
/* small */
|
||||
} else if(pages < AMCLargeSegPAGES) {
|
||||
|
|
@ -206,8 +206,8 @@ and ignore all others; this would be extremely simple to implement.
|
|||
But AMC cannot guarantee this, because in the MPS Allocation Point
|
||||
Protocol the client is permitted to make a large buffer reserve and
|
||||
then fill it with many small objects. In such a case, AMC must honour
|
||||
all nails (if the buffer reserve request was an exact multiple of
|
||||
``ArenaAlign()``), or all nails except to the last object (if there
|
||||
all nails (if the buffer reserve request was an exact multiple of the
|
||||
arena grain size), or all nails except to the last object (if there
|
||||
was a remainder filled with an LSP pad). Because an LSP pad cannot be
|
||||
distinguished from a client object, and the requested allocation size
|
||||
is not recorded, AMC cannot distinguish these two conditions at
|
||||
|
|
|
|||
|
|
@ -463,10 +463,11 @@ Internal
|
|||
|
||||
_`.fun.awlsegcreate`: Creates a segment of class ``AWLSegClass`` of size at least ``size``.
|
||||
|
||||
_`.fun.awlsegcreate.size.round`: ``size`` is rounded up to an
|
||||
``ArenaAlign`` before requesting the segment.
|
||||
_`.fun.awlsegcreate.size.round`: ``size`` is rounded up to the arena
|
||||
grain size before requesting the segment.
|
||||
|
||||
_`.fun.awlsegcreate.size.round.justify`: The arena requires that all
|
||||
segment sizes are aligned to the ``ArenaAlign``.
|
||||
segment sizes are rounded up to the arena grain size.
|
||||
|
||||
_`.fun.awlsegcreate.where`: The segment is allocated using a
|
||||
generation preference, using the generation number stored in the
|
||||
|
|
|
|||
|
|
@ -410,8 +410,8 @@ used to be in the object is not accidentally fixed.
|
|||
_`.init`: Initializes the entry list, the free ring, the ref ring, and
|
||||
the ``extendBy`` field.
|
||||
|
||||
_`.init.extend`: The ``extendBy`` field is initialized to one
|
||||
``ArenaAlign()`` (usually a page).
|
||||
_`.init.extend`: The ``extendBy`` field is initialized to the arena
|
||||
grain size.
|
||||
|
||||
_`.init.extend.justify`: This is adequate as the pool is not expected
|
||||
to grow very quickly.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue