@evan/wasm
Version:
set of wasm modules
26 lines (21 loc) • 7.23 kB
JavaScript
let wasm;
{
const module = new WebAssembly.Module(((r,n)=>{var a=Uint8Array,e=Uint16Array,f=Uint32Array,o=a.of(16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15),i=a.of(0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0),t=a.of(0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0),v=function(r,n){for(var a=new e(31),o=0;o<31;++o)a[o]=n+=1<<r[o-1];var i=new f(a[30]);for(o=1;o<30;++o)for(var t=a[o];t<a[o+1];++t)i[t]=t-a[o]<<5|o;return[a,i]},u=v(i,2),l=u[0],s=u[1];l[28]=258,s[258]=28;for(var w,b=v(t,0)[0],c=new e(32768),y=0;y<32768;++y)w=(61680&(w=(52428&(w=(43690&y)>>>1|(21845&y)<<1))>>>2|(13107&w)<<2))>>>4|(3855&w)<<4,c[y]=((65280&w)>>>8|(255&w)<<8)>>>1;var g=function(r,n,a){for(var f=r.length,o=0,i=new e(n);o<f;++o)++i[r[o]-1];var t,v=new e(n);for(o=0;o<n;++o)v[o]=v[o-1]+i[o-1]<<1;if(a){t=new e(1<<n);var u=15-n;for(o=0;o<f;++o)if(r[o])for(var l=o<<4|r[o],s=n-r[o],w=v[r[o]-1]++<<s,b=w|(1<<s)-1;w<=b;++w)t[c[w]>>>u]=l}else for(t=new e(f),o=0;o<f;++o)r[o]&&(t[o]=c[v[r[o]-1]++]>>>15-r[o]);return t},h=new a(288);for(y=0;y<144;++y)h[y]=8;for(y=144;y<256;++y)h[y]=9;for(y=256;y<280;++y)h[y]=7;for(y=280;y<288;++y)h[y]=8;var k=new a(32);for(y=0;y<32;++y)k[y]=5;var A=g(h,9,1),U=g(k,5,1),d=function(r){for(var n=r[0],a=1;a<r.length;++a)r[a]>n&&(n=r[a]);return n},p=function(r,n,a){var e=n>>3|0;return(r[e]|r[e+1]<<8)>>(7&n)&a},m=function(r,n){var a=n>>3|0;return(r[a]|r[a+1]<<8|r[a+2]<<16)>>(7&n)};const z=new Uint8Array(r);return function(r,n,v){var u=r.length;if(!u||v&&!v.l&&u<5)return n||new a(0);v||(v={}),n||(n=new a(3*u));var s,w=v.f||0,c=v.p||0,y=v.b||0,h=v.l,k=v.d,z=v.m,j=v.n,q=8*u;do{if(!h){v.f=w=p(r,c,1);var x=p(r,c+1,3);if(c+=3,!x){var B=r[(M=((s=c)>>3|0)+(7&s&&1)+4)-4]|r[M-3]<<8,C=M+B;if(C>u)break;n.set(r.subarray(M,C),y),v.b=y+=B,v.p=c=8*C;continue}if(1===x)h=A,k=U,z=9,j=5;else if(2===x){var D=p(r,c,31)+257,E=p(r,c+10,15)+4,F=D+p(r,c+5,31)+1;c+=14;for(var G=new a(F),H=new a(19),I=0;I<E;++I)H[o[I]]=p(r,c+3*I,7);c+=3*E;var J=d(H),K=(1<<J)-1,L=g(H,J,1);for(I=0;I<F;){var M,N=L[p(r,c,K)];if(c+=15&N,(M=N>>>4)<16)G[I++]=M;else{var O=0,P=0;for(16===M?(P=3+p(r,c,3),c+=2,O=G[I-1]):17===M?(P=3+p(r,c,7),c+=3):18===M&&(P=11+p(r,c,127),c+=7);P--;)G[I++]=O}}var Q=G.subarray(0,D),R=G.subarray(D);z=d(Q),j=d(R),h=g(Q,z,1),k=g(R,j,1)}if(c>q)break}for(var S=(1<<z)-1,T=(1<<j)-1,V=c;;V=c){var W=(O=h[m(r,c)&S])>>>4;if((c+=15&O)>q)break;if(W<256)n[y++]=W;else{if(256===W){V=c,h=null;break}var X=W-254;if(W>264){var Y=i[I=W-257];X=p(r,c,(1<<Y)-1)+l[I],c+=Y}var Z=k[m(r,c)&T],$=Z>>>4;c+=15&Z;R=b[$];if($>3){Y=t[$];R+=m(r,c)&(1<<Y)-1,c+=Y}if(c>q)break;for(var _=y+X;y<_;y+=4)n[y]=n[y-R],n[y+1]=n[y+1-R],n[y+2]=n[y+2-R],n[y+3]=n[y+3-R];y=_}}v.l=h,v.p=V,v.b=y,h&&(w=1,v.m=z,v.d=k,v.n=j)}while(!w);y===n.length||function(r,n,o){(null==n||n<0)&&(n=0),(null==o||o>r.length)&&(o=r.length);var i=new(r instanceof e?e:r instanceof f?f:a)(o-n);i.set(r.subarray(n,o))}(n,0,y)}(n.subarray(2,-4),z),z})(7055,Uint8Array.from(atob('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'), char => char.codePointAt(0))));
wasm = () => new WebAssembly.Instance(module).exports;
}
export default class Allocator {
#wasm = wasm();
#base = this.#wasm.memory.buffer.byteLength;
get memory() { return this.#wasm.memory; }
alloc(size) { return this.#wasm.walloc(size); }
free(ptr) { return this.#wasm.wfree(ptr, this.size(ptr)); }
size(ptr) { return new Uint32Array(this.#wasm.memory.buffer)[ptr / 4 - 1]; }
u8(ptr, size) { return new Uint8Array(this.#wasm.memory.buffer, ptr, size); }
get stats() {
const buffer = this.#wasm.memory.buffer;
return {
total: buffer.byteLength,
heap: buffer.byteLength - this.#base,
};
}
}