diff options
author | Thomas Deutschmann <whissi@gentoo.org> | 2019-10-15 12:24:12 +0200 |
---|---|---|
committer | Thomas Deutschmann <whissi@gentoo.org> | 2020-08-13 11:26:55 +0200 |
commit | e088156d5b620e5e639580dacf85c6dc13823c74 (patch) | |
tree | 57f5c025e203279944da512166c20bc0521d8ccd /psi/iesdata.h | |
download | ghostscript-gpl-patches-e088156d5b620e5e639580dacf85c6dc13823c74.tar.gz ghostscript-gpl-patches-e088156d5b620e5e639580dacf85c6dc13823c74.tar.bz2 ghostscript-gpl-patches-e088156d5b620e5e639580dacf85c6dc13823c74.zip |
Import Ghostscript 9.50ghostscript-9.50
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
Diffstat (limited to 'psi/iesdata.h')
-rw-r--r-- | psi/iesdata.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/psi/iesdata.h b/psi/iesdata.h new file mode 100644 index 00000000..68180bbb --- /dev/null +++ b/psi/iesdata.h @@ -0,0 +1,52 @@ +/* Copyright (C) 2001-2019 Artifex Software, Inc. + All Rights Reserved. + + This software is provided AS-IS with no warranty, either express or + implied. + + This software is distributed under license and may not be copied, + modified or distributed except as expressly authorized under the terms + of the license contained in the file LICENSE in this distribution. + + Refer to licensing information at http://www.artifex.com or contact + Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato, + CA 94945, U.S.A., +1(415)492-9861, for further information. +*/ + + +/* Generic execution stack structure definition */ + +#ifndef iesdata_INCLUDED +# define iesdata_INCLUDED + +#include "isdata.h" + +/* Define the execution stack structure. */ +typedef struct exec_stack_s { + + ref_stack_t stack; /* the actual execution stack */ + +/* + * To improve performance, we cache the currentfile pointer + * (i.e., `shallow-bind' it in Lisp terminology). The invariant is as + * follows: either esfile points to the currentfile slot on the estack + * (i.e., the topmost slot with an executable file), or it is 0. + * To maintain the invariant, it is sufficient that whenever a routine + * pushes or pops anything on the estack, if the object *might* be + * an executable file, invoke esfile_clear_cache(); alternatively, + * immediately after pushing an object, invoke esfile_check_cache(). + */ + ref *current_file; + +} exec_stack_t; + +/* + * current_file is cleared by garbage collection, so we don't declare it + * as a pointer. + */ +#define public_st_exec_stack() /* in interp.c */\ + gs_public_st_suffix_add0(st_exec_stack, exec_stack_t, "exec_stack_t",\ + exec_stack_enum_ptrs, exec_stack_reloc_ptrs, st_ref_stack) +#define st_exec_stack_num_ptrs st_ref_stack_num_ptrs + +#endif /* iesdata_INCLUDED */ |