2004-07-16 02:26:21 -04:00
|
|
|
#define FIXNUM int /* unboxed */
|
2004-07-27 22:52:35 -04:00
|
|
|
#define FIXNUM_MASK 0x1fffffff
|
|
|
|
|
|
|
|
INLINE FIXNUM untag_fixnum_fast(CELL tagged)
|
|
|
|
{
|
|
|
|
return ((FIXNUM)tagged) >> TAG_BITS;
|
|
|
|
}
|
2004-07-16 02:26:21 -04:00
|
|
|
|
|
|
|
INLINE FIXNUM untag_fixnum(CELL tagged)
|
|
|
|
{
|
|
|
|
type_check(FIXNUM_TYPE,tagged);
|
2004-07-27 22:52:35 -04:00
|
|
|
return untag_fixnum_fast(tagged);
|
2004-07-16 02:26:21 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
INLINE CELL tag_fixnum(FIXNUM untagged)
|
|
|
|
{
|
|
|
|
return RETAG(untagged << TAG_BITS,FIXNUM_TYPE);
|
|
|
|
}
|
|
|
|
|
|
|
|
void primitive_fixnump(void);
|
|
|
|
void primitive_add(void);
|
|
|
|
void primitive_subtract(void);
|
|
|
|
void primitive_multiply(void);
|
|
|
|
void primitive_divide(void);
|
|
|
|
void primitive_mod(void);
|
|
|
|
void primitive_divmod(void);
|
|
|
|
void primitive_and(void);
|
2004-07-22 19:48:50 -04:00
|
|
|
void primitive_or(void);
|
2004-07-16 02:26:21 -04:00
|
|
|
void primitive_xor(void);
|
2004-07-22 19:48:50 -04:00
|
|
|
void primitive_not(void);
|
|
|
|
void primitive_shiftleft(void);
|
|
|
|
void primitive_shiftright(void);
|
2004-07-16 02:26:21 -04:00
|
|
|
void primitive_less(void);
|
|
|
|
void primitive_lesseq(void);
|
|
|
|
void primitive_greater(void);
|
|
|
|
void primitive_greatereq(void);
|