Adding TcGadt.lhs
[ghc-hetmet.git] / includes / Bytecodes.h
1 /* -----------------------------------------------------------------------------
2  *
3  * (c) The GHC Team, 1998-2002
4  *
5  * Bytecode definitions.
6  *
7  * ---------------------------------------------------------------------------*/
8
9 /* --------------------------------------------------------------------------
10  * Instructions
11  *
12  * Notes:
13  * o CASEFAIL is generated by the compiler whenever it tests an "irrefutable"
14  *   pattern which fails.  If we don't see too many of these, we could
15  *   optimise out the redundant test.
16  * ------------------------------------------------------------------------*/
17
18 /* NOTE:
19
20    THIS FILE IS INCLUDED IN HASKELL SOURCES (ghc/compiler/ghci/ByteCodeGen.lhs).
21    DO NOT PUT C-SPECIFIC STUFF IN HERE!
22
23    I hope that's clear :-)
24 */
25
26 #define bci_STKCHECK                    1
27 #define bci_PUSH_L                      2
28 #define bci_PUSH_LL                     3
29 #define bci_PUSH_LLL                    4
30 #define bci_PUSH_G                      5
31 #define bci_PUSH_ALTS                   6
32 #define bci_PUSH_ALTS_P                 7
33 #define bci_PUSH_ALTS_N                 8 
34 #define bci_PUSH_ALTS_F                 9 
35 #define bci_PUSH_ALTS_D                 10
36 #define bci_PUSH_ALTS_L                 11
37 #define bci_PUSH_ALTS_V                 12
38 #define bci_PUSH_UBX                    13
39 #define bci_PUSH_APPLY_N                14
40 #define bci_PUSH_APPLY_F                15
41 #define bci_PUSH_APPLY_D                16
42 #define bci_PUSH_APPLY_L                17
43 #define bci_PUSH_APPLY_V                18
44 #define bci_PUSH_APPLY_P                19
45 #define bci_PUSH_APPLY_PP               20
46 #define bci_PUSH_APPLY_PPP              21
47 #define bci_PUSH_APPLY_PPPP             22
48 #define bci_PUSH_APPLY_PPPPP            23
49 #define bci_PUSH_APPLY_PPPPPP           24
50 /* #define bci_PUSH_APPLY_PPPPPPP               25 */
51 #define bci_SLIDE                       26
52 #define bci_ALLOC_AP                    27
53 #define bci_ALLOC_PAP                   28
54 #define bci_MKAP                        29
55 #define bci_MKPAP                       30
56 #define bci_UNPACK                      31
57 #define bci_PACK                        32
58 #define bci_TESTLT_I                    33
59 #define bci_TESTEQ_I                    34
60 #define bci_TESTLT_F                    35
61 #define bci_TESTEQ_F                    36
62 #define bci_TESTLT_D                    37
63 #define bci_TESTEQ_D                    38
64 #define bci_TESTLT_P                    39
65 #define bci_TESTEQ_P                    40
66 #define bci_CASEFAIL                    41
67 #define bci_JMP                         42
68 #define bci_CCALL                       43
69 #define bci_SWIZZLE                     44
70 #define bci_ENTER                       45
71 #define bci_RETURN                      46
72 #define bci_RETURN_P                    47
73 #define bci_RETURN_N                    48
74 #define bci_RETURN_F                    49
75 #define bci_RETURN_D                    50
76 #define bci_RETURN_L                    51
77 #define bci_RETURN_V                    52
78
79 /* If a BCO definitely requires less than this many words of stack,
80    don't include an explicit STKCHECK insn in it.  The interpreter
81    will check for this many words of stack before running each BCO,
82    rendering an explicit check unnecessary in the majority of
83    cases. */
84 #define INTERP_STACK_CHECK_THRESH  50
85
86 /*-------------------------------------------------------------------------*/