52 |
|
|
53 |
|
|
54 |
|
|
55 |
typedef struct scm_cell |
typedef struct scm_t_cell |
56 |
{ |
{ |
57 |
scm_t_bits word_0; |
scm_t_bits word_0; |
58 |
scm_t_bits word_1; |
scm_t_bits word_1; |
59 |
} scm_cell; |
} scm_t_cell; |
60 |
|
|
61 |
|
|
62 |
/* SCM_CELLPTR is a pointer to a cons cell which may be compared or |
/* SCM_CELLPTR is a pointer to a cons cell which may be compared or |
63 |
* differenced. |
* differenced. |
64 |
*/ |
*/ |
65 |
typedef scm_cell * SCM_CELLPTR; |
typedef scm_t_cell * SCM_CELLPTR; |
66 |
|
|
67 |
|
|
68 |
/* Cray machines have pointers that are incremented once for each word, |
/* Cray machines have pointers that are incremented once for each word, |
69 |
* rather than each byte, the 3 most significant bits encode the byte |
* rather than each byte, the 3 most significant bits encode the byte |
70 |
* within the word. The following macros deal with this by storing the |
* within the word. The following macros deal with this by storing the |
71 |
* native Cray pointers like the ones that looks like scm expects. This |
* native Cray pointers like the ones that looks like scm expects. This |
72 |
* is done for any pointers that might appear in the car of a scm_cell, |
* is done for any pointers that might appear in the car of a scm_t_cell, |
73 |
* pointers to scm_vector elts, functions, &c are not munged. |
* pointers to scm_vector elts, functions, &c are not munged. |
74 |
*/ |
*/ |
75 |
#ifdef _UNICOS |
#ifdef _UNICOS |
83 |
#define SCM_GC_CARD_N_HEADER_CELLS 1 |
#define SCM_GC_CARD_N_HEADER_CELLS 1 |
84 |
#define SCM_GC_CARD_N_CELLS 256 |
#define SCM_GC_CARD_N_CELLS 256 |
85 |
|
|
86 |
#define SCM_GC_CARD_SIZE (SCM_GC_CARD_N_CELLS * sizeof (scm_cell)) |
#define SCM_GC_CARD_SIZE (SCM_GC_CARD_N_CELLS * sizeof (scm_t_cell)) |
87 |
#define SCM_GC_CARD_N_DATA_CELLS (SCM_GC_CARD_N_CELLS - SCM_GC_CARD_N_HEADER_CELLS) |
#define SCM_GC_CARD_N_DATA_CELLS (SCM_GC_CARD_N_CELLS - SCM_GC_CARD_N_HEADER_CELLS) |
88 |
|
|
89 |
#define SCM_GC_CARD_BVEC_SIZE_IN_LIMBS \ |
#define SCM_GC_CARD_BVEC_SIZE_IN_LIMBS \ |
90 |
((SCM_GC_CARD_N_CELLS + SCM_C_BVEC_LIMB_BITS - 1) / SCM_C_BVEC_LIMB_BITS) |
((SCM_GC_CARD_N_CELLS + SCM_C_BVEC_LIMB_BITS - 1) / SCM_C_BVEC_LIMB_BITS) |
91 |
|
|
92 |
#define SCM_GC_IN_CARD_HEADERP(x) \ |
#define SCM_GC_IN_CARD_HEADERP(x) \ |
93 |
SCM_PTR_LT ((scm_cell *) (x), SCM_GC_CELL_CARD (x) + SCM_GC_CARD_N_HEADER_CELLS) |
SCM_PTR_LT ((scm_t_cell *) (x), SCM_GC_CELL_CARD (x) + SCM_GC_CARD_N_HEADER_CELLS) |
94 |
|
|
95 |
#define SCM_GC_CARD_BVEC(card) ((scm_t_c_bvec_limb *) ((card)->word_0)) |
#define SCM_GC_CARD_BVEC(card) ((scm_t_c_bvec_limb *) ((card)->word_0)) |
96 |
#define SCM_GC_SET_CARD_BVEC(card, bvec) \ |
#define SCM_GC_SET_CARD_BVEC(card, bvec) \ |