home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
mitsch75.zip
/
scheme-7_5_17-src.zip
/
scheme-7.5.17
/
src
/
microcode
/
default.h
< prev
next >
Wrap
C/C++ Source or Header
|
2000-12-05
|
5KB
|
214 lines
/* -*-C-*-
$Id: default.h,v 9.44 2000/12/05 21:23:44 cph Exp $
Copyright (c) 1988-2000 Massachusetts Institute of Technology
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program 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
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* This file contains default definitions for some hooks which
various machines require. These machines define these hooks
in CONFIG.H and this file defines them only if they remain
undefined. */
/* Compiler bug fixes. */
#ifndef And2
#define And2(x, y) ((x) && (y))
#define And3(x, y, z) ((x) && (y) && (z))
#define Or2(x, y) ((x) || (y))
#define Or3(x, y, z) ((x) || (y) || (z))
#endif
#ifndef MEMORY_FETCH
/* These definitions allow a true multi-processor with shared memory
but no atomic longword operations (Butterfly and Concert,
for example) to supply their own atomic operators in config.h. */
#define MEMORY_FETCH(locative) (locative)
#define MEMORY_STORE(locative, object) (locative) = (object)
#endif
#ifndef Get_Fixed_Obj_Slot
#define Get_Fixed_Obj_Slot(N) FAST_VECTOR_REF (Fixed_Objects, N)
#define Set_Fixed_Obj_Slot(N,S) FAST_VECTOR_SET (Fixed_Objects, N, S)
#define Update_FObj_Slot(N, S) Set_Fixed_Obj_Slot(N, S)
#define Declare_Fixed_Objects() SCHEME_OBJECT Fixed_Objects
#define Valid_Fixed_Obj_Vector() (VECTOR_P (Fixed_Objects))
#define Save_Fixed_Obj(Save_FO) \
Save_FO = Fixed_Objects; \
Fixed_Objects = SHARP_F;
#define Restore_Fixed_Obj(Save_FO) \
Fixed_Objects = Save_FO
#endif
/* Atomic swapping hook. Used extensively. */
#ifndef SWAP_POINTERS
#define SWAP_POINTERS(locative, object, target) do \
{ \
(target) = (* (locative)); \
(* (locative)) = (object); \
} while (0)
#endif
#ifndef INITIALIZE_STACK
#define INITIALIZE_STACK() do \
{ \
Stack_Pointer = Stack_Top; \
SET_STACK_GUARD (Stack_Bottom + STACK_GUARD_SIZE); \
* Stack_Bottom \
= (MAKE_POINTER_OBJECT (TC_BROKEN_HEART, Stack_Bottom)); \
} while (0)
#endif
#ifndef STACK_ALLOCATION_SIZE
#define STACK_ALLOCATION_SIZE(Stack_Blocks) (Stack_Blocks)
#endif
#ifndef STACK_OVERFLOWED_P
#define STACK_OVERFLOWED_P() \
((* Stack_Bottom) != (MAKE_POINTER_OBJECT (TC_BROKEN_HEART, Stack_Bottom)))
#endif
#ifndef STACK_SANITY_CHECK
#define STACK_SANITY_CHECK(name) do \
{ \
extern void EXFUN (stack_death, (CONST char *)); \
\
if (STACK_OVERFLOWED_P ()) \
stack_death (name); \
/*NOTREACHED */ \
} while (0)
#endif
#ifndef SET_CONSTANT_TOP
#define SET_CONSTANT_TOP() do \
{ \
ALIGN_FLOAT (Free_Constant); \
SEAL_CONSTANT_SPACE (); \
} while (0)
#endif
#ifndef TEST_CONSTANT_TOP
#define TEST_CONSTANT_TOP(New_Top) ((New_Top) <= Constant_Top)
#endif
#ifndef CONSTANT_AREA_END
#define CONSTANT_AREA_END() Free_Constant
#endif
#ifndef CONSTANT_AREA_START
#define CONSTANT_AREA_START() Stack_Pointer
#endif /* CONSTANT_AREA_START */
#ifndef SEAL_CONSTANT_SPACE
#define SEAL_CONSTANT_SPACE() do \
{ \
* Free_Constant = \
(MAKE_POINTER_OBJECT (TC_BROKEN_HEART, Free_Constant)); \
} while (0)
#endif
/* Used in debug.c */
#ifndef Back_Trace_Entry_Hook
#define Back_Trace_Entry_Hook()
#endif
#ifndef Back_Trace_Exit_Hook
#define Back_Trace_Exit_Hook()
#endif
/* Used in extern.h */
#ifndef More_Debug_Flag_Externs
#define More_Debug_Flag_Externs()
#endif
/* Used in fasdump.c */
#ifndef Band_Dump_Permitted
#define Band_Dump_Permitted()
#endif
#ifndef Band_Load_Hook
#define Band_Load_Hook()
#endif
#ifndef Band_Dump_Exit_Hook
#define Band_Dump_Exit_Hook()
#endif
#ifndef Fasdump_Exit_Hook
#define Fasdump_Exit_Hook()
#endif
#ifndef Fasdump_Free_Calc
#define Fasdump_Free_Calc(NewFree, NewMemtop) do \
{ \
NewFree = Unused_Heap_Bottom; \
NewMemTop = Unused_Heap_Top; \
} while (0)
#endif
/* Used in interpret.c */
#ifndef Eval_Ucode_Hook
#define Eval_Ucode_Hook()
#endif
#ifndef Pop_Return_Ucode_Hook
#define Pop_Return_Ucode_Hook()
#endif
#ifndef Apply_Ucode_Hook
#define Apply_Ucode_Hook()
#endif
#ifndef End_GC_Hook
#define End_GC_Hook()
#endif
/* Used in storage.c */
#ifndef More_Debug_Flag_Allocs
#define More_Debug_Flag_Allocs()
#endif
/* Used in utils.c */
#ifndef Global_Interrupt_Hook
#define Global_Interrupt_Hook()
#endif
#ifndef Error_Exit_Hook
#define Error_Exit_Hook()
#endif
/* Common Lisp Hooks */
#ifndef SITE_EXPRESSION_DISPATCH_HOOK
#define SITE_EXPRESSION_DISPATCH_HOOK()
#endif
#ifndef SITE_RETURN_DISPATCH_HOOK
#define SITE_RETURN_DISPATCH_HOOK()
#endif
#ifndef FASLOAD_RELOCATE_HOOK
#define FASLOAD_RELOCATE_HOOK(heap_low, heap_high, constant_low, constant_high)
#endif