107 lines
3.4 KiB
C
107 lines
3.4 KiB
C
|
/* -----------------------------------------------------------------------------
|
||
|
*
|
||
|
* (c) The GHC Team, 1998-2009
|
||
|
*
|
||
|
* Bytecode definitions.
|
||
|
*
|
||
|
* ---------------------------------------------------------------------------*/
|
||
|
|
||
|
/* --------------------------------------------------------------------------
|
||
|
* Instructions
|
||
|
*
|
||
|
* Notes:
|
||
|
* o CASEFAIL is generated by the compiler whenever it tests an "irrefutable"
|
||
|
* pattern which fails. If we don't see too many of these, we could
|
||
|
* optimise out the redundant test.
|
||
|
* ------------------------------------------------------------------------*/
|
||
|
|
||
|
/* NOTE:
|
||
|
|
||
|
THIS FILE IS INCLUDED IN HASKELL SOURCES (ghc/compiler/ghci/ByteCodeAsm.hs).
|
||
|
DO NOT PUT C-SPECIFIC STUFF IN HERE!
|
||
|
|
||
|
I hope that's clear :-)
|
||
|
*/
|
||
|
|
||
|
#define bci_STKCHECK 1
|
||
|
#define bci_PUSH_L 2
|
||
|
#define bci_PUSH_LL 3
|
||
|
#define bci_PUSH_LLL 4
|
||
|
#define bci_PUSH8 5
|
||
|
#define bci_PUSH16 6
|
||
|
#define bci_PUSH32 7
|
||
|
#define bci_PUSH8_W 8
|
||
|
#define bci_PUSH16_W 9
|
||
|
#define bci_PUSH32_W 10
|
||
|
#define bci_PUSH_G 11
|
||
|
#define bci_PUSH_ALTS 12
|
||
|
#define bci_PUSH_ALTS_P 13
|
||
|
#define bci_PUSH_ALTS_N 14
|
||
|
#define bci_PUSH_ALTS_F 15
|
||
|
#define bci_PUSH_ALTS_D 16
|
||
|
#define bci_PUSH_ALTS_L 17
|
||
|
#define bci_PUSH_ALTS_V 18
|
||
|
#define bci_PUSH_PAD8 19
|
||
|
#define bci_PUSH_PAD16 20
|
||
|
#define bci_PUSH_PAD32 21
|
||
|
#define bci_PUSH_UBX8 22
|
||
|
#define bci_PUSH_UBX16 23
|
||
|
#define bci_PUSH_UBX32 24
|
||
|
#define bci_PUSH_UBX 25
|
||
|
#define bci_PUSH_APPLY_N 26
|
||
|
#define bci_PUSH_APPLY_F 27
|
||
|
#define bci_PUSH_APPLY_D 28
|
||
|
#define bci_PUSH_APPLY_L 29
|
||
|
#define bci_PUSH_APPLY_V 30
|
||
|
#define bci_PUSH_APPLY_P 31
|
||
|
#define bci_PUSH_APPLY_PP 32
|
||
|
#define bci_PUSH_APPLY_PPP 33
|
||
|
#define bci_PUSH_APPLY_PPPP 34
|
||
|
#define bci_PUSH_APPLY_PPPPP 35
|
||
|
#define bci_PUSH_APPLY_PPPPPP 36
|
||
|
/* #define bci_PUSH_APPLY_PPPPPPP 37 */
|
||
|
#define bci_SLIDE 38
|
||
|
#define bci_ALLOC_AP 39
|
||
|
#define bci_ALLOC_AP_NOUPD 40
|
||
|
#define bci_ALLOC_PAP 41
|
||
|
#define bci_MKAP 42
|
||
|
#define bci_MKPAP 43
|
||
|
#define bci_UNPACK 44
|
||
|
#define bci_PACK 45
|
||
|
#define bci_TESTLT_I 46
|
||
|
#define bci_TESTEQ_I 47
|
||
|
#define bci_TESTLT_F 48
|
||
|
#define bci_TESTEQ_F 49
|
||
|
#define bci_TESTLT_D 50
|
||
|
#define bci_TESTEQ_D 51
|
||
|
#define bci_TESTLT_P 52
|
||
|
#define bci_TESTEQ_P 53
|
||
|
#define bci_CASEFAIL 54
|
||
|
#define bci_JMP 55
|
||
|
#define bci_CCALL 56
|
||
|
#define bci_SWIZZLE 57
|
||
|
#define bci_ENTER 58
|
||
|
#define bci_RETURN 59
|
||
|
#define bci_RETURN_P 60
|
||
|
#define bci_RETURN_N 61
|
||
|
#define bci_RETURN_F 62
|
||
|
#define bci_RETURN_D 63
|
||
|
#define bci_RETURN_L 64
|
||
|
#define bci_RETURN_V 65
|
||
|
#define bci_BRK_FUN 66
|
||
|
#define bci_TESTLT_W 67
|
||
|
#define bci_TESTEQ_W 68
|
||
|
/* If you need to go past 255 then you will run into the flags */
|
||
|
|
||
|
/* If you need to go below 0x0100 then you will run into the instructions */
|
||
|
#define bci_FLAG_LARGE_ARGS 0x8000
|
||
|
|
||
|
/* If a BCO definitely requires less than this many words of stack,
|
||
|
don't include an explicit STKCHECK insn in it. The interpreter
|
||
|
will check for this many words of stack before running each BCO,
|
||
|
rendering an explicit check unnecessary in the majority of
|
||
|
cases. */
|
||
|
#define INTERP_STACK_CHECK_THRESH 50
|
||
|
|
||
|
/*-------------------------------------------------------------------------*/
|