From b51cf8cfc230492d53265031dcb920b25d99b88b Mon Sep 17 00:00:00 2001 From: dzaima Date: Sat, 19 Jun 2021 21:28:57 +0300 Subject: [PATCH] fix CHKV --- src/core/gstack.h | 3 --- src/vm.c | 4 +++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/core/gstack.h b/src/core/gstack.h index b5e84d88..a9676ccb 100644 --- a/src/core/gstack.h +++ b/src/core/gstack.h @@ -40,6 +40,3 @@ static inline void gsAdd(B x) { static inline B gsPop() { return *--gStack; } -static inline B gsGet(i32 p) { // p>0; 1 is the top item, etc - return gStack[-p]; -} diff --git a/src/vm.c b/src/vm.c index d0462084..a6dbc443 100644 --- a/src/vm.c +++ b/src/vm.c @@ -374,12 +374,14 @@ B evalBC(Body* b, Scope* sc) { // doesn't consume #define POP (*--gStack) #define P(N) B N=POP; #define ADD(X) { B tr=X; *(gStack++) = tr; } + #define PEEK(X) gStack[-(X)] #define GS_UPD #else B* lgStack = gStack; #define POP (*--lgStack) #define P(N) B N=POP; #define ADD(X) { *(lgStack++) = X; } // fine, as, if an error occurs, lgStack is ignored anyways + #define PEEK(X) lgStack[-(X)] #define GS_UPD { gStack = lgStack; } #endif #define L64 ({ u64 r = bc[0] | ((u64)bc[1])<<32; bc+= 2; r; }) @@ -535,7 +537,7 @@ B evalBC(Body* b, Scope* sc) { // doesn't consume } case RETN: goto end; case CHKV: { - if (isNothing(gsGet(1))) { GS_UPD; POS_UPD; thrM("Unexpected Nothing (·)"); } + if (isNothing(PEEK(1))) { GS_UPD; POS_UPD; thrM("Unexpected Nothing (·)"); } break; } // not implemented: VARO VARM VFYM SETH FLDM SYSV