* include/object.h: use uintptr_t instead of intptr_t to avoid side
effects during divisions. git-svn-id: svn://svn.zoy.org/elk/trunk@258 55e467fa-43c5-0310-a8a2-de718669efc6
This commit is contained in:
		
							parent
							
								
									04359f2053
								
							
						
					
					
						commit
						550ad4e2a3
					
				| 
						 | 
					@ -38,7 +38,7 @@ typedef struct {
 | 
				
			||||||
} Object;
 | 
					} Object;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define FIXBITS         (8 * (int)sizeof(int))
 | 
					#define FIXBITS         (8 * (int)sizeof(int))
 | 
				
			||||||
#define SIGNBIT         ((unsigned)1 << (FIXBITS-1))
 | 
					#define SIGNBIT         ((unsigned int)1 << (FIXBITS-1))
 | 
				
			||||||
#define CONSTBIT        1
 | 
					#define CONSTBIT        1
 | 
				
			||||||
#define TYPEBITS        (8 * (int)sizeof(int) - 1)
 | 
					#define TYPEBITS        (8 * (int)sizeof(int) - 1)
 | 
				
			||||||
#define MAX_TYPE        ((1 << TYPEBITS) - 1)
 | 
					#define MAX_TYPE        ((1 << TYPEBITS) - 1)
 | 
				
			||||||
| 
						 | 
					@ -51,8 +51,8 @@ typedef struct {
 | 
				
			||||||
#define FIXNUM(x)       ((int)(x).data)
 | 
					#define FIXNUM(x)       ((int)(x).data)
 | 
				
			||||||
#define CHAR(x)         ((int)(x).data)
 | 
					#define CHAR(x)         ((int)(x).data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define POINTER(x)      ((void *)(intptr_t)(x).data)
 | 
					#define POINTER(x)      ((void *)(uintptr_t)(x).data)
 | 
				
			||||||
#define SETPOINTER(x,p) ((x).data = (intptr_t)(void *)(p))
 | 
					#define SETPOINTER(x,p) ((x).data = (uintptr_t)(void *)(p))
 | 
				
			||||||
#define SET(x,t,p)      ((x).tag = (int)t << 1, (x).data = (p))
 | 
					#define SET(x,t,p)      ((x).tag = (int)t << 1, (x).data = (p))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ISCONST(x)      ((x).tag & CONSTBIT)
 | 
					#define ISCONST(x)      ((x).tag & CONSTBIT)
 | 
				
			||||||
| 
						 | 
					@ -68,9 +68,9 @@ typedef struct {
 | 
				
			||||||
#ifdef GENERATIONAL_GC
 | 
					#ifdef GENERATIONAL_GC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   typedef int gcspace_t;                 /* type for space and type arrays */
 | 
					   typedef int gcspace_t;                 /* type for space and type arrays */
 | 
				
			||||||
   typedef intptr_t gcptr_t;              /* type for pointers */
 | 
					   typedef uintptr_t gcptr_t;             /* type for pointers */
 | 
				
			||||||
   typedef long int pageno_t;             /* type for page numbers */
 | 
					   typedef uintptr_t pageno_t;            /* type for page numbers */
 | 
				
			||||||
   typedef intptr_t addrarith_t;          /* type for address arithmetic */
 | 
					   typedef uintptr_t addrarith_t;         /* type for address arithmetic */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   extern gcspace_t *space;
 | 
					   extern gcspace_t *space;
 | 
				
			||||||
   extern gcspace_t current_space;
 | 
					   extern gcspace_t current_space;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue