parallelize-async-work
ComputerGuy 5 days ago
parent fc03ba7e1b
commit ccc993933c

@ -141,22 +141,29 @@ export function Program(node, context) {
const body = []; const body = [];
for (let i = 0; i < node.body.length; i++) { for (let i = 0; i < node.body.length; i++) {
const transformed = /** @type {Program['body'][number]} */ (context.visit(node.body[i])); const transformed = /** @type {Program['body'][number]} */ (context.visit(node.body[i]));
const chunk = context.state.parallelized_chunks?.at(-1);
body.push(transformed); body.push(transformed);
if (chunk && chunk.position === i) { }
if (chunk.declarators.length === 1) { let offset = 0;
const declarator = chunk.declarators[0]; for (const chunk of context.state.parallelized_chunks) {
body.push( if (chunk.declarators.length === 1) {
b.declaration(chunk.kind, [ const declarator = chunk.declarators[0];
b.declarator(declarator.id, b.call(b.await(b.call('$.save', declarator.init)))) body.splice(
]) chunk.position + offset,
); 0,
} else { b.declaration(chunk.kind, [
const pattern = b.array_pattern(chunk.declarators.map(({ id }) => id)); b.declarator(declarator.id, b.call(b.await(b.call('$.save', declarator.init))))
const init = b.call('$.all', ...chunk.declarators.map(({ init }) => init)); ])
body.push(b.declaration(chunk.kind, [b.declarator(pattern, b.await(init))])); );
} } else {
const pattern = b.array_pattern(chunk.declarators.map(({ id }) => id));
const init = b.call('$.all', ...chunk.declarators.map(({ init }) => init));
body.splice(
chunk.position + offset,
0,
b.declaration(chunk.kind, [b.declarator(pattern, b.await(init))])
);
} }
offset++;
} }
return { return {
...node, ...node,

Loading…
Cancel
Save