From ade183e635301e99de34d35b5f16211d7218bb24 Mon Sep 17 00:00:00 2001 From: dzaima Date: Thu, 6 Jan 2022 01:17:10 +0200 Subject: [PATCH] bunch of header file changes --- src/builtins.h | 6 +++--- src/core/chrarr.h | 13 +++++++------ src/core/numarr.h | 11 +---------- src/core/stuff.c | 8 ++++++++ src/core/stuff.h | 9 +++++---- src/core/tyarrTemplate.h | 2 ++ src/h.h | 1 - src/jit/nvm_x86_64.c | 1 + src/opt/mm_2buddy.c | 1 + src/opt/mm_buddy.c | 1 + src/opt/mm_buddy.h | 1 - src/vm.h | 1 + 12 files changed, 30 insertions(+), 25 deletions(-) diff --git a/src/builtins.h b/src/builtins.h index fa414c42..bb29e570 100644 --- a/src/builtins.h +++ b/src/builtins.h @@ -38,7 +38,6 @@ enum PrimNumbers { /* ´˝`∘○⊸⟜⌾⊘◶ */ n_fold , n_insert , n_scan , n_atop , n_over , n_before , n_after , n_under, n_val , n_cond, /* ⎉⚇⍟⎊ */ n_rank , n_depth , n_repeat, n_catch }; -extern B rt_invFnReg, rt_invFnSwap; extern BB2B rt_invFnRegFn; extern BB2B rt_invFnSwapFn; @@ -75,9 +74,10 @@ static inline bool isImpureBuiltin(B x) { return false; } - -#define F(N,X) extern B bi_##N; +extern B +#define F(N,X) bi_##N, FOR_PFN(F,F,F) FOR_PM1(F,F,F) FOR_PM2(F,F,F) #undef F +rt_invFnReg, rt_invFnSwap; \ No newline at end of file diff --git a/src/core/chrarr.h b/src/core/chrarr.h index 62f20fb4..2eaab6ec 100644 --- a/src/core/chrarr.h +++ b/src/core/chrarr.h @@ -1,6 +1,6 @@ -#define C8Atom u8 -#define C16Atom u16 -#define C32Atom u32 +#define c8 u8 +#define c16 u16 +#define c32 u32 #define TU C8 #define TP(W,X) W##c8##X @@ -11,9 +11,10 @@ #define TU C32 #define TP(W,X) W##c32##X #include "tyarrTemplate.h" -#define C8Arr TyArr -#define C16Arr TyArr -#define C32Arr TyArr + +#undef c8 // still not sure if i want these +#undef c16 +#undef c32 B m_str8(usz sz, char* s); diff --git a/src/core/numarr.h b/src/core/numarr.h index ba709bf1..3709a21b 100644 --- a/src/core/numarr.h +++ b/src/core/numarr.h @@ -1,8 +1,3 @@ -#define I8Atom i8 -#define I16Atom i16 -#define I32Atom i32 -#define F64Atom f64 - typedef struct TyArr { struct Arr; char a[]; @@ -24,11 +19,7 @@ typedef struct TySlice { #define TU F64 #define TP(W,X) W##f64##X #include "tyarrTemplate.h" -#define I8Arr TyArr -#define I16Arr TyArr -#define I32Arr TyArr -#define F64Arr TyArr -#define BitArr TyArr +typedef TyArr BitArr; // bit array stuff #define BIT_N(IA) (((IA)+63) >> 6) // u64 count needed to store IA bits diff --git a/src/core/stuff.c b/src/core/stuff.c index 28436458..f2c1f12f 100644 --- a/src/core/stuff.c +++ b/src/core/stuff.c @@ -1,3 +1,4 @@ +#include #include "../core.h" #include "../utils/mut.h" #include "../utils/utf.h" @@ -43,6 +44,13 @@ NOINLINE B m1c1_bad(Md1D* d, B x) { thrM("This 1-modifier can't be called m NOINLINE B m1c2_bad(Md1D* d, B w, B x) { thrM("This 1-modifier can't be called dyadically"); } NOINLINE B m2c1_bad(Md2D* d, B x) { thrM("This 2-modifier can't be called monadically"); } NOINLINE B m2c2_bad(Md2D* d, B w, B x) { thrM("This 2-modifier can't be called dyadically"); } + +NOINLINE B md_c1(B t, B x) { thrM("Cannot call a modifier"); } +NOINLINE B md_c2(B t, B w, B x) { thrM("Cannot call a modifier"); } +NOINLINE B arr_c1(B t, B x) { return inc(t); } +NOINLINE B arr_c2(B t, B w, B x) { return inc(t); } + + extern B rt_under, bi_before; static B rtUnder_c1(B f, B g, B x) { // consumes x B fn = m2_d(inc(rt_under), inc(f), inc(g)); diff --git a/src/core/stuff.h b/src/core/stuff.h index 03664a5f..63cc431a 100644 --- a/src/core/stuff.h +++ b/src/core/stuff.h @@ -207,10 +207,11 @@ NORETURN B m1c1_bad(Md1D* d, B x); NORETURN B m1c2_bad(Md1D* d, B w, B x); NORETURN B m2c1_bad(Md2D* d, B x); NORETURN B m2c2_bad(Md2D* d, B w, B x); -static B md_c1(B t, B x) { thrM("Cannot call a modifier"); } -static B md_c2(B t, B w, B x) { thrM("Cannot call a modifier"); } -static B arr_c1(B t, B x) { return inc(t); } -static B arr_c2(B t, B w, B x) { return inc(t); } + +B md_c1(B t, B x); +B md_c2(B t, B w, B x); +B arr_c1(B t, B x); +B arr_c2(B t, B w, B x); static BB2B c1fn(B f) { if (isFun(f)) return c(Fun,f)->c1; if (isMd(f)) return md_c1; diff --git a/src/core/tyarrTemplate.h b/src/core/tyarrTemplate.h index fd6a5e59..a5029ece 100644 --- a/src/core/tyarrTemplate.h +++ b/src/core/tyarrTemplate.h @@ -1,6 +1,8 @@ #define T_ARR TP(t_,arr) #define T_SLICE TP(t_,slice) #define TEl JOIN(TU,Atom) +typedef TyArr JOIN(TU,Arr); +typedef TP(,) JOIN(TU,Atom); static B TP(m_,arrv) (TEl** p, usz ia) { TyArr* r = m_arr(TYARR_SZ2(TU,ia), T_ARR, ia); diff --git a/src/h.h b/src/h.h index 299f494b..73353cf5 100644 --- a/src/h.h +++ b/src/h.h @@ -70,7 +70,6 @@ #include #include #include -#include #include #ifdef HEAP_VERIFY #undef CATCH_ERRORS diff --git a/src/jit/nvm_x86_64.c b/src/jit/nvm_x86_64.c index 26966986..5aaf4e81 100644 --- a/src/jit/nvm_x86_64.c +++ b/src/jit/nvm_x86_64.c @@ -1,3 +1,4 @@ +#include #include "../core.h" #include "../core/gstack.h" #include "../ns.h" diff --git a/src/opt/mm_2buddy.c b/src/opt/mm_2buddy.c index 529b999a..53c5bd6e 100644 --- a/src/opt/mm_2buddy.c +++ b/src/opt/mm_2buddy.c @@ -1,3 +1,4 @@ +#include #include "gc.c" #ifdef OBJ_COUNTER diff --git a/src/opt/mm_buddy.c b/src/opt/mm_buddy.c index cff454c0..701f9ff3 100644 --- a/src/opt/mm_buddy.c +++ b/src/opt/mm_buddy.c @@ -1,3 +1,4 @@ +#include #include "gc.c" #ifdef OBJ_COUNTER diff --git a/src/opt/mm_buddy.h b/src/opt/mm_buddy.h index 026c5d2f..b5121510 100644 --- a/src/opt/mm_buddy.h +++ b/src/opt/mm_buddy.h @@ -1,5 +1,4 @@ #include "gc.h" -#include typedef struct EmptyValue EmptyValue; struct EmptyValue { // needs set: mmInfo; type=t_empty; next; everything else can be garbage diff --git a/src/vm.h b/src/vm.h index 70c17dba..11270cd4 100644 --- a/src/vm.h +++ b/src/vm.h @@ -1,4 +1,5 @@ #pragma once +#include #if (defined(__x86_64) || defined(__amd64__)) && defined(MAP_32BIT) && MM!=0