From cc36fd0d7cfd454eee3da0545b1a3a00c5a2a0c6 Mon Sep 17 00:00:00 2001 From: dzaima Date: Mon, 24 May 2021 13:18:01 +0300 Subject: [PATCH] assert partial HArrs are finished --- obj/subMakefile | 2 +- src/core/harr.c | 4 ++-- src/core/harr.h | 3 +++ src/h.h | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/obj/subMakefile b/obj/subMakefile index f46a997b..7acc949f 100644 --- a/obj/subMakefile +++ b/obj/subMakefile @@ -13,7 +13,7 @@ rtperf: FLAGS=-O3 -DRT_PERF rtperf: gen heapverify: FLAGS=-DDEBUG -g -DHEAP_VERIFY heapverify: gen -rtverify: FLAGS=-O3 -DRT_VERIFY +rtverify: FLAGS=-DDEBUG -O3 -DRT_VERIFY rtverify: gen gen: builtins core base utils diff --git a/src/core/harr.c b/src/core/harr.c index 30e616c2..13fb437f 100644 --- a/src/core/harr.c +++ b/src/core/harr.c @@ -135,10 +135,10 @@ void harrP_print(B x) { B* p = c(HArr,x)->a; usz am = *c(HArr,x)->sh; usz ia = a(x)->ia; - printf("(partial HArr %d/%d %p %p: ?⥊⟨", am, ia, c(HArr,x)->sh, &a(x)->ia); + printf("(partial HArr %d/%d: ⟨", am, ia); for (usz i = 0; i < ia; i++) { if (i) printf(", "); - if (i>=am) printf("(…)\n"); + if (i>=am) printf("?"); else print(p[i]); } printf("⟩)"); diff --git a/src/core/harr.h b/src/core/harr.h index 0c8dc96d..753a2a89 100644 --- a/src/core/harr.h +++ b/src/core/harr.h @@ -28,6 +28,7 @@ static HArr_p m_harrs(usz ia, usz* ctr) { // writes just ia return harr_parts(r); } static B harr_fv(HArr_p p) { VTY(p.b, t_harrPartial); + assert(p.c->ia == *p.c->sh); p.c->type = t_harr; p.c->sh = &p.c->ia; srnk(p.b, 1); @@ -35,12 +36,14 @@ static B harr_fv(HArr_p p) { VTY(p.b, t_harrPartial); return p.b; } static B harr_fc(HArr_p p, B x) { VTY(p.b, t_harrPartial); + assert(p.c->ia == *p.c->sh); p.c->type = t_harr; arr_shCopy(p.b, x); gsPop(); return p.b; } static B harr_fcd(HArr_p p, B x) { VTY(p.b, t_harrPartial); + assert(p.c->ia == *p.c->sh); p.c->type = t_harr; arr_shCopy(p.b, x); dec(x); diff --git a/src/h.h b/src/h.h index 472bcde1..c1e9703c 100644 --- a/src/h.h +++ b/src/h.h @@ -86,7 +86,7 @@ typedef u8 ur; #define UR_MAX 255 #define CTR_FOR(F) -#define CTR_PRINT(N) printf(#N ": %lu\n", N); +#define CTR_PRINT(N) if(N) printf(#N ": %lu\n", N); #define F(N) extern u64 N; CTR_FOR(F) #undef F