]> gitweb.factorcode.org Git - factor.git/blob - vm/math.hpp
Moved PRIMITIVE and PRIMITIVE_FORWARDs to primitives.[ch]pp
[factor.git] / vm / math.hpp
1 namespace factor
2 {
3
4 static const fixnum fixnum_max = (((fixnum)1 << (WORD_SIZE - TAG_BITS - 1)) - 1);
5 static const fixnum fixnum_min = (-((fixnum)1 << (WORD_SIZE - TAG_BITS - 1)));
6 static const fixnum array_size_max = ((cell)1 << (WORD_SIZE - TAG_BITS - 2));
7
8 // defined in assembler
9
10
11
12
13
14 VM_C_API void box_float(float flo, factor_vm *vm);
15 VM_C_API float to_float(cell value, factor_vm *vm);
16 VM_C_API void box_double(double flo, factor_vm *vm);
17 VM_C_API double to_double(cell value, factor_vm *vm);
18
19 VM_C_API void box_signed_1(s8 n, factor_vm *vm);
20 VM_C_API void box_unsigned_1(u8 n, factor_vm *vm);
21 VM_C_API void box_signed_2(s16 n, factor_vm *vm);
22 VM_C_API void box_unsigned_2(u16 n, factor_vm *vm);
23 VM_C_API void box_signed_4(s32 n, factor_vm *vm);
24 VM_C_API void box_unsigned_4(u32 n, factor_vm *vm);
25 VM_C_API void box_signed_cell(fixnum integer, factor_vm *vm);
26 VM_C_API void box_unsigned_cell(cell cell, factor_vm *vm);
27 VM_C_API void box_signed_8(s64 n, factor_vm *vm);
28 VM_C_API void box_unsigned_8(u64 n, factor_vm *vm);
29
30 VM_C_API s64 to_signed_8(cell obj, factor_vm *vm);
31 VM_C_API u64 to_unsigned_8(cell obj, factor_vm *vm);
32
33 VM_C_API fixnum to_fixnum(cell tagged, factor_vm *vm);
34 VM_C_API cell to_cell(cell tagged, factor_vm *vm);
35
36 VM_ASM_API void overflow_fixnum_add(fixnum x, fixnum y, factor_vm *vm);
37 VM_ASM_API void overflow_fixnum_subtract(fixnum x, fixnum y, factor_vm *vm);
38 VM_ASM_API void overflow_fixnum_multiply(fixnum x, fixnum y, factor_vm *vm);
39
40 }