@evan/wasm
Version:
set of wasm modules
26 lines (21 loc) • 7.25 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})(7073,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,
};
}
}