mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Move pretty printing Scopes into PrintHIR
This commit is contained in:
@@ -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,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");
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -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
|
||||
|
||||
+4
-4
@@ -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
|
||||
|
||||
+1
-3
@@ -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
|
||||
|
||||
+5
-5
@@ -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
|
||||
|
||||
+3
-3
@@ -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
|
||||
|
||||
+4
-4
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user