[project @ 1999-11-08 15:30:32 by sewardj]
[ghc-hetmet.git] / ghc / rts / Evaluator.h
1 /* -----------------------------------------------------------------------------
2  * $Id: Evaluator.h,v 1.6 1999/11/08 15:30:37 sewardj Exp $
3  *
4  * (c) The GHC Team, 1998-1999
5  *
6  * Prototypes for functions in Evaluator.c
7  *
8  * ---------------------------------------------------------------------------*/
9
10 /* --------------------------------------------------------------------------
11  * Sizes of objects it constructs
12  * (used by Assembler)
13  * ------------------------------------------------------------------------*/
14
15 #define Izh_sizeW       CONSTR_sizeW(0,sizeofW(StgInt))
16 #define I64zh_sizeW     CONSTR_sizeW(0,sizeofW(StgInt64))
17 #define Wzh_sizeW       CONSTR_sizeW(0,sizeofW(StgWord))
18 #define Azh_sizeW       CONSTR_sizeW(0,sizeofW(StgAddr))
19 #define Czh_sizeW       CONSTR_sizeW(0,sizeofW(StgWord))
20 #define Fzh_sizeW       CONSTR_sizeW(0,sizeofW(StgFloat))
21 #define Dzh_sizeW       CONSTR_sizeW(0,sizeofW(StgDouble))
22 #define Stablezh_sizeW  CONSTR_sizeW(0,sizeofW(StgStablePtr))
23 #define Genericzh_sizeW CONSTR_sizeW(1,0)
24
25 /* --------------------------------------------------------------------------
26  * 
27  * ------------------------------------------------------------------------*/
28
29 extern StgThreadReturnCode enter ( Capability* cap, StgClosurePtr obj );
30
31 extern nat marshall   ( char arg_ty, void* arg );
32 extern nat unmarshall ( char res_ty, void* res );
33 extern nat argSize    ( const char* ks );
34
35
36 extern StgInt          PopTaggedInt        ( void ) ;
37 extern StgWord         PopTaggedWord       ( void ) ;
38 extern StgAddr         PopTaggedAddr       ( void ) ;
39 extern StgStablePtr    PopTaggedStablePtr  ( void ) ;
40 extern StgChar         PopTaggedChar       ( void ) ;
41 extern StgFloat        PopTaggedFloat      ( void ) ;
42 extern StgDouble       PopTaggedDouble     ( void ) ;
43
44 extern void   PushTaggedInt        ( StgInt       );
45 extern void   PushTaggedWord       ( StgWord      );
46 extern void   PushTaggedAddr       ( StgAddr      );
47 extern void   PushTaggedStablePtr  ( StgStablePtr );
48 extern void   PushTaggedChar       ( StgChar      );
49 extern void   PushTaggedFloat      ( StgFloat     );
50 extern void   PushTaggedDouble     ( StgDouble    );
51
52 extern void   PushPtr        ( StgPtr );
53 extern StgPtr PopPtr         ( void );