reinit_portion
This commit is contained in:
parent
4464fced30
commit
704986d36c
@ -413,8 +413,10 @@ void tailVerifyAlloc(void* ptr, u64 origSz, i64 logAlloc, u8 type);
|
||||
void tailVerifyFree(void* ptr);
|
||||
void tailVerifyReinit(void* ptr, u64 s, u64 e);
|
||||
#define FINISH_OVERALLOC(P, S, E) tailVerifyReinit(P, S, E)
|
||||
NOINLINE void reinit_portion(Arr* a, usz s, usz e);
|
||||
#else
|
||||
#define FINISH_OVERALLOC(P, S, E)
|
||||
#define reinit_portion(...)
|
||||
#endif
|
||||
#define FINISH_OVERALLOC_A(A, S, L) FINISH_OVERALLOC(a(A), offsetof(TyArr,a)+(S), offsetof(TyArr,a)+(S)+(L));
|
||||
FORCE_INLINE void preFree(Value* x, bool mmx) {
|
||||
|
||||
@ -130,4 +130,18 @@ void tailVerifyFree(void* ptr) {
|
||||
memset(ptr+8, 'a', clr);
|
||||
}
|
||||
|
||||
NOINLINE void reinit_portion(Arr* a, usz s, usz e) {
|
||||
ux sb, eb, head;
|
||||
switch (PTY(a)) { default: UD;
|
||||
case t_bitarr: sb = BIT_N(s)*8; eb = BIT_N(e)*8; head = offsetof(TyArr,a); break;
|
||||
case t_i8arr: case t_c8arr: sb = s; eb = e; head = offsetof(TyArr,a); break;
|
||||
case t_i16arr: case t_c16arr: sb = s*2; eb = e*2; head = offsetof(TyArr,a); break;
|
||||
case t_i32arr: case t_c32arr: sb = s*4; eb = e*4; head = offsetof(TyArr,a); break;
|
||||
case t_f64arr: sb = s*8; eb = e*8; head = offsetof(TyArr,a); break;
|
||||
case t_fillarr: head = offsetof(FillArr,a); sb = s*sizeof(B); eb = e*sizeof(B); break;
|
||||
case t_harr: head = offsetof(HArr,a); sb = s*sizeof(B); eb = e*sizeof(B); break;
|
||||
}
|
||||
FINISH_OVERALLOC(a, head+sb, head+eb);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
Loading…
Reference in New Issue
Block a user