diff --git a/mps/manual/source/pool/amcz.rst b/mps/manual/source/pool/amcz.rst index 70d38ffa6ab..61555fd180a 100644 --- a/mps/manual/source/pool/amcz.rst +++ b/mps/manual/source/pool/amcz.rst @@ -68,12 +68,18 @@ AMCZ interface method`, an :term:`is-forwarded method` and a :term:`padding method`. - It accepts one optional keyword argument: + It accepts two optional keyword arguments: * :c:macro:`MPS_KEY_CHAIN` (type :c:type:`mps_chain_t`) specifies the :term:`generation chain` for the pool. If not specified, the pool will use the arena's default chain. + * :c:macro:`MPS_KEY_INTERIOR` (type :c:type:`mps_bool_t`, default + ``TRUE``) specifies whether :term:`ambiguous ` :term:`interior pointers` to blocks in the pool keep + objects alive. If this is ``FALSE``, then only :term:`client + pointers` keep objects alive. + For example:: MPS_ARGS_BEGIN(args) { diff --git a/mps/manual/source/pool/intro.rst b/mps/manual/source/pool/intro.rst index a27a33380e1..ed8f83b8d4a 100644 --- a/mps/manual/source/pool/intro.rst +++ b/mps/manual/source/pool/intro.rst @@ -193,6 +193,10 @@ Blocks may use :term:`in-band headers`? yes yes yes yes yes just past the end of the header) is considered to be a reference to the block. + Pools that support internal pointers can be switched to + base pointers only, by setting the optional keyword + argument :c:macro:`MPS_KEY_INTERIOR` to ``FALSE`` when + calling :c:func:`mps_pool_create_k`. .. index:: single: pool class; writing