1 #define MLTON_GC_INTERNAL_TYPES
2 #define MLTON_GC_INTERNAL_BASIS
6 PRIVATE objptr
IntInf_add (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
);
7 PRIVATE objptr
IntInf_andb (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
);
8 PRIVATE objptr
IntInf_gcd (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
);
9 PRIVATE objptr
IntInf_mul (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
);
10 PRIVATE objptr
IntInf_quot (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
);
11 PRIVATE objptr
IntInf_orb (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
);
12 PRIVATE objptr
IntInf_rem (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
);
13 PRIVATE objptr
IntInf_sub (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
);
14 PRIVATE objptr
IntInf_xorb (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
);
15 PRIVATE objptr
IntInf_neg (GC_state s
, objptr arg
, size_t bytes
);
16 PRIVATE objptr
IntInf_notb (GC_state s
, objptr arg
, size_t bytes
);
17 PRIVATE objptr
IntInf_arshift (GC_state s
, objptr arg
, Word32_t shift
, size_t bytes
);
18 PRIVATE objptr
IntInf_lshift (GC_state s
, objptr arg
, Word32_t shift
, size_t bytes
);
19 PRIVATE Int32_t
IntInf_compare (GC_state s
, objptr lhs
, objptr rhs
);
20 PRIVATE objptr
IntInf_toString (GC_state s
, objptr arg
, Int32_t base
, size_t bytes
);
23 objptr
IntInf_add (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
) {
25 fprintf (stderr
, "IntInf_add ("FMTOBJPTR
", "FMTOBJPTR
", %"PRIuMAX
")\n",
26 lhs
, rhs
, (uintmax_t)bytes
);
27 return IntInf_binop (s
, lhs
, rhs
, bytes
, &mpz_add
);
30 objptr
IntInf_andb (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
) {
32 fprintf (stderr
, "IntInf_andb ("FMTOBJPTR
", "FMTOBJPTR
", %"PRIuMAX
")\n",
33 lhs
, rhs
, (uintmax_t)bytes
);
34 return IntInf_binop (s
, lhs
, rhs
, bytes
, &mpz_and
);
37 objptr
IntInf_gcd (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
) {
39 fprintf (stderr
, "IntInf_gcd ("FMTOBJPTR
", "FMTOBJPTR
", %"PRIuMAX
")\n",
40 lhs
, rhs
, (uintmax_t)bytes
);
41 return IntInf_binop (s
, lhs
, rhs
, bytes
, &mpz_gcd
);
44 objptr
IntInf_mul (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
) {
46 fprintf (stderr
, "IntInf_mul ("FMTOBJPTR
", "FMTOBJPTR
", %"PRIuMAX
")\n",
47 lhs
, rhs
, (uintmax_t)bytes
);
48 return IntInf_binop (s
, lhs
, rhs
, bytes
, &mpz_mul
);
51 objptr
IntInf_quot (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
) {
53 fprintf (stderr
, "IntInf_quot ("FMTOBJPTR
", "FMTOBJPTR
", %"PRIuMAX
")\n",
54 lhs
, rhs
, (uintmax_t)bytes
);
55 return IntInf_binop (s
, lhs
, rhs
, bytes
, &mpz_tdiv_q
);
58 objptr
IntInf_orb (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
) {
60 fprintf (stderr
, "IntInf_orb ("FMTOBJPTR
", "FMTOBJPTR
", %"PRIuMAX
")\n",
61 lhs
, rhs
, (uintmax_t)bytes
);
62 return IntInf_binop (s
, lhs
, rhs
, bytes
, &mpz_ior
);
65 objptr
IntInf_rem (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
) {
67 fprintf (stderr
, "IntInf_quot ("FMTOBJPTR
", "FMTOBJPTR
", %"PRIuMAX
")\n",
68 lhs
, rhs
, (uintmax_t)bytes
);
69 return IntInf_binop (s
, lhs
, rhs
, bytes
, &mpz_tdiv_r
);
72 objptr
IntInf_sub (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
) {
74 fprintf (stderr
, "IntInf_sub ("FMTOBJPTR
", "FMTOBJPTR
", %"PRIuMAX
")\n",
75 lhs
, rhs
, (uintmax_t)bytes
);
76 return IntInf_binop (s
, lhs
, rhs
, bytes
, &mpz_sub
);
79 objptr
IntInf_xorb (GC_state s
, objptr lhs
, objptr rhs
, size_t bytes
) {
81 fprintf (stderr
, "IntInf_xorb ("FMTOBJPTR
", "FMTOBJPTR
", %"PRIuMAX
")\n",
82 lhs
, rhs
, (uintmax_t)bytes
);
83 return IntInf_binop (s
, lhs
, rhs
, bytes
, &mpz_xor
);
87 objptr
IntInf_neg (GC_state s
, objptr arg
, size_t bytes
) {
89 fprintf (stderr
, "IntInf_neg ("FMTOBJPTR
", %"PRIuMAX
")\n",
90 arg
, (uintmax_t)bytes
);
91 return IntInf_unop (s
, arg
, bytes
, &mpz_neg
);
94 objptr
IntInf_notb (GC_state s
, objptr arg
, size_t bytes
) {
96 fprintf (stderr
, "IntInf_notb ("FMTOBJPTR
", %"PRIuMAX
")\n",
97 arg
, (uintmax_t)bytes
);
98 return IntInf_unop (s
, arg
, bytes
, &mpz_com
);
102 objptr
IntInf_arshift (GC_state s
, objptr arg
, Word32_t shift
, size_t bytes
) {
104 fprintf (stderr
, "IntInf_arshift ("FMTOBJPTR
", %"PRIu32
", %"PRIuMAX
")\n",
105 arg
, shift
, (uintmax_t)bytes
);
106 return IntInf_shop (s
, arg
, shift
, bytes
, &mpz_fdiv_q_2exp
);
109 objptr
IntInf_lshift (GC_state s
, objptr arg
, Word32_t shift
, size_t bytes
) {
111 fprintf (stderr
, "IntInf_lshift ("FMTOBJPTR
", %"PRIu32
", %"PRIuMAX
")\n",
112 arg
, shift
, (uintmax_t)bytes
);
113 return IntInf_shop (s
, arg
, shift
, bytes
, &mpz_mul_2exp
);
117 Int32_t
IntInf_compare (GC_state s
, objptr lhs
, objptr rhs
) {
119 fprintf (stderr
, "IntInf_compare ("FMTOBJPTR
", "FMTOBJPTR
")\n",
121 return IntInf_cmpop (s
, lhs
, rhs
, &mpz_cmp
);
125 objptr
IntInf_toString (GC_state s
, objptr arg
, Int32_t base
, size_t bytes
) {
127 fprintf (stderr
, "IntInf_toString ("FMTOBJPTR
", %"PRId32
", %"PRIuMAX
")\n",
128 arg
, base
, (uintmax_t)bytes
);
129 return IntInf_strop (s
, arg
, base
, bytes
, &mpz_get_str
);