enum of primitive numbering
This commit is contained in:
parent
dd3965cb3c
commit
8cfbaf8b30
@ -25,6 +25,16 @@
|
||||
/* everything before the definition of •_while_ is defined to be pure, and everything after is not */ \
|
||||
/*md2.c*/ A(while,"•_while_")
|
||||
|
||||
enum PrimNumbers {
|
||||
/* +-×÷⋆√⌊⌈|¬ */ n_add , n_sub , n_mul , n_div , n_pow , n_root , n_floor , n_ceil , n_stile , n_not,
|
||||
/* ∧∨<>≠=≤≥≡≢ */ n_and , n_or , n_lt , n_gt , n_ne , n_eq , n_le , n_ge , n_feq , n_fne,
|
||||
/* ⊣⊢⥊∾≍⋈↑↓↕« */ n_ltack , n_rtack , n_shape , n_join , n_couple , n_pair , n_take , n_drop , n_ud , n_shifta,
|
||||
/* »⌽⍉/⍋⍒⊏⊑⊐⊒ */ n_shiftb , n_reverse, n_transp, n_slash, n_gradeUp, n_gradeDown, n_select, n_pick , n_indexOf, n_count,
|
||||
/* ∊⍷⊔!˙˜˘¨⌜⁼ */ n_memberOf, n_find , n_group , n_asrt , n_const , n_swap , n_cell , n_each , n_tbl , n_undo,
|
||||
/* ´˝`∘○⊸⟜⌾⊘◶ */ n_fold , n_reduce , n_scan , n_atop , n_over , n_before , n_after , n_under, n_val , n_cond,
|
||||
/* ⎉⚇⍟⎊ */ n_cells , n_depth2 , n_repeat, n_catch
|
||||
};
|
||||
|
||||
enum PrimFns { pf_none,
|
||||
#define F(N,X) pf_##N,
|
||||
FOR_PFN(F,F,F)
|
||||
|
||||
@ -107,26 +107,26 @@ B scan_c1(Md1D* d, B x) { B f = d->f;
|
||||
u8 xe = TI(x,elType);
|
||||
if (xr==1 && xe<=el_f64 && isFun(f) && v(f)->flags) {
|
||||
u8 rtid = v(f)->flags-1;
|
||||
if (rtid==0) { // +
|
||||
if (rtid==n_add) { // +
|
||||
if (ia<I32_MAX) \
|
||||
if (xe==el_bit) { u64* xp=bitarr_ptr(x); i32* rp; B r=m_i32arrv(&rp, ia); i32 c=0; for (usz i=0; i<ia; i++) { c+= bitp_get(xp,i); rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i8 ) { i8* xp=i8any_ptr (x); i32* rp; B r=m_i32arrv(&rp, ia); i32 c=0; for (usz i=0; i<ia; i++) { if(addOn(c,xp[i]))goto base; rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i16) { i16* xp=i16any_ptr(x); i32* rp; B r=m_i32arrv(&rp, ia); i32 c=0; for (usz i=0; i<ia; i++) { if(addOn(c,xp[i]))goto base; rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i32) { i32* xp=i32any_ptr(x); i32* rp; B r=m_i32arrv(&rp, ia); i32 c=0; for (usz i=0; i<ia; i++) { if(addOn(c,xp[i]))goto base; rp[i]=c; } dec(x); return r; }
|
||||
}
|
||||
if (rtid==7) { // ⌈
|
||||
if (rtid==n_ceil) { // ⌈
|
||||
if (xe==el_i8 ) { i8* xp=i8any_ptr (x); i8* rp; B r=m_i8arrv (&rp, ia); i8 c=I8_MIN ; for (usz i=0; i<ia; i++) { if (xp[i]>c)c=xp[i]; rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i16) { i16* xp=i16any_ptr(x); i16* rp; B r=m_i16arrv(&rp, ia); i16 c=I16_MIN; for (usz i=0; i<ia; i++) { if (xp[i]>c)c=xp[i]; rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i32) { i32* xp=i32any_ptr(x); i32* rp; B r=m_i32arrv(&rp, ia); i32 c=I32_MIN; for (usz i=0; i<ia; i++) { if (xp[i]>c)c=xp[i]; rp[i]=c; } dec(x); return r; }
|
||||
}
|
||||
if (rtid==14) { // ≠
|
||||
if (rtid==n_ne) { // ≠
|
||||
if (xe==el_bit) return scan_ne(0, x, ia);
|
||||
f64 x0 = IGetU(x,0).f; if (x0!=0 && x0!=1) goto base;
|
||||
if (xe==el_i8 ) { i8* xp=i8any_ptr (x); u64* rp; B r=m_bitarrv(&rp,ia); bool c=x0; rp[0]=c; for (usz i=1; i<ia; i++) { c = c!=xp[i]; bitp_set(rp,i,c); } dec(x); return r; }
|
||||
if (xe==el_i16) { i16* xp=i16any_ptr(x); u64* rp; B r=m_bitarrv(&rp,ia); bool c=x0; rp[0]=c; for (usz i=1; i<ia; i++) { c = c!=xp[i]; bitp_set(rp,i,c); } dec(x); return r; }
|
||||
if (xe==el_i32) { i32* xp=i32any_ptr(x); u64* rp; B r=m_bitarrv(&rp,ia); bool c=x0; rp[0]=c; for (usz i=1; i<ia; i++) { c = c!=xp[i]; bitp_set(rp,i,c); } dec(x); return r; }
|
||||
}
|
||||
if (rtid==11) { // ∨
|
||||
if (rtid==n_or) { // ∨
|
||||
if (xe==el_bit) { u64* xp=bitarr_ptr(x); u64* rp; B r=m_bitarrv(&rp,ia); bool c=0; for (usz i=0; i<ia; i++) { c|= bitp_get(xp,i); bitp_set(rp,i,c); } dec(x); return r; }
|
||||
if (xe==el_i8 ) { i8* xp=i8any_ptr (x); u64* rp; B r=m_bitarrv(&rp,ia); bool c=0; for (usz i=0; i<ia; i++) { if ((xp[i]&1)!=xp[i])goto base; c|=xp[i]; bitp_set(rp,i,c); } dec(x); return r; }
|
||||
if (xe==el_i16) { i16* xp=i16any_ptr(x); u64* rp; B r=m_bitarrv(&rp,ia); bool c=0; for (usz i=0; i<ia; i++) { if ((xp[i]&1)!=xp[i])goto base; c|=xp[i]; bitp_set(rp,i,c); } dec(x); return r; }
|
||||
@ -160,18 +160,18 @@ B scan_c2(Md1D* d, B w, B x) { B f = d->f;
|
||||
if (xr==1 && q_i32(w) && xe<el_f64 && isFun(f) && v(f)->flags) {
|
||||
u8 rtid = v(f)->flags-1;
|
||||
i32 wv = o2iu(w);
|
||||
if (rtid==0) { // +
|
||||
if (rtid==n_add) { // +
|
||||
if (xe==el_bit) { u64* xp=bitarr_ptr(x); i32* rp; B r=m_i32arrv(&rp, ia); i64 c=wv; for (usz i=0; i<ia; i++) { c+= bitp_get(xp,i); rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i8 ) { i8* xp=i8any_ptr (x); i32* rp; B r=m_i32arrv(&rp, ia); i32 c=wv; for (usz i=0; i<ia; i++) { if(addOn(c,xp[i]))goto base; rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i16) { i16* xp=i16any_ptr(x); i32* rp; B r=m_i32arrv(&rp, ia); i32 c=wv; for (usz i=0; i<ia; i++) { if(addOn(c,xp[i]))goto base; rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i32) { i32* xp=i32any_ptr(x); i32* rp; B r=m_i32arrv(&rp, ia); i32 c=wv; for (usz i=0; i<ia; i++) { if(addOn(c,xp[i]))goto base; rp[i]=c; } dec(x); return r; }
|
||||
}
|
||||
if (rtid==7) { // ⌈
|
||||
if (rtid==n_ceil) { // ⌈
|
||||
if (xe==el_i8 && wv==(i8 )wv) { i8* xp=i8any_ptr (x); i8* rp; B r=m_i8arrv (&rp, ia); i8 c=wv; for (usz i=0; i<ia; i++) { if (xp[i]>c)c=xp[i]; rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i16 && wv==(i16)wv) { i16* xp=i16any_ptr(x); i16* rp; B r=m_i16arrv(&rp, ia); i16 c=wv; for (usz i=0; i<ia; i++) { if (xp[i]>c)c=xp[i]; rp[i]=c; } dec(x); return r; }
|
||||
if (xe==el_i32 && wv==(i32)wv) { i32* xp=i32any_ptr(x); i32* rp; B r=m_i32arrv(&rp, ia); i32 c=wv; for (usz i=0; i<ia; i++) { if (xp[i]>c)c=xp[i]; rp[i]=c; } dec(x); return r; }
|
||||
}
|
||||
if (rtid==14) { // ≠
|
||||
if (rtid==n_ne) { // ≠
|
||||
if (!q_ibit(wv)) goto base; bool c=wv;
|
||||
if (xe==el_bit) return scan_ne(-(u64)wv, x, ia);
|
||||
if (xe==el_i8 ) { i8* xp=i8any_ptr (x); u64* rp; B r=m_bitarrv(&rp, ia); for (usz i=0; i<ia; i++) { c^= xp[i]; bitp_set(rp,i,c); } dec(x); return r; }
|
||||
@ -219,31 +219,31 @@ B fold_c1(Md1D* d, B x) { B f = d->f;
|
||||
u8 xe = TI(x,elType);
|
||||
if (isFun(f) && v(f)->flags && xe<=el_f64) {
|
||||
u8 rtid = v(f)->flags-1;
|
||||
if (rtid==0) { // +
|
||||
if (rtid==n_add) { // +
|
||||
if (xe==el_bit) { B r = m_f64(bit_sum(bitarr_ptr(x), ia)); dec(x); return r; }
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); i64 c=0; for (usz i=0; i<ia; i++) c+= xp[i]; dec(x); return m_f64(c); } // won't worry about 64TB array sum float inaccuracy for now
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); i32 c=0; for (usz i=0; i<ia; i++) if (addOn(c,xp[i]))goto base; dec(x); return m_i32(c); }
|
||||
if (xe==el_i32) { i32* xp = i32any_ptr(x); i32 c=0; for (usz i=0; i<ia; i++) if (addOn(c,xp[i]))goto base; dec(x); return m_i32(c); }
|
||||
if (xe==el_f64) { f64* xp = f64any_ptr(x); f64 c=0; for (usz i=0; i<ia; i++) c+= xp[i]; dec(x); return m_f64(c); }
|
||||
}
|
||||
if (rtid==2 | rtid==10) { // ×/∧
|
||||
if (rtid==n_mul | rtid==n_and) { // ×/∧
|
||||
if (xe==el_bit) { u64* xp = bitarr_ptr(x); bool r=1; for (usz i=0; i<(ia>>6); i++) if (~xp[i]){r=0;break;} if(~bitp_l1(xp,ia))r=0; dec(x);return m_i32(r); }
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); i32 c=1; for (usz i=0; i<ia; i++) if (mulOn(c,xp[i]))goto base; dec(x); return m_f64(c); }
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); i32 c=1; for (usz i=0; i<ia; i++) if (mulOn(c,xp[i]))goto base; dec(x); return m_i32(c); }
|
||||
if (xe==el_i32) { i32* xp = i32any_ptr(x); i32 c=1; for (usz i=0; i<ia; i++) if (mulOn(c,xp[i]))goto base; dec(x); return m_i32(c); }
|
||||
if (xe==el_f64) { f64* xp = f64any_ptr(x); f64 c=1; for (usz i=0; i<ia; i++) c*= xp[i]; dec(x); return m_f64(c); }
|
||||
}
|
||||
if (rtid==6) { // ⌊
|
||||
if (rtid==n_floor) { // ⌊
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); i8 c=I8_MAX ; for (usz i=0; i<ia; i++) if (xp[i]<c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); i16 c=I16_MAX; for (usz i=0; i<ia; i++) if (xp[i]<c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
if (xe==el_i32) { i32* xp = i32any_ptr(x); i32 c=I32_MAX; for (usz i=0; i<ia; i++) if (xp[i]<c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
}
|
||||
if (rtid==7) { // ⌈
|
||||
if (rtid==n_ceil) { // ⌈
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); i8 c=I8_MIN ; for (usz i=0; i<ia; i++) if (xp[i]>c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); i16 c=I16_MIN; for (usz i=0; i<ia; i++) if (xp[i]>c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
if (xe==el_i32) { i32* xp = i32any_ptr(x); i32 c=I32_MIN; for (usz i=0; i<ia; i++) if (xp[i]>c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
}
|
||||
if (rtid==11) { // ∨
|
||||
if (rtid==n_or) { // ∨
|
||||
if (xe==el_bit) { u64* xp = bitarr_ptr(x); bool r=0; for (usz i=0; i<(ia>>6); i++) if(xp[i]){r=1;break;} if(bitp_l0(xp,ia))r=1;dec(x); return m_i32(r); }
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); bool r=0; for (usz i=0; i<ia; i++) { i8 c=xp[i]; if (c!=0&&c!=1)goto base; r|=c; } dec(x); return m_i32(r); }
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); bool r=0; for (usz i=0; i<ia; i++) { i16 c=xp[i]; if (c!=0&&c!=1)goto base; r|=c; } dec(x); return m_i32(r); }
|
||||
@ -274,29 +274,29 @@ B fold_c2(Md1D* d, B w, B x) { B f = d->f;
|
||||
if (q_i32(w) && isFun(f) && v(f)->flags && xe<el_f64) {
|
||||
i32 wi = o2iu(w);
|
||||
u8 rtid = v(f)->flags-1;
|
||||
if (rtid==0) { // +
|
||||
if (rtid==n_add) { // +
|
||||
if (xe==el_bit) { B r = m_f64(wi + bit_sum(bitarr_ptr(x), ia)); dec(x); return r; }
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); i64 c=wi; for (usz i=0; i<ia; i++) c+=xp[i]; dec(x); return m_f64(c); }
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); i32 c=wi; for (usz i=0; i<ia; i++) if (addOn(c,xp[i]))goto base; dec(x); return m_i32(c); }
|
||||
if (xe==el_i32) { i32* xp = i32any_ptr(x); i32 c=wi; for (usz i=0; i<ia; i++) if (addOn(c,xp[i]))goto base; dec(x); return m_i32(c); }
|
||||
}
|
||||
if (rtid==2 | rtid==10) { // ×/∧
|
||||
if (rtid==n_mul | rtid==n_and) { // ×/∧
|
||||
if (xe==el_bit) { u64* xp = bitarr_ptr(x); bool r=wi; if (r) { for (usz i=0; i<(ia>>6); i++) if (~xp[i]){r=0;break;} if(~bitp_l1(xp,ia))r=0; } dec(x); return m_i32(r); }
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); i32 c=wi; for (usz i=0; i<ia; i++) if (mulOn(c,xp[i]))goto base; dec(x); return m_i32(c); }
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); i32 c=wi; for (usz i=0; i<ia; i++) if (mulOn(c,xp[i]))goto base; dec(x); return m_i32(c); }
|
||||
if (xe==el_i32) { i32* xp = i32any_ptr(x); i32 c=wi; for (usz i=0; i<ia; i++) if (mulOn(c,xp[i]))goto base; dec(x); return m_i32(c); }
|
||||
}
|
||||
if (rtid==6) { // ⌊
|
||||
if (rtid==n_floor) { // ⌊
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); i32 c=wi; for (usz i=0; i<ia; i++) if (xp[i]<c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); i32 c=wi; for (usz i=0; i<ia; i++) if (xp[i]<c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
if (xe==el_i32) { i32* xp = i32any_ptr(x); i32 c=wi; for (usz i=0; i<ia; i++) if (xp[i]<c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
}
|
||||
if (rtid==7) { // ⌈
|
||||
if (rtid==n_ceil) { // ⌈
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); i32 c=wi; for (usz i=0; i<ia; i++) if (xp[i]>c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); i32 c=wi; for (usz i=0; i<ia; i++) if (xp[i]>c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
if (xe==el_i32) { i32* xp = i32any_ptr(x); i32 c=wi; for (usz i=0; i<ia; i++) if (xp[i]>c) c=xp[i]; dec(x); return m_i32(c); }
|
||||
}
|
||||
if (rtid==11 && (wi&1)==wi) { // ∨
|
||||
if (rtid==n_or && (wi&1)==wi) { // ∨
|
||||
if (xe==el_bit) { u64* xp = bitarr_ptr(x); bool r=wi; if (!r) { for (usz i=0; i<(ia>>6); i++) if(xp[i]){r=1;break;} if(bitp_l0(xp,ia))r=1; } dec(x); return m_i32(r); }
|
||||
if (xe==el_i8 ) { i8* xp = i8any_ptr (x); bool q=wi; for (usz i=0; i<ia; i++) { i8 c=xp[i]; if (c!=0&&c!=1)goto base; q|=c; } dec(x); return m_i32(q); }
|
||||
if (xe==el_i16) { i16* xp = i16any_ptr(x); bool q=wi; for (usz i=0; i<ia; i++) { i16 c=xp[i]; if (c!=0&&c!=1)goto base; q|=c; } dec(x); return m_i32(q); }
|
||||
|
||||
@ -128,20 +128,20 @@ B shape_c2(B t, B w, B x) {
|
||||
}
|
||||
if (bad && !good) thrM("⥊: 𝕨 too large");
|
||||
if (unkPos!=-1) {
|
||||
if (unkInd!=53 & unkInd!=6 & unkInd!=31 & unkInd!=26) thrM("⥊: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑");
|
||||
if (unkInd!=n_atop & unkInd!=n_floor & unkInd!=n_reverse & unkInd!=n_take) thrM("⥊: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑");
|
||||
if (nia==0) thrM("⥊: Can't compute axis when the rest of the shape is empty");
|
||||
i64 div = xia/nia;
|
||||
i64 mod = xia%nia;
|
||||
usz item;
|
||||
bool fill = false;
|
||||
if (unkInd == 53) {
|
||||
if (unkInd == n_atop) {
|
||||
if (mod!=0) thrM("⥊: Shape must be exact when reshaping with ∘");
|
||||
item = div;
|
||||
} else if (unkInd == 6) {
|
||||
} else if (unkInd == n_floor) {
|
||||
item = div;
|
||||
} else if (unkInd == 31) {
|
||||
} else if (unkInd == n_reverse) {
|
||||
item = mod? div+1 : div;
|
||||
} else if (unkInd == 26) {
|
||||
} else if (unkInd == n_take) {
|
||||
item = mod? div+1 : div;
|
||||
fill = true;
|
||||
} else UD;
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
#include "../core.h"
|
||||
#include "../nfns.h"
|
||||
#include "../builtins.h"
|
||||
|
||||
DEF_FREE(md1D) { dec(((Md1D*)x)->m1); dec(((Md1D*)x)->f); }
|
||||
DEF_FREE(md2D) { dec(((Md2D*)x)->m2); dec(((Md2D*)x)->f); dec(((Md2D*)x)->g); }
|
||||
@ -67,7 +68,7 @@ static B toConstant(B x) { // doesn't consume x
|
||||
if (v(x)->type == t_md1D) {
|
||||
Md1D* d = c(Md1D,x);
|
||||
B m1 = d->m1;
|
||||
if (v(m1)->type==t_md1BI && v(m1)->flags==45) return inc(d->f);
|
||||
if (v(m1)->type==t_md1BI && v(m1)->flags==n_const) return inc(d->f);
|
||||
}
|
||||
return bi_N;
|
||||
}
|
||||
|
||||
52
src/load.c
52
src/load.c
@ -224,13 +224,13 @@ void load_init() { // very last init function
|
||||
comp_currSrc = bi_N;
|
||||
gc_addFn(load_gcFn);
|
||||
B fruntime[] = {
|
||||
/* +-×÷⋆√⌊⌈|¬ */ bi_add , bi_sub , bi_mul , bi_div , bi_pow , bi_root , bi_floor , bi_ceil , bi_stile , bi_not,
|
||||
/* ∧∨<>≠=≤≥≡≢ */ bi_and , bi_or , bi_lt , bi_gt , bi_ne , bi_eq , bi_le , bi_ge , bi_feq , bi_fne,
|
||||
/* ⊣⊢⥊∾≍⋈↑↓↕« */ bi_ltack , bi_rtack , bi_shape , bi_join , bi_couple , bi_pair , bi_take , bi_drop , bi_ud , bi_shifta,
|
||||
/* »⌽⍉/⍋⍒⊏⊑⊐⊒ */ bi_shiftb , bi_reverse, bi_N , bi_slash, bi_gradeUp, bi_gradeDown, bi_select, bi_pick , bi_indexOf, bi_count,
|
||||
/* ∊⍷⊔!˙˜˘¨⌜⁼ */ bi_memberOf,bi_find , bi_group , bi_asrt , bi_const , bi_swap , bi_cell , bi_each , bi_tbl , bi_N,
|
||||
/* ´˝`∘○⊸⟜⌾⊘◶ */ bi_fold ,bi_N , bi_scan , bi_atop , bi_over , bi_before , bi_after , bi_under, bi_val , bi_cond,
|
||||
/* ⎉⚇⍟⎊ */ bi_N ,bi_N , bi_repeat, bi_catch
|
||||
/* +-×÷⋆√⌊⌈|¬ */ bi_add , bi_sub , bi_mul , bi_div , bi_pow , bi_root , bi_floor , bi_ceil , bi_stile , bi_not,
|
||||
/* ∧∨<>≠=≤≥≡≢ */ bi_and , bi_or , bi_lt , bi_gt , bi_ne , bi_eq , bi_le , bi_ge , bi_feq , bi_fne,
|
||||
/* ⊣⊢⥊∾≍⋈↑↓↕« */ bi_ltack , bi_rtack , bi_shape , bi_join , bi_couple , bi_pair , bi_take , bi_drop , bi_ud , bi_shifta,
|
||||
/* »⌽⍉/⍋⍒⊏⊑⊐⊒ */ bi_shiftb , bi_reverse, bi_N , bi_slash, bi_gradeUp, bi_gradeDown, bi_select, bi_pick , bi_indexOf, bi_count,
|
||||
/* ∊⍷⊔!˙˜˘¨⌜⁼ */ bi_memberOf, bi_find , bi_group , bi_asrt , bi_const , bi_swap , bi_cell , bi_each , bi_tbl , bi_N,
|
||||
/* ´˝`∘○⊸⟜⌾⊘◶ */ bi_fold , bi_N , bi_scan , bi_atop , bi_over , bi_before , bi_after , bi_under, bi_val , bi_cond,
|
||||
/* ⎉⚇⍟⎊ */ bi_N , bi_N , bi_repeat, bi_catch
|
||||
|
||||
};
|
||||
bool rtComplete[] = {
|
||||
@ -275,22 +275,22 @@ void load_init() { // very last init function
|
||||
HArr_p runtimeH = m_harrUc(rtObjRaw);
|
||||
SGet(rtObjRaw)
|
||||
|
||||
rt_undo = Get(rtObjRaw, 49); gc_add(rt_undo);
|
||||
rt_select = Get(rtObjRaw, 36); gc_add(rt_select);
|
||||
rt_slash = Get(rtObjRaw, 33); gc_add(rt_slash);
|
||||
rt_join = Get(rtObjRaw, 23); gc_add(rt_join);
|
||||
rt_ud = Get(rtObjRaw, 28); gc_add(rt_ud);
|
||||
rt_pick = Get(rtObjRaw, 37); gc_add(rt_pick);
|
||||
rt_take = Get(rtObjRaw, 26); gc_add(rt_take);
|
||||
rt_drop = Get(rtObjRaw, 27); gc_add(rt_drop);
|
||||
rt_group = Get(rtObjRaw, 42); gc_add(rt_group);
|
||||
rt_under = Get(rtObjRaw, 57); gc_add(rt_under);
|
||||
rt_reverse = Get(rtObjRaw, 31); gc_add(rt_reverse);
|
||||
rt_indexOf = Get(rtObjRaw, 38); gc_add(rt_indexOf);
|
||||
rt_count = Get(rtObjRaw, 39); gc_add(rt_count);
|
||||
rt_memberOf= Get(rtObjRaw, 40); gc_add(rt_memberOf);
|
||||
rt_find = Get(rtObjRaw, 41); gc_add(rt_find);
|
||||
rt_cell = Get(rtObjRaw, 46); gc_add(rt_cell);
|
||||
rt_undo = Get(rtObjRaw, n_undo ); gc_add(rt_undo);
|
||||
rt_select = Get(rtObjRaw, n_select ); gc_add(rt_select);
|
||||
rt_slash = Get(rtObjRaw, n_slash ); gc_add(rt_slash);
|
||||
rt_join = Get(rtObjRaw, n_join ); gc_add(rt_join);
|
||||
rt_ud = Get(rtObjRaw, n_ud ); gc_add(rt_ud);
|
||||
rt_pick = Get(rtObjRaw, n_pick ); gc_add(rt_pick);
|
||||
rt_take = Get(rtObjRaw, n_take ); gc_add(rt_take);
|
||||
rt_drop = Get(rtObjRaw, n_drop ); gc_add(rt_drop);
|
||||
rt_group = Get(rtObjRaw, n_group ); gc_add(rt_group);
|
||||
rt_under = Get(rtObjRaw, n_under ); gc_add(rt_under);
|
||||
rt_reverse = Get(rtObjRaw, n_reverse ); gc_add(rt_reverse);
|
||||
rt_indexOf = Get(rtObjRaw, n_indexOf ); gc_add(rt_indexOf);
|
||||
rt_count = Get(rtObjRaw, n_count ); gc_add(rt_count);
|
||||
rt_memberOf= Get(rtObjRaw, n_memberOf); gc_add(rt_memberOf);
|
||||
rt_find = Get(rtObjRaw, n_find ); gc_add(rt_find);
|
||||
rt_cell = Get(rtObjRaw, n_cell ); gc_add(rt_cell);
|
||||
|
||||
for (usz i = 0; i < rtLen; i++) {
|
||||
#ifdef RT_WRAP
|
||||
@ -343,12 +343,12 @@ void load_init() { // very last init function
|
||||
print_allocStats();
|
||||
exit(0);
|
||||
#else // use compiler
|
||||
B prevAsrt = runtime[43];
|
||||
runtime[43] = bi_casrt; // horrible but GC is off so it's fiiiiiine
|
||||
B prevAsrt = runtime[n_asrt];
|
||||
runtime[n_asrt] = bi_casrt; // horrible but GC is off so it's fiiiiiine
|
||||
Block* comp_b = load_compImport(
|
||||
#include "gen/compiler"
|
||||
);
|
||||
runtime[43] = prevAsrt;
|
||||
runtime[n_asrt] = prevAsrt;
|
||||
load_comp = m_funBlock(comp_b, 0); ptr_dec(comp_b);
|
||||
gc_add(load_comp);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user