Replace ptrint_t with standard intptr_t
This commit is contained in:
parent
b35ab48437
commit
36fd757689
|
@ -111,7 +111,7 @@ static size_t cv_nwords(struct cvalue *cv)
|
||||||
|
|
||||||
static void autorelease(struct cvalue *cv)
|
static void autorelease(struct cvalue *cv)
|
||||||
{
|
{
|
||||||
cv->type = (struct fltype *)(((uptrint_t)cv->type) | CV_OWNED_BIT);
|
cv->type = (struct fltype *)(((uintptr_t)cv->type) | CV_OWNED_BIT);
|
||||||
add_finalizer(cv);
|
add_finalizer(cv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ void cv_autorelease(struct cvalue *cv) { autorelease(cv); }
|
||||||
|
|
||||||
static value_t cprim(struct fltype *type, size_t sz)
|
static value_t cprim(struct fltype *type, size_t sz)
|
||||||
{
|
{
|
||||||
assert(!ismanaged((uptrint_t)type));
|
assert(!ismanaged((uintptr_t)type));
|
||||||
assert(sz == type->size);
|
assert(sz == type->size);
|
||||||
struct cprim *pcp =
|
struct cprim *pcp =
|
||||||
(struct cprim *)alloc_words(CPRIM_NWORDS - 1 + NWORDS(sz));
|
(struct cprim *)alloc_words(CPRIM_NWORDS - 1 + NWORDS(sz));
|
||||||
|
@ -192,7 +192,7 @@ value_t cvalue_from_ref(struct fltype *type, void *ptr, size_t sz,
|
||||||
pcv->len = sz;
|
pcv->len = sz;
|
||||||
pcv->type = type;
|
pcv->type = type;
|
||||||
if (parent != NIL) {
|
if (parent != NIL) {
|
||||||
pcv->type = (struct fltype *)(((uptrint_t)pcv->type) | CV_PARENT_BIT);
|
pcv->type = (struct fltype *)(((uintptr_t)pcv->type) | CV_PARENT_BIT);
|
||||||
pcv->parent = parent;
|
pcv->parent = parent;
|
||||||
}
|
}
|
||||||
cv = tagptr(pcv, TAG_CVALUE);
|
cv = tagptr(pcv, TAG_CVALUE);
|
||||||
|
@ -674,7 +674,7 @@ value_t cvalue_copy(value_t v)
|
||||||
autorelease(ncv);
|
autorelease(ncv);
|
||||||
if (hasparent(cv)) {
|
if (hasparent(cv)) {
|
||||||
ncv->type =
|
ncv->type =
|
||||||
(struct fltype *)(((uptrint_t)ncv->type) & ~CV_PARENT_BIT);
|
(struct fltype *)(((uintptr_t)ncv->type) & ~CV_PARENT_BIT);
|
||||||
ncv->parent = NIL;
|
ncv->parent = NIL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -106,22 +106,17 @@ typedef int bool_t;
|
||||||
#define NBITS 64
|
#define NBITS 64
|
||||||
typedef int64_t offset_t;
|
typedef int64_t offset_t;
|
||||||
typedef uint64_t index_t;
|
typedef uint64_t index_t;
|
||||||
typedef int64_t ptrint_t; // pointer-size int
|
|
||||||
typedef uint64_t u_ptrint_t;
|
|
||||||
#else
|
#else
|
||||||
#define TOP_BIT 0x80000000
|
#define TOP_BIT 0x80000000
|
||||||
#define NBITS 32
|
#define NBITS 32
|
||||||
typedef int32_t offset_t;
|
typedef int32_t offset_t;
|
||||||
typedef uint32_t index_t;
|
typedef uint32_t index_t;
|
||||||
typedef int32_t ptrint_t;
|
|
||||||
typedef uint32_t u_ptrint_t;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef uint8_t uint8_t;
|
typedef uint8_t uint8_t;
|
||||||
typedef uint16_t uint16_t;
|
typedef uint16_t uint16_t;
|
||||||
typedef uint32_t uint32_t;
|
typedef uint32_t uint32_t;
|
||||||
typedef uint64_t uint64_t;
|
typedef uint64_t uint64_t;
|
||||||
typedef u_ptrint_t uptrint_t;
|
|
||||||
|
|
||||||
#define LLT_ALIGN(x, sz) (((x) + (sz - 1)) & (-sz))
|
#define LLT_ALIGN(x, sz) (((x) + (sz - 1)) & (-sz))
|
||||||
|
|
||||||
|
|
|
@ -303,7 +303,7 @@ value_t fl_equal(value_t a, value_t b)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// *oob: output argument, means we hit the limit specified by 'bound'
|
// *oob: output argument, means we hit the limit specified by 'bound'
|
||||||
static uptrint_t bounded_hash(value_t a, int bound, int *oob)
|
static uintptr_t bounded_hash(value_t a, int bound, int *oob)
|
||||||
{
|
{
|
||||||
*oob = 0;
|
*oob = 0;
|
||||||
union {
|
union {
|
||||||
|
@ -315,7 +315,7 @@ static uptrint_t bounded_hash(value_t a, int bound, int *oob)
|
||||||
struct cvalue *cv;
|
struct cvalue *cv;
|
||||||
struct cprim *cp;
|
struct cprim *cp;
|
||||||
void *data;
|
void *data;
|
||||||
uptrint_t h = 0;
|
uintptr_t h = 0;
|
||||||
int oob2, tg = tag(a);
|
int oob2, tg = tag(a);
|
||||||
switch (tg) {
|
switch (tg) {
|
||||||
case TAG_NUM:
|
case TAG_NUM:
|
||||||
|
@ -388,10 +388,10 @@ int equal_lispvalue(value_t a, value_t b)
|
||||||
return (numval(compare_(a, b, 1)) == 0);
|
return (numval(compare_(a, b, 1)) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
uptrint_t hash_lispvalue(value_t a)
|
uintptr_t hash_lispvalue(value_t a)
|
||||||
{
|
{
|
||||||
int oob = 0;
|
int oob = 0;
|
||||||
uptrint_t n = bounded_hash(a, BOUNDED_HASH_BOUND, &oob);
|
uintptr_t n = bounded_hash(a, BOUNDED_HASH_BOUND, &oob);
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
38
c/flisp.c
38
c/flisp.c
|
@ -271,7 +271,7 @@ static struct symbol *mk_symbol(char *str)
|
||||||
|
|
||||||
sym =
|
sym =
|
||||||
(struct symbol *)malloc(sizeof(struct symbol) - sizeof(void *) + len + 1);
|
(struct symbol *)malloc(sizeof(struct symbol) - sizeof(void *) + len + 1);
|
||||||
assert(((uptrint_t)sym & 0x7) == 0); // make sure malloc aligns 8
|
assert(((uintptr_t)sym & 0x7) == 0); // make sure malloc aligns 8
|
||||||
sym->left = sym->right = NULL;
|
sym->left = sym->right = NULL;
|
||||||
sym->flags = 0;
|
sym->flags = 0;
|
||||||
if (fl_is_keyword_name(str, len)) {
|
if (fl_is_keyword_name(str, len)) {
|
||||||
|
@ -446,7 +446,7 @@ void fl_free_gc_handles(uint32_t n)
|
||||||
static value_t relocate(value_t v)
|
static value_t relocate(value_t v)
|
||||||
{
|
{
|
||||||
value_t a, d, nc, first, *pcdr;
|
value_t a, d, nc, first, *pcdr;
|
||||||
uptrint_t t = tag(v);
|
uintptr_t t = tag(v);
|
||||||
|
|
||||||
if (t == TAG_CONS) {
|
if (t == TAG_CONS) {
|
||||||
// iterative implementation allows arbitrarily long cons chains
|
// iterative implementation allows arbitrarily long cons chains
|
||||||
|
@ -880,16 +880,16 @@ static uint32_t process_keys(value_t kwtable, uint32_t nreq, uint32_t nkw,
|
||||||
if (i >= nargs)
|
if (i >= nargs)
|
||||||
goto no_kw;
|
goto no_kw;
|
||||||
// now process keywords
|
// now process keywords
|
||||||
uptrint_t n = vector_size(kwtable) / 2;
|
uintptr_t n = vector_size(kwtable) / 2;
|
||||||
do {
|
do {
|
||||||
i++;
|
i++;
|
||||||
if (i >= nargs)
|
if (i >= nargs)
|
||||||
lerrorf(ArgError, "keyword %s requires an argument",
|
lerrorf(ArgError, "keyword %s requires an argument",
|
||||||
symbol_name(v));
|
symbol_name(v));
|
||||||
value_t hv = fixnum(((struct symbol *)ptr(v))->hash);
|
value_t hv = fixnum(((struct symbol *)ptr(v))->hash);
|
||||||
uptrint_t x = 2 * (labs(numval(hv)) % n);
|
uintptr_t x = 2 * (labs(numval(hv)) % n);
|
||||||
if (vector_elt(kwtable, x) == v) {
|
if (vector_elt(kwtable, x) == v) {
|
||||||
uptrint_t idx = numval(vector_elt(kwtable, x + 1));
|
uintptr_t idx = numval(vector_elt(kwtable, x + 1));
|
||||||
assert(idx < nkw);
|
assert(idx < nkw);
|
||||||
idx += nopt;
|
idx += nopt;
|
||||||
if (args[idx] == UNBOUND) {
|
if (args[idx] == UNBOUND) {
|
||||||
|
@ -986,7 +986,7 @@ apply_cl_top:
|
||||||
captured = 0;
|
captured = 0;
|
||||||
func = Stack[SP - nargs - 1];
|
func = Stack[SP - nargs - 1];
|
||||||
ip = cv_data((struct cvalue *)ptr(fn_bcode(func)));
|
ip = cv_data((struct cvalue *)ptr(fn_bcode(func)));
|
||||||
assert(!ismanaged((uptrint_t)ip));
|
assert(!ismanaged((uintptr_t)ip));
|
||||||
while (SP + GET_INT32(ip) > N_STACK) {
|
while (SP + GET_INT32(ip) > N_STACK) {
|
||||||
grow_stack();
|
grow_stack();
|
||||||
}
|
}
|
||||||
|
@ -1139,7 +1139,7 @@ apply_cl_top:
|
||||||
func = Stack[SP - n - 1];
|
func = Stack[SP - n - 1];
|
||||||
if (tag(func) == TAG_FUNCTION) {
|
if (tag(func) == TAG_FUNCTION) {
|
||||||
if (func > (N_BUILTINS << 3)) {
|
if (func > (N_BUILTINS << 3)) {
|
||||||
Stack[curr_frame - 2] = (uptrint_t)ip;
|
Stack[curr_frame - 2] = (uintptr_t)ip;
|
||||||
nargs = n;
|
nargs = n;
|
||||||
goto apply_cl_top;
|
goto apply_cl_top;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1193,48 +1193,48 @@ apply_cl_top:
|
||||||
OP(OP_CALLL) n = GET_INT32(ip);
|
OP(OP_CALLL) n = GET_INT32(ip);
|
||||||
ip += 4;
|
ip += 4;
|
||||||
goto do_call;
|
goto do_call;
|
||||||
OP(OP_JMP) ip += (ptrint_t)GET_INT16(ip);
|
OP(OP_JMP) ip += (intptr_t)GET_INT16(ip);
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_BRF)
|
OP(OP_BRF)
|
||||||
v = POP();
|
v = POP();
|
||||||
if (v == FL_F)
|
if (v == FL_F)
|
||||||
ip += (ptrint_t)GET_INT16(ip);
|
ip += (intptr_t)GET_INT16(ip);
|
||||||
else
|
else
|
||||||
ip += 2;
|
ip += 2;
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_BRT)
|
OP(OP_BRT)
|
||||||
v = POP();
|
v = POP();
|
||||||
if (v != FL_F)
|
if (v != FL_F)
|
||||||
ip += (ptrint_t)GET_INT16(ip);
|
ip += (intptr_t)GET_INT16(ip);
|
||||||
else
|
else
|
||||||
ip += 2;
|
ip += 2;
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_JMPL) ip += (ptrint_t)GET_INT32(ip);
|
OP(OP_JMPL) ip += (intptr_t)GET_INT32(ip);
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_BRFL)
|
OP(OP_BRFL)
|
||||||
v = POP();
|
v = POP();
|
||||||
if (v == FL_F)
|
if (v == FL_F)
|
||||||
ip += (ptrint_t)GET_INT32(ip);
|
ip += (intptr_t)GET_INT32(ip);
|
||||||
else
|
else
|
||||||
ip += 4;
|
ip += 4;
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_BRTL)
|
OP(OP_BRTL)
|
||||||
v = POP();
|
v = POP();
|
||||||
if (v != FL_F)
|
if (v != FL_F)
|
||||||
ip += (ptrint_t)GET_INT32(ip);
|
ip += (intptr_t)GET_INT32(ip);
|
||||||
else
|
else
|
||||||
ip += 4;
|
ip += 4;
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_BRNE)
|
OP(OP_BRNE)
|
||||||
if (Stack[SP - 2] != Stack[SP - 1])
|
if (Stack[SP - 2] != Stack[SP - 1])
|
||||||
ip += (ptrint_t)GET_INT16(ip);
|
ip += (intptr_t)GET_INT16(ip);
|
||||||
else
|
else
|
||||||
ip += 2;
|
ip += 2;
|
||||||
POPN(2);
|
POPN(2);
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_BRNEL)
|
OP(OP_BRNEL)
|
||||||
if (Stack[SP - 2] != Stack[SP - 1])
|
if (Stack[SP - 2] != Stack[SP - 1])
|
||||||
ip += (ptrint_t)GET_INT32(ip);
|
ip += (intptr_t)GET_INT32(ip);
|
||||||
else
|
else
|
||||||
ip += 4;
|
ip += 4;
|
||||||
POPN(2);
|
POPN(2);
|
||||||
|
@ -1242,28 +1242,28 @@ apply_cl_top:
|
||||||
OP(OP_BRNN)
|
OP(OP_BRNN)
|
||||||
v = POP();
|
v = POP();
|
||||||
if (v != NIL)
|
if (v != NIL)
|
||||||
ip += (ptrint_t)GET_INT16(ip);
|
ip += (intptr_t)GET_INT16(ip);
|
||||||
else
|
else
|
||||||
ip += 2;
|
ip += 2;
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_BRNNL)
|
OP(OP_BRNNL)
|
||||||
v = POP();
|
v = POP();
|
||||||
if (v != NIL)
|
if (v != NIL)
|
||||||
ip += (ptrint_t)GET_INT32(ip);
|
ip += (intptr_t)GET_INT32(ip);
|
||||||
else
|
else
|
||||||
ip += 4;
|
ip += 4;
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_BRN)
|
OP(OP_BRN)
|
||||||
v = POP();
|
v = POP();
|
||||||
if (v == NIL)
|
if (v == NIL)
|
||||||
ip += (ptrint_t)GET_INT16(ip);
|
ip += (intptr_t)GET_INT16(ip);
|
||||||
else
|
else
|
||||||
ip += 2;
|
ip += 2;
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
OP(OP_BRNL)
|
OP(OP_BRNL)
|
||||||
v = POP();
|
v = POP();
|
||||||
if (v == NIL)
|
if (v == NIL)
|
||||||
ip += (ptrint_t)GET_INT32(ip);
|
ip += (intptr_t)GET_INT32(ip);
|
||||||
else
|
else
|
||||||
ip += 4;
|
ip += 4;
|
||||||
NEXT_OP;
|
NEXT_OP;
|
||||||
|
|
12
c/flisp.h
12
c/flisp.h
|
@ -1,4 +1,4 @@
|
||||||
typedef uptrint_t value_t;
|
typedef uintptr_t value_t;
|
||||||
typedef intptr_t fixnum_t;
|
typedef intptr_t fixnum_t;
|
||||||
typedef uintptr_t ufixnum_t;
|
typedef uintptr_t ufixnum_t;
|
||||||
#ifdef BITS64
|
#ifdef BITS64
|
||||||
|
@ -13,7 +13,7 @@ struct cons {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct symbol {
|
struct symbol {
|
||||||
uptrint_t flags;
|
uintptr_t flags;
|
||||||
value_t binding; // global value binding
|
value_t binding; // global value binding
|
||||||
struct fltype *type;
|
struct fltype *type;
|
||||||
uint32_t hash;
|
uint32_t hash;
|
||||||
|
@ -149,7 +149,7 @@ size_t llength(value_t v);
|
||||||
value_t fl_compare(value_t a, value_t b); // -1, 0, or 1
|
value_t fl_compare(value_t a, value_t b); // -1, 0, or 1
|
||||||
value_t fl_equal(value_t a, value_t b); // T or nil
|
value_t fl_equal(value_t a, value_t b); // T or nil
|
||||||
int equal_lispvalue(value_t a, value_t b);
|
int equal_lispvalue(value_t a, value_t b);
|
||||||
uptrint_t hash_lispvalue(value_t a);
|
uintptr_t hash_lispvalue(value_t a);
|
||||||
int isnumtok_base(char *tok, value_t *pval, int base);
|
int isnumtok_base(char *tok, value_t *pval, int base);
|
||||||
|
|
||||||
/* safe casts */
|
/* safe casts */
|
||||||
|
@ -288,10 +288,10 @@ struct function {
|
||||||
|
|
||||||
#define CV_OWNED_BIT 0x1
|
#define CV_OWNED_BIT 0x1
|
||||||
#define CV_PARENT_BIT 0x2
|
#define CV_PARENT_BIT 0x2
|
||||||
#define owned(cv) ((uptrint_t)(cv)->type & CV_OWNED_BIT)
|
#define owned(cv) ((uintptr_t)(cv)->type & CV_OWNED_BIT)
|
||||||
#define hasparent(cv) ((uptrint_t)(cv)->type & CV_PARENT_BIT)
|
#define hasparent(cv) ((uintptr_t)(cv)->type & CV_PARENT_BIT)
|
||||||
#define isinlined(cv) ((cv)->data == &(cv)->_space[0])
|
#define isinlined(cv) ((cv)->data == &(cv)->_space[0])
|
||||||
#define cv_class(cv) ((struct fltype *)(((uptrint_t)(cv)->type) & ~3))
|
#define cv_class(cv) ((struct fltype *)(((uintptr_t)(cv)->type) & ~3))
|
||||||
#define cv_len(cv) ((cv)->len)
|
#define cv_len(cv) ((cv)->len)
|
||||||
#define cv_type(cv) (cv_class(cv)->type)
|
#define cv_type(cv) (cv_class(cv)->type)
|
||||||
#define cv_data(cv) ((cv)->data)
|
#define cv_data(cv) ((cv)->data)
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
void **tab = h->table; \
|
void **tab = h->table; \
|
||||||
void **ol; \
|
void **ol; \
|
||||||
\
|
\
|
||||||
hv = HFUNC((uptrint_t)key); \
|
hv = HFUNC((uintptr_t)key); \
|
||||||
retry_bp: \
|
retry_bp: \
|
||||||
iter = 0; \
|
iter = 0; \
|
||||||
index = (index_t)(hv & (sz - 1)) * 2; \
|
index = (index_t)(hv & (sz - 1)) * 2; \
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
size_t sz = hash_size(h); \
|
size_t sz = hash_size(h); \
|
||||||
size_t maxprobe = max_probe(sz); \
|
size_t maxprobe = max_probe(sz); \
|
||||||
void **tab = h->table; \
|
void **tab = h->table; \
|
||||||
size_t index = (index_t)(HFUNC((uptrint_t)key) & (sz - 1)) * 2; \
|
size_t index = (index_t)(HFUNC((uintptr_t)key) & (sz - 1)) * 2; \
|
||||||
sz *= 2; \
|
sz *= 2; \
|
||||||
size_t orig = index; \
|
size_t orig = index; \
|
||||||
size_t iter = 0; \
|
size_t iter = 0; \
|
||||||
|
|
Loading…
Reference in New Issue