📄 heapstats.h
字号:
///-*-C++-*-////////////////////////////////////////////////////////////////////// Hoard: A Fast, Scalable, and Memory-Efficient Allocator// for Shared-Memory Multiprocessors// Contact author: Emery Berger, http://www.cs.utexas.edu/users/emery//// Copyright (c) 1998-2000, The University of Texas at Austin.//// This library is free software; you can redistribute it and/or modify// it under the terms of the GNU Library General Public License as// published by the Free Software Foundation, http://www.fsf.org.//// This library is distributed in the hope that it will be useful, but// WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Library General Public License for more details.////////////////////////////////////////////////////////////////////////////////#ifndef _HEAPSTATS_H_#define _HEAPSTATS_H_#include "config.h"//#include <stdio.h>//#include <assert.h>class heapStats {public: heapStats (void) : U (0), A (0)#if HEAP_STATS ,Umax (0), Amax (0)#endif {} inline const heapStats& operator= (const heapStats& p); inline void incStats (int updateU, int updateA); inline void incUStats (void); inline void decStats (int updateU, int updateA); inline void decUStats (void); inline void decUStats (int& Uout, int& Aout); inline void getStats (int& Uout, int& Aout);#if HEAP_STATS inline int getUmax (void); inline int getAmax (void);#endifprivate: // U and A *must* be the first items in this class -- // we will depend on this to atomically update them. int U; // Memory in use. int A; // Memory allocated.#if HEAP_STATS int Umax; int Amax;#endif};inline void heapStats::incStats (int updateU, int updateA){ assert (updateU >= 0); assert (updateA >= 0); assert (U <= A); assert (U >= 0); assert (A >= 0); U += updateU; A += updateA;#if HEAP_STATS Amax = MAX (Amax, A); Umax = MAX (Umax, U);#endif assert (U <= A); assert (U >= 0); assert (A >= 0);}inline void heapStats::incUStats (void){ assert (U < A); assert (U >= 0); assert (A >= 0); U++;#if HEAP_STATS Umax = MAX (Umax, U);#endif assert (U >= 0); assert (A >= 0);}inline void heapStats::decStats (int updateU, int updateA){ assert (updateU >= 0); assert (updateA >= 0); assert (U <= A); assert (U >= updateU); assert (A >= updateA); U -= updateU; A -= updateA; assert (U <= A); assert (U >= 0); assert (A >= 0);}inline void heapStats::decUStats (int& Uout, int& Aout){ assert (U <= A); assert (U > 0); assert (A >= 0); U--; Uout = U; Aout = A; assert (U >= 0); assert (A >= 0);}inline void heapStats::decUStats (void){ assert (U <= A); assert (U > 0); assert (A >= 0); U--;}inline void heapStats::getStats (int& Uout, int& Aout){ assert (U >= 0); assert (A >= 0); Uout = U; Aout = A; assert (U <= A); assert (U >= 0); assert (A >= 0);}#if HEAP_STATSinline int heapStats::getUmax (void){ return Umax;}inline int heapStats::getAmax (void){ return Amax;}#endif // HEAP_STATS#endif // _HEAPSTATS_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -