From faaa5287b78479418ae3d2ef85dc7f3b38d8f550 Mon Sep 17 00:00:00 2001 From: Gareth Rees Date: Wed, 1 Aug 2018 13:26:33 +0100 Subject: [PATCH] Remove the mv compatibility shim and update the manual. Copied from Perforce Change: 194844 --- mps/code/mpscmv.h | 62 ------------ mps/code/poolmvff.c | 75 -------------- mps/manual/source/release.rst | 17 +++- mps/manual/source/topic/deprecated.rst | 131 +------------------------ 4 files changed, 20 insertions(+), 265 deletions(-) delete mode 100644 mps/code/mpscmv.h diff --git a/mps/code/mpscmv.h b/mps/code/mpscmv.h deleted file mode 100644 index 509a1d26dc3..00000000000 --- a/mps/code/mpscmv.h +++ /dev/null @@ -1,62 +0,0 @@ -/* mpscmv.h: MEMORY POOL SYSTEM CLASS "MV" - * - * $Id$ - * Copyright (c) 2001-2014 Ravenbrook Limited. See end of file for license. - * - * DEPRECATED: Suggested replacement is MVFF, but see the MPS manual. - */ - -#ifndef mpscmv_h -#define mpscmv_h - -#include "mps.h" - -#define mps_mv_free_size mps_pool_free_size -#define mps_mv_size mps_pool_total_size - -extern mps_pool_class_t mps_class_mv(void); -extern mps_pool_class_t mps_class_mv_debug(void); - -#endif /* mpscmv_h */ - - -/* C. COPYRIGHT AND LICENSE - * - * Copyright (C) 2001-2014 Ravenbrook Limited . - * All rights reserved. This is an open source license. Contact - * Ravenbrook for commercial licensing options. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * 3. Redistributions in any form must be accompanied by information on how - * to obtain complete source code for this software and any accompanying - * software that uses this software. The source code must either be - * included in the distribution or be available for no more than the cost - * of distribution plus a nominal fee, and must be freely redistributable - * under reasonable conditions. For an executable file, complete source - * code means the source code for all modules it contains. It does not - * include source code for modules or files that typically accompany the - * major components of the operating system on which the executable file - * runs. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ diff --git a/mps/code/poolmvff.c b/mps/code/poolmvff.c index b31c0f5d922..eedad5dbbb7 100644 --- a/mps/code/poolmvff.c +++ b/mps/code/poolmvff.c @@ -757,81 +757,6 @@ Bool MVFFCheck(MVFF mvff) } -/* Replacement of the deprecated MV pool class. - * - * MVFF replaces MV, but these functions are provided for backward - * compatibility. TODO: Remove these sometime after MPS 1.117. - */ - -DECLARE_CLASS(Pool, MVPool, MVFFPool); -DECLARE_CLASS(Pool, MVDebugPool, MVPool); - -static Res mvInit(Pool pool, Arena arena, PoolClass klass, ArgList args) -{ - Index i; - - AVER(pool != NULL); - AVERT(Arena, arena); - AVERC(PoolClass, klass); - AVERT(ArgList, args); - - /* MV allows arbitrary alignment but MVFF does not, so round up. */ - for (i = 0; args[i].key != MPS_KEY_ARGS_END; ++i) - if (args[i].key == MPS_KEY_ALIGN - && args[i].val.align < FreelistMinimumAlignment) - args[i].val.align = FreelistMinimumAlignment; - - return NextMethod(Pool, MVPool, init)(pool, arena, klass, args); -} - -static void mvVarargs(ArgStruct args[MPS_ARGS_MAX], va_list varargs) -{ - args[0].key = MPS_KEY_EXTEND_BY; - args[0].val.size = va_arg(varargs, Size); - args[1].key = MPS_KEY_MEAN_SIZE; - args[1].val.size = va_arg(varargs, Size); - args[2].key = MPS_KEY_MAX_SIZE; - args[2].val.size = va_arg(varargs, Size); - args[3].key = MPS_KEY_ARGS_END; - AVERT(ArgList, args); -} - -static void mvDebugVarargs(ArgStruct args[MPS_ARGS_MAX], va_list varargs) -{ - args[0].key = MPS_KEY_POOL_DEBUG_OPTIONS; - args[0].val.pool_debug_options = va_arg(varargs, mps_pool_debug_option_s *); - mvVarargs(args + 1, varargs); -} - -DEFINE_CLASS(Pool, MVPool, klass) -{ - INHERIT_CLASS(klass, MVPool, MVFFPool); - klass->init = mvInit; - klass->varargs = mvVarargs; - AVERT(PoolClass, klass); -} - -DEFINE_CLASS(Pool, MVDebugPool, klass) -{ - INHERIT_CLASS(klass, MVDebugPool, MVPool); - PoolClassMixInDebug(klass); - klass->size = sizeof(MVFFDebugStruct); - klass->varargs = mvDebugVarargs; - klass->debugMixin = MVFFDebugMixin; - AVERT(PoolClass, klass); -} - -mps_pool_class_t mps_class_mv(void) -{ - return CLASS(MVPool); -} - -mps_pool_class_t mps_class_mv_debug(void) -{ - return CLASS(MVDebugPool); -} - - /* C. COPYRIGHT AND LICENSE * * Copyright (C) 2001-2016 Ravenbrook Limited . diff --git a/mps/manual/source/release.rst b/mps/manual/source/release.rst index b71aec40683..50c3b19046c 100644 --- a/mps/manual/source/release.rst +++ b/mps/manual/source/release.rst @@ -4,6 +4,21 @@ Release notes ============= +.. _release-notes-1.118: + +Release 1.118.0 +--------------- + +Interface changes +................. + +#. The deprecated pool class MV (Manual Variable), and the deprecated + functions ``mps_mv_free_size`` and ``mps_mv_size`` have been + removed. Use :ref:`pool-mvff` and the generic functions + :c:func:`mps_pool_free_size` and :c:func:`mps_pool_total_size` + instead. + + .. _release-notes-1.117: Release 1.117.0 @@ -223,7 +238,7 @@ Interface changes name :c:type:`mps_class_t` is still available via a ``typedef``, but is deprecated. -#. The functions :c:func:`mps_mv_free_size`, :c:func:`mps_mv_size`, +#. The functions ``mps_mv_free_size``, ``mps_mv_size``, :c:func:`mps_mvff_free_size`, :c:func:`mps_mvff_size`, :c:func:`mps_mvt_free_size` and :c:func:`mps_mvt_size` are now deprecated in favour of the generic functions diff --git a/mps/manual/source/topic/deprecated.rst b/mps/manual/source/topic/deprecated.rst index 5709f6802d8..67c92026021 100644 --- a/mps/manual/source/topic/deprecated.rst +++ b/mps/manual/source/topic/deprecated.rst @@ -7,10 +7,10 @@ Deprecated interfaces ===================== This chapter documents the public symbols in the MPS interface that -are now deprecated. These symbols may be removed in any future release -(see :ref:`topic-interface-support` for details). If you are using one -of these symbols, then you should update your code to use the -supported interface. +are currently deprecated. These symbols may be removed in any future +release (see :ref:`topic-interface-support` for details). If you are +using one of these symbols, then you should update your code to use +the supported interface. .. note:: @@ -19,77 +19,6 @@ supported interface. makes a difference if we know that someone is using a feature. - - -.. index:: - single: deprecated interfaces; in version 1.117 - -Deprecated in version 1.117 -........................... - -.. c:function:: mps_pool_class_t mps_class_mv(void) - - .. deprecated:: - - Use :c:func:`mps_class_mvff` instead. - - Return the :term:`pool class` for an MV (Manual Variable) - :term:`pool`. - - When creating an MV pool, :c:func:`mps_pool_create_k` takes four - optional :term:`keyword arguments`: - - * :c:macro:`MPS_KEY_ALIGN` (type :c:type:`mps_align_t`, default is - :c:macro:`MPS_PF_ALIGN`) is the :term:`alignment` of the - addresses allocated (and freed) in the pool. The minimum - alignment supported by pools of this class is 1 (one) - and the maximum is the arena grain size - (see :c:macro:`MPS_KEY_ARENA_GRAIN_SIZE`). - - * :c:macro:`MPS_KEY_EXTEND_BY` (type :c:type:`size_t`, - default 65536) is the :term:`size` of block that the pool will - request from the :term:`arena`. - - * :c:macro:`MPS_KEY_MEAN_SIZE` (type :c:type:`size_t`, default 32) - is the predicted mean size of blocks that will be allocated from - the pool. This value must be smaller than, or equal to, the - value for :c:macro:`MPS_KEY_EXTEND_BY`. - - * :c:macro:`MPS_KEY_MAX_SIZE` (type :c:type:`size_t`, - default 65536) is the predicted maximum size of blocks that will - be allocated from the pool. This value must be larger than, or - equal to, the value for :c:macro:`MPS_KEY_EXTEND_BY`. - - The mean and maximum sizes are *hints* to the MPS: the pool will be - less efficient if these are wrong, but nothing will break. - - For example:: - - MPS_ARGS_BEGIN(args) { - MPS_ARGS_ADD(args, MPS_KEY_MEAN_SIZE, 32); - MPS_ARGS_ADD(args, MPS_KEY_MAX_SIZE, 1024); - MPS_ARGS_ADD(args, MPS_KEY_EXTEND_BY, 1024 * 1024); - res = mps_pool_create_k(&pool, arena, mps_class_mfs(), args); - } MPS_ARGS_END(args); - - -.. c:function:: mps_pool_class_t mps_class_mv_debug(void) - - .. deprecated:: - - Use :c:func:`mps_class_mvff_debug` instead. - - A :ref:`debugging ` version of the MV pool - class. - - When creating a debugging MV pool, :c:func:`mps_pool_create_k` - takes five optional keyword arguments: :c:macro:`MPS_KEY_ALIGN`, - :c:macro:`MPS_KEY_EXTEND_SIZE`, :c:macro:`MPS_KEY_MEAN_SIZE`, - :c:macro:`MPS_KEY_MAX_SIZE` are as described above, and - :c:macro:`MPS_KEY_POOL_DEBUG_OPTIONS` specifies the debugging - options. See :c:type:`mps_pool_debug_option_s`. - - .. index:: single: deprecated interfaces; in version 1.115 @@ -113,34 +42,6 @@ Deprecated in version 1.115 pools were the only objects in the MPS that belonged to classes. - -.. c:function:: size_t mps_mv_free_size(mps_pool_t pool) - - .. deprecated:: - - Use the generic function :c:func:`mps_pool_free_size` instead. - - Return the total amount of free space in an MV pool. - - ``pool`` is the MV pool. - - Returns the total free space in the pool, in :term:`bytes (1)`. - - -.. c:function:: size_t mps_mv_size(mps_pool_t pool) - - .. deprecated:: - - Use the generic function :c:func:`mps_pool_total_size` - instead. - - Return the total size of an MV pool. - - ``pool`` is the MV pool. - - Returns the total size of the pool, in :term:`bytes (1)`. This - is the sum of allocated space and free space. - .. c:function:: size_t mps_mvff_free_size(mps_pool_t pool) @@ -591,30 +492,6 @@ Deprecated in version 1.112 size_t extend_by, size_t unit_size) - When creating a pool of class :c:func:`mps_class_mv`, pass the - values for the keyword arguments :c:macro:`MPS_KEY_EXTEND_BY`, - :c:macro:`MPS_KEY_MEAN_SIZE`, and :c:macro:`MPS_KEY_MAX_SIZE` like - this:: - - mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, - mps_pool_class_t mps_class_mv(), - size_t extend_by, - size_t mean_size, - size_t max_size) - - When creating a pool of class :c:func:`mps_class_mv_debug`, pass - the values for the keyword arguments - :c:macro:`MPS_KEY_POOL_DEBUG_OPTIONS`, - :c:macro:`MPS_KEY_EXTEND_BY`, :c:macro:`MPS_KEY_MEAN_SIZE` and - :c:macro:`MPS_KEY_MAX_SIZE` like this:: - - mps_res_t mps_pool_create(mps_pool_t *pool_o, mps_arena_t arena, - mps_pool_class_t mps_class_mv_debug(), - mps_pool_debug_option_s *pool_debug_options, - size_t extend_by, - size_t mean_size, - size_t max_size) - When creating a pool of class :c:func:`mps_class_mvff`, pass the values for the keyword arguments :c:macro:`MPS_KEY_EXTEND_BY`, :c:macro:`MPS_KEY_MEAN_SIZE`, :c:macro:`MPS_KEY_ALIGN`,