[project @ 1999-11-17 11:25:01 by simonmar]
[ghc-hetmet.git] / ghc / includes / StgTypes.h
index c067521..da20c33 100644 (file)
@@ -1,12 +1,14 @@
 /* -----------------------------------------------------------------------------
- * $Id: StgTypes.h,v 1.3 1999/01/26 11:12:58 simonm Exp $
+ * $Id: StgTypes.h,v 1.6 1999/07/15 16:11:29 panne Exp $
+ *
+ * (c) The GHC Team, 1998-1999
  *
  * Various C datatypes used in the run-time system.
 
  * Specifically:
 
-       StgInt8, 16, 32, 64
-       StgNat8, 16, 32, 64
+       StgInt8,  16, 32, 64
+       StgWord8, 16, 32, 64
        StgChar, StgFloat, StgDouble
 
        ***** All the same size: *****
  */
 
 typedef signed   char            StgInt8;
-typedef unsigned char            StgNat8;
+typedef unsigned char            StgWord8;
 
 typedef signed   short           StgInt16;
-typedef unsigned short           StgNat16;
+typedef unsigned short           StgWord16;
 
 
 #if SIZEOF_UNSIGNED_INT == 4
 typedef signed   int             StgInt32;
-typedef unsigned int             StgNat32;
+typedef unsigned int             StgWord32;
 #else
 #error GHC untested on this architecture: sizeof(unisgned int) != 4
 #endif
@@ -53,11 +55,11 @@ typedef unsigned int             StgNat32;
 
 #ifdef SUPPORT_LONG_LONGS
 /* assume long long is 64 bits */
-typedef unsigned long long int StgNat64;
+typedef unsigned long long int StgWord64;
 typedef signed long long int   StgInt64;
 #elif SIZEOF_LONG == 8
 typedef signed   long          StgInt64;
-typedef unsigned long          StgNat64;
+typedef unsigned long          StgWord64;
 #else
 #error GHC untested on this architecture: sizeof(void *) < 8 and no long longs.
 #endif
@@ -70,11 +72,11 @@ typedef unsigned long          StgNat64;
 
 #if SIZEOF_VOID_P == 8
 typedef StgInt64           StgInt;
-typedef StgNat64           StgWord;
+typedef StgWord64          StgWord;
 #else
 #if SIZEOF_VOID_P == 4
 typedef StgInt32           StgInt; 
-typedef StgNat32           StgWord;
+typedef StgWord32          StgWord;
 #else
 #error GHC untested on this architecture: sizeof(void *) != 4 or 8
 #endif
@@ -86,7 +88,7 @@ typedef void*              StgAddr;
  * Other commonly-used STG datatypes.
  */
 
-typedef StgNat8            StgChar;
+typedef StgWord8           StgChar;
 
 /*
  * If a double fits in an StgWord, don't bother using floats.
@@ -115,14 +117,14 @@ typedef StgInt             StgStackOffset;   /* offset in words! */
 
 typedef StgWord*           StgStackPtr;
 
-typedef StgNat8           StgCode;         /* close enough */
+typedef StgWord8          StgCode;         /* close enough */
 typedef StgCode*          StgCodePtr;  
 
 typedef StgPtr*            StgArray;        /* the goods of an Array# */
 typedef char*             StgByteArray;    /* the goods of a ByteArray# */
 
 typedef StgInt64              LI_;
-typedef StgNat64              LW_;
+typedef StgWord64             LW_;
 
 /* Stable Pointers:  A stable pointer is represented as an index into
  * the stable pointer table in the low 24 bits with a weight in the
@@ -130,7 +132,7 @@ typedef StgNat64           LW_;
  */
 typedef StgWord            StgStablePtr;
 
-#define STABLEPTR_WEIGHT_MASK   (0xff << ((sizeof(StgWord)-1) * BITS_PER_BYTE))
+#define STABLEPTR_WEIGHT_MASK   ((StgWord)0xff << ((sizeof(StgWord)-1) * BITS_PER_BYTE))
 #define STABLEPTR_WEIGHT_SHIFT  (BITS_IN(StgWord) - 8)
 
 /*