vm: faster immediate_p()
							parent
							
								
									857d0ba1fd
								
							
						
					
					
						commit
						2c0531b015
					
				| 
						 | 
				
			
			@ -16,11 +16,11 @@ BIN: 1111 tag-mask set
 | 
			
		|||
 | 
			
		||||
H{
 | 
			
		||||
    { fixnum 0 }
 | 
			
		||||
    { bignum 1 }
 | 
			
		||||
    { POSTPONE: f 1 }
 | 
			
		||||
    { array 2 }
 | 
			
		||||
    { float 3 }
 | 
			
		||||
    { quotation 4 }
 | 
			
		||||
    { POSTPONE: f 5 }
 | 
			
		||||
    { bignum 5 }
 | 
			
		||||
    { alien 6 }
 | 
			
		||||
    { tuple 7 }
 | 
			
		||||
    { wrapper 8 }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,11 +35,11 @@ static const cell data_alignment = 16;
 | 
			
		|||
 | 
			
		||||
/*** Tags ***/
 | 
			
		||||
#define FIXNUM_TYPE 0
 | 
			
		||||
#define BIGNUM_TYPE 1
 | 
			
		||||
#define F_TYPE 1
 | 
			
		||||
#define ARRAY_TYPE 2
 | 
			
		||||
#define FLOAT_TYPE 3
 | 
			
		||||
#define QUOTATION_TYPE 4
 | 
			
		||||
#define F_TYPE 5
 | 
			
		||||
#define BIGNUM_TYPE 5
 | 
			
		||||
#define ALIEN_TYPE 6
 | 
			
		||||
#define TUPLE_TYPE 7
 | 
			
		||||
#define WRAPPER_TYPE 8
 | 
			
		||||
| 
						 | 
				
			
			@ -76,7 +76,8 @@ static const cell false_object = F_TYPE;
 | 
			
		|||
 | 
			
		||||
inline static bool immediate_p(cell obj)
 | 
			
		||||
{
 | 
			
		||||
	return (obj == false_object || TAG(obj) == FIXNUM_TYPE);
 | 
			
		||||
	/* We assume that fixnums have tag 0 and false_object has tag 1 */
 | 
			
		||||
	return TAG(obj) <= F_TYPE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline static fixnum untag_fixnum(cell tagged)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue