fix gcc warnings about pointer casts in 32-bit builds
This commit is contained in:
parent
abcb575a53
commit
7bda795365
@ -861,7 +861,7 @@ void g_pst(void) { vm_pstLive(); fflush(stdout); fflush(stderr); }
|
||||
if (!isVal(x)) return x;
|
||||
VALIDATEP(v(x));
|
||||
if(isArr(x)!=TI(x,isArr) && v(x)->type!=t_freed && v(x)->type!=t_harrPartial && !ignore_bad_tag) {
|
||||
fprintf(stderr, "bad array tag/type: type=%d, obj=%p\n", v(x)->type, (void*)x.u);
|
||||
fprintf(stderr, "bad array tag/type: type=%d, obj=%p\n", v(x)->type, TOPTR(void, x.u));
|
||||
PRINT_ID(v(x));
|
||||
fprint(stderr, x);
|
||||
err("\n");
|
||||
|
||||
4
src/h.h
4
src/h.h
@ -368,8 +368,8 @@ extern B thrownMsg;
|
||||
void freeThrown(void);
|
||||
|
||||
|
||||
|
||||
#define c(T,X) ((T*)((X).u&0xFFFFFFFFFFFFull))
|
||||
#define TOPTR(T,X) ((T*)(uintptr_t)(X))
|
||||
#define c(T,X) TOPTR(T, (X).u&0xFFFFFFFFFFFFull)
|
||||
#define v(X) c(Value, X)
|
||||
#define a(X) c(Arr , X)
|
||||
|
||||
|
||||
20
src/vm.c
20
src/vm.c
@ -781,9 +781,9 @@ B evalBC(Body* b, Scope* sc, Block* bl) { // doesn't consume
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DFND0: { GS_UPD;POS_UPD; ADD(evalFunBlock((Block*)L64, sc)); break; }
|
||||
case DFND1: { GS_UPD;POS_UPD; ADD(m_md1Block ((Block*)L64, sc)); break; }
|
||||
case DFND2: { GS_UPD;POS_UPD; ADD(m_md2Block ((Block*)L64, sc)); break; }
|
||||
case DFND0: { GS_UPD;POS_UPD; ADD(evalFunBlock(TOPTR(Block,L64), sc)); break; }
|
||||
case DFND1: { GS_UPD;POS_UPD; ADD(m_md1Block (TOPTR(Block,L64), sc)); break; }
|
||||
case DFND2: { GS_UPD;POS_UPD; ADD(m_md2Block (TOPTR(Block,L64), sc)); break; }
|
||||
|
||||
case MD1C: { P(f)P(m) GS_UPD;POS_UPD; ADD(m1_d (m,f )); break; }
|
||||
case MD2C: { P(f)P(m)P(g) GS_UPD;POS_UPD; ADD(m2_d (m,f,g)); break; }
|
||||
@ -849,20 +849,20 @@ B evalBC(Body* b, Scope* sc, Block* bl) { // doesn't consume
|
||||
|
||||
case SETH1:{ P(s) P(x) GS_UPD; POS_UPD; u64 v1 = L64;
|
||||
bool ok = v_seth(pscs, s, x); dec(x); dec(s);
|
||||
if (!ok) { return gotoNextBody(bl, sc, (Body*)v1); }
|
||||
if (!ok) { return gotoNextBody(bl, sc, TOPTR(Body, v1)); }
|
||||
break;
|
||||
}
|
||||
case SETH2:{ P(s) P(x) GS_UPD; POS_UPD; u64 v1 = L64; u64 v2 = L64;
|
||||
bool ok = v_seth(pscs, s, x); dec(x); dec(s);
|
||||
if (!ok) { return gotoNextBody(bl, sc, (Body*)(q_N(sc->vars[2])? v1 : v2)); }
|
||||
if (!ok) { return gotoNextBody(bl, sc, TOPTR(Body, q_N(sc->vars[2])? v1 : v2)); }
|
||||
break;
|
||||
}
|
||||
case PRED1:{ P(x) GS_UPD; POS_UPD; u64 v1 = L64;
|
||||
if (!o2b(x)) { return gotoNextBody(bl, sc, (Body*)v1); }
|
||||
if (!o2b(x)) { return gotoNextBody(bl, sc, TOPTR(Body, v1)); }
|
||||
break;
|
||||
}
|
||||
case PRED2:{ P(x) GS_UPD; POS_UPD; u64 v1 = L64; u64 v2 = L64;
|
||||
if (!o2b(x)) { return gotoNextBody(bl, sc, (Body*)(q_N(sc->vars[2])? v1 : v2)); }
|
||||
if (!o2b(x)) { return gotoNextBody(bl, sc, TOPTR(Body, q_N(sc->vars[2])? v1 : v2)); }
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1374,7 +1374,7 @@ NOINLINE void vm_pst(Env* s, Env* e) { // e not included
|
||||
i = 10;
|
||||
}
|
||||
Comp* comp = c->sc->body->bl->comp;
|
||||
i32 bcPos = c->pos&1? ((u32)c->pos)>>1 : BCPOS(c->sc->body, (u32*)c->pos);
|
||||
i32 bcPos = c->pos&1? ((u32)c->pos)>>1 : BCPOS(c->sc->body, TOPTR(u32, c->pos));
|
||||
vm_printPos(comp, bcPos, i);
|
||||
i--;
|
||||
}
|
||||
@ -1407,7 +1407,7 @@ void profiler_sigHandler(int x) {
|
||||
if (envCurr<envStart) return;
|
||||
Env e = *envCurr;
|
||||
Comp* comp = e.sc->body->bl->comp;
|
||||
i32 bcPos = e.pos&1? ((u32)e.pos)>>1 : BCPOS(e.sc->body, (u32*)e.pos);
|
||||
i32 bcPos = e.pos&1? ((u32)e.pos)>>1 : BCPOS(e.sc->body, TOPTR(u32, e.pos));
|
||||
|
||||
*profiler_buf_c = (Profiler_ent){.comp = ptr_inc(comp), .bcPos = bcPos};
|
||||
profiler_buf_c = bn;
|
||||
@ -1572,7 +1572,7 @@ void unwindEnv(Env* envNew) {
|
||||
while (envCurr!=envNew) {
|
||||
// if ((envCurr->pos&1) == 0) printf("unwinding %ld\n", (u32*)envCurr->pos - (u32*)envCurr->sc->body->bl->bc);
|
||||
// else printf("not unwinding %ld", envCurr->pos>>1);
|
||||
if ((envCurr->pos&1) == 0) envCurr->pos = (BCPOS(envCurr->sc->body, (u32*)envCurr->pos)<<1) | 1;
|
||||
if ((envCurr->pos&1) == 0) envCurr->pos = (BCPOS(envCurr->sc->body, TOPTR(u32, envCurr->pos))<<1) | 1;
|
||||
envCurr--;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user