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", "name": "rotate",
"scripts": { "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": { "devDependencies": {
"assemblyscript": "github:AssemblyScript/assemblyscript" "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) { for (let d2 = d2Start; d2 >= 0 && d2 < d2Limit; d2 += d2Advance) {
let d2offset = d2 * d2Multiplier;
for (let d1 = d1Start; d1 >= 0 && d1 < d1Limit; d1 += d1Advance) { 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)); store<u32>(offset + i * 4, load<u32>(start * 4));
i += 1; 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. // Number of wasm memory pages (á 64KiB) needed to store the image twice.
const bytesPerImage = data.width * data.height * 4; const bytesPerImage = data.width * data.height * 4;
const numPagesNeeded = Math.ceil(bytesPerImage * 2 / (64 * 1024)); 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( const { instance } = (await (WebAssembly as any).instantiateStreaming(
fetch(wasmUrl), fetch(wasmUrl),
)) as { instance: RotateModuleInstance }; )) as { instance: RotateModuleInstance };
instance.exports.memory.grow(numPagesNeeded); instance.exports.memory.grow(numPagesNeeded);
const view = new Uint8ClampedArray(instance.exports.memory.buffer); const view = new Uint8ClampedArray(instance.exports.memory.buffer);
view.set(data.data); view.set(data.data);
(self as any).instance = instance;
instance.exports.rotate(data.width, data.height, opts.rotate); instance.exports.rotate(data.width, data.height, opts.rotate);
return new ImageData( return new ImageData(
view.slice(bytesPerImage, bytesPerImage * 2), view.slice(bytesPerImage, bytesPerImage * 2),