Source code

Revision control

Copy as Markdown

Other Tools

const {Module, Instance, compileStreaming, RuntimeError} = WebAssembly;
function testCached(code, imports, test) {
if (typeof code === 'string')
code = wasmTextToBinary(code);
let success = false;
let cache = streamCacheEntry(code);
assertEq(cache.cached, false);
compileStreaming(cache)
.then(m => {
test(new Instance(m, imports));
if (!wasmTestSerializationEnabled()) {
assertEq(wasmLoadedFromCache(m), false);
}
while (!wasmHasTier2CompilationCompleted(m)) {
sleep(1);
}
assertEq(cache.cached, true);
return compileStreaming(cache);
})
.then(m => {
test(new Instance(m, imports));
assertEq(wasmLoadedFromCache(m), true);
assertEq(cache.cached, true);
let m2 = wasmCompileInSeparateProcess(code);
test(new Instance(m2, imports));
assertEq(wasmLoadedFromCache(m2), true);
success = true;
})
.catch(err => { print(String(err) + " at:\n" + err.stack) });
drainJobQueue();
assertEq(success, true);
}