xref: /plan9/sys/src/cmd/gs/src/gsmdebug.h (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
17dd7cddfSDavid du Colombier /* Copyright (C) 1995, 1996, 1998 Aladdin Enterprises.  All rights reserved.
27dd7cddfSDavid du Colombier 
3*593dc095SDavid du Colombier   This software is provided AS-IS with no warranty, either express or
4*593dc095SDavid du Colombier   implied.
57dd7cddfSDavid du Colombier 
6*593dc095SDavid du Colombier   This software is distributed under license and may not be copied,
7*593dc095SDavid du Colombier   modified or distributed except as expressly authorized under the terms
8*593dc095SDavid du Colombier   of the license contained in the file LICENSE in this distribution.
97dd7cddfSDavid du Colombier 
10*593dc095SDavid du Colombier   For more information about licensing, please refer to
11*593dc095SDavid du Colombier   http://www.ghostscript.com/licensing/. For information on
12*593dc095SDavid du Colombier   commercial licensing, go to http://www.artifex.com/licensing/ or
13*593dc095SDavid du Colombier   contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14*593dc095SDavid du Colombier   San Rafael, CA  94903, U.S.A., +1(415)492-9861.
157dd7cddfSDavid du Colombier */
167dd7cddfSDavid du Colombier 
17*593dc095SDavid du Colombier /* $Id: gsmdebug.h,v 1.6 2002/06/16 08:45:42 lpd Exp $ */
187dd7cddfSDavid du Colombier /* Allocator debugging definitions and interface */
197dd7cddfSDavid du Colombier /* Requires gdebug.h (for gs_debug) */
207dd7cddfSDavid du Colombier 
217dd7cddfSDavid du Colombier #ifndef gsmdebug_INCLUDED
227dd7cddfSDavid du Colombier #  define gsmdebug_INCLUDED
237dd7cddfSDavid du Colombier 
247dd7cddfSDavid du Colombier /* Define the fill patterns used for debugging the allocator. */
253ff48bf5SDavid du Colombier extern const byte
267dd7cddfSDavid du Colombier        gs_alloc_fill_alloc,	/* allocated but not initialized */
277dd7cddfSDavid du Colombier        gs_alloc_fill_block,	/* locally allocated block */
287dd7cddfSDavid du Colombier        gs_alloc_fill_collected,	/* garbage collected */
297dd7cddfSDavid du Colombier        gs_alloc_fill_deleted,	/* locally deleted block */
307dd7cddfSDavid du Colombier        gs_alloc_fill_free;	/* freed */
317dd7cddfSDavid du Colombier 
327dd7cddfSDavid du Colombier /* Define an alias for a specialized debugging flag */
337dd7cddfSDavid du Colombier /* that used to be a separate variable. */
347dd7cddfSDavid du Colombier #define gs_alloc_debug gs_debug['@']
357dd7cddfSDavid du Colombier 
367dd7cddfSDavid du Colombier /* Conditionally fill unoccupied blocks with a pattern. */
37*593dc095SDavid du Colombier extern void gs_alloc_memset(void *, int /*byte */ , ulong);
387dd7cddfSDavid du Colombier 
397dd7cddfSDavid du Colombier #ifdef DEBUG
407dd7cddfSDavid du Colombier #  define gs_alloc_fill(ptr, fill, len)\
417dd7cddfSDavid du Colombier      BEGIN if ( gs_alloc_debug ) gs_alloc_memset(ptr, fill, (ulong)(len)); END
427dd7cddfSDavid du Colombier #else
437dd7cddfSDavid du Colombier #  define gs_alloc_fill(ptr, fill, len)\
447dd7cddfSDavid du Colombier      DO_NOTHING
457dd7cddfSDavid du Colombier #endif
467dd7cddfSDavid du Colombier 
477dd7cddfSDavid du Colombier #endif /* gsmdebug_INCLUDED */
48