@@ -3,7 +3,7 @@
3#include "idris_rts.h"
3#include "idris_rts.h"
5VAL idris_b8CopyForGC(VM *vm, VAL a) {
5VAL idris_b8CopyForGC(VM *vm, VAL a) {
6− uint8_t A = a->info.bits8;
6+ uint8_t A = GETBITS8(a);
7 VAL cl = allocate(sizeof(Closure), 1);
7 VAL cl = allocate(sizeof(Closure), 1);
8 SETTY(cl, CT_BITS8);
8 SETTY(cl, CT_BITS8);
9 cl->info.bits8 = A;
9 cl->info.bits8 = A;
@@ -11,7 +11,7 @@ VAL idris_b8CopyForGC(VM *vm, VAL a) {
13VAL idris_b16CopyForGC(VM *vm, VAL a) {
13VAL idris_b16CopyForGC(VM *vm, VAL a) {
14− uint16_t A = a->info.bits16;
14+ uint16_t A = GETBITS16(a);
15 VAL cl = allocate(sizeof(Closure), 1);
15 VAL cl = allocate(sizeof(Closure), 1);
16 SETTY(cl, CT_BITS16);
16 SETTY(cl, CT_BITS16);
17 cl->info.bits16 = A;
17 cl->info.bits16 = A;
@@ -19,7 +19,7 @@ VAL idris_b16CopyForGC(VM *vm, VAL a) {
21VAL idris_b32CopyForGC(VM *vm, VAL a) {
21VAL idris_b32CopyForGC(VM *vm, VAL a) {
22− uint32_t A = a->info.bits32;
22+ uint32_t A = GETBITS32(a);
23 VAL cl = allocate(sizeof(Closure), 1);
23 VAL cl = allocate(sizeof(Closure), 1);
24 SETTY(cl, CT_BITS32);
24 SETTY(cl, CT_BITS32);
25 cl->info.bits32 = A;
25 cl->info.bits32 = A;
@@ -27,7 +27,7 @@ VAL idris_b32CopyForGC(VM *vm, VAL a) {
29VAL idris_b64CopyForGC(VM *vm, VAL a) {
29VAL idris_b64CopyForGC(VM *vm, VAL a) {
30− uint64_t A = a->info.bits64;
30+ uint64_t A = GETBITS64(a);
31 VAL cl = allocate(sizeof(Closure), 1);
31 VAL cl = allocate(sizeof(Closure), 1);
32 SETTY(cl, CT_BITS64);
32 SETTY(cl, CT_BITS64);
33 cl->info.bits64 = A;
33 cl->info.bits64 = A;
@@ -67,7 +67,7 @@ VAL idris_b64(VM *vm, VAL a) {
69VAL idris_castB32Int(VM *vm, VAL a) {
69VAL idris_castB32Int(VM *vm, VAL a) {
70− return MKINT((i_int)a->info.bits32);
70+ return MKINT(GETBITS32(a));
73VAL idris_b8const(VM *vm, uint8_t a) {
73VAL idris_b8const(VM *vm, uint8_t a) {
@@ -99,8 +99,8 @@ VAL idris_b64const(VM *vm, uint64_t a) {
101VAL idris_b8Plus(VM *vm, VAL a, VAL b) {
101VAL idris_b8Plus(VM *vm, VAL a, VAL b) {
102− uint8_t A = a->info.bits8;
102+ uint8_t A = GETBITS8(a);
103− uint8_t B = b->info.bits8;
103+ uint8_t B = GETBITS8(b);
104 VAL cl = allocate(sizeof(Closure), 0);
104 VAL cl = allocate(sizeof(Closure), 0);
105 SETTY(cl, CT_BITS8);
105 SETTY(cl, CT_BITS8);
106 cl->info.bits8 = A + B;
106 cl->info.bits8 = A + B;
@@ -108,8 +108,8 @@ VAL idris_b8Plus(VM *vm, VAL a, VAL b) {
110VAL idris_b8Minus(VM *vm, VAL a, VAL b) {
110VAL idris_b8Minus(VM *vm, VAL a, VAL b) {
111− uint8_t A = a->info.bits8;
111+ uint8_t A = GETBITS8(a);
112− uint8_t B = b->info.bits8;
112+ uint8_t B = GETBITS8(b);
113 VAL cl = allocate(sizeof(Closure), 0);
113 VAL cl = allocate(sizeof(Closure), 0);
114 SETTY(cl, CT_BITS8);
114 SETTY(cl, CT_BITS8);
115 cl->info.bits8 = A - B;
115 cl->info.bits8 = A - B;
@@ -117,8 +117,8 @@ VAL idris_b8Minus(VM *vm, VAL a, VAL b) {
119VAL idris_b8Times(VM *vm, VAL a, VAL b) {
119VAL idris_b8Times(VM *vm, VAL a, VAL b) {
120− uint8_t A = a->info.bits8;
120+ uint8_t A = GETBITS8(a);
121− uint8_t B = b->info.bits8;
121+ uint8_t B = GETBITS8(b);
122 VAL cl = allocate(sizeof(Closure), 0);
122 VAL cl = allocate(sizeof(Closure), 0);
123 SETTY(cl, CT_BITS8);
123 SETTY(cl, CT_BITS8);
124 cl->info.bits8 = A * B;
124 cl->info.bits8 = A * B;
@@ -126,8 +126,8 @@ VAL idris_b8Times(VM *vm, VAL a, VAL b) {
128VAL idris_b8UDiv(VM *vm, VAL a, VAL b) {
128VAL idris_b8UDiv(VM *vm, VAL a, VAL b) {
129− uint8_t A = a->info.bits8;
129+ uint8_t A = GETBITS8(a);
130− uint8_t B = b->info.bits8;
130+ uint8_t B = GETBITS8(b);
131 VAL cl = allocate(sizeof(Closure), 0);
131 VAL cl = allocate(sizeof(Closure), 0);
132 SETTY(cl, CT_BITS8);
132 SETTY(cl, CT_BITS8);
133 cl->info.bits8 = A / B;
133 cl->info.bits8 = A / B;
@@ -135,8 +135,8 @@ VAL idris_b8UDiv(VM *vm, VAL a, VAL b) {
137VAL idris_b8SDiv(VM *vm, VAL a, VAL b) {
137VAL idris_b8SDiv(VM *vm, VAL a, VAL b) {
138− uint8_t A = a->info.bits8;
138+ uint8_t A = GETBITS8(a);
139− uint8_t B = b->info.bits8;
139+ uint8_t B = GETBITS8(b);
140 VAL cl = allocate(sizeof(Closure), 0);
140 VAL cl = allocate(sizeof(Closure), 0);
141 SETTY(cl, CT_BITS8);
141 SETTY(cl, CT_BITS8);
142 cl->info.bits8 = (uint8_t) (((int8_t) A) / ((int8_t) B));
142 cl->info.bits8 = (uint8_t) (((int8_t) A) / ((int8_t) B));
@@ -144,8 +144,8 @@ VAL idris_b8SDiv(VM *vm, VAL a, VAL b) {
146VAL idris_b8URem(VM *vm, VAL a, VAL b) {
146VAL idris_b8URem(VM *vm, VAL a, VAL b) {
147− uint8_t A = a->info.bits8;
147+ uint8_t A = GETBITS8(a);
148− uint8_t B = b->info.bits8;
148+ uint8_t B = GETBITS8(b);
149 VAL cl = allocate(sizeof(Closure), 0);
149 VAL cl = allocate(sizeof(Closure), 0);
150 SETTY(cl, CT_BITS8);
150 SETTY(cl, CT_BITS8);
151 cl->info.bits8 = A % B;
151 cl->info.bits8 = A % B;
@@ -153,8 +153,8 @@ VAL idris_b8URem(VM *vm, VAL a, VAL b) {
155VAL idris_b8SRem(VM *vm, VAL a, VAL b) {
155VAL idris_b8SRem(VM *vm, VAL a, VAL b) {
156− uint8_t A = a->info.bits8;
156+ uint8_t A = GETBITS8(a);
157− uint8_t B = b->info.bits8;
157+ uint8_t B = GETBITS8(b);
158 VAL cl = allocate(sizeof(Closure), 0);
158 VAL cl = allocate(sizeof(Closure), 0);
159 SETTY(cl, CT_BITS8);
159 SETTY(cl, CT_BITS8);
160 cl->info.bits8 = (uint8_t) (((int8_t) A) % ((int8_t) B));
160 cl->info.bits8 = (uint8_t) (((int8_t) A) % ((int8_t) B));
@@ -162,27 +162,27 @@ VAL idris_b8SRem(VM *vm, VAL a, VAL b) {
164VAL idris_b8Lt(VM *vm, VAL a, VAL b) {
164VAL idris_b8Lt(VM *vm, VAL a, VAL b) {
165− return MKINT((i_int) (a->info.bits8 < b->info.bits8));
165+ return MKINT((i_int) (GETBITS8(a) < GETBITS8(b)));
168VAL idris_b8Gt(VM *vm, VAL a, VAL b) {
168VAL idris_b8Gt(VM *vm, VAL a, VAL b) {
169− return MKINT((i_int) (a->info.bits8 > b->info.bits8));
169+ return MKINT((i_int) (GETBITS8(a) > GETBITS8(b)));
172VAL idris_b8Eq(VM *vm, VAL a, VAL b) {
172VAL idris_b8Eq(VM *vm, VAL a, VAL b) {
173− return MKINT((i_int) (a->info.bits8 == b->info.bits8));
173+ return MKINT((i_int) (GETBITS8(a) == GETBITS8(b)));
176VAL idris_b8Lte(VM *vm, VAL a, VAL b) {
176VAL idris_b8Lte(VM *vm, VAL a, VAL b) {
177− return MKINT((i_int) (a->info.bits8 <= b->info.bits8));
177+ return MKINT((i_int) (GETBITS8(a) <= GETBITS8(b)));
180VAL idris_b8Gte(VM *vm, VAL a, VAL b) {
180VAL idris_b8Gte(VM *vm, VAL a, VAL b) {
181− return MKINT((i_int) (a->info.bits8 >= b->info.bits8));
181+ return MKINT((i_int) (GETBITS8(a) >= GETBITS8(b)));
184VAL idris_b8Compl(VM *vm, VAL a) {
184VAL idris_b8Compl(VM *vm, VAL a) {
185− uint8_t A = a->info.bits8;
185+ uint8_t A = GETBITS8(a);
186 VAL cl = allocate(sizeof(Closure), 0);
186 VAL cl = allocate(sizeof(Closure), 0);
187 SETTY(cl, CT_BITS8);
187 SETTY(cl, CT_BITS8);
188 cl->info.bits8 = ~ A;
188 cl->info.bits8 = ~ A;
@@ -190,8 +190,8 @@ VAL idris_b8Compl(VM *vm, VAL a) {
192VAL idris_b8And(VM *vm, VAL a, VAL b) {
192VAL idris_b8And(VM *vm, VAL a, VAL b) {
193− uint8_t A = a->info.bits8;
193+ uint8_t A = GETBITS8(a);
194− uint8_t B = b->info.bits8;
194+ uint8_t B = GETBITS8(b);
195 VAL cl = allocate(sizeof(Closure), 0);
195 VAL cl = allocate(sizeof(Closure), 0);
196 SETTY(cl, CT_BITS8);
196 SETTY(cl, CT_BITS8);
197 cl->info.bits8 = A & B;
197 cl->info.bits8 = A & B;
@@ -199,8 +199,8 @@ VAL idris_b8And(VM *vm, VAL a, VAL b) {
201VAL idris_b8Or(VM *vm, VAL a, VAL b) {
201VAL idris_b8Or(VM *vm, VAL a, VAL b) {
202− uint8_t A = a->info.bits8;
202+ uint8_t A = GETBITS8(a);
203− uint8_t B = b->info.bits8;
203+ uint8_t B = GETBITS8(b);
204 VAL cl = allocate(sizeof(Closure), 0);
204 VAL cl = allocate(sizeof(Closure), 0);
205 SETTY(cl, CT_BITS8);
205 SETTY(cl, CT_BITS8);
206 cl->info.bits8 = A | B;
206 cl->info.bits8 = A | B;
@@ -208,8 +208,8 @@ VAL idris_b8Or(VM *vm, VAL a, VAL b) {
210VAL idris_b8Xor(VM *vm, VAL a, VAL b) {
210VAL idris_b8Xor(VM *vm, VAL a, VAL b) {
211− uint8_t A = a->info.bits8;
211+ uint8_t A = GETBITS8(a);
212− uint8_t B = b->info.bits8;
212+ uint8_t B = GETBITS8(b);
213 VAL cl = allocate(sizeof(Closure), 0);
213 VAL cl = allocate(sizeof(Closure), 0);
214 SETTY(cl, CT_BITS8);
214 SETTY(cl, CT_BITS8);
215 cl->info.bits8 = A ^ B;
215 cl->info.bits8 = A ^ B;
@@ -217,8 +217,8 @@ VAL idris_b8Xor(VM *vm, VAL a, VAL b) {
219VAL idris_b8Shl(VM *vm, VAL a, VAL b) {
219VAL idris_b8Shl(VM *vm, VAL a, VAL b) {
220− uint8_t A = a->info.bits8;
220+ uint8_t A = GETBITS8(a);
221− uint8_t B = b->info.bits8;
221+ uint8_t B = GETBITS8(b);
222 VAL cl = allocate(sizeof(Closure), 0);
222 VAL cl = allocate(sizeof(Closure), 0);
223 SETTY(cl, CT_BITS8);
223 SETTY(cl, CT_BITS8);
224 cl->info.bits8 = A << B;
224 cl->info.bits8 = A << B;
@@ -226,8 +226,8 @@ VAL idris_b8Shl(VM *vm, VAL a, VAL b) {
228VAL idris_b8LShr(VM *vm, VAL a, VAL b) {
228VAL idris_b8LShr(VM *vm, VAL a, VAL b) {
229− uint8_t A = a->info.bits8;
229+ uint8_t A = GETBITS8(a);
230− uint8_t B = b->info.bits8;
230+ uint8_t B = GETBITS8(b);
231 VAL cl = allocate(sizeof(Closure), 0);
231 VAL cl = allocate(sizeof(Closure), 0);
232 SETTY(cl, CT_BITS8);
232 SETTY(cl, CT_BITS8);
233 cl->info.bits8 = A >> B;
233 cl->info.bits8 = A >> B;
@@ -235,8 +235,8 @@ VAL idris_b8LShr(VM *vm, VAL a, VAL b) {
237VAL idris_b8AShr(VM *vm, VAL a, VAL b) {
237VAL idris_b8AShr(VM *vm, VAL a, VAL b) {
238− uint8_t A = a->info.bits8;
238+ uint8_t A = GETBITS8(a);
239− uint8_t B = b->info.bits8;
239+ uint8_t B = GETBITS8(b);
240 VAL cl = allocate(sizeof(Closure), 0);
240 VAL cl = allocate(sizeof(Closure), 0);
241 SETTY(cl, CT_BITS8);
241 SETTY(cl, CT_BITS8);
242 cl->info.bits8 = (uint8_t) (((int8_t) A) >> ((int8_t) B));
242 cl->info.bits8 = (uint8_t) (((int8_t) A) >> ((int8_t) B));
@@ -244,8 +244,8 @@ VAL idris_b8AShr(VM *vm, VAL a, VAL b) {
246VAL idris_b16Plus(VM *vm, VAL a, VAL b) {
246VAL idris_b16Plus(VM *vm, VAL a, VAL b) {
247− uint16_t A = a->info.bits16;
247+ uint16_t A = GETBITS16(a);
248− uint16_t B = b->info.bits16;
248+ uint16_t B = GETBITS16(b);
249 VAL cl = allocate(sizeof(Closure), 0);
249 VAL cl = allocate(sizeof(Closure), 0);
250 SETTY(cl, CT_BITS16);
250 SETTY(cl, CT_BITS16);
251 cl->info.bits16 = A + B;
251 cl->info.bits16 = A + B;
@@ -253,8 +253,8 @@ VAL idris_b16Plus(VM *vm, VAL a, VAL b) {
255VAL idris_b16Minus(VM *vm, VAL a, VAL b) {
255VAL idris_b16Minus(VM *vm, VAL a, VAL b) {
256− uint16_t A = a->info.bits16;
256+ uint16_t A = GETBITS16(a);
257− uint16_t B = b->info.bits16;
257+ uint16_t B = GETBITS16(b);
258 VAL cl = allocate(sizeof(Closure), 0);
258 VAL cl = allocate(sizeof(Closure), 0);
259 SETTY(cl, CT_BITS16);
259 SETTY(cl, CT_BITS16);
260 cl->info.bits16 = A - B;
260 cl->info.bits16 = A - B;
@@ -262,8 +262,8 @@ VAL idris_b16Minus(VM *vm, VAL a, VAL b) {
264VAL idris_b16Times(VM *vm, VAL a, VAL b) {
264VAL idris_b16Times(VM *vm, VAL a, VAL b) {
265− uint16_t A = a->info.bits16;
265+ uint16_t A = GETBITS16(a);
266− uint16_t B = b->info.bits16;
266+ uint16_t B = GETBITS16(b);
267 VAL cl = allocate(sizeof(Closure), 0);
267 VAL cl = allocate(sizeof(Closure), 0);
268 SETTY(cl, CT_BITS16);
268 SETTY(cl, CT_BITS16);
269 cl->info.bits16 = A * B;
269 cl->info.bits16 = A * B;
@@ -271,8 +271,8 @@ VAL idris_b16Times(VM *vm, VAL a, VAL b) {
273VAL idris_b16UDiv(VM *vm, VAL a, VAL b) {
273VAL idris_b16UDiv(VM *vm, VAL a, VAL b) {
274− uint16_t A = a->info.bits16;
274+ uint16_t A = GETBITS16(a);
275− uint16_t B = b->info.bits16;
275+ uint16_t B = GETBITS16(b);
276 VAL cl = allocate(sizeof(Closure), 0);
276 VAL cl = allocate(sizeof(Closure), 0);
277 SETTY(cl, CT_BITS16);
277 SETTY(cl, CT_BITS16);
278 cl->info.bits16 = A / B;
278 cl->info.bits16 = A / B;
@@ -280,8 +280,8 @@ VAL idris_b16UDiv(VM *vm, VAL a, VAL b) {
282VAL idris_b16SDiv(VM *vm, VAL a, VAL b) {
282VAL idris_b16SDiv(VM *vm, VAL a, VAL b) {
283− uint16_t A = a->info.bits16;
283+ uint16_t A = GETBITS16(a);
284− uint16_t B = b->info.bits16;
284+ uint16_t B = GETBITS16(b);
285 VAL cl = allocate(sizeof(Closure), 0);
285 VAL cl = allocate(sizeof(Closure), 0);
286 SETTY(cl, CT_BITS16);
286 SETTY(cl, CT_BITS16);
287 cl->info.bits16 = (uint16_t) (((int16_t) A) / ((int16_t) B));
287 cl->info.bits16 = (uint16_t) (((int16_t) A) / ((int16_t) B));
@@ -289,8 +289,8 @@ VAL idris_b16SDiv(VM *vm, VAL a, VAL b) {
291VAL idris_b16URem(VM *vm, VAL a, VAL b) {
291VAL idris_b16URem(VM *vm, VAL a, VAL b) {
292− uint16_t A = a->info.bits16;
292+ uint16_t A = GETBITS16(a);
293− uint16_t B = b->info.bits16;
293+ uint16_t B = GETBITS16(b);
294 VAL cl = allocate(sizeof(Closure), 0);
294 VAL cl = allocate(sizeof(Closure), 0);
295 SETTY(cl, CT_BITS16);
295 SETTY(cl, CT_BITS16);
296 cl->info.bits16 = A % B;
296 cl->info.bits16 = A % B;
@@ -298,8 +298,8 @@ VAL idris_b16URem(VM *vm, VAL a, VAL b) {
300VAL idris_b16SRem(VM *vm, VAL a, VAL b) {
300VAL idris_b16SRem(VM *vm, VAL a, VAL b) {
301− uint16_t A = a->info.bits16;
301+ uint16_t A = GETBITS16(a);
302− uint16_t B = b->info.bits16;
302+ uint16_t B = GETBITS16(b);
303 VAL cl = allocate(sizeof(Closure), 0);
303 VAL cl = allocate(sizeof(Closure), 0);
304 SETTY(cl, CT_BITS16);
304 SETTY(cl, CT_BITS16);
305 cl->info.bits16 = (uint16_t) (((int16_t) A) % ((int16_t) B));
305 cl->info.bits16 = (uint16_t) (((int16_t) A) % ((int16_t) B));
@@ -307,27 +307,27 @@ VAL idris_b16SRem(VM *vm, VAL a, VAL b) {
309VAL idris_b16Lt(VM *vm, VAL a, VAL b) {
309VAL idris_b16Lt(VM *vm, VAL a, VAL b) {
310− return MKINT((i_int) (a->info.bits16 < b->info.bits16));
310+ return MKINT((i_int) (GETBITS16(a) < GETBITS16(b)));
313VAL idris_b16Gt(VM *vm, VAL a, VAL b) {
313VAL idris_b16Gt(VM *vm, VAL a, VAL b) {
314− return MKINT((i_int) (a->info.bits16 > b->info.bits16));
314+ return MKINT((i_int) (GETBITS16(a) > GETBITS16(b)));
317VAL idris_b16Eq(VM *vm, VAL a, VAL b) {
317VAL idris_b16Eq(VM *vm, VAL a, VAL b) {
318− return MKINT((i_int) (a->info.bits16 == b->info.bits16));
318+ return MKINT((i_int) (GETBITS16(a) == GETBITS16(b)));
321VAL idris_b16Lte(VM *vm, VAL a, VAL b) {
321VAL idris_b16Lte(VM *vm, VAL a, VAL b) {
322− return MKINT((i_int) (a->info.bits16 <= b->info.bits16));
322+ return MKINT((i_int) (GETBITS16(a) <= GETBITS16(b)));
325VAL idris_b16Gte(VM *vm, VAL a, VAL b) {
325VAL idris_b16Gte(VM *vm, VAL a, VAL b) {
326− return MKINT((i_int) (a->info.bits16 >= b->info.bits16));
326+ return MKINT((i_int) (GETBITS16(a) >= GETBITS16(b)));
329VAL idris_b16Compl(VM *vm, VAL a) {
329VAL idris_b16Compl(VM *vm, VAL a) {
330− uint16_t A = a->info.bits16;
330+ uint16_t A = GETBITS16(a);
331 VAL cl = allocate(sizeof(Closure), 0);
331 VAL cl = allocate(sizeof(Closure), 0);
332 SETTY(cl, CT_BITS16);
332 SETTY(cl, CT_BITS16);
333 cl->info.bits16 = ~ A;
333 cl->info.bits16 = ~ A;
@@ -335,8 +335,8 @@ VAL idris_b16Compl(VM *vm, VAL a) {
337VAL idris_b16And(VM *vm, VAL a, VAL b) {
337VAL idris_b16And(VM *vm, VAL a, VAL b) {
338− uint16_t A = a->info.bits16;
338+ uint16_t A = GETBITS16(a);
339− uint16_t B = b->info.bits16;
339+ uint16_t B = GETBITS16(b);
340 VAL cl = allocate(sizeof(Closure), 0);
340 VAL cl = allocate(sizeof(Closure), 0);
341 SETTY(cl, CT_BITS16);
341 SETTY(cl, CT_BITS16);
342 cl->info.bits16 = A & B;
342 cl->info.bits16 = A & B;
@@ -344,8 +344,8 @@ VAL idris_b16And(VM *vm, VAL a, VAL b) {
346VAL idris_b16Or(VM *vm, VAL a, VAL b) {
346VAL idris_b16Or(VM *vm, VAL a, VAL b) {
347− uint16_t A = a->info.bits16;
347+ uint16_t A = GETBITS16(a);
348− uint16_t B = b->info.bits16;
348+ uint16_t B = GETBITS16(b);
349 VAL cl = allocate(sizeof(Closure), 0);
349 VAL cl = allocate(sizeof(Closure), 0);
350 SETTY(cl, CT_BITS16);
350 SETTY(cl, CT_BITS16);
351 cl->info.bits16 = A | B;
351 cl->info.bits16 = A | B;
@@ -353,8 +353,8 @@ VAL idris_b16Or(VM *vm, VAL a, VAL b) {
355VAL idris_b16Xor(VM *vm, VAL a, VAL b) {
355VAL idris_b16Xor(VM *vm, VAL a, VAL b) {
356− uint16_t A = a->info.bits16;
356+ uint16_t A = GETBITS16(a);
357− uint16_t B = b->info.bits16;
357+ uint16_t B = GETBITS16(b);
358 VAL cl = allocate(sizeof(Closure), 0);
358 VAL cl = allocate(sizeof(Closure), 0);
359 SETTY(cl, CT_BITS16);
359 SETTY(cl, CT_BITS16);
360 cl->info.bits16 = A ^ B;
360 cl->info.bits16 = A ^ B;
@@ -362,8 +362,8 @@ VAL idris_b16Xor(VM *vm, VAL a, VAL b) {
364VAL idris_b16Shl(VM *vm, VAL a, VAL b) {
364VAL idris_b16Shl(VM *vm, VAL a, VAL b) {
365− uint16_t A = a->info.bits16;
365+ uint16_t A = GETBITS16(a);
366− uint16_t B = b->info.bits16;
366+ uint16_t B = GETBITS16(b);
367 VAL cl = allocate(sizeof(Closure), 0);
367 VAL cl = allocate(sizeof(Closure), 0);
368 SETTY(cl, CT_BITS16);
368 SETTY(cl, CT_BITS16);
369 cl->info.bits16 = A << B;
369 cl->info.bits16 = A << B;
@@ -371,8 +371,8 @@ VAL idris_b16Shl(VM *vm, VAL a, VAL b) {
373VAL idris_b16LShr(VM *vm, VAL a, VAL b) {
373VAL idris_b16LShr(VM *vm, VAL a, VAL b) {
374− uint16_t A = a->info.bits16;
374+ uint16_t A = GETBITS16(a);
375− uint16_t B = b->info.bits16;
375+ uint16_t B = GETBITS16(b);
376 VAL cl = allocate(sizeof(Closure), 0);
376 VAL cl = allocate(sizeof(Closure), 0);
377 SETTY(cl, CT_BITS16);
377 SETTY(cl, CT_BITS16);
378 cl->info.bits16 = A >> B;
378 cl->info.bits16 = A >> B;
@@ -380,8 +380,8 @@ VAL idris_b16LShr(VM *vm, VAL a, VAL b) {
382VAL idris_b16AShr(VM *vm, VAL a, VAL b) {
382VAL idris_b16AShr(VM *vm, VAL a, VAL b) {
383− uint16_t A = a->info.bits16;
383+ uint16_t A = GETBITS16(a);
384− uint16_t B = b->info.bits16;
384+ uint16_t B = GETBITS16(b);
385 VAL cl = allocate(sizeof(Closure), 0);
385 VAL cl = allocate(sizeof(Closure), 0);
386 SETTY(cl, CT_BITS16);
386 SETTY(cl, CT_BITS16);
387 cl->info.bits16 = (uint16_t) (((int16_t) A) >> ((int16_t) B));
387 cl->info.bits16 = (uint16_t) (((int16_t) A) >> ((int16_t) B));
@@ -389,8 +389,8 @@ VAL idris_b16AShr(VM *vm, VAL a, VAL b) {
391VAL idris_b32Plus(VM *vm, VAL a, VAL b) {
391VAL idris_b32Plus(VM *vm, VAL a, VAL b) {
392− uint32_t A = a->info.bits32;
392+ uint32_t A = GETBITS32(a);
393− uint32_t B = b->info.bits32;
393+ uint32_t B = GETBITS32(b);
394 VAL cl = allocate(sizeof(Closure), 0);
394 VAL cl = allocate(sizeof(Closure), 0);
395 SETTY(cl, CT_BITS32);
395 SETTY(cl, CT_BITS32);
396 cl->info.bits32 = A + B;
396 cl->info.bits32 = A + B;
@@ -398,8 +398,8 @@ VAL idris_b32Plus(VM *vm, VAL a, VAL b) {
400VAL idris_b32Minus(VM *vm, VAL a, VAL b) {
400VAL idris_b32Minus(VM *vm, VAL a, VAL b) {
401− uint32_t A = a->info.bits32;
401+ uint32_t A = GETBITS32(a);
402− uint32_t B = b->info.bits32;
402+ uint32_t B = GETBITS32(b);
403 VAL cl = allocate(sizeof(Closure), 0);
403 VAL cl = allocate(sizeof(Closure), 0);
404 SETTY(cl, CT_BITS32);
404 SETTY(cl, CT_BITS32);
405 cl->info.bits32 = A - B;
405 cl->info.bits32 = A - B;
@@ -407,8 +407,8 @@ VAL idris_b32Minus(VM *vm, VAL a, VAL b) {
409VAL idris_b32Times(VM *vm, VAL a, VAL b) {
409VAL idris_b32Times(VM *vm, VAL a, VAL b) {
410− uint32_t A = a->info.bits32;
410+ uint32_t A = GETBITS32(a);
411− uint32_t B = b->info.bits32;
411+ uint32_t B = GETBITS32(b);
412 VAL cl = allocate(sizeof(Closure), 0);
412 VAL cl = allocate(sizeof(Closure), 0);
413 SETTY(cl, CT_BITS32);
413 SETTY(cl, CT_BITS32);
414 cl->info.bits32 = A * B;
414 cl->info.bits32 = A * B;
@@ -416,8 +416,8 @@ VAL idris_b32Times(VM *vm, VAL a, VAL b) {
418VAL idris_b32UDiv(VM *vm, VAL a, VAL b) {
418VAL idris_b32UDiv(VM *vm, VAL a, VAL b) {
419− uint32_t A = a->info.bits32;
419+ uint32_t A = GETBITS32(a);
420− uint32_t B = b->info.bits32;
420+ uint32_t B = GETBITS32(b);
421 VAL cl = allocate(sizeof(Closure), 0);
421 VAL cl = allocate(sizeof(Closure), 0);
422 SETTY(cl, CT_BITS32);
422 SETTY(cl, CT_BITS32);
423 cl->info.bits32 = A / B;
423 cl->info.bits32 = A / B;
@@ -425,8 +425,8 @@ VAL idris_b32UDiv(VM *vm, VAL a, VAL b) {
427VAL idris_b32SDiv(VM *vm, VAL a, VAL b) {
427VAL idris_b32SDiv(VM *vm, VAL a, VAL b) {
428− uint32_t A = a->info.bits32;
428+ uint32_t A = GETBITS32(a);
429− uint32_t B = b->info.bits32;
429+ uint32_t B = GETBITS32(b);
430 VAL cl = allocate(sizeof(Closure), 0);
430 VAL cl = allocate(sizeof(Closure), 0);
431 SETTY(cl, CT_BITS32);
431 SETTY(cl, CT_BITS32);
432 cl->info.bits32 = (uint32_t) (((int32_t) A) / ((int32_t) B));
432 cl->info.bits32 = (uint32_t) (((int32_t) A) / ((int32_t) B));
@@ -434,8 +434,8 @@ VAL idris_b32SDiv(VM *vm, VAL a, VAL b) {
436VAL idris_b32URem(VM *vm, VAL a, VAL b) {
436VAL idris_b32URem(VM *vm, VAL a, VAL b) {
437− uint32_t A = a->info.bits32;
437+ uint32_t A = GETBITS32(a);
438− uint32_t B = b->info.bits32;
438+ uint32_t B = GETBITS32(b);
439 VAL cl = allocate(sizeof(Closure), 0);
439 VAL cl = allocate(sizeof(Closure), 0);
440 SETTY(cl, CT_BITS32);
440 SETTY(cl, CT_BITS32);
441 cl->info.bits32 = A % B;
441 cl->info.bits32 = A % B;
@@ -443,8 +443,8 @@ VAL idris_b32URem(VM *vm, VAL a, VAL b) {
445VAL idris_b32SRem(VM *vm, VAL a, VAL b) {
445VAL idris_b32SRem(VM *vm, VAL a, VAL b) {
446− uint32_t A = a->info.bits32;
446+ uint32_t A = GETBITS32(a);
447− uint32_t B = b->info.bits32;
447+ uint32_t B = GETBITS32(b);
448 VAL cl = allocate(sizeof(Closure), 0);
448 VAL cl = allocate(sizeof(Closure), 0);
449 SETTY(cl, CT_BITS32);
449 SETTY(cl, CT_BITS32);
450 cl->info.bits32 = (uint32_t) (((int32_t) A) % ((int32_t) B));
450 cl->info.bits32 = (uint32_t) (((int32_t) A) % ((int32_t) B));
@@ -452,27 +452,27 @@ VAL idris_b32SRem(VM *vm, VAL a, VAL b) {
454VAL idris_b32Lt(VM *vm, VAL a, VAL b) {
454VAL idris_b32Lt(VM *vm, VAL a, VAL b) {
455− return MKINT((i_int) (a->info.bits32 < b->info.bits32));
455+ return MKINT((i_int) (GETBITS32(a) < GETBITS32(b)));
458VAL idris_b32Gt(VM *vm, VAL a, VAL b) {
458VAL idris_b32Gt(VM *vm, VAL a, VAL b) {
459− return MKINT((i_int) (a->info.bits32 > b->info.bits32));
459+ return MKINT((i_int) (GETBITS32(a) > GETBITS32(b)));
462VAL idris_b32Eq(VM *vm, VAL a, VAL b) {
462VAL idris_b32Eq(VM *vm, VAL a, VAL b) {
463− return MKINT((i_int) (a->info.bits32 == b->info.bits32));
463+ return MKINT((i_int) (GETBITS32(a) == GETBITS32(b)));
466VAL idris_b32Lte(VM *vm, VAL a, VAL b) {
466VAL idris_b32Lte(VM *vm, VAL a, VAL b) {
467− return MKINT((i_int) (a->info.bits32 <= b->info.bits32));
467+ return MKINT((i_int) (GETBITS32(a) <= GETBITS32(b)));
470VAL idris_b32Gte(VM *vm, VAL a, VAL b) {
470VAL idris_b32Gte(VM *vm, VAL a, VAL b) {
471− return MKINT((i_int) (a->info.bits32 >= b->info.bits32));
471+ return MKINT((i_int) (GETBITS32(a) >= GETBITS32(b)));
474VAL idris_b32Compl(VM *vm, VAL a) {
474VAL idris_b32Compl(VM *vm, VAL a) {
475− uint32_t A = a->info.bits32;
475+ uint32_t A = GETBITS32(a);
476 VAL cl = allocate(sizeof(Closure), 0);
476 VAL cl = allocate(sizeof(Closure), 0);
477 SETTY(cl, CT_BITS32);
477 SETTY(cl, CT_BITS32);
478 cl->info.bits32 = ~ A;
478 cl->info.bits32 = ~ A;
@@ -480,8 +480,8 @@ VAL idris_b32Compl(VM *vm, VAL a) {
482VAL idris_b32And(VM *vm, VAL a, VAL b) {
482VAL idris_b32And(VM *vm, VAL a, VAL b) {
483− uint32_t A = a->info.bits32;
483+ uint32_t A = GETBITS32(a);
484− uint32_t B = b->info.bits32;
484+ uint32_t B = GETBITS32(b);
485 VAL cl = allocate(sizeof(Closure), 0);
485 VAL cl = allocate(sizeof(Closure), 0);
486 SETTY(cl, CT_BITS32);
486 SETTY(cl, CT_BITS32);
487 cl->info.bits32 = A & B;
487 cl->info.bits32 = A & B;
@@ -489,8 +489,8 @@ VAL idris_b32And(VM *vm, VAL a, VAL b) {
491VAL idris_b32Or(VM *vm, VAL a, VAL b) {
491VAL idris_b32Or(VM *vm, VAL a, VAL b) {
492− uint32_t A = a->info.bits32;
492+ uint32_t A = GETBITS32(a);
493− uint32_t B = b->info.bits32;
493+ uint32_t B = GETBITS32(b);
494 VAL cl = allocate(sizeof(Closure), 0);
494 VAL cl = allocate(sizeof(Closure), 0);
495 SETTY(cl, CT_BITS32);
495 SETTY(cl, CT_BITS32);
496 cl->info.bits32 = A | B;
496 cl->info.bits32 = A | B;
@@ -498,8 +498,8 @@ VAL idris_b32Or(VM *vm, VAL a, VAL b) {
500VAL idris_b32Xor(VM *vm, VAL a, VAL b) {
500VAL idris_b32Xor(VM *vm, VAL a, VAL b) {
501− uint32_t A = a->info.bits32;
501+ uint32_t A = GETBITS32(a);
502− uint32_t B = b->info.bits32;
502+ uint32_t B = GETBITS32(b);
503 VAL cl = allocate(sizeof(Closure), 0);
503 VAL cl = allocate(sizeof(Closure), 0);
504 SETTY(cl, CT_BITS32);
504 SETTY(cl, CT_BITS32);
505 cl->info.bits32 = A ^ B;
505 cl->info.bits32 = A ^ B;
@@ -507,8 +507,8 @@ VAL idris_b32Xor(VM *vm, VAL a, VAL b) {
509VAL idris_b32Shl(VM *vm, VAL a, VAL b) {
509VAL idris_b32Shl(VM *vm, VAL a, VAL b) {
510− uint32_t A = a->info.bits32;
510+ uint32_t A = GETBITS32(a);
511− uint32_t B = b->info.bits32;
511+ uint32_t B = GETBITS32(b);
512 VAL cl = allocate(sizeof(Closure), 0);
512 VAL cl = allocate(sizeof(Closure), 0);
513 SETTY(cl, CT_BITS32);
513 SETTY(cl, CT_BITS32);
514 cl->info.bits32 = A << B;
514 cl->info.bits32 = A << B;
@@ -516,8 +516,8 @@ VAL idris_b32Shl(VM *vm, VAL a, VAL b) {
518VAL idris_b32LShr(VM *vm, VAL a, VAL b) {
518VAL idris_b32LShr(VM *vm, VAL a, VAL b) {
519− uint32_t A = a->info.bits32;
519+ uint32_t A = GETBITS32(a);
520− uint32_t B = b->info.bits32;
520+ uint32_t B = GETBITS32(b);
521 VAL cl = allocate(sizeof(Closure), 0);
521 VAL cl = allocate(sizeof(Closure), 0);
522 SETTY(cl, CT_BITS32);
522 SETTY(cl, CT_BITS32);
523 cl->info.bits32 = A >> B;
523 cl->info.bits32 = A >> B;
@@ -525,8 +525,8 @@ VAL idris_b32LShr(VM *vm, VAL a, VAL b) {
527VAL idris_b32AShr(VM *vm, VAL a, VAL b) {
527VAL idris_b32AShr(VM *vm, VAL a, VAL b) {
528− uint32_t A = a->info.bits32;
528+ uint32_t A = GETBITS32(a);
529− uint32_t B = b->info.bits32;
529+ uint32_t B = GETBITS32(b);
530 VAL cl = allocate(sizeof(Closure), 0);
530 VAL cl = allocate(sizeof(Closure), 0);
531 SETTY(cl, CT_BITS32);
531 SETTY(cl, CT_BITS32);
532 cl->info.bits32 = (uint32_t) (((int32_t)A) >> ((int32_t)B));
532 cl->info.bits32 = (uint32_t) (((int32_t)A) >> ((int32_t)B));
@@ -534,8 +534,8 @@ VAL idris_b32AShr(VM *vm, VAL a, VAL b) {
536VAL idris_b64Plus(VM *vm, VAL a, VAL b) {
536VAL idris_b64Plus(VM *vm, VAL a, VAL b) {
537− uint64_t A = a->info.bits64;
537+ uint64_t A = GETBITS64(a);
538− uint64_t B = b->info.bits64;
538+ uint64_t B = GETBITS64(b);
539 VAL cl = allocate(sizeof(Closure), 0);
539 VAL cl = allocate(sizeof(Closure), 0);
540 SETTY(cl, CT_BITS64);
540 SETTY(cl, CT_BITS64);
541 cl->info.bits64 = A + B;
541 cl->info.bits64 = A + B;
@@ -543,8 +543,8 @@ VAL idris_b64Plus(VM *vm, VAL a, VAL b) {
545VAL idris_b64Minus(VM *vm, VAL a, VAL b) {
545VAL idris_b64Minus(VM *vm, VAL a, VAL b) {
546− uint64_t A = a->info.bits64;
546+ uint64_t A = GETBITS64(a);
547− uint64_t B = b->info.bits64;
547+ uint64_t B = GETBITS64(b);
548 VAL cl = allocate(sizeof(Closure), 0);
548 VAL cl = allocate(sizeof(Closure), 0);
549 SETTY(cl, CT_BITS64);
549 SETTY(cl, CT_BITS64);
550 cl->info.bits64 = A - B;
550 cl->info.bits64 = A - B;
@@ -552,8 +552,8 @@ VAL idris_b64Minus(VM *vm, VAL a, VAL b) {
554VAL idris_b64Times(VM *vm, VAL a, VAL b) {
554VAL idris_b64Times(VM *vm, VAL a, VAL b) {
555− uint64_t A = a->info.bits64;
555+ uint64_t A = GETBITS64(a);
556− uint64_t B = b->info.bits64;
556+ uint64_t B = GETBITS64(b);
557 VAL cl = allocate(sizeof(Closure), 0);
557 VAL cl = allocate(sizeof(Closure), 0);
558 SETTY(cl, CT_BITS64);
558 SETTY(cl, CT_BITS64);
559 cl->info.bits64 = A * B;
559 cl->info.bits64 = A * B;
@@ -561,8 +561,8 @@ VAL idris_b64Times(VM *vm, VAL a, VAL b) {
563VAL idris_b64UDiv(VM *vm, VAL a, VAL b) {
563VAL idris_b64UDiv(VM *vm, VAL a, VAL b) {
564− uint64_t A = a->info.bits64;
564+ uint64_t A = GETBITS64(a);
565− uint64_t B = b->info.bits64;
565+ uint64_t B = GETBITS64(b);
566 VAL cl = allocate(sizeof(Closure), 0);
566 VAL cl = allocate(sizeof(Closure), 0);
567 SETTY(cl, CT_BITS64);
567 SETTY(cl, CT_BITS64);
568 cl->info.bits64 = A / B;
568 cl->info.bits64 = A / B;
@@ -570,8 +570,8 @@ VAL idris_b64UDiv(VM *vm, VAL a, VAL b) {
572VAL idris_b64SDiv(VM *vm, VAL a, VAL b) {
572VAL idris_b64SDiv(VM *vm, VAL a, VAL b) {
573− uint64_t A = a->info.bits64;
573+ uint64_t A = GETBITS64(a);
574− uint64_t B = b->info.bits64;
574+ uint64_t B = GETBITS64(b);
575 VAL cl = allocate(sizeof(Closure), 0);
575 VAL cl = allocate(sizeof(Closure), 0);
576 SETTY(cl, CT_BITS64);
576 SETTY(cl, CT_BITS64);
577 cl->info.bits64 = (uint64_t) (((int64_t) A) / ((int64_t) B));
577 cl->info.bits64 = (uint64_t) (((int64_t) A) / ((int64_t) B));
@@ -579,8 +579,8 @@ VAL idris_b64SDiv(VM *vm, VAL a, VAL b) {
581VAL idris_b64URem(VM *vm, VAL a, VAL b) {
581VAL idris_b64URem(VM *vm, VAL a, VAL b) {
582− uint64_t A = a->info.bits64;
582+ uint64_t A = GETBITS64(a);
583− uint64_t B = b->info.bits64;
583+ uint64_t B = GETBITS64(b);
584 VAL cl = allocate(sizeof(Closure), 0);
584 VAL cl = allocate(sizeof(Closure), 0);
585 SETTY(cl, CT_BITS64);
585 SETTY(cl, CT_BITS64);
586 cl->info.bits64 = A % B;
586 cl->info.bits64 = A % B;
@@ -588,8 +588,8 @@ VAL idris_b64URem(VM *vm, VAL a, VAL b) {
590VAL idris_b64SRem(VM *vm, VAL a, VAL b) {
590VAL idris_b64SRem(VM *vm, VAL a, VAL b) {
591− uint64_t A = a->info.bits64;
591+ uint64_t A = GETBITS64(a);
592− uint64_t B = b->info.bits64;
592+ uint64_t B = GETBITS64(b);
593 VAL cl = allocate(sizeof(Closure), 0);
593 VAL cl = allocate(sizeof(Closure), 0);
594 SETTY(cl, CT_BITS64);
594 SETTY(cl, CT_BITS64);
595 cl->info.bits64 = (uint64_t) (((int64_t) A) % ((int64_t) B));
595 cl->info.bits64 = (uint64_t) (((int64_t) A) % ((int64_t) B));
@@ -617,7 +617,7 @@ VAL idris_b64Gte(VM *vm, VAL a, VAL b) {
619VAL idris_b64Compl(VM *vm, VAL a) {
619VAL idris_b64Compl(VM *vm, VAL a) {
620− uint64_t A = a->info.bits64;
620+ uint64_t A = GETBITS64(a);
621 VAL cl = allocate(sizeof(Closure), 0);
621 VAL cl = allocate(sizeof(Closure), 0);
622 SETTY(cl, CT_BITS64);
622 SETTY(cl, CT_BITS64);
623 cl->info.bits64 = ~ A;
623 cl->info.bits64 = ~ A;
@@ -625,8 +625,8 @@ VAL idris_b64Compl(VM *vm, VAL a) {
627VAL idris_b64And(VM *vm, VAL a, VAL b) {
627VAL idris_b64And(VM *vm, VAL a, VAL b) {
628− uint64_t A = a->info.bits64;
628+ uint64_t A = GETBITS64(a);
629− uint64_t B = b->info.bits64;
629+ uint64_t B = GETBITS64(b);
630 VAL cl = allocate(sizeof(Closure), 0);
630 VAL cl = allocate(sizeof(Closure), 0);
631 SETTY(cl, CT_BITS64);
631 SETTY(cl, CT_BITS64);
632 cl->info.bits64 = A & B;
632 cl->info.bits64 = A & B;
@@ -634,8 +634,8 @@ VAL idris_b64And(VM *vm, VAL a, VAL b) {
636VAL idris_b64Or(VM *vm, VAL a, VAL b) {
636VAL idris_b64Or(VM *vm, VAL a, VAL b) {
637− uint64_t A = a->info.bits64;
637+ uint64_t A = GETBITS64(a);
638− uint64_t B = b->info.bits64;
638+ uint64_t B = GETBITS64(b);
639 VAL cl = allocate(sizeof(Closure), 0);
639 VAL cl = allocate(sizeof(Closure), 0);
640 SETTY(cl, CT_BITS64);
640 SETTY(cl, CT_BITS64);
641 cl->info.bits64 = A | B;
641 cl->info.bits64 = A | B;
@@ -643,8 +643,8 @@ VAL idris_b64Or(VM *vm, VAL a, VAL b) {
645VAL idris_b64Xor(VM *vm, VAL a, VAL b) {
645VAL idris_b64Xor(VM *vm, VAL a, VAL b) {
646− uint64_t A = a->info.bits64;
646+ uint64_t A = GETBITS64(a);
647− uint64_t B = b->info.bits64;
647+ uint64_t B = GETBITS64(b);
648 VAL cl = allocate(sizeof(Closure), 0);
648 VAL cl = allocate(sizeof(Closure), 0);
649 SETTY(cl, CT_BITS64);
649 SETTY(cl, CT_BITS64);
650 cl->info.bits64 = A ^ B;
650 cl->info.bits64 = A ^ B;
@@ -652,8 +652,8 @@ VAL idris_b64Xor(VM *vm, VAL a, VAL b) {
654VAL idris_b64Shl(VM *vm, VAL a, VAL b) {
654VAL idris_b64Shl(VM *vm, VAL a, VAL b) {
655− uint64_t A = a->info.bits64;
655+ uint64_t A = GETBITS64(a);
656− uint64_t B = b->info.bits64;
656+ uint64_t B = GETBITS64(b);
657 VAL cl = allocate(sizeof(Closure), 0);
657 VAL cl = allocate(sizeof(Closure), 0);
658 SETTY(cl, CT_BITS64);
658 SETTY(cl, CT_BITS64);
659 cl->info.bits64 = A << B;
659 cl->info.bits64 = A << B;
@@ -661,8 +661,8 @@ VAL idris_b64Shl(VM *vm, VAL a, VAL b) {
663VAL idris_b64LShr(VM *vm, VAL a, VAL b) {
663VAL idris_b64LShr(VM *vm, VAL a, VAL b) {
664− uint64_t A = a->info.bits64;
664+ uint64_t A = GETBITS64(a);
665− uint64_t B = b->info.bits64;
665+ uint64_t B = GETBITS64(b);
666 VAL cl = allocate(sizeof(Closure), 0);
666 VAL cl = allocate(sizeof(Closure), 0);
667 SETTY(cl, CT_BITS64);
667 SETTY(cl, CT_BITS64);
668 cl->info.bits64 = A >> B;
668 cl->info.bits64 = A >> B;
@@ -670,8 +670,8 @@ VAL idris_b64LShr(VM *vm, VAL a, VAL b) {
672VAL idris_b64AShr(VM *vm, VAL a, VAL b) {
672VAL idris_b64AShr(VM *vm, VAL a, VAL b) {
673− uint64_t A = a->info.bits64;
673+ uint64_t A = GETBITS64(a);
674− uint64_t B = b->info.bits64;
674+ uint64_t B = GETBITS64(b);
675 VAL cl = allocate(sizeof(Closure), 0);
675 VAL cl = allocate(sizeof(Closure), 0);
676 SETTY(cl, CT_BITS64);
676 SETTY(cl, CT_BITS64);
677 cl->info.bits64 = (uint64_t) (((int64_t) A) >> ((int64_t) B));
677 cl->info.bits64 = (uint64_t) (((int64_t) A) >> ((int64_t) B));
@@ -679,7 +679,7 @@ VAL idris_b64AShr(VM *vm, VAL a, VAL b) {
681VAL idris_b8Z16(VM *vm, VAL a) {
681VAL idris_b8Z16(VM *vm, VAL a) {
682− uint8_t A = a->info.bits8;
682+ uint8_t A = GETBITS8(a);
683 VAL cl = allocate(sizeof(Closure), 0);
683 VAL cl = allocate(sizeof(Closure), 0);
684 SETTY(cl, CT_BITS16);
684 SETTY(cl, CT_BITS16);
685 cl->info.bits16 = (uint16_t) A;
685 cl->info.bits16 = (uint16_t) A;
@@ -687,7 +687,7 @@ VAL idris_b8Z16(VM *vm, VAL a) {
689VAL idris_b8Z32(VM *vm, VAL a) {
689VAL idris_b8Z32(VM *vm, VAL a) {
690− uint8_t A = a->info.bits8;
690+ uint8_t A = GETBITS8(a);
691 VAL cl = allocate(sizeof(Closure), 0);
691 VAL cl = allocate(sizeof(Closure), 0);
692 SETTY(cl, CT_BITS32);
692 SETTY(cl, CT_BITS32);
693 cl->info.bits32 = (uint32_t) A;
693 cl->info.bits32 = (uint32_t) A;
@@ -695,7 +695,7 @@ VAL idris_b8Z32(VM *vm, VAL a) {
697VAL idris_b8Z64(VM *vm, VAL a) {
697VAL idris_b8Z64(VM *vm, VAL a) {
698− uint8_t A = a->info.bits8;
698+ uint8_t A = GETBITS8(a);
699 VAL cl = allocate(sizeof(Closure), 0);
699 VAL cl = allocate(sizeof(Closure), 0);
700 SETTY(cl, CT_BITS64);
700 SETTY(cl, CT_BITS64);
701 cl->info.bits64 = (uint64_t) A;
701 cl->info.bits64 = (uint64_t) A;
@@ -703,7 +703,7 @@ VAL idris_b8Z64(VM *vm, VAL a) {
705VAL idris_b8S16(VM *vm, VAL a) {
705VAL idris_b8S16(VM *vm, VAL a) {
706− uint8_t A = a->info.bits8;
706+ uint8_t A = GETBITS8(a);
707 VAL cl = allocate(sizeof(Closure), 0);
707 VAL cl = allocate(sizeof(Closure), 0);
708 SETTY(cl, CT_BITS16);
708 SETTY(cl, CT_BITS16);
709 cl->info.bits16 = (uint16_t) (int16_t) (int8_t) A;
709 cl->info.bits16 = (uint16_t) (int16_t) (int8_t) A;
@@ -711,7 +711,7 @@ VAL idris_b8S16(VM *vm, VAL a) {
713VAL idris_b8S32(VM *vm, VAL a) {
713VAL idris_b8S32(VM *vm, VAL a) {
714− uint8_t A = a->info.bits8;
714+ uint8_t A = GETBITS8(a);
715 VAL cl = allocate(sizeof(Closure), 0);
715 VAL cl = allocate(sizeof(Closure), 0);
716 SETTY(cl, CT_BITS32);
716 SETTY(cl, CT_BITS32);
717 cl->info.bits32 = (uint32_t) (int32_t) (int8_t) A;
717 cl->info.bits32 = (uint32_t) (int32_t) (int8_t) A;
@@ -719,7 +719,7 @@ VAL idris_b8S32(VM *vm, VAL a) {
721VAL idris_b8S64(VM *vm, VAL a) {
721VAL idris_b8S64(VM *vm, VAL a) {
722− uint8_t A = a->info.bits8;
722+ uint8_t A = GETBITS8(a);
723 VAL cl = allocate(sizeof(Closure), 0);
723 VAL cl = allocate(sizeof(Closure), 0);
724 SETTY(cl, CT_BITS64);
724 SETTY(cl, CT_BITS64);
725 cl->info.bits64 = (uint64_t) (int64_t) (int8_t) A;
725 cl->info.bits64 = (uint64_t) (int64_t) (int8_t) A;
@@ -727,7 +727,7 @@ VAL idris_b8S64(VM *vm, VAL a) {
729VAL idris_b16Z32(VM *vm, VAL a) {
729VAL idris_b16Z32(VM *vm, VAL a) {
730− uint16_t A = a->info.bits16;
730+ uint16_t A = GETBITS16(a);
731 VAL cl = allocate(sizeof(Closure), 0);
731 VAL cl = allocate(sizeof(Closure), 0);
732 SETTY(cl, CT_BITS32);
732 SETTY(cl, CT_BITS32);
733 cl->info.bits32 = (uint32_t) A;
733 cl->info.bits32 = (uint32_t) A;
@@ -735,7 +735,7 @@ VAL idris_b16Z32(VM *vm, VAL a) {
737VAL idris_b16Z64(VM *vm, VAL a) {
737VAL idris_b16Z64(VM *vm, VAL a) {
738− uint16_t A = a->info.bits16;
738+ uint16_t A = GETBITS16(a);
739 VAL cl = allocate(sizeof(Closure), 0);
739 VAL cl = allocate(sizeof(Closure), 0);
740 SETTY(cl, CT_BITS64);
740 SETTY(cl, CT_BITS64);
741 cl->info.bits64 = (uint64_t) A;
741 cl->info.bits64 = (uint64_t) A;
@@ -743,7 +743,7 @@ VAL idris_b16Z64(VM *vm, VAL a) {
745VAL idris_b16S32(VM *vm, VAL a) {
745VAL idris_b16S32(VM *vm, VAL a) {
746− uint16_t A = a->info.bits16;
746+ uint16_t A = GETBITS16(a);
747 VAL cl = allocate(sizeof(Closure), 0);
747 VAL cl = allocate(sizeof(Closure), 0);
748 SETTY(cl, CT_BITS32);
748 SETTY(cl, CT_BITS32);
749 cl->info.bits32 = (uint32_t) (int32_t) (int16_t) A;
749 cl->info.bits32 = (uint32_t) (int32_t) (int16_t) A;
@@ -751,7 +751,7 @@ VAL idris_b16S32(VM *vm, VAL a) {
753VAL idris_b16S64(VM *vm, VAL a) {
753VAL idris_b16S64(VM *vm, VAL a) {
754− uint16_t A = a->info.bits16;
754+ uint16_t A = GETBITS16(a);
755 VAL cl = allocate(sizeof(Closure), 0);
755 VAL cl = allocate(sizeof(Closure), 0);
756 SETTY(cl, CT_BITS64);
756 SETTY(cl, CT_BITS64);
757 cl->info.bits64 = (uint64_t) (int64_t) (int16_t) A;
757 cl->info.bits64 = (uint64_t) (int64_t) (int16_t) A;
@@ -759,7 +759,7 @@ VAL idris_b16S64(VM *vm, VAL a) {
761VAL idris_b16T8(VM *vm, VAL a) {
761VAL idris_b16T8(VM *vm, VAL a) {
762− uint16_t A = a->info.bits16;
762+ uint16_t A = GETBITS16(a);
763 VAL cl = allocate(sizeof(Closure), 0);
763 VAL cl = allocate(sizeof(Closure), 0);
764 SETTY(cl, CT_BITS8);
764 SETTY(cl, CT_BITS8);
765 cl->info.bits8 = (uint8_t) A;
765 cl->info.bits8 = (uint8_t) A;
@@ -767,7 +767,7 @@ VAL idris_b16T8(VM *vm, VAL a) {
769VAL idris_b32Z64(VM *vm, VAL a) {
769VAL idris_b32Z64(VM *vm, VAL a) {
770− uint32_t A = a->info.bits32;
770+ uint32_t A = GETBITS32(a);
771 VAL cl = allocate(sizeof(Closure), 0);
771 VAL cl = allocate(sizeof(Closure), 0);
772 SETTY(cl, CT_BITS64);
772 SETTY(cl, CT_BITS64);
773 cl->info.bits64 = (uint64_t) A;
773 cl->info.bits64 = (uint64_t) A;
@@ -775,7 +775,7 @@ VAL idris_b32Z64(VM *vm, VAL a) {
777VAL idris_b32S64(VM *vm, VAL a) {
777VAL idris_b32S64(VM *vm, VAL a) {
778− uint32_t A = a->info.bits32;
778+ uint32_t A = GETBITS32(a);
779 VAL cl = allocate(sizeof(Closure), 0);
779 VAL cl = allocate(sizeof(Closure), 0);
780 SETTY(cl, CT_BITS64);
780 SETTY(cl, CT_BITS64);
781 cl->info.bits64 = (uint64_t) (int64_t) (int32_t) A;
781 cl->info.bits64 = (uint64_t) (int64_t) (int32_t) A;
@@ -783,7 +783,7 @@ VAL idris_b32S64(VM *vm, VAL a) {
785VAL idris_b32T8(VM *vm, VAL a) {
785VAL idris_b32T8(VM *vm, VAL a) {
786− uint32_t A = a->info.bits32;
786+ uint32_t A = GETBITS32(a);
787 VAL cl = allocate(sizeof(Closure), 0);
787 VAL cl = allocate(sizeof(Closure), 0);
788 SETTY(cl, CT_BITS8);
788 SETTY(cl, CT_BITS8);
789 cl->info.bits8 = (uint8_t) A;
789 cl->info.bits8 = (uint8_t) A;
@@ -791,7 +791,7 @@ VAL idris_b32T8(VM *vm, VAL a) {
793VAL idris_b32T16(VM *vm, VAL a) {
793VAL idris_b32T16(VM *vm, VAL a) {
794− uint32_t A = a->info.bits32;
794+ uint32_t A = GETBITS32(a);
795 VAL cl = allocate(sizeof(Closure), 0);
795 VAL cl = allocate(sizeof(Closure), 0);
796 SETTY(cl, CT_BITS16);
796 SETTY(cl, CT_BITS16);
797 cl->info.bits16 = (uint16_t) A;
797 cl->info.bits16 = (uint16_t) A;
@@ -799,7 +799,7 @@ VAL idris_b32T16(VM *vm, VAL a) {
801VAL idris_b64T8(VM *vm, VAL a) {
801VAL idris_b64T8(VM *vm, VAL a) {
802− uint64_t A = a->info.bits64;
802+ uint64_t A = GETBITS64(a);
803 VAL cl = allocate(sizeof(Closure), 0);
803 VAL cl = allocate(sizeof(Closure), 0);
804 SETTY(cl, CT_BITS8);
804 SETTY(cl, CT_BITS8);
805 cl->info.bits8 = (uint8_t) A;
805 cl->info.bits8 = (uint8_t) A;
@@ -807,7 +807,7 @@ VAL idris_b64T8(VM *vm, VAL a) {
809VAL idris_b64T16(VM *vm, VAL a) {
809VAL idris_b64T16(VM *vm, VAL a) {
810− uint64_t A = a->info.bits64;
810+ uint64_t A = GETBITS64(a);
811 VAL cl = allocate(sizeof(Closure), 0);
811 VAL cl = allocate(sizeof(Closure), 0);
812 SETTY(cl, CT_BITS16);
812 SETTY(cl, CT_BITS16);
813 cl->info.bits16 = (uint16_t) A;
813 cl->info.bits16 = (uint16_t) A;
@@ -815,7 +815,7 @@ VAL idris_b64T16(VM *vm, VAL a) {
817VAL idris_b64T32(VM *vm, VAL a) {
817VAL idris_b64T32(VM *vm, VAL a) {
818− uint64_t A = a->info.bits64;
818+ uint64_t A = GETBITS64(a);
819 VAL cl = allocate(sizeof(Closure), 0);
819 VAL cl = allocate(sizeof(Closure), 0);
820 SETTY(cl, CT_BITS32);
820 SETTY(cl, CT_BITS32);
821 cl->info.bits32 = (uint32_t) A;
821 cl->info.bits32 = (uint32_t) A;