Move pretty printing Scopes into PrintHIR

This commit is contained in:
Lauren Tan
2022-12-09 17:12:45 -05:00
parent 255700e2cd
commit c8bb9ea0af
65 changed files with 303 additions and 297 deletions
-1
View File
@@ -63,7 +63,6 @@ export type HIRFunction = {
body: HIR;
generator: boolean;
async: boolean;
extra?: string;
};
/**
@@ -18,7 +18,6 @@ import {
ReactiveScope,
} from "./HIR";
import { BlockTerminal, Visitor, visitTree } from "./HIRTreeVisitor";
import { printPlace } from "./PrintHIR";
import { eachInstructionValueOperand } from "./visitors";
export function inferReactiveScopeDependencies(fn: HIRFunction) {
@@ -26,23 +25,12 @@ export function inferReactiveScopeDependencies(fn: HIRFunction) {
// that only visits and replacing this usage
const visitor = new ScopeDependenciesVisitor(fn);
visitTree(fn, visitor);
const output = [];
for (const scope of visitor.allScopes) {
if (scope.dependencies.size > 0) {
output.push(
`scope${scope.id} [${scope.range.start}:${
scope.range.end
}]:\n${Array.from(scope.dependencies)
.map((p) => " - " + printPlace(p))
.join("\n")}`
);
}
}
fn.extra = output.join("\n");
}
function instructionInScope(instrId: InstructionId, scope: ReactiveScope) {
export function instructionInScope(
instrId: InstructionId,
scope: ReactiveScope
) {
return instrId >= scope.range.start && instrId < scope.range.end;
}
@@ -52,8 +40,6 @@ class ScopeDependenciesVisitor
#identifiers: Map<Identifier, InstructionId> = new Map();
// Scopes that are currently active at this point in the traversal
#activeScopes: Set<ReactiveScope> = new Set();
// All scopes encountered during the traversal
allScopes: Set<ReactiveScope> = new Set();
get #lastActiveScope(): ReactiveScope | null {
const scopes = [...this.#activeScopes];
@@ -71,7 +57,6 @@ class ScopeDependenciesVisitor
#recordActiveScope(scope: ReactiveScope) {
this.#activeScopes.add(scope);
this.allScopes.add(scope);
}
/**
+24 -3
View File
@@ -24,6 +24,7 @@ import {
Terminal,
} from "./HIR";
import { buildAliasSets } from "./InferAlias";
import { eachReactiveScope } from "./visitors";
export type Options = {
indent: number;
@@ -32,9 +33,7 @@ export type Options = {
export function printFunction(fn: HIRFunction): string {
const output = [];
output.push(printHIR(fn.body));
if (fn.extra !== undefined) {
output.push(fn.extra);
}
output.push(printReactiveScopes(fn.body));
return output.join("\n");
}
@@ -345,3 +344,25 @@ export function printAliases(aliases: DisjointSet<Identifier>): string {
return items.join("\n");
}
export function printReactiveScopes(ir: HIR) {
const output = [];
for (const scope of eachReactiveScope(ir)) {
let shouldOutput = false;
const line = [
`scope${scope.id} [${scope.range.start}:${scope.range.end}]:`,
];
if (scope.dependencies.size > 0) {
shouldOutput = true;
line.push(
`${Array.from(scope.dependencies)
.map((p) => " - dependency: " + printPlace(p))
.join("\n")}`
);
}
if (shouldOutput) {
output.push(line.join("\n"));
}
}
return output.join("\n");
}
+19
View File
@@ -9,10 +9,13 @@ import { assertExhaustive } from "../Common/utils";
import {
BasicBlock,
BlockId,
HIR,
Instruction,
InstructionValue,
makeInstructionId,
Place,
ReactiveScope,
ScopeId,
Terminal,
} from "./HIR";
@@ -375,3 +378,19 @@ export function* eachBlockOperand(block: BasicBlock): Iterable<Place> {
}
yield* eachTerminalOperand(block.terminal);
}
export function* eachReactiveScope(ir: HIR): Iterable<ReactiveScope> {
const seenScopes: Set<ScopeId> = new Set();
for (const [, block] of ir.blocks) {
for (const operand of eachBlockOperand(block)) {
const scope = operand.identifier.scope;
if (scope != null) {
if (seenScopes.has(scope.id)) {
continue;
}
seenScopes.add(scope.id);
yield scope;
}
}
}
}
@@ -21,11 +21,11 @@ bb0:
[4] Const mutate $7_@3 = Binary read $6_@2 + read x$5_@1
[5] Return read $7_@3
scope2 [3:4]:
- read x$5_@1
- read x$5_@1
- dependency: read x$5_@1
- dependency: read x$5_@1
scope3 [4:5]:
- read $6_@2
- read x$5_@1
- dependency: read $6_@2
- dependency: read x$5_@1
```
### CFG
@@ -34,9 +34,9 @@ bb1:
predecessor blocks: bb3 bb2
[7] Return read x$11
scope1 [3:4]:
- read b$6
- dependency: read b$6
scope2 [5:6]:
- read c$7
- dependency: read c$7
```
### CFG
@@ -29,14 +29,14 @@ bb0:
[7] Const mutate x$11_@6 = Binary read x$9_@4 >>> read $10_@5
[8] Return
scope2 [3:4]:
- read x$5_@0
- read $6_@1
- dependency: read x$5_@0
- dependency: read $6_@1
scope4 [5:6]:
- read x$7_@2
- read $8_@3
- dependency: read x$7_@2
- dependency: read $8_@3
scope6 [7:8]:
- read x$9_@4
- read $10_@5
- dependency: read x$9_@4
- dependency: read $10_@5
```
### CFG
@@ -82,7 +82,7 @@ bb0:
[4] Reassign mutate a$4_@1.b.c[0:5] = Binary read a$4_@1.b.c * read $6_@2
[5] Return
scope2 [3:4]:
- mutate a$4_@1.b.c
- dependency: mutate a$4_@1.b.c
```
### CFG
@@ -56,11 +56,11 @@ bb0:
[8] Const mutate $15_@4 = JSX <read $14_@3 a={read a$10_@0} b={freeze b$11_@0} ></read $14_@3>
[9] Return read $15_@4
scope2 [5:6]:
- read $12_@1
- dependency: read $12_@1
scope4 [8:9]:
- read $14_@3
- read a$10_@0
- freeze b$11_@0
- dependency: read $14_@3
- dependency: read a$10_@0
- dependency: freeze b$11_@0
```
### CFG
@@ -89,9 +89,9 @@ bb2:
[33] Const mutate $60_@18 = JSX <read $53_@11>{read $54_@12}{read $57_@15}{read $58_@16}{freeze renderedItems$29_@2}{read $59_@17}</read $53_@11>
[34] Return read $60_@18
scope0 [1:2]:
- read props$26.items
- dependency: read props$26.items
scope1 [2:3]:
- read props$26.maxItems
- dependency: read props$26.maxItems
```
### CFG
@@ -90,9 +90,9 @@ bb1:
[6] Call mutate a_DEBUG$5_@0.push(read props$4.d)
[7] Return freeze a_DEBUG$5_@0
scope0 [1:7]:
- read props$4.a
- read props$4.b
- read props$4.d
- dependency: read props$4.a
- dependency: read props$4.b
- dependency: read props$4.d
```
### CFG
@@ -157,10 +157,10 @@ bb1:
[6] Call mutate a$4_@0.push(read props$3.d)
[7] Return freeze a$4_@0
scope0 [1:7]:
- read props$3.a
- read props$3.c
- read props$3.b
- read props$3.d
- dependency: read props$3.a
- dependency: read props$3.c
- dependency: read props$3.b
- dependency: read props$3.d
```
### CFG
@@ -227,10 +227,10 @@ bb1:
[7] Call mutate a$5_@0.push(read props$4.d)
[8] Return freeze a$5_@0
scope0 [1:8]:
- read props$4.a
- read props$4.c
- read props$4.b
- read props$4.d
- dependency: read props$4.a
- dependency: read props$4.c
- dependency: read props$4.b
- dependency: read props$4.d
```
### CFG
@@ -297,10 +297,10 @@ bb1:
[6] Call mutate a$4_@0.push(read props$3.d)
[7] Return freeze a$4_@0
scope0 [1:7]:
- read props$3.a
- read props$3.c
- read props$3.b
- read props$3.d
- dependency: read props$3.a
- dependency: read props$3.c
- dependency: read props$3.b
- dependency: read props$3.d
```
### CFG
@@ -366,9 +366,9 @@ bb1:
[6] Call mutate a$4_@0.push(read props$3.d)
[7] Return freeze a$4_@0
scope0 [1:7]:
- read props$3.a
- read props$3.d
- read props$3.c
- dependency: read props$3.a
- dependency: read props$3.d
- dependency: read props$3.c
```
### CFG
@@ -53,13 +53,9 @@ bb3:
predecessor blocks: bb4 bb1
[9] Const mutate $16_@2 = JSX <read Foo$4 a={freeze a$7_@0} b={freeze b$8_@0} ></read Foo$4>
[10] Return read $16_@2
scope0 [1:9]:
- read props$6.p0
- read props$6.p2
- read props$6.p1
scope2 [9:10]:
- freeze a$7_@0
- freeze b$8_@0
- dependency: freeze a$7_@0
- dependency: freeze b$8_@0
```
### CFG
@@ -148,8 +144,8 @@ bb3:
[10] Const mutate $19_@2 = JSX <read Foo$6 a={freeze a$9_@0} b={freeze b$10_@0} ></read Foo$6>
[11] Return read $19_@2
scope2 [10:11]:
- freeze a$9_@0
- freeze b$10_@0
- dependency: freeze a$9_@0
- dependency: freeze b$10_@0
```
### CFG
@@ -56,11 +56,11 @@ bb0:
[8] Const mutate $15_@4 = JSX <read $14_@3 a={read a$10_@0} b={freeze b$11_@0} ></read $14_@3>
[9] Return read $15_@4
scope2 [5:6]:
- read $12_@1
- dependency: read $12_@1
scope4 [8:9]:
- read $14_@3
- read a$10_@0
- freeze b$11_@0
- dependency: read $14_@3
- dependency: read a$10_@0
- dependency: freeze b$11_@0
```
### CFG
@@ -43,14 +43,14 @@ bb3:
predecessor blocks: bb4 bb1
[12] Return
scope0 [1:3]:
- read a$6
- dependency: read a$6
scope1 [3:4]:
- freeze x$8_@0
- dependency: freeze x$8_@0
scope2 [5:12]:
- read x$8_@0
- read x$8_@0.length
- read b$7
- read b$7
- dependency: read x$8_@0
- dependency: read x$8_@0.length
- dependency: read b$7
- dependency: read b$7
```
### CFG
@@ -43,13 +43,13 @@ bb3:
predecessor blocks: bb4 bb1
[10] Return freeze items2$10_@1
scope0 [1:10]:
- read z$8
- read x$6
- read x$6
- read y$7
- dependency: read z$8
- dependency: read x$6
- dependency: read x$6
- dependency: read y$7
scope1 [3:7]:
- read y$7
- read x$6
- dependency: read y$7
- dependency: read x$6
```
### CFG
@@ -47,9 +47,9 @@ bb7:
[10] Const mutate $13_@2 = null
[11] Return read $13_@2
scope0 [1:8]:
- read c$9
- read b$8
- read a$7
- dependency: read c$9
- dependency: read b$8
- dependency: read a$7
```
### CFG
@@ -24,8 +24,8 @@ bb0:
[4] Call mutate foo$4_@2(read b$6_@1)
[5] Return
scope1 [2:3]:
- read a$5_@0
- freeze a$5_@0
- dependency: read a$5_@0
- dependency: freeze a$5_@0
```
### CFG
@@ -86,14 +86,14 @@ bb0:
[7] Const mutate $16_@6 = JSX <read Component$0>{read $13_@3}{read x$11_@0}{read $14_@4}{read y$12_@1}{read $15_@5}</read Component$0>
[8] Return read $16_@6
scope1 [2:3]:
- freeze x$11_@0
- dependency: freeze x$11_@0
scope6 [7:8]:
- read Component$0
- read $13_@3
- read x$11_@0
- read $14_@4
- read y$12_@1
- read $15_@5
- dependency: read Component$0
- dependency: read $13_@3
- dependency: read x$11_@0
- dependency: read $14_@4
- dependency: read y$12_@1
- dependency: read $15_@5
```
### CFG
@@ -46,12 +46,12 @@ bb1:
[11] Call mutate call$6_@4(read a$11_@3)
[12] Return read a$11_@3
scope0 [1:2]:
- read props$7.cond
- dependency: read props$7.cond
scope1 [2:3]:
- read props$7.x
- dependency: read props$7.x
scope3 [4:9]:
- read x$9_@1
- read cond$8_@0
- dependency: read x$9_@1
- dependency: read cond$8_@0
```
### CFG
@@ -158,8 +158,8 @@ bb1:
[7] Const mutate $14_@1 = JSX <read Foo$6 a={freeze a$9_@0} b={freeze b$10_@0} ></read Foo$6>
[8] Return read $14_@1
scope1 [7:8]:
- freeze a$9_@0
- freeze b$10_@0
- dependency: freeze a$9_@0
- dependency: freeze b$10_@0
```
### CFG
@@ -33,8 +33,8 @@ bb0:
[3] Const mutate $10_@1 = JSX <read Foo$5 a={freeze a$8_@0} b={freeze b$9_@0} ></read Foo$5>
[4] Return read $10_@1
scope1 [3:4]:
- freeze a$8_@0
- freeze b$9_@0
- dependency: freeze a$8_@0
- dependency: freeze b$9_@0
```
### CFG
@@ -124,8 +124,8 @@ bb1:
[6] Const mutate $14_@1 = JSX <read Foo$6 a={freeze a$9_@0} b={freeze b$10_@0} ></read Foo$6>
[7] Return read $14_@1
scope1 [6:7]:
- freeze a$9_@0
- freeze b$10_@0
- dependency: freeze a$9_@0
- dependency: freeze b$10_@0
```
### CFG
@@ -34,8 +34,8 @@ bb0:
[4] Const mutate $11_@1 = JSX <read Foo$6 a={freeze a$9_@0} b={freeze b$10_@0} ></read Foo$6>
[5] Return read $11_@1
scope1 [4:5]:
- freeze a$9_@0
- freeze b$10_@0
- dependency: freeze a$9_@0
- dependency: freeze b$10_@0
```
### CFG
@@ -31,9 +31,9 @@ bb1:
predecessor blocks: bb5 bb3 bb0
[6] Return
scope0 [1:6]:
- read c$7
- read b$6
- read a$5
- dependency: read c$7
- dependency: read b$6
- dependency: read a$5
```
### CFG
@@ -21,9 +21,9 @@ bb0:
[4] Const mutate b$9_@2 = read a$8_@1
[5] Return
scope1 [3:4]:
- read x$7_@0
- dependency: read x$7_@0
scope2 [4:5]:
- read a$8_@1
- dependency: read a$8_@1
```
### CFG
@@ -32,19 +32,19 @@ bb0:
[11] Const mutate $24_@10 = JsxFragment [read $14_@0, read props$13.greeting, read $15_@1, read $16_@2, read $22_@8, read $23_@9]
[12] Return read $24_@10
scope6 [7:8]:
- read $19_@5
- dependency: read $19_@5
scope8 [9:10]:
- read $17_@3
- read $18_@4
- read $20_@6
- read $21_@7
- dependency: read $17_@3
- dependency: read $18_@4
- dependency: read $20_@6
- dependency: read $21_@7
scope10 [11:12]:
- read $14_@0
- read props$13.greeting
- read $15_@1
- read $16_@2
- read $22_@8
- read $23_@9
- dependency: read $14_@0
- dependency: read props$13.greeting
- dependency: read $15_@1
- dependency: read $16_@2
- dependency: read $22_@8
- dependency: read $23_@9
```
### CFG
@@ -178,8 +178,8 @@ bb1:
predecessor blocks: bb2 bb3
[9] Return freeze $12_@3
scope2 [3:4]:
- read $9_@0
- read $10_@1
- dependency: read $9_@0
- dependency: read $10_@1
```
### CFG
@@ -27,9 +27,7 @@ bb1:
[4] Call mutate y$10_@0.push(read a$6)
[5] Call mutate x$9_@0.push(read b$7)
[6] Return
scope0 [1:6]:
- read a$6
- read b$7
```
### CFG
@@ -20,9 +20,7 @@ bb0:
[3] Call mutate x$7_@0.push(read a$5)
[4] Call mutate y$8_@0.push(read b$6)
[5] Return
scope0 [1:5]:
- read a$5
- read b$6
```
### CFG
@@ -21,8 +21,8 @@ bb0:
[4] Call mutate x$7_@0.push(read a$5)
[5] Return
scope1 [2:4]:
- read b$6
- read a$5
- dependency: read b$6
- dependency: read a$5
```
### CFG
@@ -41,13 +41,13 @@ bb1:
predecessor blocks: bb3 bb0
[11] Return freeze x$11_@0
scope0 [1:11]:
- read a$8
- dependency: read a$8
scope1 [3:7]:
- read c$10
- read b$9
- dependency: read c$10
- dependency: read b$9
scope3 [8:9]:
- read $13_@2
- freeze y$12_@1
- dependency: read $13_@2
- dependency: freeze y$12_@1
```
### CFG
@@ -31,10 +31,7 @@ bb3:
bb2:
predecessor blocks: bb1
[8] Return
scope0 [1:8]:
- read b$7
- read a$6
- read c$8
```
### CFG
@@ -39,9 +39,9 @@ bb1:
predecessor blocks: bb3 bb0
[9] Return freeze x$9_@0
scope0 [1:9]:
- read c$8
- read b$7
- read a$6
- dependency: read c$8
- dependency: read b$7
- dependency: read a$6
```
### CFG
@@ -25,12 +25,12 @@ bb0:
[6] Const mutate $10_@1 = JSX <read Component$0 data={freeze x$7_@0} >{read child$9_@0}</read Component$0>
[7] Return read $10_@1
scope0 [1:6]:
- read Component$0
- read props$6.p0
- dependency: read Component$0
- dependency: read props$6.p0
scope1 [6:7]:
- read Component$0
- freeze x$7_@0
- read child$9_@0
- dependency: read Component$0
- dependency: freeze x$7_@0
- dependency: read child$9_@0
```
### CFG
@@ -25,7 +25,7 @@ bb0:
[5] Reassign mutate x$4_@0.y[1:6] = read y$5_@1
[6] Return freeze x$4_@0
scope1 [2:5]:
- mutate x$4_@0.y
- dependency: mutate x$4_@0.y
```
### CFG
@@ -36,14 +36,14 @@ bb1:
[9] Const mutate $15_@4 = JSX <read $13_@3>{freeze x$10_@0}</read $13_@3>
[10] Return read $15_@4
scope0 [1:8]:
- read b$9
- read b$9
- dependency: read b$9
- dependency: read b$9
scope2 [3:4]:
- read a$8.length
- read $11_@1
- dependency: read a$8.length
- dependency: read $11_@1
scope4 [9:10]:
- read $13_@3
- freeze x$10_@0
- dependency: read $13_@3
- dependency: freeze x$10_@0
```
### CFG
@@ -38,17 +38,17 @@ bb1:
[9] Const mutate $15_@2 = JSX <read Component$0 x={read x$7_@0} y={read y$8_@0} ></read Component$0>
[10] Return read $15_@2
scope0 [1:7]:
- read props$6.p0
- read props$6.p1
- dependency: read props$6.p0
- dependency: read props$6.p1
scope1 [7:8]:
- read Component$0
- freeze x$7_@0
- read y$8_@0.push
- read props$6.p2
- dependency: read Component$0
- dependency: freeze x$7_@0
- dependency: read y$8_@0.push
- dependency: read props$6.p2
scope2 [9:10]:
- read Component$0
- read x$7_@0
- read y$8_@0
- dependency: read Component$0
- dependency: read x$7_@0
- dependency: read y$8_@0
```
### CFG
@@ -69,22 +69,22 @@ bb3:
[19] Const mutate $31_@9 = JSX <read $25_@5>{read $26_@6}{read y$19_@2}{read $27_@7}{freeze x$22_@4}{read $28_@8}</read $25_@5>
[20] Return read $31_@9
scope0 [1:5]:
- read a$13
- read a$13
- dependency: read a$13
- dependency: read a$13
scope2 [6:7]:
- read $17_@1
- freeze x$16_@0
- dependency: read $17_@1
- dependency: freeze x$16_@0
scope4 [8:15]:
- read c$15
- read b$14
- read b$14
- dependency: read c$15
- dependency: read b$14
- dependency: read b$14
scope9 [19:20]:
- read $25_@5
- read $26_@6
- read y$19_@2
- read $27_@7
- freeze x$22_@4
- read $28_@8
- dependency: read $25_@5
- dependency: read $26_@6
- dependency: read y$19_@2
- dependency: read $27_@7
- dependency: freeze x$22_@4
- dependency: read $28_@8
```
### CFG
@@ -30,15 +30,15 @@ bb0:
[7] Const mutate $11_@3 = JSX <read Component$0 x={read x$9_@1} y={freeze y$8_@0} ></read Component$0>
[8] Return read $11_@3
scope0 [1:7]:
- read props$6.p0
- dependency: read props$6.p0
scope2 [5:6]:
- read Component$0
- freeze x$9_@1
- read props$6.p1
- dependency: read Component$0
- dependency: freeze x$9_@1
- dependency: read props$6.p1
scope3 [7:8]:
- read Component$0
- read x$9_@1
- freeze y$8_@0
- dependency: read Component$0
- dependency: read x$9_@1
- dependency: freeze y$8_@0
```
### CFG
@@ -78,14 +78,14 @@ bb1:
[18] read x$11_@1
[19] Return
scope1 [2:18]:
- read props$6.v2
- read props$6.v1
- read props$6.v0
- read props$6.test
- read props$6.b
- read props$6.c
- read props$6.cond2
- read props$6.cond
- dependency: read props$6.v2
- dependency: read props$6.v1
- dependency: read props$6.v0
- dependency: read props$6.test
- dependency: read props$6.b
- dependency: read props$6.c
- dependency: read props$6.cond2
- dependency: read props$6.cond
```
### CFG
@@ -28,14 +28,14 @@ bb1:
[7] Const mutate $14_@4 = Array [read $13_@3]
[8] Return freeze $14_@4
scope1 [3:4]:
- read foo$0
- read $10_@0
- read y$9
- dependency: read foo$0
- dependency: read $10_@0
- dependency: read y$9
scope3 [6:7]:
- read y$9
- read $12_@2
- dependency: read y$9
- dependency: read $12_@2
scope4 [7:8]:
- read $13_@3
- dependency: read $13_@3
```
### CFG
@@ -20,8 +20,8 @@ bb0:
[3] Const mutate x$8_@2 = Array [read a$6_@0, read b$7_@1]
[4] Return freeze x$8_@2
scope2 [3:4]:
- read a$6_@0
- read b$7_@1
- dependency: read a$6_@0
- dependency: read b$7_@1
```
### CFG
@@ -66,11 +66,11 @@ bb1:
[11] Const mutate $20_@4 = JSX <read $19_@3 a={freeze a$11_@0} b={freeze b$12_@0} ></read $19_@3>
[12] Return read $20_@4
scope2 [7:8]:
- read $14_@1
- dependency: read $14_@1
scope4 [11:12]:
- read $19_@3
- freeze a$11_@0
- freeze b$12_@0
- dependency: read $19_@3
- dependency: freeze a$11_@0
- dependency: freeze b$12_@0
```
### CFG
@@ -56,11 +56,11 @@ bb0:
[8] Const mutate $15_@4 = JSX <read $14_@3 a={read a$10_@0} b={freeze b$11_@0} ></read $14_@3>
[9] Return read $15_@4
scope2 [5:6]:
- read $12_@1
- dependency: read $12_@1
scope4 [8:9]:
- read $14_@3
- read a$10_@0
- freeze b$11_@0
- dependency: read $14_@3
- dependency: read a$10_@0
- dependency: freeze b$11_@0
```
### CFG
@@ -44,13 +44,13 @@ bb3:
[13] Const mutate y$18_@6 = read x$7_@0
[14] Return
scope3 [4:5]:
- read y$8_@1
- read $9_@2
- dependency: read y$8_@1
- dependency: read $9_@2
scope5 [9:10]:
- read y$8_@1
- read $12_@4
- dependency: read y$8_@1
- dependency: read $12_@4
scope6 [13:14]:
- read x$7_@0
- dependency: read x$7_@0
```
### CFG
@@ -32,10 +32,10 @@ bb1:
[8] Const mutate y$11_@4 = read x$5_@0
[9] Return
scope3 [4:5]:
- read y$6_@1
- read $7_@2
- dependency: read y$6_@1
- dependency: read $7_@2
scope4 [8:9]:
- read x$5_@0
- dependency: read x$5_@0
```
### CFG
@@ -40,7 +40,7 @@ bb2:
predecessor blocks: bb1
[13] Return read x$7_@0
scope3 [6:8]:
- read $9_@2
- dependency: read $9_@2
```
### CFG
@@ -34,10 +34,10 @@ bb1:
predecessor blocks: bb2 bb3
[8] Return
scope2 [4:5]:
- read x$5_@0
- read y$6_@1
- dependency: read x$5_@0
- dependency: read y$6_@1
scope3 [6:7]:
- read x$5_@0
- dependency: read x$5_@0
```
### CFG
@@ -69,11 +69,11 @@ bb1:
[20] read x$18_@2
[21] Return
scope2 [3:20]:
- read a$9
- read b$10
- read c$11
- read d$12
- read $14_@1
- dependency: read a$9
- dependency: read b$10
- dependency: read c$11
- dependency: read d$12
- dependency: read $14_@1
```
### CFG
@@ -53,7 +53,7 @@ bb2:
predecessor blocks: bb1
[13] Return read x$9_@0
scope1 [8:9]:
- read x$9_@0
- dependency: read x$9_@0
```
### CFG
@@ -35,10 +35,10 @@ bb1:
predecessor blocks: bb3 bb0
[8] Return
scope0 [1:8]:
- read a$5
- read c$7
- read c$7
- read b$6
- dependency: read a$5
- dependency: read c$7
- dependency: read c$7
- dependency: read b$6
```
### CFG
@@ -37,10 +37,10 @@ bb1:
predecessor blocks: bb2 bb5 bb3
[8] Return read x$12_@0
scope0 [1:8]:
- read b$8
- read d$10
- read c$9
- read a$7
- dependency: read b$8
- dependency: read d$10
- dependency: read c$9
- dependency: read a$7
```
### CFG
@@ -40,8 +40,8 @@ bb1:
[10] Const mutate t$14_@3 = Object { x: read x$6_@0, y: read y$7_@0 }
[11] Return freeze t$14_@3
scope3 [10:11]:
- read x$6_@0
- read y$7_@0
- dependency: read x$6_@0
- dependency: read y$7_@0
```
### CFG
@@ -20,8 +20,8 @@ bb0:
[3] Const mutate x$8_@2 = Object { a: read a$6_@0, b: read b$7_@1 }
[4] Return freeze x$8_@2
scope2 [3:4]:
- read a$6_@0
- read b$7_@1
- dependency: read a$6_@0
- dependency: read b$7_@1
```
### CFG
@@ -36,11 +36,11 @@ bb1:
predecessor blocks: bb2 bb3
[9] Return freeze x$6_@0
scope0 [1:9]:
- read a$5
- dependency: read a$5
scope1 [3:4]:
- mutate x$6_@0.y
- dependency: mutate x$6_@0.y
scope2 [6:7]:
- mutate x$6_@0.z
- dependency: mutate x$6_@0.z
```
### CFG
@@ -38,7 +38,7 @@ bb1:
predecessor blocks: bb2 bb3
[10] Return freeze x$7_@0
scope1 [7:8]:
- mutate x$7_@0.z
- dependency: mutate x$7_@0.z
```
### CFG
@@ -21,7 +21,7 @@ bb0:
[4] Call mutate y$5_@1.x.push(mutate $6_@1)
[5] Return freeze y$5_@1
scope1 [2:5]:
- read x$4_@0
- dependency: read x$4_@0
```
### CFG
@@ -20,7 +20,7 @@ bb0:
[3] Reassign mutate y$4_@1.x[2:4] = read x$3_@0
[4] Return freeze y$4_@1
scope1 [2:4]:
- read x$3_@0
- dependency: read x$3_@0
```
### CFG
@@ -22,11 +22,11 @@ bb0:
[4] Const mutate x$11_@3 = read c$7
[5] Return read x$11_@3
scope1 [2:3]:
- read a$5
- dependency: read a$5
scope2 [3:4]:
- read b$6
- dependency: read b$6
scope3 [4:5]:
- read c$7
- dependency: read c$7
```
### CFG
@@ -69,13 +69,13 @@ bb1:
predecessor blocks: bb3 bb7
[20] Return
scope3 [5:10]:
- read a$9
- read b$10
- read $15_@2
- dependency: read a$9
- dependency: read b$10
- dependency: read $15_@2
scope5 [13:18]:
- read c$11
- read d$12
- read $19_@4
- dependency: read c$11
- dependency: read d$12
- dependency: read $19_@4
```
### CFG
@@ -38,12 +38,12 @@ bb1:
[9] Const mutate x$11_@4 = read y$8_@3
[10] Return
scope2 [3:4]:
- read y$5_@0
- read $6_@1
- dependency: read y$5_@0
- dependency: read $6_@1
scope3 [4:9]:
- read $7_@2
- dependency: read $7_@2
scope4 [9:10]:
- read y$8_@3
- dependency: read y$8_@3
```
### CFG
@@ -28,8 +28,8 @@ bb1:
predecessor blocks: bb2 bb0
[6] Return
scope2 [4:5]:
- read x$4_@0
- read y$5_@1
- dependency: read x$4_@0
- dependency: read y$5_@1
```
### CFG
@@ -59,21 +59,21 @@ bb1:
[16] Const mutate y$22_@9 = read x$16_@5
[17] Return
scope2 [3:4]:
- read x$10_@0
- read $11_@1
- dependency: read x$10_@0
- dependency: read $11_@1
scope4 [5:6]:
- read x$10_@0
- read $13_@3
- dependency: read x$10_@0
- dependency: read $13_@3
scope5 [6:16]:
- read x$10_@0
scope8 [13:14]:
- read x$10_@0
scope7 [10:11]:
- read x$10_@0
- dependency: read x$10_@0
scope6 [7:8]:
- read x$10_@0
- dependency: read x$10_@0
scope7 [10:11]:
- dependency: read x$10_@0
scope8 [13:14]:
- dependency: read x$10_@0
scope9 [16:17]:
- read x$16_@5
- dependency: read x$16_@5
```
### CFG
@@ -33,10 +33,10 @@ bb2:
predecessor blocks: bb1
[9] Return read x$5_@0
scope2 [4:6]:
- read x$5_@0
- read $6_@1
- dependency: read x$5_@0
- dependency: read $6_@1
scope3 [6:7]:
- read x$5_@0
- dependency: read x$5_@0
```
### CFG
@@ -58,18 +58,15 @@ bb1:
[13] Call read y$11_@1.push(read props$9.p4)
[14] Const mutate $22_@6 = JSX <read Component$0 data={freeze y$11_@1} >{read child$19_@5}</read Component$0>
[15] Return read $22_@6
scope1 [1:12]:
- read props$9.p2
- read props$9.p0
scope5 [12:13]:
- read Component$0
- freeze x$10_@1
- read y$11_@1.push
- read props$9.p4
- dependency: read Component$0
- dependency: freeze x$10_@1
- dependency: read y$11_@1.push
- dependency: read props$9.p4
scope6 [14:15]:
- read Component$0
- freeze y$11_@1
- read child$19_@5
- dependency: read Component$0
- dependency: freeze y$11_@1
- dependency: read child$19_@5
```
### CFG
@@ -53,19 +53,15 @@ bb1:
[13] Call read y$10_@1.push(read props$8.p4)
[14] Const mutate $23_@6 = JSX <read Component$0 data={read y$10_@1} >{read child$19_@5}</read Component$0>
[15] Return read $23_@6
scope1 [1:12]:
- read props$8.p2
- read props$8.p3
- read props$8.p0
scope5 [12:13]:
- read Component$0
- freeze x$9_@1
- read y$10_@1.push
- read props$8.p4
- dependency: read Component$0
- dependency: freeze x$9_@1
- dependency: read y$10_@1.push
- dependency: read props$8.p4
scope6 [14:15]:
- read Component$0
- read y$10_@1
- read child$19_@5
- dependency: read Component$0
- dependency: read y$10_@1
- dependency: read child$19_@5
```
### CFG