clean up DEBUG_VM

This commit is contained in:
dzaima 2021-10-28 20:46:30 +03:00
parent dba145a14b
commit e526fede86

View File

@ -14,7 +14,8 @@
F(TR3D) F(SETN) F(SETU) F(SETM) F(SETC) F(POPS) F(DFND) F(FN1O) F(FN2O) F(CHKV) F(TR3O) \ F(TR3D) F(SETN) F(SETU) F(SETM) F(SETC) F(POPS) F(DFND) F(FN1O) F(FN2O) F(CHKV) F(TR3O) \
F(MD2R) F(VARO) F(VARM) F(VFYM) F(SETH) F(RETN) F(FLDO) F(FLDM) F(ALIM) F(RETD) F(SYSV) F(VARU) F(PRED) F(PRED1) F(PRED2) \ F(MD2R) F(VARO) F(VARM) F(VFYM) F(SETH) F(RETN) F(FLDO) F(FLDM) F(ALIM) F(RETD) F(SYSV) F(VARU) F(PRED) F(PRED1) F(PRED2) \
F(EXTO) F(EXTM) F(EXTU) F(ADDI) F(ADDU) F(FN1Ci)F(FN1Oi)F(FN2Ci)F(FN2Oi) \ F(EXTO) F(EXTM) F(EXTU) F(ADDI) F(ADDU) F(FN1Ci)F(FN1Oi)F(FN2Ci)F(FN2Oi) \
F(SETNi)F(SETUi)F(SETMi)F(SETCi)F(SETNv)F(SETUv)F(SETMv)F(SETCv)F(FAIL) F(SETNi)F(SETUi)F(SETMi)F(SETCi)F(SETNv)F(SETUv)F(SETMv)F(SETCv)F(FAIL) \
F(DFND0)F(DFND1)F(DFND2)
u32 bL_m[BC_SIZE]; u32 bL_m[BC_SIZE];
i32 sD_m[BC_SIZE]; i32 sD_m[BC_SIZE];
@ -28,26 +29,31 @@ char* bc_repr(u32* p) {
#undef F #undef F
} }
} }
void printBC(u32* p) { void printBC(u32* p, i32 w) {
printf("%s", bc_repr(p)); char* str = bc_repr(p);
printf("%s", str);
u32* n = nextBC(p); u32* n = nextBC(p);
p++; p++;
i64 am = n-p; i64 am = n-p;
i32 len = 0; i32 len = strlen(str);
for (i64 i = 0; i < am; i++) printf(" %d", p[i]); for (i64 i = 0; i < am; i++) printf(" %d", p[i]);
while(p!=n) { while(p!=n) {
i32 c = *p++; i32 c = *p++;
if (c<0) {
c = -c;
len++;
}
i64 pow = 10; i64 pow = 10;
i32 log = 1; i32 log = 1;
while (pow<=c) { pow*=10; log++; } while (pow<=c) { pow*=10; log++; }
len+= log+1; len+= log+1;
} }
len = 6-len; len = w-len;
while(len-->0) printf(" "); while(len-->0) putchar(' ');
} }
void printBCStream(u32* p) { void printBCStream(u32* p) {
while(true) { while(true) {
printBC(p); putchar(10); printBC(p, 10); putchar(10);
if (*p == RETD || *p == RETN) return; if (*p == RETD || *p == RETN) return;
p = nextBC(p); p = nextBC(p);
} }
@ -524,6 +530,7 @@ B evalBC(Block* bl, Body* b, Scope* sc) { // doesn't consume
i32 stackNum = bcDepth>>1; i32 stackNum = bcDepth>>1;
vmStack[stackNum] = -1; vmStack[stackNum] = -1;
printf("new eval\n"); printf("new eval\n");
B* origStack = gStack;
#endif #endif
B* objs = bl->comp->objs->a; B* objs = bl->comp->objs->a;
u32* bc = b->bc; u32* bc = b->bc;
@ -539,6 +546,7 @@ B evalBC(Block* bl, Body* b, Scope* sc) { // doesn't consume
#define P(N) B N=POP; #define P(N) B N=POP;
#define ADD(X) { B tr=X; *(gStack++) = tr; } #define ADD(X) { B tr=X; *(gStack++) = tr; }
#define PEEK(X) gStack[-(X)] #define PEEK(X) gStack[-(X)]
#define STACK_HEIGHT
#define GS_UPD #define GS_UPD
#else #else
B* lgStack = gStack; B* lgStack = gStack;
@ -561,8 +569,8 @@ B evalBC(Block* bl, Body* b, Scope* sc) { // doesn't consume
i32 bcPos = BCPOS(b,sbc); i32 bcPos = BCPOS(b,sbc);
vmStack[stackNum] = bcPos; vmStack[stackNum] = bcPos;
for(i32 i = 0; i < bcDepth; i++) printf(" "); for(i32 i = 0; i < bcDepth; i++) printf(" ");
printBC(sbc); printf("@%d << ", bcPos); printBC(sbc,20); printf("@%d in: ", bcPos);
for (i32 i = 0; i < b->maxStack; i++) { if(i)printf(""); print(gStack[i]); } putchar('\n'); fflush(stdout); for (i32 i = 0; i < lgStack-origStack; i++) { if(i)printf(""); print(origStack[i]); } putchar('\n'); fflush(stdout);
bcCtr++; bcCtr++;
for (i32 i = 0; i < sc->varAm; i++) VALIDATE(sc->vars[i]); for (i32 i = 0; i < sc->varAm; i++) VALIDATE(sc->vars[i]);
#endif #endif
@ -742,8 +750,8 @@ B evalBC(Block* bl, Body* b, Scope* sc) { // doesn't consume
} }
#ifdef DEBUG_VM #ifdef DEBUG_VM
for(i32 i = 0; i < bcDepth; i++) printf(" "); for(i32 i = 0; i < bcDepth; i++) printf(" ");
printBC(sbc); printf("@"N64d": ", BCPOS(b, sbc)); printBC(sbc,20); printf("@%d out: ", BCPOS(b, sbc));
for (i32 i = 0; i < b->maxStack; i++) { if(i)printf(""); print(gStack[i]); } putchar('\n'); fflush(stdout); for (i32 i = 0; i < lgStack-origStack; i++) { if(i)printf(""); print(origStack[i]); } putchar('\n'); fflush(stdout);
#endif #endif
} }
end:; end:;