]> gitweb.factorcode.org Git - factor.git/blob - native/fixnum.h
8661d65df09149630bb9c4eb4aaace7aceb2de3b
[factor.git] / native / fixnum.h
1
2 #define FIXNUM_MAX (LONG_MAX >> TAG_BITS)
3 #define FIXNUM_MIN (LONG_MIN >> TAG_BITS)
4
5 #define FIXNUM long int /* unboxed */
6
7 INLINE FIXNUM untag_fixnum_fast(CELL tagged)
8 {
9         return ((FIXNUM)tagged) >> TAG_BITS;
10 }
11
12 INLINE FIXNUM untag_fixnum(CELL tagged)
13 {
14         type_check(FIXNUM_TYPE,tagged);
15         return untag_fixnum_fast(tagged);
16 }
17
18 INLINE CELL tag_fixnum(FIXNUM untagged)
19 {
20         return RETAG(untagged << TAG_BITS,FIXNUM_TYPE);
21 }
22
23 void primitive_fixnump(void);
24 void primitive_divide(void);
25 void primitive_mod(void);
26 void primitive_and(void);
27 void primitive_or(void);
28 void primitive_xor(void);
29 void primitive_not(void);
30 void primitive_shiftleft(void);
31 void primitive_shiftright(void);