1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-26 08:41:47 -07:00

Improved assertion messages when a required keyword argument is not found. instead of "unreachable code", the assertion message is the name of the missing key.

Copied from Perforce
 Change: 187267
 ServerID: perforce.ravenbrook.com
This commit is contained in:
Gareth Rees 2014-10-14 22:05:30 +01:00
parent e185863a15
commit 66dfd1a69a
20 changed files with 122 additions and 126 deletions

View file

@ -290,14 +290,14 @@ failGlobalsInit:
* platforms, knowing that it has no effect. To do that, the key must
* exist on all platforms. */
ARG_DEFINE_KEY(vmw3_top_down, Bool);
ARG_DEFINE_KEY(VMW3_TOP_DOWN, Bool);
/* ArenaCreate -- create the arena and call initializers */
ARG_DEFINE_KEY(arena_size, Size);
ARG_DEFINE_KEY(arena_grain_size, Size);
ARG_DEFINE_KEY(arena_zoned, Bool);
ARG_DEFINE_KEY(ARENA_SIZE, Size);
ARG_DEFINE_KEY(ARENA_GRAIN_SIZE, Size);
ARG_DEFINE_KEY(ARENA_ZONED, Bool);
Res ArenaCreate(Arena *arenaReturn, ArenaClass class, ArgList args)
{

View file

@ -227,7 +227,7 @@ static void ClientArenaVarargs(ArgStruct args[MPS_ARGS_MAX], va_list varargs)
* to do the generic part of init.
*/
ARG_DEFINE_KEY(arena_cl_addr, Addr);
ARG_DEFINE_KEY(ARENA_CL_BASE, Addr);
static Res ClientArenaInit(Arena *arenaReturn, ArenaClass class, ArgList args)
{

View file

@ -105,7 +105,7 @@ Bool ArgCheckPool(Arg arg) {
}
ARG_DEFINE_KEY(args_end, Shouldnt);
ARG_DEFINE_KEY(ARGS_END, Shouldnt);
ArgStruct mps_args_none[] = {{MPS_KEY_ARGS_END, {0}}};
@ -174,9 +174,8 @@ found:
/* ArgRequire -- take a required argument out of the argument list by keyword */
void ArgRequire(ArgStruct *argOut, ArgList args, Key key) {
if (ArgPick(argOut, args, key))
return;
NOTREACHED;
Bool b = ArgPick(argOut, args, key);
ASSERT(b, key->name);
}

View file

@ -29,7 +29,7 @@ typedef struct mps_key_s {
#define ARG_DEFINE_KEY(id, type) \
extern const KeyStruct _mps_key_##id; \
const KeyStruct _mps_key_##id = {KeySig, #id, ArgCheck##type}
const KeyStruct _mps_key_##id = {KeySig, "MPS_KEY_" #id, ArgCheck##type}
#define argsNone mps_args_none

View file

@ -121,7 +121,7 @@ Bool PoolDebugOptionsCheck(PoolDebugOptions opt)
* Someday, this could be split into fence and tag init methods.
*/
ARG_DEFINE_KEY(pool_debug_options, PoolDebugOptions);
ARG_DEFINE_KEY(POOL_DEBUG_OPTIONS, PoolDebugOptions);
static PoolDebugOptionsStruct debugPoolOptionsDefault = {
"POST", 4, "DEAD", 4,

View file

@ -88,14 +88,14 @@ static mps_addr_t FormatDefaultClass(mps_addr_t object)
/* FormatCreate -- create a format */
ARG_DEFINE_KEY(fmt_align, Align);
ARG_DEFINE_KEY(fmt_scan, Fun);
ARG_DEFINE_KEY(fmt_skip, Fun);
ARG_DEFINE_KEY(fmt_fwd, Fun);
ARG_DEFINE_KEY(fmt_isfwd, Fun);
ARG_DEFINE_KEY(fmt_pad, Fun);
ARG_DEFINE_KEY(fmt_header_size, Size);
ARG_DEFINE_KEY(fmt_class, Fun);
ARG_DEFINE_KEY(FMT_ALIGN, Align);
ARG_DEFINE_KEY(FMT_SCAN, Fun);
ARG_DEFINE_KEY(FMT_SKIP, Fun);
ARG_DEFINE_KEY(FMT_FWD, Fun);
ARG_DEFINE_KEY(FMT_ISFWD, Fun);
ARG_DEFINE_KEY(FMT_PAD, Fun);
ARG_DEFINE_KEY(FMT_HEADER_SIZE, Size);
ARG_DEFINE_KEY(FMT_CLASS, Fun);
Res FormatCreate(Format *formatReturn, Arena arena, ArgList args)
{

View file

@ -151,84 +151,84 @@ typedef struct mps_arg_s {
} val;
} mps_arg_s;
extern const struct mps_key_s _mps_key_args_end;
#define MPS_KEY_ARGS_END (&_mps_key_args_end)
extern const struct mps_key_s _mps_key_ARGS_END;
#define MPS_KEY_ARGS_END (&_mps_key_ARGS_END)
extern mps_arg_s mps_args_none[];
extern const struct mps_key_s _mps_key_arena_size;
#define MPS_KEY_ARENA_SIZE (&_mps_key_arena_size)
extern const struct mps_key_s _mps_key_ARENA_SIZE;
#define MPS_KEY_ARENA_SIZE (&_mps_key_ARENA_SIZE)
#define MPS_KEY_ARENA_SIZE_FIELD size
extern const struct mps_key_s _mps_key_arena_grain_size;
#define MPS_KEY_ARENA_GRAIN_SIZE (&_mps_key_arena_grain_size)
extern const struct mps_key_s _mps_key_ARENA_GRAIN_SIZE;
#define MPS_KEY_ARENA_GRAIN_SIZE (&_mps_key_ARENA_GRAIN_SIZE)
#define MPS_KEY_ARENA_GRAIN_SIZE_FIELD size
extern const struct mps_key_s _mps_key_arena_zoned;
#define MPS_KEY_ARENA_ZONED (&_mps_key_arena_zoned)
extern const struct mps_key_s _mps_key_ARENA_ZONED;
#define MPS_KEY_ARENA_ZONED (&_mps_key_ARENA_ZONED)
#define MPS_KEY_ARENA_ZONED_FIELD b
extern const struct mps_key_s _mps_key_format;
#define MPS_KEY_FORMAT (&_mps_key_format)
extern const struct mps_key_s _mps_key_FORMAT;
#define MPS_KEY_FORMAT (&_mps_key_FORMAT)
#define MPS_KEY_FORMAT_FIELD format
extern const struct mps_key_s _mps_key_chain;
#define MPS_KEY_CHAIN (&_mps_key_chain)
extern const struct mps_key_s _mps_key_CHAIN;
#define MPS_KEY_CHAIN (&_mps_key_CHAIN)
#define MPS_KEY_CHAIN_FIELD chain
extern const struct mps_key_s _mps_key_gen;
#define MPS_KEY_GEN (&_mps_key_gen)
extern const struct mps_key_s _mps_key_GEN;
#define MPS_KEY_GEN (&_mps_key_GEN)
#define MPS_KEY_GEN_FIELD u
extern const struct mps_key_s _mps_key_rank;
#define MPS_KEY_RANK (&_mps_key_rank)
extern const struct mps_key_s _mps_key_RANK;
#define MPS_KEY_RANK (&_mps_key_RANK)
#define MPS_KEY_RANK_FIELD rank
extern const struct mps_key_s _mps_key_extend_by;
#define MPS_KEY_EXTEND_BY (&_mps_key_extend_by)
extern const struct mps_key_s _mps_key_EXTEND_BY;
#define MPS_KEY_EXTEND_BY (&_mps_key_EXTEND_BY)
#define MPS_KEY_EXTEND_BY_FIELD size
extern const struct mps_key_s _mps_key_large_size;
#define MPS_KEY_LARGE_SIZE (&_mps_key_large_size)
extern const struct mps_key_s _mps_key_LARGE_SIZE;
#define MPS_KEY_LARGE_SIZE (&_mps_key_LARGE_SIZE)
#define MPS_KEY_LARGE_SIZE_FIELD size
extern const struct mps_key_s _mps_key_min_size;
#define MPS_KEY_MIN_SIZE (&_mps_key_min_size)
extern const struct mps_key_s _mps_key_MIN_SIZE;
#define MPS_KEY_MIN_SIZE (&_mps_key_MIN_SIZE)
#define MPS_KEY_MIN_SIZE_FIELD size
extern const struct mps_key_s _mps_key_mean_size;
#define MPS_KEY_MEAN_SIZE (&_mps_key_mean_size)
extern const struct mps_key_s _mps_key_MEAN_SIZE;
#define MPS_KEY_MEAN_SIZE (&_mps_key_MEAN_SIZE)
#define MPS_KEY_MEAN_SIZE_FIELD size
extern const struct mps_key_s _mps_key_max_size;
#define MPS_KEY_MAX_SIZE (&_mps_key_max_size)
extern const struct mps_key_s _mps_key_MAX_SIZE;
#define MPS_KEY_MAX_SIZE (&_mps_key_MAX_SIZE)
#define MPS_KEY_MAX_SIZE_FIELD size
extern const struct mps_key_s _mps_key_align;
#define MPS_KEY_ALIGN (&_mps_key_align)
extern const struct mps_key_s _mps_key_ALIGN;
#define MPS_KEY_ALIGN (&_mps_key_ALIGN)
#define MPS_KEY_ALIGN_FIELD align
extern const struct mps_key_s _mps_key_spare;
#define MPS_KEY_SPARE (&_mps_key_spare)
extern const struct mps_key_s _mps_key_SPARE;
#define MPS_KEY_SPARE (&_mps_key_SPARE)
#define MPS_KEY_SPARE_FIELD d
extern const struct mps_key_s _mps_key_interior;
#define MPS_KEY_INTERIOR (&_mps_key_interior)
extern const struct mps_key_s _mps_key_INTERIOR;
#define MPS_KEY_INTERIOR (&_mps_key_INTERIOR)
#define MPS_KEY_INTERIOR_FIELD b
extern const struct mps_key_s _mps_key_vmw3_top_down;
#define MPS_KEY_VMW3_TOP_DOWN (&_mps_key_vmw3_top_down)
extern const struct mps_key_s _mps_key_VMW3_TOP_DOWN;
#define MPS_KEY_VMW3_TOP_DOWN (&_mps_key_VMW3_TOP_DOWN)
#define MPS_KEY_VMW3_TOP_DOWN_FIELD b
extern const struct mps_key_s _mps_key_fmt_align;
#define MPS_KEY_FMT_ALIGN (&_mps_key_fmt_align)
extern const struct mps_key_s _mps_key_FMT_ALIGN;
#define MPS_KEY_FMT_ALIGN (&_mps_key_FMT_ALIGN)
#define MPS_KEY_FMT_ALIGN_FIELD align
extern const struct mps_key_s _mps_key_fmt_header_size;
#define MPS_KEY_FMT_HEADER_SIZE (&_mps_key_fmt_header_size)
extern const struct mps_key_s _mps_key_FMT_HEADER_SIZE;
#define MPS_KEY_FMT_HEADER_SIZE (&_mps_key_FMT_HEADER_SIZE)
#define MPS_KEY_FMT_HEADER_SIZE_FIELD size
extern const struct mps_key_s _mps_key_fmt_scan;
#define MPS_KEY_FMT_SCAN (&_mps_key_fmt_scan)
extern const struct mps_key_s _mps_key_FMT_SCAN;
#define MPS_KEY_FMT_SCAN (&_mps_key_FMT_SCAN)
#define MPS_KEY_FMT_SCAN_FIELD fmt_scan
extern const struct mps_key_s _mps_key_fmt_skip;
#define MPS_KEY_FMT_SKIP (&_mps_key_fmt_skip)
extern const struct mps_key_s _mps_key_FMT_SKIP;
#define MPS_KEY_FMT_SKIP (&_mps_key_FMT_SKIP)
#define MPS_KEY_FMT_SKIP_FIELD fmt_skip
extern const struct mps_key_s _mps_key_fmt_fwd;
#define MPS_KEY_FMT_FWD (&_mps_key_fmt_fwd)
extern const struct mps_key_s _mps_key_FMT_FWD;
#define MPS_KEY_FMT_FWD (&_mps_key_FMT_FWD)
#define MPS_KEY_FMT_FWD_FIELD fmt_fwd
extern const struct mps_key_s _mps_key_fmt_isfwd;
#define MPS_KEY_FMT_ISFWD (&_mps_key_fmt_isfwd)
extern const struct mps_key_s _mps_key_FMT_ISFWD;
#define MPS_KEY_FMT_ISFWD (&_mps_key_FMT_ISFWD)
#define MPS_KEY_FMT_ISFWD_FIELD fmt_isfwd
extern const struct mps_key_s _mps_key_fmt_pad;
#define MPS_KEY_FMT_PAD (&_mps_key_fmt_pad)
extern const struct mps_key_s _mps_key_FMT_PAD;
#define MPS_KEY_FMT_PAD (&_mps_key_FMT_PAD)
#define MPS_KEY_FMT_PAD_FIELD fmt_pad
extern const struct mps_key_s _mps_key_fmt_class;
#define MPS_KEY_FMT_CLASS (&_mps_key_fmt_class)
extern const struct mps_key_s _mps_key_FMT_CLASS;
#define MPS_KEY_FMT_CLASS (&_mps_key_FMT_CLASS)
#define MPS_KEY_FMT_CLASS_FIELD fmt_class
/* Maximum length of a keyword argument list. */
@ -774,8 +774,8 @@ typedef struct mps_pool_debug_option_s {
size_t free_size;
} mps_pool_debug_option_s;
extern const struct mps_key_s _mps_key_pool_debug_options;
#define MPS_KEY_POOL_DEBUG_OPTIONS (&_mps_key_pool_debug_options)
extern const struct mps_key_s _mps_key_POOL_DEBUG_OPTIONS;
#define MPS_KEY_POOL_DEBUG_OPTIONS (&_mps_key_POOL_DEBUG_OPTIONS)
#define MPS_KEY_POOL_DEBUG_OPTIONS_FIELD pool_debug_options
extern void mps_pool_check_fenceposts(mps_pool_t);

View file

@ -1,7 +1,7 @@
/* mpsacl.h: MEMORY POOL SYSTEM ARENA CLASS "CL"
*
* $Id$
* Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
* Copyright (c) 2001-2014 Ravenbrook Limited. See end of file for license.
*/
#ifndef mpsacl_h
@ -10,8 +10,8 @@
#include "mps.h"
/* Client arena base address argument */
extern const struct mps_key_s _mps_key_arena_cl_addr;
#define MPS_KEY_ARENA_CL_BASE (&_mps_key_arena_cl_addr)
extern const struct mps_key_s _mps_key_ARENA_CL_BASE;
#define MPS_KEY_ARENA_CL_BASE (&_mps_key_ARENA_CL_BASE)
#define MPS_KEY_ARENA_CL_BASE_FIELD addr
extern mps_arena_class_t mps_arena_class_cl(void);
@ -22,7 +22,7 @@ extern mps_arena_class_t mps_arena_class_cl(void);
/* C. COPYRIGHT AND LICENSE
*
* Copyright (C) 2001-2013 Ravenbrook Limited <http://www.ravenbrook.com/>.
* Copyright (C) 2001-2014 Ravenbrook Limited <http://www.ravenbrook.com/>.
* All rights reserved. This is an open source license. Contact
* Ravenbrook for commercial licensing options.
*

View file

@ -10,8 +10,8 @@
#include "mps.h"
extern const struct mps_key_s _mps_key_ams_support_ambiguous;
#define MPS_KEY_AMS_SUPPORT_AMBIGUOUS (&_mps_key_ams_support_ambiguous)
extern const struct mps_key_s _mps_key_AMS_SUPPORT_AMBIGUOUS;
#define MPS_KEY_AMS_SUPPORT_AMBIGUOUS (&_mps_key_AMS_SUPPORT_AMBIGUOUS)
#define MPS_KEY_AMS_SUPPORT_AMBIGUOUS_FIELD b
extern mps_pool_class_t mps_class_ams(void);

View file

@ -9,8 +9,8 @@
#include "mps.h"
extern const struct mps_key_s _mps_key_awl_find_dependent;
#define MPS_KEY_AWL_FIND_DEPENDENT (&_mps_key_awl_find_dependent)
extern const struct mps_key_s _mps_key_AWL_FIND_DEPENDENT;
#define MPS_KEY_AWL_FIND_DEPENDENT (&_mps_key_AWL_FIND_DEPENDENT)
#define MPS_KEY_AWL_FIND_DEPENDENT_FIELD addr_method
extern mps_pool_class_t mps_class_awl(void);

View file

@ -9,8 +9,8 @@
#include "mps.h"
extern const struct mps_key_s _mps_key_mfs_unit_size;
#define MPS_KEY_MFS_UNIT_SIZE (&_mps_key_mfs_unit_size)
extern const struct mps_key_s _mps_key_MFS_UNIT_SIZE;
#define MPS_KEY_MFS_UNIT_SIZE (&_mps_key_MFS_UNIT_SIZE)
#define MPS_KEY_MFS_UNIT_SIZE_FIELD size
extern mps_pool_class_t mps_class_mfs(void);

View file

@ -9,14 +9,14 @@
#include "mps.h"
extern const struct mps_key_s _mps_key_mvff_slot_high;
#define MPS_KEY_MVFF_SLOT_HIGH (&_mps_key_mvff_slot_high)
extern const struct mps_key_s _mps_key_MVFF_SLOT_HIGH;
#define MPS_KEY_MVFF_SLOT_HIGH (&_mps_key_MVFF_SLOT_HIGH)
#define MPS_KEY_MVFF_SLOT_HIGH_FIELD b
extern const struct mps_key_s _mps_key_mvff_arena_high;
#define MPS_KEY_MVFF_ARENA_HIGH (&_mps_key_mvff_arena_high)
extern const struct mps_key_s _mps_key_MVFF_ARENA_HIGH;
#define MPS_KEY_MVFF_ARENA_HIGH (&_mps_key_MVFF_ARENA_HIGH)
#define MPS_KEY_MVFF_ARENA_HIGH_FIELD b
extern const struct mps_key_s _mps_key_mvff_first_fit;
#define MPS_KEY_MVFF_FIRST_FIT (&_mps_key_mvff_first_fit)
extern const struct mps_key_s _mps_key_MVFF_FIRST_FIT;
#define MPS_KEY_MVFF_FIRST_FIT (&_mps_key_MVFF_FIRST_FIT)
#define MPS_KEY_MVFF_FIRST_FIT_FIELD b
#define mps_mvff_free_size mps_pool_free_size

View file

@ -9,11 +9,11 @@
#include "mps.h"
extern const struct mps_key_s _mps_key_mvt_reserve_depth;
#define MPS_KEY_MVT_RESERVE_DEPTH (&_mps_key_mvt_reserve_depth)
extern const struct mps_key_s _mps_key_MVT_RESERVE_DEPTH;
#define MPS_KEY_MVT_RESERVE_DEPTH (&_mps_key_MVT_RESERVE_DEPTH)
#define MPS_KEY_MVT_RESERVE_DEPTH_FIELD count
extern const struct mps_key_s _mps_key_mvt_frag_limit;
#define MPS_KEY_MVT_FRAG_LIMIT (&_mps_key_mvt_frag_limit)
extern const struct mps_key_s _mps_key_MVT_FRAG_LIMIT;
#define MPS_KEY_MVT_FRAG_LIMIT (&_mps_key_MVT_FRAG_LIMIT)
#define MPS_KEY_MVT_FRAG_LIMIT_FIELD d
extern mps_pool_class_t mps_class_mvt(void);

View file

@ -107,18 +107,18 @@ Bool PoolCheck(Pool pool)
/* Common keywords to PoolInit */
ARG_DEFINE_KEY(format, Format);
ARG_DEFINE_KEY(chain, Chain);
ARG_DEFINE_KEY(gen, Cant);
ARG_DEFINE_KEY(rank, Rank);
ARG_DEFINE_KEY(extend_by, Size);
ARG_DEFINE_KEY(large_size, Size);
ARG_DEFINE_KEY(min_size, Size);
ARG_DEFINE_KEY(mean_size, Size);
ARG_DEFINE_KEY(max_size, Size);
ARG_DEFINE_KEY(align, Align);
ARG_DEFINE_KEY(spare, double);
ARG_DEFINE_KEY(interior, Bool);
ARG_DEFINE_KEY(FORMAT, Format);
ARG_DEFINE_KEY(CHAIN, Chain);
ARG_DEFINE_KEY(GEN, Cant);
ARG_DEFINE_KEY(RANK, Rank);
ARG_DEFINE_KEY(EXTEND_BY, Size);
ARG_DEFINE_KEY(LARGE_SIZE, Size);
ARG_DEFINE_KEY(MIN_SIZE, Size);
ARG_DEFINE_KEY(MEAN_SIZE, Size);
ARG_DEFINE_KEY(MAX_SIZE, Size);
ARG_DEFINE_KEY(ALIGN, Align);
ARG_DEFINE_KEY(SPARE, double);
ARG_DEFINE_KEY(INTERIOR, Bool);
/* PoolInit -- initialize a pool

View file

@ -785,7 +785,7 @@ static void AMSDebugVarargs(ArgStruct args[MPS_ARGS_MAX], va_list varargs)
* allocated in the pool. See <design/poolams/#init>.
*/
ARG_DEFINE_KEY(ams_support_ambiguous, Bool);
ARG_DEFINE_KEY(AMS_SUPPORT_AMBIGUOUS, Bool);
static Res AMSInit(Pool pool, ArgList args)
{

View file

@ -544,7 +544,7 @@ static Addr awlNoDependent(Addr addr)
/* AWLInit -- initialize an AWL pool */
ARG_DEFINE_KEY(awl_find_dependent, Fun);
ARG_DEFINE_KEY(AWL_FIND_DEPENDENT, Fun);
static Res AWLInit(Pool pool, ArgList args)
{

View file

@ -72,7 +72,7 @@ static void MFSVarargs(ArgStruct args[MPS_ARGS_MAX], va_list varargs)
AVERT(ArgList, args);
}
ARG_DEFINE_KEY(mfs_unit_size, Size);
ARG_DEFINE_KEY(MFS_UNIT_SIZE, Size);
ARG_DEFINE_KEY(MFSExtendSelf, Bool);
static Res MFSInit(Pool pool, ArgList args)

View file

@ -215,11 +215,11 @@ static void MVTVarargs(ArgStruct args[MPS_ARGS_MAX], va_list varargs)
* minSize, meanSize, maxSize, reserveDepth, fragLimit
*/
ARG_DEFINE_KEY(mvt_min_size, Size);
ARG_DEFINE_KEY(mvt_mean_size, Size);
ARG_DEFINE_KEY(mvt_max_size, Size);
ARG_DEFINE_KEY(mvt_reserve_depth, Count);
ARG_DEFINE_KEY(mvt_frag_limit, double);
ARG_DEFINE_KEY(MVT_MIN_SIZE, Size);
ARG_DEFINE_KEY(MVT_MEAN_SIZE, Size);
ARG_DEFINE_KEY(MVT_MAX_SIZE, Size);
ARG_DEFINE_KEY(MVT_RESERVE_DEPTH, Count);
ARG_DEFINE_KEY(MVT_FRAG_LIMIT, double);
static Res MVTInit(Pool pool, ArgList args)
{

View file

@ -445,9 +445,9 @@ static void MVFFDebugVarargs(ArgStruct args[MPS_ARGS_MAX], va_list varargs)
/* MVFFInit -- initialize method for MVFF */
ARG_DEFINE_KEY(mvff_slot_high, Bool);
ARG_DEFINE_KEY(mvff_arena_high, Bool);
ARG_DEFINE_KEY(mvff_first_fit, Bool);
ARG_DEFINE_KEY(MVFF_SLOT_HIGH, Bool);
ARG_DEFINE_KEY(MVFF_ARENA_HIGH, Bool);
ARG_DEFINE_KEY(MVFF_FIRST_FIT, Bool);
static Res MVFFInit(Pool pool, ArgList args)
{

View file

@ -238,6 +238,12 @@ assertion that is listed here but for which you discovered a different
cause), please :ref:`let us know <contact>` so that we can improve
this documentation.
``arg.c: MPS_KEY_...``
A required :term:`keyword argument` was omitted from a call to
:c:func:`mps_ap_create_k`, :c:func:`mps_arena_create_k`,
:c:func:`mps_fmt_create_k`, or :c:func:`mps_pool_create_k`.
``buffer.c: BufferIsReady(buffer)``
@ -275,13 +281,11 @@ this documentation.
:term:`format methods` and :term:`stepper functions`.
``locus.c: chain->activeTraces == TraceSetEMPTY)``
``locus.c: chain->activeTraces == TraceSetEMPTY``
The client program called :c:func:`mps_chain_destroy`, but there
was a garbage collection in progress on that chain.
Park the arena before destroying the chain by calling
:c:func:`mps_arena_park`.
was a garbage collection in progress on that chain. Park the arena
before destroying the chain, by calling :c:func:`mps_arena_park`.
``mpsi.c: SizeIsAligned(size, BufferPool(buf)->alignment)``
@ -291,13 +295,6 @@ this documentation.
alignment required by the pool's :term:`object format`.
``pool.c: PoolHasAttr(pool, AttrALLOC)``
The client program called :c:func:`mps_alloc` on a pool that does
not support this form of allocation. Use an :term:`allocation
point` instead.
``poolams.c: AMS_ALLOCED(seg, i)``
The client program tried to :term:`fix` a :term:`reference` to a