/* -----------------------------------------------------------------------------
- * $Id: Bytecodes.h,v 1.6 1999/04/27 10:07:20 sewardj Exp $
+ * $Id: Bytecodes.h,v 1.16 2000/06/15 13:23:51 daan Exp $
*
* (c) The GHC Team, 1998-1999
*
Ins(i_INTERNAL_ERROR), \
Ins(i_PANIC), \
Ins(i_STK_CHECK), \
+ Ins(i_STK_CHECK_big), \
Ins(i_ARG_CHECK), \
Ins(i_ALLOC_AP), \
Ins(i_ALLOC_PAP), \
Ins(i_ALLOC_CONSTR), \
+ Ins(i_ALLOC_CONSTR_big), \
+ Ins(i_ALLOC_ROW), \
+ Ins(i_ALLOC_ROW_big), \
Ins(i_MKAP), \
Ins(i_MKAP_big), \
Ins(i_MKPAP), \
Ins(i_PACK), \
Ins(i_PACK_big), \
+ Ins(i_PACK_ROW), \
+ Ins(i_PACK_ROW_big), \
+ Ins(i_PACK_INJ), \
+ Ins(i_PACK_INJ_big), \
+ Ins(i_PACK_INJ_CONST), \
Ins(i_SLIDE), \
Ins(i_SLIDE_big), \
Ins(i_TEST), \
+ Ins(i_TEST_INJ), \
+ Ins(i_TEST_INJ_big), \
+ Ins(i_TEST_INJ_CONST), \
Ins(i_UNPACK), \
+ Ins(i_UNPACK_ROW), \
+ Ins(i_UNPACK_INJ), \
Ins(i_VAR), \
Ins(i_VAR_big), \
Ins(i_CONST), \
Ins(i_PACK_DOUBLE), \
Ins(i_UNPACK_DOUBLE), \
Ins(i_VAR_STABLE), \
+ Ins(i_VAR_STABLE_big), \
Ins(i_PACK_STABLE), \
Ins(i_UNPACK_STABLE), \
Ins(i_PRIMOP1), \
, i_intToAddr
, i_addrToInt
+ /* Stable# operations */
+ , i_intToStable
+ , i_stableToInt
+
/* Stateless Addr operations */
, i_indexCharOffAddr
, i_indexIntOffAddr
, i_indexAddrOffAddr
, i_indexFloatOffAddr
, i_indexDoubleOffAddr
-#ifdef PROVIDE_STABLE
, i_indexStableOffAddr
-#endif
, i_readCharOffAddr
, i_readIntOffAddr
, i_readAddrOffAddr
, i_readFloatOffAddr
, i_readDoubleOffAddr
-#ifdef PROVIDE_STABLE
, i_readStableOffAddr
-#endif
, i_writeCharOffAddr
, i_writeIntOffAddr
, i_writeAddrOffAddr
, i_writeFloatOffAddr
, i_writeDoubleOffAddr
-#ifdef PROVIDE_STABLE
, i_writeStableOffAddr
-#endif
/* Integer operations */
, i_compareInteger
, i_raise
+#ifdef XMLAMBDA
+ /* row primitives. */
+ , i_rowInsertAt
+ , i_rowRemoveAt
+#endif
+
/* Ref operations */
, i_newRef
, i_writeRef
, i_readDoubleArray
, i_indexDoubleArray
+#if 0
#ifdef PROVIDE_STABLE
, i_writeStableArray
, i_readStableArray
, i_indexStableArray
#endif
+#endif
/* {write,read,index}ForeignObjArray not provided */
#ifdef PROVIDE_FOREIGN
/* ForeignObj# operations */
- , i_makeForeignObj
+ , i_mkForeignObj
, indexCharOffForeignObj
, indexIntOffForeignObj
, i_makeWeak
, i_deRefWeak
#endif
-#ifdef PROVIDE_STABLE
/* StablePtr# operations */
, i_makeStablePtr
, i_deRefStablePtr
, i_freeStablePtr
-#endif
+
+ /* foreign export dynamic support */
+ , i_createAdjThunkARCH
+
+ /* misc handy hacks */
+ , i_getArgc
+ , i_getArgv
#ifdef PROVIDE_CONCURRENT
/* Concurrency operations */
- , i_fork
+ , i_forkIO
, i_killThread
- , i_sameMVar
- , i_newMVar
- , i_takeMVar
- , i_putMVar
+ , i_raiseInThread
, i_delay
, i_waitRead
, i_waitWrite
+ , i_yield
+ , i_getThreadId
+ , i_cmpThreadIds
#endif
+ , i_sameMVar
+ , i_newMVar
+ , i_takeMVar
+ , i_putMVar
+
/* CCall! */
- , i_ccall_Id
- , i_ccall_IO
+ , i_ccall_ccall_Id
+ , i_ccall_ccall_IO
+ , i_ccall_stdcall_Id
+ , i_ccall_stdcall_IO
/* If you add a new primop to this table, check you don't
* overflow the 256 limit. That is MAX_Primop2 <= 255.
- * Current value (30/10/98) = 0x42
+ * Current value (6/10/2000) = 0x44
*/
- , MAX_Primop2 = i_ccall_IO
+ , MAX_Primop2 = i_ccall_stdcall_IO
} Primop2;
typedef unsigned int InstrPtr; /* offset of instruction within BCO */