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