Code review

This commit is contained in:
Surma
2019-01-24 16:16:18 -05:00
parent 2412e925ba
commit fdbc0932e4
4 changed files with 5 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
{
"name": "rotate",
"scripts": {
"build": "mv rotate.{as,ts} && asc rotate.ts -b rotate.wasm --validate --optimize && mv rotate.{ts,as}"
"build": "mv rotate.{as,ts} && asc rotate.ts -b rotate.wasm --validate -O3 && mv rotate.{ts,as}"
},
"devDependencies": {
"assemblyscript": "github:AssemblyScript/assemblyscript"

View File

@@ -54,8 +54,9 @@ export function rotate(inputWidth: i32, inputHeight: i32, rotate: i32): void {
}
for (let d2 = d2Start; d2 >= 0 && d2 < d2Limit; d2 += d2Advance) {
let d2offset = d2 * d2Multiplier;
for (let d1 = d1Start; d1 >= 0 && d1 < d1Limit; d1 += d1Advance) {
let start = ((d1 * d1Multiplier) + (d2 * d2Multiplier));
let start = ((d1 * d1Multiplier) + d2offset);
store<u32>(offset + i * 4, load<u32>(start * 4));
i += 1;
}

Binary file not shown.

View File

@@ -9,18 +9,14 @@ export async function rotate(
// Number of wasm memory pages (á 64KiB) needed to store the image twice.
const bytesPerImage = data.width * data.height * 4;
const numPagesNeeded = Math.ceil(bytesPerImage * 2 / (64 * 1024));
// const memory = new Uint8ClampedArray(data.data.length * 2);
// const memory = new WebAssembly.Memory({
// initial: Math.ceil(data.width * data.height * 4 * 2 / (64 * 1024)),
// });
const { instance } = (await (WebAssembly as any).instantiateStreaming(
fetch(wasmUrl),
)) as { instance: RotateModuleInstance };
instance.exports.memory.grow(numPagesNeeded);
const view = new Uint8ClampedArray(instance.exports.memory.buffer);
view.set(data.data);
(self as any).instance = instance;
instance.exports.rotate(data.width, data.height, opts.rotate);
return new ImageData(
view.slice(bytesPerImage, bytesPerImage * 2),