From 6cf3ccb7d5ca9092af4566c37ea1eb777a5f172b Mon Sep 17 00:00:00 2001 From: dzaima Date: Sat, 11 Sep 2021 23:17:37 +0300 Subject: [PATCH] use new conversion functions --- src/builtins/internal.c | 14 +++++------ src/core/stuff.c | 56 +++++++++++++++++++++-------------------- 2 files changed, 36 insertions(+), 34 deletions(-) diff --git a/src/builtins/internal.c b/src/builtins/internal.c index e31ff912..db82404c 100644 --- a/src/builtins/internal.c +++ b/src/builtins/internal.c @@ -231,13 +231,13 @@ static B unshare(B x) { if (!isArr(x)) return x; usz xia = a(x)->ia; switch (v(x)->type) { - case t_i8arr: { i8 * rp; B r = m_i8arrc (&rp, x); memcpy(rp, i8arr_ptr (x), xia*1); return r; } - case t_i16arr: { i16* rp; B r = m_i16arrc(&rp, x); memcpy(rp, i16arr_ptr(x), xia*2); return r; } - case t_i32arr: { i32* rp; B r = m_i32arrc(&rp, x); memcpy(rp, i32arr_ptr(x), xia*4); return r; } - case t_c8arr: { u8 * rp; B r = m_c8arrc (&rp, x); memcpy(rp, c8arr_ptr (x), xia*1); return r; } - case t_c16arr: { u16* rp; B r = m_c16arrc(&rp, x); memcpy(rp, c16arr_ptr(x), xia*2); return r; } - case t_c32arr: { u32* rp; B r = m_c32arrc(&rp, x); memcpy(rp, c32arr_ptr(x), xia*4); return r; } - case t_f64arr: { f64* rp; B r = m_f64arrc(&rp, x); memcpy(rp, f64arr_ptr(x), xia*8); return r; } + case t_i8arr: return taga(cpyI8Arr (inc(x))); + case t_i16arr: return taga(cpyI16Arr(inc(x))); + case t_i32arr: return taga(cpyI32Arr(inc(x))); + case t_c8arr: return taga(cpyC8Arr (inc(x))); + case t_c16arr: return taga(cpyC16Arr(inc(x))); + case t_c32arr: return taga(cpyC32Arr(inc(x))); + case t_f64arr: return taga(cpyF64Arr(inc(x))); case t_harr: { HArr_p r = m_harrUc(x); B* xp = harr_ptr(x); diff --git a/src/core/stuff.c b/src/core/stuff.c index 6b4f4730..2a809308 100644 --- a/src/core/stuff.c +++ b/src/core/stuff.c @@ -493,37 +493,41 @@ B num_squeeze(B x) { if (c!=cf) return x; // already f64 or|= c<0?-c:c; } - if (or<=I8_MAX ) { i8* rp; B r = m_i8arrc (&rp, x); for (usz i=0;iia; @@ -539,19 +543,17 @@ B chr_squeeze(B x) { if (!isC32(xp[i])) return x; or|= o2cu(xp[i]); } - if (or<=U8_MAX ) { u8* rp; B r = m_c8arrc (&rp, x); for (usz i=0;i