nv-buf-big-slab 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DIST/nv-buf-big-slab-bw.js +24 -0
- package/TEST/perf-aloc.js +40 -0
- package/TEST/tst-merge-slab-ary.js +194 -0
- package/TEST/tst-util.js +93 -0
- package/com.sh +1 -0
- package/const.js +109 -0
- package/ctor.js +153 -0
- package/getter.js +165 -0
- package/index.js +261 -0
- package/mthd.js +142 -0
- package/package.json +17 -0
- package/util.js +553 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var nvbufbigslab=(()=>{var R=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports);var Ut=R((ce,Rt)=>{var mr=(t,r)=>{var a=t.prototype;for(var _ in r)Object.defineProperty(a,_,{get:r[_]});var e=Object.getOwnPropertySymbols(r);for(var n of e)Object.defineProperty(a,n,{get:r[n]})},zr=(t,r)=>{var a=t.prototype;for(var _ in r)a[_]=r[_];var e=Object.getOwnPropertySymbols(r);for(var n of e)a[n]=r[n]},Rr=(t,r)=>{var a=t.prototype;for(var _ in r)Object.defineProperty(a,_,{get:r[_][0],set:r[_][1]});var e=Object.getOwnPropertySymbols(r);for(var n of e)Object.defineProperty(a,n,{get:r[n][0],set:r[n][1]})},Ur=(t,r=" ")=>{Object.defineProperty(t,"name",{value:r})},Dr=(t,r,a,_=!1,e=!0,n=!0)=>{Object.defineProperty(t,r,{value:a,enumerable:_,writable:e,configurable:n})},Nr=(t,r,a=!1,_=!0,e=!0)=>{for(let s in r){var n=r[s];Object.defineProperty(t,s,{value:n,enumerable:a,writable:_,configurable:e})}};Rt.exports={add_getters:mr,add_mthds:zr,add_accessors:Rr,rename:Ur,def_prop:Dr,def_ps:Nr}});var Nt=R((ue,Dt)=>{var Tt=(t,r,a)=>{if(r<a){for(let _=0;_<t.length;++_){let e=t[_];Array.isArray(e)?Tt(e,r+1,a):e===null||typeof e=="object"&&vt(e,r+1,a)}Object.freeze(t)}},vt=(t,r,a)=>{if(r<a){for(let _ in t){let e=t[_];Array.isArray(e)?Tt(e,r+1,a):e===null||typeof e=="object"&&vt(e,r+1,a)}Object.freeze(t)}};Dt.exports=(t,r=1/0)=>(Array.isArray(t)?Tt(t,0,r):t===null||typeof t=="object"&&vt(t,0,r),t)});var W=R((be,qt)=>{var Pr=t=>{if(ArrayBuffer.isView(t))return"abvw";if(globalThis.Buffer&&t.constructor.name==="Buffer")return"buf";if(globalThis.Blob&&t.constructor.name==="Blob")return"blob";if(globalThis.File&&t.constructor.name==="File")return"file";var r=toString.call(t);return r==="[object ArrayBuffer]"||r==="[object SharedArrayBuffer]"?"ablike":"other"},Pt=t=>t===Int8Array||t===Int16Array||t===Int32Array||t===BigInt64Array,Or=t=>t===Uint8Array||t===Uint8ClampedArray||t===Uint16Array||t===Uint32Array||t===BigUint64Array;function Mr(t){let r=t.BYTES_PER_ELEMENT,a;return r===1?a="Tiny":r===2?a="Small":r===4?a="Normal":a="Large",Pt(t)?`Half${a}`:a}var Ot={0:Uint8Array,1:Uint16Array,2:Uint32Array,3:BigUint64Array,4:Int8Array,5:Int16Array,6:Int32Array,7:BigInt64Array,255:Float64Array},Mt=new Map([[Uint8Array,0],[Uint16Array,1],[Uint32Array,2],[BigUint64Array,3],[Int8Array,4],[Int16Array,5],[Int32Array,6],[BigInt64Array,7],[Float64Array,255]]),Et=[ArrayBuffer];globalThis.SharedArrayBuffer!==void 0&&Et.push(globalThis.SharedArrayBuffer);var st=[Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,BigUint64Array,Int8Array,Int16Array,Int32Array,BigInt64Array,Float32Array,Float64Array];globalThis.Float16Array!==void 0&&st.push(globalThis.Float16Array);var J=[DataView];globalThis.Buffer!==void 0&&J.push(globalThis.Buffer);globalThis.Blob!==void 0&&J.push(globalThis.Blob);globalThis.File!==void 0&&J.push(globalThis.File);var Fr=[...Et,...st,...J],u=new Map;u.set("u8a",Uint8Array);u.set("u8ca",Uint8ClampedArray);u.set("u16a",Uint16Array);u.set("u32a",Uint16Array);u.set("u64a",BigUint64Array);u.set("i8a",Int8Array);u.set("i16a",Int16Array);u.set("i32a",Int32Array);u.set("i64a",BigInt64Array);u.set("f32a",Float32Array);u.set("f64a",Float64Array);u.set("dv",DataView);u.set("ab",ArrayBuffer);u.set(Uint8Array,"u8a");u.set(Uint8ClampedArray,"u8ca");u.set(Uint16Array,"u16a");u.set(Uint32Array,"u32a");u.set(BigUint64Array,"u64a");u.set(Int8Array,"i8a");u.set(Int16Array,"i16a");u.set(Int32Array,"i32a");u.set(BigInt64Array,"i64a");u.set(Float32Array,"f32a");u.set(Float64Array,"f64a");u.set(DataView,"dv");u.set(ArrayBuffer,"ab");globalThis.Float16Array!==void 0&&(u.set("f16a",globalThis.Float16Array),u.set(globalThis.Float16Array,"f16a"));globalThis.Buffer!==void 0&&(u.set("buf",globalThis.Buffer),u.set(globalThis.Buffer,"buf"));globalThis.Blob!==void 0&&(u.set("blob",globalThis.Blob),u.set(globalThis.Blob,"blob"));globalThis.File!==void 0&&(u.set("file",globalThis.File),u.set(globalThis.File,"file"));globalThis.SharedArrayBuffer!==void 0&&(u.set("sab",globalThis.SharedArrayBuffer),u.set(globalThis.SharedArrayBuffer,"sab"));function Ft(t){return u.get(t)}function Yt(t){return u.get(t.toLowerCase())}function Yr(t,r){return t<r?[!1,`size(${t}) MUST >= algnsz(${r})`]:t%r!==0?[!1,`size(${t}) % algnsz(${r}) = ${t%r} MUST == 0`]:[!0,null]}function Cr(t,r){var a=t%r;return a===0?t:t+r-a}function Ct(t,r){var a=t%r;return a===0?0:r-a}function Hr(t,r){return t%r}function Ht(t,r,a,_){a=a??0,_=_??r.byteLength;var e=a,n=a+_,s=t.BYTES_PER_ELEMENT,i=Ct(e,s),l=new Uint8Array(r,e,i);l.T="head",_-=i;var o=e+i,c=n%s,f=n-c,p=new Uint8Array(r,f,c);p.T="tail",_-=c;var d=_/s;return[l,new t(r,o,d),p]}function $r(t){var r=t.buffer,a=t.byteOffset,_=t.byteLength,e={};for(var n of st){var s=Ft(n);e[s]=Ht(n,r,a,_)}return e}function $t(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function Xr(t){return $t(t).slice(0)}function jr(t,r){return t===Float64Array?Number.MAX_SAFE_INTEGER-r:t===BigUint64Array?2n**(8n*BigInt(t.BYTES_PER_ELEMENT))-1n-BigInt(r):t===Int8Array?127-r:t===Int16Array?32767-r:t===Int32Array?2147483647-r:2**(8*t.BYTES_PER_ELEMENT)-1-r}function kr(t,r=!1){return t=BigInt(t),t<=127n?Int8Array:t<=255n?Uint8Array:t<=32767n?Int16Array:t<=65535n?Uint16Array:t<=2147483647n?Int32Array:t<=2n**32n-1n?Uint32Array:t<=2n**53n-1n?r?BigUint64Array:Float64Array:BigUint64Array}function qr(t){return Mt.get(t)}function Zr(t){return Ot[t]??Float64Array}function Xt(t){return Mt.get(t)}function Vr(t){return Ot[t]??Float64Array}function Gr(t){var r=new Uint8Array(t.buffer,t.byteOffset,1);r[0]=Xt(t.constructor)}function Kr(t,r,a){var _=new Uint8Array(t.buffer,t.byteOffset,r+1);_[r]=a}function Jr(t,r){var a=new Uint8Array(t.buffer,t.byteOffset,r+1);return a[r]}function Wr(t){var _;var r=t.constructor;if(r===DataView){var a=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength);return new r(a)}else return r===globalThis.Buffer?(_=globalThis==null?void 0:globalThis.Buffer)==null?void 0:_.from(t):t.slice(0)}function Qr(t,r){var a=t.byteLength,_=r.byteLength,e=a>_?_:a,n=new Uint8Array(t.buffer,t.byteOffset,e),s=new Uint8Array(r.buffer,r.byteOffset,e);s.set(n)}function ra(t,r,a){t.constructor.BYTES_PER_ELEMENT===8&&t.constructor!==Float64Array?t[r]=BigInt(a):t[r]=a}function aa(t){return globalThis.Blob!==void 0&&t.constructor===globalThis.Blob||globalThis.File!==void 0&&t.constructor===globalThis.File}var jt=t=>toString.call(t)==="[object ArrayBuffer]"||toString.call(t)==="[object sharedArrayBuffer]",_a=(t,r,a,_=0)=>{var e=t.BYTES_PER_ELEMENT;if(_%e===0){var n=a.byteLength-_,s=e*r;if(n>=s){var i=new t(a,_,r);return[!0,ta]}else return[!1,`ab.byteLength(${a.byteLength}) - offset(${_}) MUST >= requested_bytsz(${s})`]}else return[!1,`offset(${_}) % algnsz(${e}) MUST === 0`]},kt=(t,r,a,_)=>!(r<=a||_<=t),wt=(t,r)=>{var[a,_,e]=t,[n,s,i]=r;return a===n?kt(_,e,s,i):!1},nt=t=>[t.buffer,t.byteOffset,t.byteOffset+t.byteLength],ea=(t,r)=>wt(nt(t),nt(r)),gt=t=>Array.isArray(t)?t:nt(t),na=(t,r)=>wt(gt(t),gt(r)),it=new Map([[Uint8ClampedArray,{r:"ru8ca",w:"wu8ca","?":!1}],[Uint8Array,{r:"ru8a",w:"wu8a","?":!1}],[Int8Array,{r:"ri8a",w:"wi8a","?":!1}],[Uint16Array,{r:"ru16a",w:"wu16a","?":!1}],[Int16Array,{r:"ri16a",w:"wi16a","?":!1}],[Uint32Array,{r:"ru32a",w:"wu32a","?":!1}],[Int32Array,{r:"ri32a",w:"wi32a","?":!1}],[BigUint64Array,{r:"ru64a",w:"wu64a","?":!1}],[BigInt64Array,{r:"ri64a",w:"wi64a","?":!1}],[Float32Array,{r:"rf32a",w:"wf32a","?":!0}],[Float64Array,{r:"rf64a",w:"wf64a","?":!0}],[DataView,{r:"rdv",w:"wdv","?":!1}]]);globalThis.Float16Array!==void 0&&it.set(globalThis.Float16Array,{r:"rf16a",w:"wf16a","?":!0});var sa=t=>it.get(t),H=new Map(Array.from(it.entries()));H.set(ArrayBuffer,{r:"ro",w:"wo","?":!1});globalThis.SharedArrayBuffer!==void 0&&H.set(globalThis.SharedArrayBuffer,{r:"ro",w:"wo","?":!1});globalThis.Buffer!==void 0&&H.set(globalThis.Buffer,{r:"rbuf",w:"wbuf","?":!0});globalThis.Blob!==void 0&&H.set(globalThis.Blob,{r:"rblob",w:"wblob","?":!0,rtrn_prms:!0});globalThis.File!==void 0&&H.set(globalThis.File,{r:"rfile",w:"wfile","?":!0,rtrn_prms:!0});var ia=t=>H.get(t),la={Uint8Array:"u8a",Uint8ClampedArray:"u8ca",Int8Array:"i8a",Uint16Array:"u16a",Int16Array:"i16a",Uint32Array:"u32a",Int32Array:"i32a",BigUint64Array:"u64a",BigInt64Array:"i64a",Float16Array:"f16a",Float32Array:"f32a",Float64Array:"f64a",DataView:"dv"},oa=t=>la[t],fa=t=>Yt(t).name,Lt={u8:Uint8Array,i8:Int8Array,u16:Uint16Array,i16:Int16Array,u32:Uint32Array,i32:Int32Array,u64:BigUint64Array,i64:BigInt64Array,f32:Float32Array,f64:Float64Array};globalThis.Float16Array&&(Lt.f16=globalThis.Float16Array);var ca=(()=>{var t=new Map;for(let[r,a]of Object.entries(Lt))t.set(a,r);return t})(),ua=t=>Lt[t],ba=t=>ca.get(t),da=(...t)=>{let r=t[0];for(let a=1;a<t.length;a++){let _=t[a];_.BYTES_PER_ELEMENT>r.BYTES_PER_ELEMENT&&(r=_)}return r},ya=(...t)=>{let r=t[0];for(let a=1;a<t.length;a++){let _=t[a];_.BYTES_PER_ELEMENT<r.BYTES_PER_ELEMENT&&(r=_)}return r},pa=(t,r,a,_=!0)=>{if(r===Uint8Array)return t.getUint8(a);if(r===Int8Array)return t.getInt8(a);if(r===Uint16Array)return t.getUint16(a,_);if(r===Int16Array)return t.getInt16(a,_);if(r===Uint32Array)return t.getUint32(a,_);if(r===Int32Array)return t.getInt32(a,_);if(r===Float32Array)return t.getFloat32(a,_);if(r===Float64Array)return t.getFloat64(a,_);if(r===BigUint64Array)return t.getBigUint64(a,_);if(r===BigInt64Array)return t.getBigInt64(a,_);if(globalThis.Float16Array&&r===Float16Array){let e=t.getUint16(a,_);return f16_to_f32(e)}else throw new Error("Unsupported TypedArray class")},ha=(t,r,a,_,e=!0)=>{if(r===Uint8Array)t.setUint8(a,_);else if(r===Int8Array)t.setInt8(a,_);else if(r===Uint16Array)t.setUint16(a,_,e);else if(r===Int16Array)t.setInt16(a,_,e);else if(r===Uint32Array)t.setUint32(a,_,e);else if(r===Int32Array)t.setInt32(a,_,e);else if(r===Float32Array)t.setFloat32(a,_,e);else if(r===Float64Array)t.setFloat64(a,_,e);else if(r===BigUint64Array)t.setBigUint64(a,_,e);else if(r===BigInt64Array)t.setBigInt64(a,_,e);else if(globalThis.Float16Array&&r===Float16Array){let n=f32_to_f16(_);t.setUint16(a,n,e)}else throw new Error("Unsupported TypedArray class")},Aa=t=>t==null?{src:null,offset:0}:jt(t)?{src:t,offset:0}:{src:t.src??null,offset:t.offset??0},Ta=t=>t===null||t===!0||t===void 0||t!=null&&t.inline?{ptr:void 0,inline:!0}:typeof t=="number"||typeof t=="bigint"?{ptr:parseInt(Number(t)),inline:!1}:{ptr:parseInt(Number(t.ptr??0)),inline:!!t.inline};qt.exports={tcate:Pr,is_signed_int_cls:Pt,is_unsigned_int_cls:Or,check_sz_and_algn:Yr,calc_algn_si:Cr,calc_prepad_sz:Ct,calc_pstpad_sz:Hr,calc_max_incr_cnt:jr,get_ta_cls_with_max_cnt:kr,get_byt_from_cls:qr,get_cls_from_byt:Zr,get_cls_from_dump_fst_byte:Vr,get_fst_byte_for_dump:Xt,set_fst_byte_for_dump:Gr,set_nth_byte:Kr,get_nth_byte:Jr,to_u8avw:$t,cp_rtrn_u8a:Xr,creat_one_debug_view_on_ab:Ht,creat_debug_view:$r,BRIEF_MIRR:u,get_display_name_prefix:Mr,get_brief_name:Ft,get_cls_from_brief_name:Yt,AB_CLSES:Et,TA_CLSES:st,VWLIKE_CLSES:J,BUFLIKE_CLSES:Fr,cp:Wr,write_into:Qr,setv:ra,is_readonly:aa,is_ablike:jt,creat_on_ab:_a,is_rng_overlaped:kt,is_ab_rng_overlaped:wt,ta2abrng:nt,is_ta_overlaped:ea,to_abrng:gt,is_overlaped:na,TACLS_TO_MTHD_HINT:it,TACLS_OR_ABCLS_TO_MTHD_HINT:H,tacls_to_mthd_hint:sa,tacls_or_abcls_to_mthd_hint:ia,taclsnm_to_tbrief:oa,tbrief_to_taclsnm:fa,ele_tbrief_to_tacls:ua,tacls_to_ele_tbrief:ba,min_tacls:ya,max_tacls:da,read_dv_with_cls:pa,write_dv_with_cls:ha,fmt_underlying:Aa,fmt_data:Ta}});var Vt=R((de,Zt)=>{Zt.exports=t=>{if(typeof t=="number"){if(!Number.isFinite(t)||t<=0)throw new Error(`invalid number(${t}), MUST > 0`);return Math.floor(t)}if(typeof t!="string")throw new Error("nm MUST be number | string");if(t=t.trim().toLowerCase(),t.length===0)throw new Error("empty nm");let r=0,a=t.length,_=r;for(;r<a;){let i=t.charCodeAt(r);if(i>=48&&i<=57)r++;else break}if(r===_)throw new Error(`invalid nm(${t})`);let e=Number(t.slice(_,r)),n;if(t[r]==="*"&&t[r+1]==="*"){r+=2;let i=r;for(;r<a;){let o=t.charCodeAt(r);if(o>=48&&o<=57)r++;else break}if(r===i)throw new Error(`invalid exponent in nm(${t})`);let l=Number(t.slice(i,r));n=e**l}else n=e;if(n<=0||!Number.isFinite(n))throw new Error(`invalid nm(${t}), MUST > 0`);let s=t.slice(r);switch(s){case"":case"b":return n;case"k":return n*1024;case"m":return n*1024**2;case"g":return n*1024**3;default:throw new Error(`unknown unit(${s}) in nm(${t})`)}}});var $=R((ye,St)=>{var va=()=>({1:{mx_cnt:1024},2:{mx_cnt:1024},4:{mx_cnt:2048},6:{mx_cnt:2048},8:{mx_cnt:1048576},12:{mx_cnt:1048576},16:{mx_cnt:4194304},20:{mx_cnt:4194304},24:{mx_cnt:8388608},28:{mx_cnt:8388608},32:{mx_cnt:16777216},40:{mx_cnt:16777216},48:{mx_cnt:16777216},56:{mx_cnt:16777216},64:{mx_cnt:16777216},128:{mx_cnt:4194304},256:{mx_cnt:4194304},512:{mx_cnt:1048576},"1k":{mx_cnt:1048576},"2k":{mx_cnt:1048576},"4k":{mx_cnt:1048576},"8k":{mx_cnt:131072},"16k":{mx_cnt:65536},"32k":{mx_cnt:32768},"64k":{mx_cnt:8192},"128k":{mx_cnt:4096},"256k":{mx_cnt:2048},"512k":{mx_cnt:2048},"1m":{mx_cnt:1024},"2m":{mx_cnt:1024}});St.exports={LOAD_HINT_SZ:2,LOAD_HINT_CLS_BYT_IDX:0,LOAD_HINT_PRE_PAD_SZ_IDX:1,CTRL_HEAD_CNT:1,SLAB_ARY_LEN_IDX:0,SLAB_STRIDE_V:6,slab_ctrl_bits_start_idx:0,slab_mx_cnt_idx:1,slab_used_cnt_idx:2,slab_cursor_idx:3,slab_sz_idx:4,slab_algn_idx:5,PTR_HEAD_CNT:1,DATA_PTR_IDX:0,DATA_LOAD_HINT_SZ:8,DFLT_CFG:va};St.exports.HELP=`
|
|
2
|
+
=================================================================================================
|
|
3
|
+
ctrl-ta-cls-byte 1B | pad-bfr-ctrl-ta-sz 1B | ?pad-bfr-ctrl(pad-bfr-ctrl-ta-sz) |
|
|
4
|
+
--------------------------------------------------------------------------------
|
|
5
|
+
pool_cnt |
|
|
6
|
+
ctrl_bits_start | mx_cnt | used_cn| cursor | slab_sz | slab_algn |
|
|
7
|
+
.....................................................................
|
|
8
|
+
ctrl_bits_start | mx_cnt | used_cn| cursor | slab_sz | slab_algn |
|
|
9
|
+
ctrl_bits |
|
|
10
|
+
...........
|
|
11
|
+
ctrl_bits |
|
|
12
|
+
--------------------------------------------------------------------------------
|
|
13
|
+
ptr-ta-cls-byte 1B | pad-bfr-ptr-ta-sz 1B | ?pad-bfr-ptr(pad-bfr-ptr-ta-sz) |
|
|
14
|
+
//-----------------------------------------------------------------------
|
|
15
|
+
ptr | \u3010data_ptr base\u3011
|
|
16
|
+
data_si |
|
|
17
|
+
........
|
|
18
|
+
data_si |
|
|
19
|
+
-------------------------------------------------------------------------
|
|
20
|
+
data_sz:56 | data_algn:4; | pad_bfr_data_sz:4 \u975E\u5BF9\u9F50 BigInt64 \u8D1F\u6570\u8868\u793A\u975Einline \u6574\u6570\u8868\u793Ainline
|
|
21
|
+
// ? pad_bfr_data
|
|
22
|
+
[....bytes.....]
|
|
23
|
+
==================================================================================================
|
|
24
|
+
`});var Z=R((ve,_r)=>{var Kt=Vt(),{calc_prepad_sz:Q,calc_pstpad_sz:pe,get_ta_cls_with_max_cnt:lt,max_tacls:Jt}=W(),{LOAD_HINT_SZ:ot,LOAD_HINT_CLS_BYT_IDX:he,LOAD_HINT_PRE_PAD_SZ_IDX:Ae,CTRL_HEAD_CNT:P,SLAB_ARY_LEN_IDX:q,SLAB_STRIDE_V:h,slab_ctrl_bits_start_idx:tt,slab_mx_cnt_idx:O,slab_used_cnt_idx:N,slab_cursor_idx:F,slab_sz_idx:X,slab_algn_idx:rt,PTR_HEAD_CNT:at,DATA_PTR_IDX:Te,DATA_LOAD_HINT_SZ:Gt}=$(),Bt=(t,r=Uint32Array)=>{var a=8*r.BYTES_PER_ELEMENT,_,e=t%a;return e==0?_=t/a:_=(t-e)/a+1,r.BYTES_PER_ELEMENT*_},Wt=t=>t===1||t===2||t===4||t===8||t===16,Qt=t=>{var r=[];for(let _ in t){var a=t[_];_=Kt(_),slab_algn=a.slab_algn??1,r.push({slab_sz:_,slab_algn,mx_cnt:a.mx_cnt??4096})}return r},tr=t=>(t.sort((r,a)=>{let _=r.slab_sz-a.slab_sz;return _!==0?_:r.slab_algn-a.slab_algn}),t),rr=t=>{let r=t.length;if(r===0)return[];let a=[],_=t[0],e=_.mx_cnt;for(let n=1;n<r;n++){let s=t[n];s.slab_sz===_.slab_sz&&s.slab_algn===_.slab_algn?e+=s.mx_cnt:(a.push({slab_sz:_.slab_sz,slab_algn:_.slab_algn,mx_cnt:e}),_=s,e=s.mx_cnt)}return a.push({slab_sz:_.slab_sz,slab_algn:_.slab_algn,mx_cnt:e}),a},ga=(t,r)=>{var a=r,_=t.length;for(let n=0;n<_;++n){let{slab_sz:s,slab_algn:i,mx_cnt:l}=t[n];var e=Q(a,i);a+=e,t[n].data_si=a,a+=s*l}},ar=(t,r)=>{let a=t.length;if(a>=2**32)throw new Error(`slab_ary.length(${t.length}) MUST < 2**32`);var _=r.ptr,e=r.inline,n=_,s=0,i=[],l=1,o=1,c=1;for(let m=0;m<a;++m){let{slab_sz:A,slab_algn:E,mx_cnt:z}=t[m];{if(E=E??1,A=A??E,z=z??4096,!Wt(E))throw new Error(`slab_algn(${E}) can ONLY be 1 | 2| 4 |8 |16`);if(A<=0)throw new Error(`slab_sz(${A}) MUST >0`);if(A<E)throw new Error(`slab_sz(${A}) MUST >= slab_algn(${E})`);if(A%E!==0)throw new Error(`slab_sz(${A}) % slab_algn(${E}) MUST === 0`);if(A>=2**32)throw new Error(`slab_sz(${A}) MUST < 2**32`);if(z>=2**32)throw new Error(`mx_cnt(${z}) MUST < 2**32`)}var f=Q(n,E);n+=f,i.push({mx_cnt:z,slab_sz:A,slab_algn:E,data_si:n}),A>l&&(l=A),z>c&&(c=z),E>o&&(o=E),s+=z,n+=A*z}let p=n-_;if(n>=2**53)throw new Error(`total_sz_after_aligned(${p}) MUST < (2**53-data_ptr(${_}))`);let d=lt(n),T=Jt(lt(a),lt(l),lt(c));var y=P+h*a,b=y-P;for(let m of i){let{mx_cnt:A,slab_sz:E,slab_algn:z}=m,Ir=Bt(A,T)/T.BYTES_PER_ELEMENT;m.ctrl_bits_start=b,b+=Ir}if(b>=2**(8*T.BYTES_PER_ELEMENT))throw new Error(`slab_ary.length(${a}) TOO large`);let g=T.BYTES_PER_ELEMENT;var v=ot;let B=Q(v,g);v+=B;let L=T.BYTES_PER_ELEMENT*(P+b);v+=L,v+=ot;let S=d.BYTES_PER_ELEMENT,x=Q(v,S);v+=x;let I=d.BYTES_PER_ELEMENT*(at+a);v+=I,v+=Gt;let C=ot+B+L+ot+x+I+Gt,et=Math.max(g,S),D=Q(v,o);v+=D;let k={slab_ary:i,CTRL_TACLS:T,pad_bfr_ctrl_sz:B,ctrl_sz:L,ctrl_algn:g,PTR_TACLS:d,pad_bfr_ptr_sz:x,ptr_sz:I,ptr_algn:S,cpsz:C,cpalgn:et,data_ptr:_,data_inline:e,data_sz:p,data_algn:o,data_cnt:s,pad_bfr_data_sz:D};{let m=Math.max(et,o);k.data_relative_offset=C+D;let A=C+D+p;k.cpdalgn=m,k.cpdsz=A,v+=p}return k},Ea=(t,r)=>{var a=Array.isArray(t)?t:Qt(t);return a=tr(a),a=rr(a),ar(a,r)},wa=(t,r)=>{var n=[],a=t[q],_=t.subarray(P),e=r.subarray(at),n=[];for(let d=0;d<a;++d){var s=_[h*d+tt],i=_[h*d+O],l=_[h*d+N],o=_[h*d+F],c=_[h*d+X],f=_[h*d+rt],p=e[d];n.push({ctrl_bits_start:s,mx_cnt:i,used_cnt:l,unused_cnt:i-l,slab_sz:c,slab_algn:f,data_si:p,data_ei:p+c*i})}return n},La=(t,r,a)=>{var _=t[q],e=t.subarray(P),n=r.subarray(at),s=a;{var i=e[h*s+tt],l=e[h*s+O],o=e[h*s+N],c=e[h*s+F],f=e[h*s+X],p=e[h*s+rt],d=n[s];return{ctrl_bits_start:i,mx_cnt:l,used_cnt:o,unused_cnt:l-o,slab_sz:f,slab_algn:p,data_si:d,data_ei:d+f*l}}},xt=(t,r)=>{var a=t.constructor,_=h*r,e=t[_+tt],n=t[_+O],s=Bt(n,a),i=s/a.BYTES_PER_ELEMENT;return t.subarray(e,e+i)},Sa=(t,r,a=_=>!0)=>{var _=[],e=t[q],n=t.subarray(P),s=r.subarray(at);for(let y=0;y<e;++y){var i=xt(n,y),l=n[h*y+O],o=n[h*y+N],c=n[h*y+F],f=n[h*y+X],p=n[h*y+rt],d=s[y],T={mx_cnt:l,used_cnt:o,unused_cnt:l-o,slab_sz:f,slab_algn:p,data_si:d,data_ei:d+f*l,cursor:c,ctrl_bits:i};a(T)&&_.push(T)}return _},Ba=(t,r,a,_=1)=>{var e=t[q],n=t.subarray(P),s=r.subarray(at);for(let y=0;y<e;++y){var i=xt(n,y),l=n[h*y+O],o=n[h*y+N],c=n[h*y+F],f=n[h*y+X],p=n[h*y+rt],d=s[y],T={mx_cnt:l,used_cnt:o,unused_cnt:l-o,slab_sz:f,slab_algn:p,data_si:d,data_ei:d+f*l,cursor:c,ctrl_bits:i};if(f===a&&p===_)return T}return null},xa=(t,r,a=1)=>{var _=t[q],e=t.subarray(P);let n=0,s=_;for(;n<s;){let o=n+Math.floor((s-n)/2),c=o*h;e[c+X]<r?n=o+1:s=o}for(let o=n;o<_;o++){let c=o*h;if(e[c+rt]<a)continue;let p=e[c+N],d=e[c+O];if(p<d){var i=e.subarray(c),l=e.subarray(e[c+tt]);return[i,l,o]}}return[null,null,-1]},Ia=(t,r,a)=>{var _=t[q],e=t.subarray(P);let n=0,s=_;for(;n<s;){let g=n+Math.floor((s-n)/2),v=g*h,B=r[g],L=e[v+O],S=e[v+X],x=B+S*L;if(a<B)s=g;else if(a>=x)n=g+1;else{n=s=g;break}}if(n>=_)return[null,null,-1,-1];let i=n*h,l=r[n],o=e[i+O],c=e[i+X],f=l+c*o;if(!(a>=l&&a<f))return[null,null,-1,-1];let p=a-l;if(p%c!==0)return[null,null,-1];let d=p/c,T=e.subarray(i),y=e.subarray(e[i+tt]);return[T,y,d,n]},ft=(t,r,a,_)=>{var e=r/_|0,n=r%_;t[e]=t[e]&~(1<<n)|(a&1)<<n},ct=(t,r,a)=>{var _=r/a|0,e=r%a;return t[_]>>>e&1},ma=(t,r,a)=>{let _=r/a|0,n=1<<r%a,s=t[_];return s&n?!1:(t[_]=s|n,!0)},za=(t,r,a)=>{let _=r/a|0,n=1<<r%a,s=t[_];return s&n?(t[_]=s&~n,!0):!1},Ra=(t,r,a)=>{var _=t[F],e=t[O],n=t[N];if(n<e){for(var s=_;s<e-1;++s)if(!ct(r,s,a))return ft(r,s,1,a),t[F]=s+1,t[N]++,s;{var s=e-1;if(!ct(r,s,a))return ft(r,s,1,a),t[F]=0,t[N]++,s}for(var s=0;s<_;++s)if(!ct(r,s,a))return ft(r,s,1,a),t[F]=s+1,t[N]++,s;return-1}else return-1};_r.exports={nm2sz:Kt,max_tacls:Jt,calc_ctrl_bits_sz:Bt,is_valid_algn:Wt,dict_cfg_to_ary_cfg:Qt,merge_slab_ary:rr,sort_slab_ary:tr,__updt_data_si_if_data_ptr_match_align:ga,_calc_slab_info:ar,calc_slab_info:Ea,read_one_slab_ary_from_tas:La,read_slab_ary_from_tas:wa,aloc_slct_slab:xa,dloc_slct_slab:Ia,set_bit:ft,get_bit:ct,set_bit_to_true_if_false:ma,set_bit_to_false_if_true:za,find_fst_false_bit_and_set_to_true:Ra,get_ctrl_bits:xt,find_slabs:Sa,find_slab:Ba}});var lr=R((Ee,ir)=>{var{get_byt_from_cls:Ua,set_nth_byte:ge,calc_prepad_sz:er,get_cls_from_dump_fst_byte:Da}=W(),{LOAD_HINT_SZ:ut,LOAD_HINT_CLS_BYT_IDX:Na,LOAD_HINT_PRE_PAD_SZ_IDX:Pa,CTRL_HEAD_CNT:Oa,SLAB_ARY_LEN_IDX:Ma,SLAB_STRIDE_V:V,slab_ctrl_bits_start_idx:Fa,slab_mx_cnt_idx:Ya,slab_used_cnt_idx:Ca,slab_cursor_idx:Ha,slab_sz_idx:$a,slab_algn_idx:Xa,PTR_HEAD_CNT:ja,DATA_PTR_IDX:ka,DATA_LOAD_HINT_SZ:qa}=$(),Za=Z(),It=(t,r,a)=>{var _=Ua(r);t[Na]=_,t[Pa]=a},nr=(t,r,a)=>{var _=BigInt(r.data_sz)<<8n|BigInt(r.data_algn)<<4n|BigInt(r.pad_bfr_data_sz);r.data_inline||(_=-_),t.setBigInt64(a,_,!0)},sr=(t,r,a)=>{var _=new DataView(t);ctrl_load_hint=new Uint8Array(t,r,ut),It(ctrl_load_hint,a.CTRL_TACLS,a.pad_bfr_ctrl_sz),r+=ut,pad_bfr_ctrl=new Uint8Array(t,r,a.pad_bfr_ctrl_sz),r+=a.pad_bfr_ctrl_sz,ctrl_ta=new a.CTRL_TACLS(t,r,a.ctrl_sz/a.CTRL_TACLS.BYTES_PER_ELEMENT),ctrl_ta[Ma]=a.slab_ary.length,ctrl_vw=ctrl_ta.subarray(Oa),r+=a.ctrl_sz,ptr_load_hint=new Uint8Array(t,r,ut),It(ptr_load_hint,a.PTR_TACLS,a.pad_bfr_ptr_sz),r+=ut,pad_bfr_ptr=new Uint8Array(t,r,a.pad_bfr_ptr_sz),r+=a.pad_bfr_ptr_sz,ptr_ta=new a.PTR_TACLS(t,r,a.ptr_sz/a.PTR_TACLS.BYTES_PER_ELEMENT),ptr_ta[ka]=a.data_ptr,ptr_vw=ptr_ta.subarray(ja),r+=a.ptr_sz,nr(_,a,r),r+=qa;var e={ctrl_load_hint,pad_bfr_ctrl,ctrl_ta,ctrl_vw,ptr_load_hint,pad_bfr_ptr,ptr_ta,ptr_vw};return[e,r]},Va=(t,r,a)=>{var _,e,n,s,i,l,o,c,f=t.src,b=t.offset,p=a.inline,d;if(f===null)a.inline?f=new ArrayBuffer(r.cpdsz):f=new ArrayBuffer(r.cpsz),b=0;else if(a.inline){b+=er(b,r.cpdalgn);var T=f.byteLength-b;if(T<r.cpdsz)throw new Error(`ab.byteLength(${f.byteLength}) MUST >= ${b+r.cpdsz}`)}else{b+=er(b,r.cpalgn);var T=f.byteLength-b;if(T<r.cpsz)throw new Error(`ab.byteLength(${f.byteLength}) MUST >= ${b+r.cpsz}`)}var[y,b]=sr(f,b,r);if(a.inline&&(y.pad_bfr_data=new Uint8Array(f,b,r.pad_bfr_data_sz),b+=r.pad_bfr_data_sz,r.data_ptr=b,Za.__updt_data_si_if_data_ptr_match_align(r.slab_ary,b),y.data=new Uint8Array(f,b,r.data_sz),b+=r.data_sz),f.byteLength>=b)return y;throw`underlying.src.byteLength(${f.byteLength}) MUST >= ${b}`},Ga=(t,r,a)=>{var _=t.slab_ary,e=_.length;for(let s=0;s<e;++s){var n=_[s];r[s*V+Fa]=n.ctrl_bits_start,r[s*V+Ya]=n.mx_cnt,r[s*V+Ca]=0,r[s*V+Ha]=0,r[s*V+$a]=n.slab_sz,r[s*V+Xa]=n.slab_algn,a[s]=n.data_si}},Ka=(t,r)=>Da(t[r]);ir.exports={init_meta:It,store_data_load_hint:nr,creat_tas:Va,creat_tas_with_ab_and_aligned_offset:sr,init_vws:Ga,read_tacls:Ka}});var br=R((Re,ur)=>{var{get_cls_from_dump_fst_byte:or}=W(),{LOAD_HINT_SZ:bt,LOAD_HINT_CLS_BYT_IDX:fr,LOAD_HINT_PRE_PAD_SZ_IDX:cr,CTRL_HEAD_CNT:we,SLAB_ARY_LEN_IDX:Ja,SLAB_STRIDE_V:Le,slab_ctrl_bits_start_idx:Se,slab_mx_cnt_idx:Be,slab_used_cnt_idx:xe,slab_cursor_idx:Ie,slab_sz_idx:me,slab_algn_idx:ze,PTR_HEAD_CNT:Wa,DATA_PTR_IDX:Qa}=$(),{read_slab_ary_from_tas:t_}=Z();function r_(){return this.ctrl_load_hint.buffer}function a_(){return this.ctrl_load_hint.byteLength+this._underlying_pad_sz_bfr_ctrl+this.ctrl_ta.byteLength+this.ptr_load_hint.byteLength+this._underlying_pad_sz_bfr_ptr+this.ptr_ta.byteLength}function __(){return or(this.ctrl_load_hint[fr])}function e_(){return this.ctrl_load_hint[cr]}function n_(){return or(this.ptr_load_hint[fr])}function s_(){return this.ptr_load_hint[cr]}function i_(){return{ab:this._underlying_ab,sz:this._underlying_sz,ctrl:{pool_cnt:this.pool_cnt,pad_sz:this._underlying_pad_sz_bfr_ctrl,cls:this._underlying_ctrl_cls},ptr:{data_ptr:this.data_ptr,pad_sz:this._underlying_pad_sz_bfr_ptr,cls:this._underlying_ptr_cls}}}function l_(){return new Uint8Array(this.underlying_ab,this.ctrl_load_hint.byteOffset+bt,this.underlying_pad_sz_bfr_ctrl)}function o_(){return this.CTRL_TACLS.BYTES_PER_ELEMENT}function f_(){return this.ctrl_ta[Ja]}function c_(){return this.CTRL_TACLS.BYTES_PER_ELEMENT*this.pool_cnt}function u_(){return this.ptr_load_hint.byteOffset-this.ctrl_ta.byteOffset}function b_(){return t_(this.ctrl_ta,this.ptr_ta)}function d_(){return new Uint8Array(this.underlying_ab,this.ptr_load_hint.byteOffset+bt,this._underlying_pad_sz_bfr_ptr)}function y_(){return this.PTR_TACLS.BYTES_PER_ELEMENT}function p_(){return this.PTR_TACLS.BYTES_PER_ELEMENT*this.pool_cnt}function h_(){return this.PTR_TACLS.BYTES_PER_ELEMENT*(Wa+this.pool_cnt)}function A_(){return this.ptr_ta[Qa]}function T_(){var t=this._underlying_ab,r=this.ptr_ta.byteOffset+this.ptr_sz,a=new DataView(t),_=a.getBigInt64(r,!0),e=!1;_>0n?e=!0:_=-_;var n=Number(_>>8n),s=(_&0xF0n)>>4n,i=_&0x0Fn;return{inline:e,sz:n,algn:Number(s),pad_bfr_data_sz:Number(i)}}function v_(){return this.data_info.sz}function g_(){return this.data_info.algn}function E_(){return this.data_info.inline}function w_(){if(this.cond_data_inline){var t=this.data_info.pad_bfr_data_sz,r=this.ptr_ta.byteOffset+this.ptr_sz+8;return new Uint8Array(this.underlying_ab,r,r+t)}else return null}function L_(){var t=this.data_info.pad_bfr_data_sz;return this.ptr_ta.byteOffset+this.ptr_sz+8+t}function S_(){return this.cond_data_inline?this._data_ptr_if_inline===this.data_ptr:!0}function B_(){return Math.max(this.ctrl_algn,this.ptr_algn)}function x_(){return bt+this._underlying_pad_sz_bfr_ctrl+this.ctrl_sz+bt+this._underlying_pad_sz_bfr_ptr+this.ptr_sz+8}function I_(){return Math.max(this.cpalgn,this.data_algn)}function m_(){var t=this.data_info;return this.cpsz+t.pad_bfr_data_sz+t.sz}function z_(){var t={},r={},a=this.slab_ary;for(let n of a){var _=`sz = ${n.slab_sz}`.padEnd(24)+`align = ${n.slab_algn} `.padEnd(8)+"|",e="|"+` used_cnt = ${n.used_cnt}`.padEnd(24)+`unused_cnt = ${n.mx_cnt-n.used_cnt}`.padEnd(24);n.used_cnt<n.mx_cnt?t[_]=e:r[_]=e}return{alocable:t,unalocable:r}}ur.exports={_underlying:i_,_underlying_ab:r_,_underlying_sz:a_,_underlying_ctrl_cls:__,_underlying_pad_sz_bfr_ctrl:e_,_pad_bfr_ctrl:l_,ctrl_algn:o_,pool_cnt:f_,ctrl_entries_sz:c_,ctrl_sz:u_,_underlying_ptr_cls:n_,_underlying_pad_sz_bfr_ptr:s_,_pad_bfr_ptr:d_,ptr_algn:y_,ptr_sz:h_,ptr_entries_sz:p_,data_ptr:A_,_data_ptr_if_inline:L_,_cond_data_ptr_valid:S_,_pad_bfr_data:w_,data_info:T_,data_algn:g_,data_sz:v_,cond_data_inline:E_,slab_ary:b_,stats:z_,cpalgn:B_,cpsz:x_,cpdalgn:I_,cpdsz:m_}});var hr=R((Ye,pr)=>{var U=Z(),{LOAD_HINT_SZ:Ue,LOAD_HINT_CLS_BYT_IDX:De,LOAD_HINT_PRE_PAD_SZ_IDX:Ne,CTRL_HEAD_CNT:Pe,SLAB_ARY_LEN_IDX:R_,SLAB_STRIDE_V:dt,slab_ctrl_bits_start_idx:Oe,slab_mx_cnt_idx:mt,slab_used_cnt_idx:yr,slab_cursor_idx:Me,slab_sz_idx:_t,slab_algn_idx:U_,PTR_HEAD_CNT:Fe,DATA_PTR_IDX:dr}=$();function D_(t){var r=dt*t;return this.ctrl_vw.subarray(r,r+dt)}function N_(t){return U.read_one_slab_ary_from_tas(this.ctrl_ta,this.ptr_ta,t)}function P_(t){var[r,a,_,e]=U.dloc_slct_slab(this.ctrl_vw,this.ptr_vw,t),n=r[mt],s=r[yr],i=r[_t],l=r[U_],o=ptr_vw[e];return{mx_cnt:n,used_cnt:s,unused_cnt:n-s,slab_sz:i,slab_algn:l,data_si:o,data_ei:o+i*n,ctrl_bits:a}}function O_(t){return U.get_ctrl_bits(this.ctrl_vw,t)}function M_(t,r=1){return U.find_slab(this.ctrl_ta,this.ptr_ta,t,r)}function F_(t=r=>!0){return U.find_slabs(this.ctrl_ta,this.ptr_ta,t)}function Y_(t,r){var a=this.get_ctrl_bits(t);return U.get_bit(a,r,this.bit_cnt_per_unit_v)}function C_(t,r){return!this.is_aloced(t,r)}function H_(t){return this.ptr_vw[t]}function $_(t){var r=dt*t,a=this.ctrl_vw[r+mt],_=this.ctrl_vw[r+_t],e=this.ptr_vw[t];return e+_*a}function X_(t){var r=dt*t,a=this.ctrl_vw[r+mt],_=this.ctrl_vw[r+_t],e=this.ptr_vw[t];return[e+_*a,e]}function j_(t,r){var a=this.ptr_vw[t],_=this.get_ctrl_entry(t),e=_[_t],n=a+e*r,s=n+e;return[n,s]}function k_(t,r=1){var[a,_,e]=U.aloc_slct_slab(this.ctrl_ta,t,r);if(a!==null){var n=U.find_fst_false_bit_and_set_to_true(a,_,this.bit_cnt_per_unit_v);if(n>=0){var s=this.data_ptr,i=this.ptr_vw[e],l=a[_t],o=s+i+l*n,c=o+l;return[c,o]}else return[0,0]}else return[0,0]}function q_(t){var r=t-this.data_ptr,[a,_,e,n]=U.dloc_slct_slab(this.ctrl_ta,this.ptr_vw,r);return a!==null&&U.set_bit_to_false_if_true(_,e,this.bit_cnt_per_unit_v)?(a[yr]--,!0):!1}function Z_(){var t=this._underlying_ab,r=this.ctrl_load_hint.byteOffset;return this.cond_data_inline?new Uint8Arrayy(t,r,r+this.cpdsz):new Uint8Array(t,r,r+this.cpsz)}function V_(t){var r=t-this.ptr_ta[dr];this.ptr_ta[dr]=t;var a=this.ctrl_ta[R_],_=this.ptr_vw;for(let e=0;e<a;++e)_[e]+=r}pr.exports={get_ctrl_entry:D_,get_ctrl_entry_desc:N_,get_ctrl_bits:O_,get_ctrl_of_si:P_,get_data_si:H_,get_data_ei:$_,get_data_rng:X_,is_freeed:C_,is_aloced:Y_,aloc:k_,dloc:q_,dump:Z_,find_slab:M_,find_slabs:F_,get_siei:j_,_updt_data_ptr:V_}});var le=R((Je,w)=>{var At=Ut(),Ce=Nt(),{get_nth_byte:He,get_cls_from_dump_fst_byte:Ar,calc_prepad_sz:$e,read_dv_with_cls:yt,fmt_underlying:G_,fmt_data:K_}=W(),{calc_slab_info:J_,slct_slab:Xe}=Z(),vr=$(),j=Z(),G=lr(),{LOAD_HINT_SZ:Y,LOAD_HINT_CLS_BYT_IDX:je,LOAD_HINT_PRE_PAD_SZ_IDX:ke,CTRL_HEAD_CNT:zt,SLAB_ARY_LEN_IDX:W_,SLAB_STRIDE_V:Q_,slab_ctrl_bits_start_idx:qe,slab_mx_cnt_idx:te,slab_used_cnt_idx:Ze,slab_cursor_idx:Ve,slab_sz_idx:Ge,slab_algn_idx:Ke,PTR_HEAD_CNT:pt,DATA_PTR_IDX:Tr}=$(),K=()=>{var t=vr.DFLT_CFG();return j.merge_slab_ary(j.sort_slab_ary(j.dict_cfg_to_ary_cfg(t)))},re=(t=0)=>J_(K(),t);function M(t,r,a,_){var e=r[W_];At.def_ps(this,{CTRL_TACLS:r.constructor,bit_cnt_per_unit_v:8*r.constructor.BYTES_PER_ELEMENT,ctrl_load_hint:t,ctrl_ta:r,ctrl_vw:r.subarray(zt),ctrl_entries:r.subarray(zt,zt+e),PTR_TACLS:_.constructor,ptr_load_hint:a,ptr_ta:_,ptr_vw:_.subarray(pt)})}var ae=br(),_e=hr();At.add_getters(M,ae);At.add_mthds(M,_e);Object.defineProperty(M.prototype,Symbol.toStringTag,{get:function(){return JSON.stringify(this.stats,null,2)}});var ee=(t,r,a,_)=>{a.data_inline=!1,a.data_ptr=_;let[{ctrl_load_hint:e,ctrl_ta:n,ptr_load_hint:s,ptr_ta:i,ctrl_vw:l,ptr_vw:o},c]=G.creat_tas_with_ab_and_aligned_offset(t,r,a);return G.init_vws(a,l,o),new M(e,n,s,i)},gr=(t,r=K(),a={ptr:0,inline:!1})=>{t=G_(t),a=K_(a),r=j.calc_slab_info(r,a);let{ctrl_load_hint:_,ctrl_ta:e,ptr_load_hint:n,ptr_ta:s,ctrl_vw:i,ptr_vw:l}=G.creat_tas(t,r,a);return G.init_vws(r,i,l),new M(_,e,n,s)},ne=(t=K(),r={ptr:0,inline:!1})=>gr(null,t,r),Er=t=>{var r=0;let a=Ar(t[r]);r+=1;let _=a.BYTES_PER_ELEMENT,e=t[r];r+=1,r+=e;var n=r,s=new DataView(t.buffer,t.byteOffset,t.byteLength);let i=yt(s,a,r,!0);r+=a.BYTES_PER_ELEMENT;var l=0;for(let I=0;I<i;I++){r+=a.BYTES_PER_ELEMENT*Q_;var o=yt(s,a,r+te,!0);l+=j.calc_ctrl_bits_sz(o,a)}r+=l;let c=Ar(t[r]);r+=1;let f=c.BYTES_PER_ELEMENT,p=t[r];r+=1,r+=p;var d=r;let T=yt(s,c,r,!0);r+=c.BYTES_PER_ELEMENT;var y=r;r+=c.BYTES_PER_ELEMENT*i;var b=yt(s,BigInt64Array,r,!0);let g=b>0;b<0n&&(b=-b);let v=Number(b>>8n),B=Number((b&0xF0n)>>4n),L=Number(b&0x0Fn);r+=8;let S=Math.max(_,f);return{offset:r,CTRL_TACLS:a,ctrl_algn:_,ctrl_ta_offset:n,pool_cnt:i,pad_bfr_ctrl_sz:e,PTR_TACLS:c,ptr_algn:f,ptr_ta_offset:d,data_ptr:T,pad_bfr_ptr_sz:p,data_inline:g,data_algn:B,data_sz:v,pad_bfr_data_sz:L,cp_algn:S,cp_sz:r}},wr=(t,r)=>{var a=t.byteOffset;let{offset:_,CTRL_TACLS:e,ctrl_algn:n,ctrl_ta_offset:s,pool_cnt:i,pad_bfr_ctrl_sz:l,PTR_TACLS:o,ptr_algn:c,ptr_ta_offset:f,data_ptr:p,pad_bfr_ptr_sz:d,data_inline:T,data_algn:y,data_sz:b,pad_bfr_data_sz:g,cp_algn:v,cp_sz:B}=r,L=_;if(t.byteLength<L)throw`u8a.byteLength(${t.byteLength}) MUST >= ${L}`;a%v===0||(t=t.slice(0),a=0);{var S=t.subarray(0,Y),x=new e(t.buffer,a+Y,(f-d-Y-s)/e.BYTES_PER_ELEMENT),I=t.subarray(f-Y,f),C=new o(t.buffer,a+f,pt+i);return new M(S,x,I,C)}},Lr=(t,r)=>{var a=t.byteOffset;let{offset:_,CTRL_TACLS:e,ctrl_algn:n,ctrl_ta_offset:s,pool_cnt:i,pad_bfr_ctrl_sz:l,PTR_TACLS:o,ptr_algn:c,ptr_ta_offset:f,data_ptr:p,pad_bfr_ptr_sz:d,data_inline:T,data_algn:y,data_sz:b,pad_bfr_data_sz:g,cp_algn:v,cp_sz:B}=r;_+=g;var L=_;let S=_+b,x=Math.max(v,y);if(t.byteLength<S)throw`u8a.byteLength(${t.byteLength}) MUST >= ${S}`;a%x===0||(t=t.slice(0),a=0);{var I=t.subarray(0,Y),C=new e(t.buffer,a+Y,(f-d-Y-s)/e.BYTES_PER_ELEMENT),et=t.subarray(f-Y,f),D=new o(t.buffer,a+f,pt+i);D[Tr]=a+L;var k=D.subarray(pt),m=D[Tr]-p;for(let A=0;A<i;++A)k[A]+=m;return new M(I,C,et,D)}},Sr=t=>{let r=Er(t);return inline?Lr(t,r):wr(t,r)},ht=class{slabs;data;constructor(r,a){this.slabs=r,this.data=data,Object.seal(this)}dump(){return this.slabs.dump()}aloc(r,a=1){var[_,e]=this.slabs.aloc(r,a);return this.data.subarray(e,_)}dloc(r){if(r.buffer===this.data.buffer){var a=r.byteOffset;return this.slabs.dloc(a)}else return!1}},Br=(t,r)=>new ht(t,r),xr=(t,r=K())=>{let a={ptr:0,inline:!0};r=j.calc_slab_info(r,a);let _=G.creat_tas(t,r,a),{ctrl_load_hint:e,ctrl_ta:n,ptr_load_hint:s,ptr_ta:i,ctrl_vw:l,ptr_vw:o}=_;return G.init_vws(r,l,o),Br(new M(e,n,s,i),_.data)},se=(t=K())=>xr(null,t),ie=t=>{var r=Sr(t),a=t.subarray(r._data_ptr_if_inline);return Br(r,a)};w.exports=ne;w.exports.load=Sr;w.exports.creat_on_external_ab=gr;w.exports.creat_dflt_cfg=K;w.exports.calc_dflt_slab_info=re;w.exports.creat_non_inline_on_aligned_external_ab_aft_calc_cfg=ee;w.exports.preload=Er;w.exports.load_non_inline_aft_preload=wr;w.exports.load_inline_aft_preload=Lr;w.exports.new_buf=se;w.exports.load_buf=ie;w.exports.new_buf_on_external_ab=xr;At.def_ps(w.exports,{Slabs:M,Buf:ht,_util:j,_const:vr})});return le();})();
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const x=require("../index")();
|
|
2
|
+
|
|
3
|
+
var slab_ary = x.slab_ary;
|
|
4
|
+
console.log(x);
|
|
5
|
+
var si = Date.now();
|
|
6
|
+
|
|
7
|
+
var total = (0);
|
|
8
|
+
var sz = 0;
|
|
9
|
+
for(let each of slab_ary) {
|
|
10
|
+
let {slab_sz,mx_cnt} = each;
|
|
11
|
+
console.log({slab_sz,mx_cnt});
|
|
12
|
+
for(let i=0;i<mx_cnt;++i) {
|
|
13
|
+
x.aloc(slab_sz);
|
|
14
|
+
sz += (slab_sz);
|
|
15
|
+
}
|
|
16
|
+
total += (mx_cnt);
|
|
17
|
+
console.log("finish",slab_sz,{total,sz})
|
|
18
|
+
}
|
|
19
|
+
var ei = Date.now();
|
|
20
|
+
console.log(`aloc ${total} cost ${(ei-si)/1000} secs, avg(${total/(ei-si)*1000})/sec , avg(${sz/(ei-si)*1000}) bytes/sec`);
|
|
21
|
+
|
|
22
|
+
console.log(x);
|
|
23
|
+
|
|
24
|
+
var si2 = Date.now();
|
|
25
|
+
var total = (0);
|
|
26
|
+
var sz = 0;
|
|
27
|
+
for(let id=0;id<slab_ary.length;++id) {
|
|
28
|
+
let {slab_sz,mx_cnt} = slab_ary[id];
|
|
29
|
+
for(let i=0;i<mx_cnt;++i) {
|
|
30
|
+
var [si,ei] = x.get_siei(id,i);
|
|
31
|
+
x.dloc(si);
|
|
32
|
+
sz += (slab_sz);
|
|
33
|
+
}
|
|
34
|
+
total += (mx_cnt);
|
|
35
|
+
console.log("finish",slab_sz,{total,sz})
|
|
36
|
+
}
|
|
37
|
+
var ei2 = Date.now();
|
|
38
|
+
console.log(`dloc ${total} cost ${(ei2-si2)/1000} secs, avg(${total/(ei2-si2)*1000})/sec , avg(${sz/(ei2-si2)*1000}) bytes/sec`);
|
|
39
|
+
|
|
40
|
+
console.log(x);
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
// ===== 被测试函数 =====
|
|
2
|
+
const merge_slab_ary = (slab_ary) => {
|
|
3
|
+
const n = slab_ary.length;
|
|
4
|
+
if (n === 0) return [];
|
|
5
|
+
|
|
6
|
+
const out = [];
|
|
7
|
+
|
|
8
|
+
let prev = slab_ary[0];
|
|
9
|
+
let acc_cnt = prev.mx_cnt;
|
|
10
|
+
|
|
11
|
+
for (let i = 1; i < n; i++) {
|
|
12
|
+
let cur = slab_ary[i];
|
|
13
|
+
|
|
14
|
+
if (
|
|
15
|
+
cur.slab_sz === prev.slab_sz &&
|
|
16
|
+
cur.slab_algn === prev.slab_algn
|
|
17
|
+
) {
|
|
18
|
+
acc_cnt += cur.mx_cnt;
|
|
19
|
+
} else {
|
|
20
|
+
out.push({
|
|
21
|
+
slab_sz: prev.slab_sz,
|
|
22
|
+
slab_algn: prev.slab_algn,
|
|
23
|
+
mx_cnt: acc_cnt
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
prev = cur;
|
|
27
|
+
acc_cnt = cur.mx_cnt;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
out.push({
|
|
32
|
+
slab_sz: prev.slab_sz,
|
|
33
|
+
slab_algn: prev.slab_algn,
|
|
34
|
+
mx_cnt: acc_cnt
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return out;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const merge_slab_ary_inplace = (arr) => {
|
|
41
|
+
if (arr.length === 0) return arr;
|
|
42
|
+
|
|
43
|
+
let write = 0;
|
|
44
|
+
|
|
45
|
+
for (let read = 1; read < arr.length; read++) {
|
|
46
|
+
let a = arr[write];
|
|
47
|
+
let b = arr[read];
|
|
48
|
+
|
|
49
|
+
if (a.slab_sz === b.slab_sz && a.slab_algn === b.slab_algn) {
|
|
50
|
+
a.mx_cnt += b.mx_cnt;
|
|
51
|
+
} else {
|
|
52
|
+
write++;
|
|
53
|
+
arr[write] = b;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
arr.length = write + 1;
|
|
58
|
+
return arr;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// ===== 工具 =====
|
|
62
|
+
const assert = (cond, msg) => {
|
|
63
|
+
if (!cond) throw new Error("❌ " + msg);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const deepEq = (a, b) => {
|
|
67
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// ===== 测试 =====
|
|
71
|
+
|
|
72
|
+
const test_basic = () => {
|
|
73
|
+
const input = [
|
|
74
|
+
{ slab_sz: 16, slab_algn: 8, mx_cnt: 10 },
|
|
75
|
+
{ slab_sz: 16, slab_algn: 8, mx_cnt: 5 },
|
|
76
|
+
{ slab_sz: 16, slab_algn: 16, mx_cnt: 2 },
|
|
77
|
+
{ slab_sz: 24, slab_algn: 8, mx_cnt: 3 },
|
|
78
|
+
{ slab_sz: 24, slab_algn: 8, mx_cnt: 7 },
|
|
79
|
+
];
|
|
80
|
+
|
|
81
|
+
const expected = [
|
|
82
|
+
{ slab_sz: 16, slab_algn: 8, mx_cnt: 15 },
|
|
83
|
+
{ slab_sz: 16, slab_algn: 16, mx_cnt: 2 },
|
|
84
|
+
{ slab_sz: 24, slab_algn: 8, mx_cnt: 10 },
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
const out = merge_slab_ary(input);
|
|
88
|
+
|
|
89
|
+
assert(deepEq(out, expected), "basic merge failed");
|
|
90
|
+
console.log("✅ test_basic passed");
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const test_single = () => {
|
|
94
|
+
const input = [
|
|
95
|
+
{ slab_sz: 8, slab_algn: 1, mx_cnt: 1 }
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
const out = merge_slab_ary(input);
|
|
99
|
+
|
|
100
|
+
assert(deepEq(out, input), "single failed");
|
|
101
|
+
console.log("✅ test_single passed");
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const test_empty = () => {
|
|
105
|
+
const out = merge_slab_ary([]);
|
|
106
|
+
assert(Array.isArray(out) && out.length === 0, "empty failed");
|
|
107
|
+
console.log("✅ test_empty passed");
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const test_no_merge = () => {
|
|
111
|
+
const input = [
|
|
112
|
+
{ slab_sz: 8, slab_algn: 1, mx_cnt: 1 },
|
|
113
|
+
{ slab_sz: 16, slab_algn: 8, mx_cnt: 2 },
|
|
114
|
+
{ slab_sz: 24, slab_algn: 8, mx_cnt: 3 },
|
|
115
|
+
];
|
|
116
|
+
|
|
117
|
+
const out = merge_slab_ary(input);
|
|
118
|
+
|
|
119
|
+
assert(deepEq(out, input), "no merge failed");
|
|
120
|
+
console.log("✅ test_no_merge passed");
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const test_inplace = () => {
|
|
124
|
+
const input = [
|
|
125
|
+
{ slab_sz: 16, slab_algn: 8, mx_cnt: 10 },
|
|
126
|
+
{ slab_sz: 16, slab_algn: 8, mx_cnt: 5 },
|
|
127
|
+
{ slab_sz: 24, slab_algn: 8, mx_cnt: 3 },
|
|
128
|
+
];
|
|
129
|
+
|
|
130
|
+
const out = merge_slab_ary_inplace(input);
|
|
131
|
+
|
|
132
|
+
assert(out.length === 2, "inplace length wrong");
|
|
133
|
+
assert(out[0].mx_cnt === 15, "inplace merge wrong");
|
|
134
|
+
|
|
135
|
+
console.log("✅ test_inplace passed");
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
// ===== 简单 fuzz =====
|
|
139
|
+
const test_random = () => {
|
|
140
|
+
const gen = () => {
|
|
141
|
+
let sizes = [8,16,24,32];
|
|
142
|
+
let aligns = [1,8,16];
|
|
143
|
+
|
|
144
|
+
let arr = [];
|
|
145
|
+
|
|
146
|
+
for (let i = 0; i < 50; i++) {
|
|
147
|
+
arr.push({
|
|
148
|
+
slab_sz: sizes[Math.random() * sizes.length | 0],
|
|
149
|
+
slab_algn: aligns[Math.random() * aligns.length | 0],
|
|
150
|
+
mx_cnt: (Math.random() * 10 | 0) + 1
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// 排序(模拟前提)
|
|
155
|
+
arr.sort((a,b)=>{
|
|
156
|
+
if (a.slab_sz !== b.slab_sz) return a.slab_sz - b.slab_sz;
|
|
157
|
+
return a.slab_algn - b.slab_algn;
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
return arr;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
for (let i = 0; i < 1000; i++) {
|
|
164
|
+
let arr = gen();
|
|
165
|
+
let out = merge_slab_ary(arr);
|
|
166
|
+
|
|
167
|
+
// 校验:没有重复 key
|
|
168
|
+
for (let j = 1; j < out.length; j++) {
|
|
169
|
+
let a = out[j-1];
|
|
170
|
+
let b = out[j];
|
|
171
|
+
|
|
172
|
+
assert(
|
|
173
|
+
!(a.slab_sz === b.slab_sz && a.slab_algn === b.slab_algn),
|
|
174
|
+
"duplicate after merge"
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
console.log("✅ test_random passed");
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
// ===== run =====
|
|
183
|
+
console.log("=== RUN TESTS ===");
|
|
184
|
+
|
|
185
|
+
test_basic();
|
|
186
|
+
test_single();
|
|
187
|
+
test_empty();
|
|
188
|
+
test_no_merge();
|
|
189
|
+
test_inplace();
|
|
190
|
+
test_random();
|
|
191
|
+
|
|
192
|
+
console.log("🎉 ALL TESTS PASSED");
|
|
193
|
+
|
|
194
|
+
|
package/TEST/tst-util.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
const {
|
|
2
|
+
calc_slab_info
|
|
3
|
+
} = require("../util"); // ← 改成你的文件路径
|
|
4
|
+
|
|
5
|
+
// ===== pretty print =====
|
|
6
|
+
const print = (title, data) => {
|
|
7
|
+
console.log("\n=== " + title + " ===");
|
|
8
|
+
console.log(data.slab_ary_sz)
|
|
9
|
+
for (let d of data.slab_ary) {
|
|
10
|
+
console.log(d);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// ===== 测试1:dict 输入 =====
|
|
15
|
+
const test_dict = () => {
|
|
16
|
+
const cfg = {
|
|
17
|
+
"16": { slab_algn: 8, mx_cnt: 10 },
|
|
18
|
+
"16b": { slab_algn: 8, mx_cnt: 5 }, // 会 merge
|
|
19
|
+
"32": { slab_algn: 8, mx_cnt: 3 },
|
|
20
|
+
"24": { slab_algn: 8, mx_cnt: 7 },
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
let out = calc_slab_info(Uint32Array, cfg);
|
|
24
|
+
|
|
25
|
+
print("DICT RESULT", out);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// ===== 测试2:array 输入 =====
|
|
29
|
+
const test_array = () => {
|
|
30
|
+
const cfg = [
|
|
31
|
+
{ slab_sz: 16, slab_algn: 8, mx_cnt: 10 },
|
|
32
|
+
{ slab_sz: 16, slab_algn: 8, mx_cnt: 5 }, // merge
|
|
33
|
+
{ slab_sz: 24, slab_algn: 8, mx_cnt: 7 },
|
|
34
|
+
{ slab_sz: 32, slab_algn: 8, mx_cnt: 3 },
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
let out = calc_slab_info(Uint32Array, cfg);
|
|
38
|
+
|
|
39
|
+
print("ARRAY RESULT", out);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// ===== 测试3:排序验证 =====
|
|
43
|
+
const test_sort = () => {
|
|
44
|
+
const cfg = [
|
|
45
|
+
{ slab_sz: 32, slab_algn: 8, mx_cnt: 1 },
|
|
46
|
+
{ slab_sz: 16, slab_algn: 16, mx_cnt: 1 },
|
|
47
|
+
{ slab_sz: 16, slab_algn: 8, mx_cnt: 1 },
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
let out = calc_slab_info(Uint32Array, cfg);
|
|
51
|
+
|
|
52
|
+
print("SORT RESULT", out);
|
|
53
|
+
|
|
54
|
+
console.log("\nEXPECT ORDER:");
|
|
55
|
+
console.log("16/8 → 16/16 → 32/8");
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// ===== 测试4:异常测试 =====
|
|
59
|
+
const test_error = () => {
|
|
60
|
+
try {
|
|
61
|
+
calc_slab_info(Uint32Array, [
|
|
62
|
+
{ slab_sz: 16, slab_algn: 3, mx_cnt: 1 } // 非法 align
|
|
63
|
+
]);
|
|
64
|
+
} catch (e) {
|
|
65
|
+
console.log("\n✅ expected error:", e.message);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// ===== 测试5:大一点 =====
|
|
70
|
+
const test_big = () => {
|
|
71
|
+
const cfg = {
|
|
72
|
+
"8": { slab_algn: 1, mx_cnt: 100 },
|
|
73
|
+
"16": { slab_algn: 8, mx_cnt: 80 },
|
|
74
|
+
"24": { slab_algn: 8, mx_cnt: 60 },
|
|
75
|
+
"64": { slab_algn: 16, mx_cnt: 40 },
|
|
76
|
+
"128": { slab_algn: 16, mx_cnt: 20 },
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
let out = calc_slab_info(Uint32Array, cfg);
|
|
80
|
+
|
|
81
|
+
print("BIG RESULT", out);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// ===== run =====
|
|
85
|
+
console.log("=== RUN calc_slab_info TEST ===");
|
|
86
|
+
|
|
87
|
+
test_dict();
|
|
88
|
+
test_array();
|
|
89
|
+
test_sort();
|
|
90
|
+
test_error();
|
|
91
|
+
test_big();
|
|
92
|
+
|
|
93
|
+
console.log("\n🎉 DONE");
|
package/com.sh
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nv_cli_build -m -g nvbufbigslab -i index.js -o DIST/nv-buf-big-slab-bw.js
|
package/const.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
|
|
2
|
+
const LOAD_HINT_SZ = 2;
|
|
3
|
+
const LOAD_HINT_CLS_BYT_IDX = 0;
|
|
4
|
+
const LOAD_HINT_PRE_PAD_SZ_IDX =1;
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
const CTRL_HEAD_CNT = 1;
|
|
9
|
+
const SLAB_ARY_LEN_IDX = 0;
|
|
10
|
+
|
|
11
|
+
const SLAB_STRIDE_V = 6;
|
|
12
|
+
const slab_ctrl_bits_start_idx = 0;
|
|
13
|
+
const slab_mx_cnt_idx = 1;
|
|
14
|
+
const slab_used_cnt_idx = 2;
|
|
15
|
+
const slab_cursor_idx = 3;
|
|
16
|
+
const slab_sz_idx = 4;
|
|
17
|
+
const slab_algn_idx = 5;
|
|
18
|
+
|
|
19
|
+
const PTR_HEAD_CNT = 1;
|
|
20
|
+
const DATA_PTR_IDX = 0;
|
|
21
|
+
|
|
22
|
+
const DATA_LOAD_HINT_SZ = 8;
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
const DFLT_CFG = ()=>({
|
|
26
|
+
"1" :{mx_cnt: 1024},
|
|
27
|
+
"2" :{mx_cnt: 1024},
|
|
28
|
+
////
|
|
29
|
+
"4" :{mx_cnt: 2048},
|
|
30
|
+
"6" :{mx_cnt: 2048},
|
|
31
|
+
////
|
|
32
|
+
"8" :{mx_cnt: 1024*1024},
|
|
33
|
+
"12":{mx_cnt: 1024*1024},
|
|
34
|
+
////
|
|
35
|
+
"16":{mx_cnt: 1024*1024*4},
|
|
36
|
+
"20":{mx_cnt: 1024*1024*4},
|
|
37
|
+
////
|
|
38
|
+
"24":{mx_cnt: 1024*1024*8},
|
|
39
|
+
"28":{mx_cnt: 1024*1024*8},
|
|
40
|
+
////
|
|
41
|
+
"32":{mx_cnt: 1024*1024*16},
|
|
42
|
+
"40":{mx_cnt: 1024*1024*16},
|
|
43
|
+
"48":{mx_cnt: 1024*1024*16},
|
|
44
|
+
"56":{mx_cnt: 1024*1024*16},
|
|
45
|
+
"64":{mx_cnt: 1024*1024*16},
|
|
46
|
+
////
|
|
47
|
+
"128":{mx_cnt: 1024*1024*4},
|
|
48
|
+
"256":{mx_cnt: 1024*1024*4},
|
|
49
|
+
////---------------------------------
|
|
50
|
+
"512":{mx_cnt: 1024*1024},
|
|
51
|
+
"1k":{mx_cnt: 1024*1024},
|
|
52
|
+
"2k":{mx_cnt: 1024*1024},
|
|
53
|
+
"4k":{mx_cnt: 1024*1024},
|
|
54
|
+
////
|
|
55
|
+
"8k":{mx_cnt: 65536*2},
|
|
56
|
+
"16k":{mx_cnt: 65536},
|
|
57
|
+
"32k":{mx_cnt: 32768},
|
|
58
|
+
"64k":{mx_cnt: 8192},
|
|
59
|
+
"128k":{mx_cnt: 4096},
|
|
60
|
+
////
|
|
61
|
+
"256k":{mx_cnt: 2048},
|
|
62
|
+
"512k":{mx_cnt:2048},
|
|
63
|
+
////
|
|
64
|
+
"1m" :{mx_cnt:1024},
|
|
65
|
+
"2m" :{mx_cnt:1024},
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
module.exports = {
|
|
69
|
+
LOAD_HINT_SZ ,
|
|
70
|
+
LOAD_HINT_CLS_BYT_IDX ,
|
|
71
|
+
LOAD_HINT_PRE_PAD_SZ_IDX,
|
|
72
|
+
////
|
|
73
|
+
CTRL_HEAD_CNT,SLAB_ARY_LEN_IDX,
|
|
74
|
+
SLAB_STRIDE_V,
|
|
75
|
+
slab_ctrl_bits_start_idx,
|
|
76
|
+
slab_mx_cnt_idx,
|
|
77
|
+
slab_used_cnt_idx,
|
|
78
|
+
slab_cursor_idx,
|
|
79
|
+
slab_sz_idx,
|
|
80
|
+
slab_algn_idx,
|
|
81
|
+
PTR_HEAD_CNT, DATA_PTR_IDX,
|
|
82
|
+
DATA_LOAD_HINT_SZ,
|
|
83
|
+
DFLT_CFG,
|
|
84
|
+
}
|
|
85
|
+
module.exports.HELP = `
|
|
86
|
+
=================================================================================================
|
|
87
|
+
ctrl-ta-cls-byte 1B | pad-bfr-ctrl-ta-sz 1B | ?pad-bfr-ctrl(pad-bfr-ctrl-ta-sz) |
|
|
88
|
+
--------------------------------------------------------------------------------
|
|
89
|
+
pool_cnt |
|
|
90
|
+
ctrl_bits_start | mx_cnt | used_cn| cursor | slab_sz | slab_algn |
|
|
91
|
+
.....................................................................
|
|
92
|
+
ctrl_bits_start | mx_cnt | used_cn| cursor | slab_sz | slab_algn |
|
|
93
|
+
ctrl_bits |
|
|
94
|
+
...........
|
|
95
|
+
ctrl_bits |
|
|
96
|
+
--------------------------------------------------------------------------------
|
|
97
|
+
ptr-ta-cls-byte 1B | pad-bfr-ptr-ta-sz 1B | ?pad-bfr-ptr(pad-bfr-ptr-ta-sz) |
|
|
98
|
+
//-----------------------------------------------------------------------
|
|
99
|
+
ptr | 【data_ptr base】
|
|
100
|
+
data_si |
|
|
101
|
+
........
|
|
102
|
+
data_si |
|
|
103
|
+
-------------------------------------------------------------------------
|
|
104
|
+
data_sz:56 | data_algn:4; | pad_bfr_data_sz:4 非对齐 BigInt64 负数表示非inline 整数表示inline
|
|
105
|
+
// ? pad_bfr_data
|
|
106
|
+
[....bytes.....]
|
|
107
|
+
==================================================================================================
|
|
108
|
+
`;
|
|
109
|
+
|