Refactor VisualizeHIRMermaid

- Get rid of `indent` as it was making the code hard to read - Remove 
unnecessary 2nd iteration over blocks - Remove extra newline between the bb 
subgraphs and the jumps section - Remove trailing spaces - Remove newlines 
between each subgraph and jump
This commit is contained in:
Lauren Tan
2022-11-13 16:07:53 -05:00
parent d9724c7e00
commit 0c5fc52c47
53 changed files with 685 additions and 1036 deletions
+82 -76
View File
@@ -2,6 +2,9 @@ import { assertExhaustive } from "../Common/utils";
import { BasicBlock, BlockId, HIRFunction, Terminal } from "./HIR";
import { printInstruction, printPlace } from "./PrintHIR";
const INSTRUCTIONS_NODE_NAME = "instrs";
const TERMINAL_NODE_NAME = "terminal";
enum MermaidFlowchartDirection {
TopBottom = "TB", // top to bottom
TopDown = "TD", // top-down/ same as top to bottom
@@ -10,117 +13,138 @@ enum MermaidFlowchartDirection {
LeftRight = "LR", // left to right
}
function indent(str: string, level: number = 1) {
const leadingSpaces = " ".repeat(level * 2);
return str
.split("\n")
.map((line) => `${leadingSpaces}${line}`)
.join("\n");
}
function printBlockId(id: BlockId): string {
return `bb${id}`;
}
function printJump(from: BlockId, to: BlockId, label: string | null): string {
/**
* Prints a mermaid arrow with optional label connecting BasicBlocks for use in the "Jumps" section.
*/
function printJumpArrow(
from: BlockId,
to: BlockId,
label: string | null
): string {
const fromId = printBlockId(from);
const toId = printBlockId(to);
if (label != null) {
return `${fromId}_terminal -- ${label} --> ${toId}\n`;
return `${fromId}_${TERMINAL_NODE_NAME} -- ${label} --> ${toId}\n`;
}
return `${fromId}_terminal --> ${toId}\n`;
return `${fromId}_${TERMINAL_NODE_NAME} --> ${toId}\n`;
}
function visualizeInstructions({ id, instructions }: BasicBlock): string {
return (
`${printBlockId(id)}_instrs["\n` +
indent(
instructions
.map((instr) => printInstruction(instr).replaceAll('"', "'"))
.join("\n"),
2
) +
indent('\n"]')
);
/**
* Prints a mermaid arrow connecting a BasicBlock's instructions to its Terminal for use in the
* "Basic Blocks" section.
*/
function printTerminalArrow(blockId: BlockId, block: BasicBlock) {
const bbId = printBlockId(blockId);
if (block.instructions.length > 0) {
return `${bbId}_${INSTRUCTIONS_NODE_NAME} --> ${bbId}_${TERMINAL_NODE_NAME}(["${printTerminalLabel(
block.terminal
)}"])`;
}
return `${bbId}_${TERMINAL_NODE_NAME}(["${printTerminalLabel(
block.terminal
)}"])`;
}
function visualizeTerminal(terminal: Terminal) {
let buffer = "";
/**
* Prints a BasicBlock as a mermaid `subgraph`, with instructions as a single multiline mermaid node
* and the terminal as an arrow connecting the instruction node with the terminal.
*/
function printBlockSubgraphs(blockId: BlockId, block: BasicBlock) {
const buffer = [];
const bbId = printBlockId(blockId);
const instructions = block.instructions
.map((instr) => ` ${printInstruction(instr).replaceAll('"', "'")}\n`)
.join("");
buffer.push(` subgraph ${bbId}\n`);
if (block.instructions.length > 0) {
buffer.push(` ${bbId}_${INSTRUCTIONS_NODE_NAME}["\n`);
buffer.push(instructions);
buffer.push(' "]\n');
}
buffer.push(` ${printTerminalArrow(blockId, block)}`);
buffer.push("\n end\n");
return buffer.join("");
}
function printTerminalLabel(terminal: Terminal): string {
const buffer = [];
switch (terminal.kind) {
case "if": {
buffer = buffer.concat(`If (${printPlace(terminal.test)})`);
buffer.push(`If (${printPlace(terminal.test)})`);
break;
}
case "goto": {
buffer = buffer.concat("Goto");
buffer.push("Goto");
break;
}
case "return": {
if (terminal.value != null) {
buffer = buffer.concat(`Return ${printPlace(terminal.value)}`);
buffer.push(`Return ${printPlace(terminal.value)}`);
} else {
buffer = buffer.concat("Return");
buffer.push("Return");
}
break;
}
case "switch":
buffer = buffer.concat(`Switch (${printPlace(terminal.test)})`);
buffer.push(`Switch (${printPlace(terminal.test)})`);
break;
case "throw":
buffer = buffer.concat(`Throw ${printPlace(terminal.value)}`);
buffer.push(`Throw ${printPlace(terminal.value)}`);
break;
case "while":
buffer = buffer.concat("While");
buffer.push("While");
break;
default:
assertExhaustive(terminal, `unhandled terminal ${terminal}`);
}
return buffer;
return buffer.join("");
}
function visualizeJump(blockId: BlockId, terminal: Terminal): string {
let buffer = "";
function printTerminalArrows(blockId: BlockId, terminal: Terminal): string {
const buffer = [];
switch (terminal.kind) {
case "if": {
buffer = buffer.concat(printJump(blockId, terminal.consequent, "then"));
buffer = buffer.concat(printJump(blockId, terminal.alternate, "else"));
buffer.push(printJumpArrow(blockId, terminal.consequent, "then"));
buffer.push(printJumpArrow(blockId, terminal.alternate, "else"));
if (
terminal.fallthrough != null &&
terminal.alternate !== terminal.fallthrough
) {
buffer = buffer.concat(
printJump(blockId, terminal.fallthrough, "fallthrough")
buffer.push(
printJumpArrow(blockId, terminal.fallthrough, "fallthrough")
);
}
break;
}
case "goto": {
buffer = buffer.concat(printJump(blockId, terminal.block, null));
buffer.push(printJumpArrow(blockId, terminal.block, null));
break;
}
case "switch": {
terminal.cases.forEach((case_) => {
if (case_.test != null) {
buffer = buffer.concat(
printJump(blockId, case_.block, printPlace(case_.test))
buffer.push(
printJumpArrow(blockId, case_.block, printPlace(case_.test))
);
} else {
buffer = buffer.concat(printJump(blockId, case_.block, "default"));
buffer.push(printJumpArrow(blockId, case_.block, "default"));
}
});
if (terminal.fallthrough != null) {
buffer = buffer.concat(
printJump(blockId, terminal.fallthrough, "fallthrough")
buffer.push(
printJumpArrow(blockId, terminal.fallthrough, "fallthrough")
);
}
break;
}
case "while": {
buffer = buffer.concat(printJump(blockId, terminal.test, "test"));
buffer = buffer.concat(printJump(blockId, terminal.loop, "loop"));
buffer = buffer.concat(
printJump(blockId, terminal.fallthrough, "fallthrough")
);
buffer.push(printJumpArrow(blockId, terminal.test, "test"));
buffer.push(printJumpArrow(blockId, terminal.loop, "loop"));
buffer.push(printJumpArrow(blockId, terminal.fallthrough, "fallthrough"));
break;
}
case "throw":
@@ -130,7 +154,7 @@ function visualizeJump(blockId: BlockId, terminal: Terminal): string {
default:
assertExhaustive(terminal, `unhandled terminal ${terminal}`);
}
return buffer;
return buffer.map((line) => ` ${line}`).join("");
}
/**
@@ -142,39 +166,21 @@ export default function visualizeHIRMermaid(fn: HIRFunction): string {
const jumps = [];
for (const [blockId, block] of ir.blocks) {
let buffer;
const bbId = printBlockId(blockId);
buffer = indent(`subgraph ${bbId}\n`);
if (block.instructions.length > 0) {
buffer = buffer.concat(indent(visualizeInstructions(block)));
buffer = buffer.concat(
indent(
`\n${bbId}_instrs --> ${bbId}_terminal(["${visualizeTerminal(
block.terminal
)}"])`,
2
)
);
} else {
buffer = buffer.concat(
indent(`${bbId}_terminal(["${visualizeTerminal(block.terminal)}"])`)
);
const subgraph = printBlockSubgraphs(blockId, block);
const jump = printTerminalArrows(blockId, block.terminal);
if (subgraph.length > 0) {
subgraphs.push(subgraph);
}
buffer = buffer.concat(indent("\nend\n"));
subgraphs.push(buffer);
}
for (const [blockId, block] of ir.blocks) {
const jump = visualizeJump(blockId, block.terminal);
if (jump.length > 0) {
jumps.push(indent(jump));
jumps.push(jump);
}
}
return `flowchart ${MermaidFlowchartDirection.TopBottom}
%% Basic Blocks
${subgraphs.length ? subgraphs.join("\n") : " %% empty"}
${subgraphs.length ? subgraphs.join("") : " %% empty"}
%% Jumps
${jumps.length ? jumps.join("\n") : " %% empty"}`;
${jumps.length ? jumps.join("") : " %% empty"}`;
}
@@ -28,9 +28,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -73,11 +72,10 @@ flowchart TB
[5] Let mutate _$13 = JSX <read $12 a={freeze a$10} ></read $12>
[6] Call mutate foo$4(mutate b$11)
[7] Const mutate $14 = 'div'
[8] Const mutate $15 = JSX <read $14 a={read a$10} b={freeze b$11} ></read $14>
"]
bb0_instrs --> bb0_terminal(["Return read $15"])
[8] Const mutate $15 = JSX <read $14 a={read a$10} b={freeze b$11} ></read $14>
"]
bb0_instrs --> bb0_terminal(["Return read $15"])
end
%% Jumps
%% empty
@@ -42,46 +42,36 @@ bb1:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["If (read a$4)"])
bb0_terminal(["If (read a$4)"])
end
subgraph bb3
bb3_terminal(["While"])
bb3_terminal(["While"])
end
subgraph bb4
bb4_terminal(["If (read b$5)"])
bb4_terminal(["If (read b$5)"])
end
subgraph bb6
bb6_terminal(["If (read c$6)"])
bb6_terminal(["If (read c$6)"])
end
subgraph bb7
bb7_terminal(["Goto"])
bb7_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["Return"])
bb1_terminal(["Return"])
end
%% Jumps
bb0_terminal -- then --> bb3
bb0_terminal -- else --> bb1
bb3_terminal -- test --> bb4
bb3_terminal -- loop --> bb6
bb3_terminal -- fallthrough --> bb1
bb4_terminal -- then --> bb6
bb4_terminal -- else --> bb1
bb6_terminal -- then --> bb1
bb6_terminal -- else --> bb7
bb7_terminal --> bb4
```
## Code
@@ -101,60 +101,51 @@ flowchart TB
[3] Const mutate renderedItems$29[3:14] = Array []
[4] Const mutate seen$30[4:11] = New mutate Set$6()
[5] Const mutate $31 = 0
[6] Const mutate max$32 = Call mutate Math$8.max(read $31, read maxItems$28)
"]
bb0_instrs --> bb0_terminal(["Goto"])
[6] Const mutate max$32 = Call mutate Math$8.max(read $31, read maxItems$28)
"]
bb0_instrs --> bb0_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["If (read items$27)"])
bb1_terminal(["If (read items$27)"])
end
subgraph bb3
bb3_instrs["
[7] Const mutate $34 = null
[8] Const mutate $36 = Binary read item$10 == read $34
"]
bb3_instrs --> bb3_terminal(["If (read $36)"])
[8] Const mutate $36 = Binary read item$10 == read $34
"]
bb3_instrs --> bb3_terminal(["If (read $36)"])
end
subgraph bb8
bb8_instrs["
[9] Const mutate $13 = read $36
"]
bb8_instrs --> bb8_terminal(["Goto"])
[9] Const mutate $13 = read $36
"]
bb8_instrs --> bb8_terminal(["Goto"])
end
subgraph bb9
bb9_instrs["
[10] Const mutate $13 = Call mutate seen$30.has(mutate item$10)
"]
bb9_instrs --> bb9_terminal(["Goto"])
[10] Const mutate $13 = Call mutate seen$30.has(mutate item$10)
"]
bb9_instrs --> bb9_terminal(["Goto"])
end
subgraph bb7
bb7_terminal(["If (read $13)"])
bb7_terminal(["If (read $13)"])
end
subgraph bb5
bb5_terminal(["Goto"])
bb5_terminal(["Goto"])
end
subgraph bb4
bb4_instrs["
[11] Call mutate seen$30.add(mutate item$10)
[12] Const mutate $43 = 'div'
[13] Const mutate $44 = JSX <read $43>{read item$10}</read $43>
[14] Call mutate renderedItems$29.push(read $44)
[15] Const mutate $49 = Binary read renderedItems$29.length >= read max$32
"]
bb4_instrs --> bb4_terminal(["If (read $49)"])
[15] Const mutate $49 = Binary read renderedItems$29.length >= read max$32
"]
bb4_instrs --> bb4_terminal(["If (read $49)"])
end
subgraph bb10
bb10_terminal(["Goto"])
bb10_terminal(["Goto"])
end
subgraph bb2
bb2_instrs["
[16] Const mutate count$52 = read renderedItems$29.length
@@ -165,36 +156,27 @@ flowchart TB
[21] Const mutate $57 = JSX <read $55>{freeze count$52}{read $56}</read $55>
[22] Const mutate $58 = '\n '
[23] Const mutate $59 = '\n '
[24] Const mutate $60 = JSX <read $53>{read $54}{read $57}{read $58}{freeze renderedItems$29}{read $59}</read $53>
"]
bb2_instrs --> bb2_terminal(["Return read $60"])
[24] Const mutate $60 = JSX <read $53>{read $54}{read $57}{read $58}{freeze renderedItems$29}{read $59}</read $53>
"]
bb2_instrs --> bb2_terminal(["Return read $60"])
end
%% Jumps
bb0_terminal --> bb1
bb1_terminal -- then --> bb3
bb1_terminal -- else --> bb2
bb3_terminal -- then --> bb8
bb3_terminal -- else --> bb9
bb3_terminal -- fallthrough --> bb7
bb8_terminal --> bb7
bb9_terminal --> bb7
bb7_terminal -- then --> bb5
bb7_terminal -- else --> bb4
bb5_terminal --> bb1
bb4_terminal -- then --> bb2
bb4_terminal -- else --> bb10
bb10_terminal --> bb1
```
## Code
@@ -99,30 +99,27 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Const mutate a_DEBUG$5[1:4] = Array []
[2] Call mutate a_DEBUG$5.push(read props$4.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$4.b)"])
[2] Call mutate a_DEBUG$5.push(read props$4.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$4.b)"])
end
subgraph bb2
bb2_instrs["
[3] Const mutate $6 = null
"]
bb2_instrs --> bb2_terminal(["Return read $6"])
[3] Const mutate $6 = null
"]
bb2_instrs --> bb2_terminal(["Return read $6"])
end
subgraph bb1
bb1_instrs["
[4] Call mutate a_DEBUG$5.push(read props$4.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a_DEBUG$5"])
[4] Call mutate a_DEBUG$5.push(read props$4.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a_DEBUG$5"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
```
## Code
@@ -165,32 +162,28 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Const mutate a$4[1:4] = Array []
[2] Call mutate a$4.push(read props$3.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$3.b)"])
[2] Call mutate a$4.push(read props$3.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$3.b)"])
end
subgraph bb2
bb2_instrs["
[3] Call mutate a$4.push(read props$3.c)
"]
bb2_instrs --> bb2_terminal(["Goto"])
[3] Call mutate a$4.push(read props$3.c)
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[4] Call mutate a$4.push(read props$3.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a$4"])
[4] Call mutate a$4.push(read props$3.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a$4"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
```
## Code
@@ -234,31 +227,28 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Const mutate a$5[1:5] = Array []
[2] Call mutate a$5.push(read props$4.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$4.b)"])
[2] Call mutate a$5.push(read props$4.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$4.b)"])
end
subgraph bb2
bb2_instrs["
[3] Call mutate a$5.push(read props$4.c)
[4] Const mutate $6 = null
"]
bb2_instrs --> bb2_terminal(["Return read $6"])
[4] Const mutate $6 = null
"]
bb2_instrs --> bb2_terminal(["Return read $6"])
end
subgraph bb1
bb1_instrs["
[5] Call mutate a$5.push(read props$4.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a$5"])
[5] Call mutate a$5.push(read props$4.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a$5"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
```
## Code
@@ -302,30 +292,27 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Const mutate a$4[1:4] = Array []
[2] Call mutate a$4.push(read props$3.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$3.b)"])
[2] Call mutate a$4.push(read props$3.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$3.b)"])
end
subgraph bb2
bb2_instrs["
[3] Call mutate a$4.push(read props$3.c)
"]
bb2_instrs --> bb2_terminal(["Return freeze a$4"])
[3] Call mutate a$4.push(read props$3.c)
"]
bb2_instrs --> bb2_terminal(["Return freeze a$4"])
end
subgraph bb1
bb1_instrs["
[4] Call mutate a$4.push(read props$3.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a$4"])
[4] Call mutate a$4.push(read props$3.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a$4"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
```
## Code
@@ -369,32 +356,28 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Const mutate a$4[1:4] = Array []
[2] Call mutate a$4.push(read props$3.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$3.b)"])
[2] Call mutate a$4.push(read props$3.a)
"]
bb0_instrs --> bb0_terminal(["If (read props$3.b)"])
end
subgraph bb2
bb2_instrs["
[3] Call mutate a$4.push(read props$3.c)
"]
bb2_instrs --> bb2_terminal(["Goto"])
[3] Call mutate a$4.push(read props$3.c)
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[4] Call mutate a$4.push(read props$3.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a$4"])
[4] Call mutate a$4.push(read props$3.d)
"]
bb1_instrs --> bb1_terminal(["Return freeze a$4"])
end
%% Jumps
bb0_terminal -- then --> bb1
bb0_terminal -- else --> bb2
bb2_terminal --> bb1
```
## Code
@@ -95,48 +95,40 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Const mutate a$7[1:3] = Array []
[2] Const mutate b$8[2:4] = Array []
"]
bb0_instrs --> bb0_terminal(["If (read b$8)"])
[2] Const mutate b$8[2:4] = Array []
"]
bb0_instrs --> bb0_terminal(["If (read b$8)"])
end
subgraph bb2
bb2_instrs["
[3] Call mutate a$7.push(read props$6.p0)
"]
bb2_instrs --> bb2_terminal(["Goto"])
[3] Call mutate a$7.push(read props$6.p0)
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["If (read props$6.p1)"])
bb1_terminal(["If (read props$6.p1)"])
end
subgraph bb4
bb4_instrs["
[4] Call mutate b$8.push(read props$6.p2)
"]
bb4_instrs --> bb4_terminal(["Goto"])
[4] Call mutate b$8.push(read props$6.p2)
"]
bb4_instrs --> bb4_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[5] Const mutate $16 = JSX <read Foo$4 a={freeze a$7} b={freeze b$8} ></read Foo$4>
"]
bb3_instrs --> bb3_terminal(["Return read $16"])
[5] Const mutate $16 = JSX <read Foo$4 a={freeze a$7} b={freeze b$8} ></read Foo$4>
"]
bb3_instrs --> bb3_terminal(["Return read $16"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
bb1_terminal -- then --> bb4
bb1_terminal -- else --> bb3
bb4_terminal --> bb3
```
## Code
@@ -191,48 +183,40 @@ flowchart TB
bb0_instrs["
[1] Const mutate a$9[1:4] = Array []
[2] Const mutate b$10[2:5] = Array []
[3] Const mutate $11 = Call mutate mayMutate$4(mutate b$10)
"]
bb0_instrs --> bb0_terminal(["If (read $11)"])
[3] Const mutate $11 = Call mutate mayMutate$4(mutate b$10)
"]
bb0_instrs --> bb0_terminal(["If (read $11)"])
end
subgraph bb2
bb2_instrs["
[4] Call mutate a$9.push(read props$8.p0)
"]
bb2_instrs --> bb2_terminal(["Goto"])
[4] Call mutate a$9.push(read props$8.p0)
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["If (read props$8.p1)"])
bb1_terminal(["If (read props$8.p1)"])
end
subgraph bb4
bb4_instrs["
[5] Call mutate b$10.push(read props$8.p2)
"]
bb4_instrs --> bb4_terminal(["Goto"])
[5] Call mutate b$10.push(read props$8.p2)
"]
bb4_instrs --> bb4_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[6] Const mutate $19 = JSX <read Foo$6 a={freeze a$9} b={freeze b$10} ></read Foo$6>
"]
bb3_instrs --> bb3_terminal(["Return read $19"])
[6] Const mutate $19 = JSX <read Foo$6 a={freeze a$9} b={freeze b$10} ></read Foo$6>
"]
bb3_instrs --> bb3_terminal(["Return read $19"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
bb1_terminal -- then --> bb4
bb1_terminal -- else --> bb3
bb4_terminal --> bb3
```
## Code
@@ -266,9 +250,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -295,9 +278,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -28,9 +28,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -73,11 +72,10 @@ flowchart TB
[5] Let mutate _$13 = JSX <read $12 a={freeze a$10} ></read $12>
[6] New mutate Foo$4(mutate b$11)
[7] Const mutate $14 = 'div'
[8] Const mutate $15 = JSX <read $14 a={read a$10} b={freeze b$11} ></read $14>
"]
bb0_instrs --> bb0_terminal(["Return read $15"])
[8] Const mutate $15 = JSX <read $14 a={read a$10} b={freeze b$11} ></read $14>
"]
bb0_instrs --> bb0_terminal(["Return read $15"])
end
%% Jumps
%% empty
@@ -35,11 +35,10 @@ flowchart TB
[1] Const mutate a$5 = Array []
[2] Const mutate b$6 = read a$5
[3] Call read useFreeze$3(freeze a$5)
[4] Call mutate foo$4(read b$6)
"]
bb0_instrs --> bb0_terminal(["Return"])
[4] Call mutate foo$4(read b$6)
"]
bb0_instrs --> bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -70,9 +69,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -99,9 +97,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -32,9 +32,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -61,9 +60,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -104,11 +102,10 @@ flowchart TB
[4] Const mutate $13 = '\n '
[5] Const mutate $14 = '\n '
[6] Const mutate $15 = '\n '
[7] Const mutate $16 = JSX <read Component$0>{read $13}{read x$11}{read $14}{read y$12}{read $15}</read Component$0>
"]
bb0_instrs --> bb0_terminal(["Return read $16"])
[7] Const mutate $16 = JSX <read Component$0>{read $13}{read x$11}{read $14}{read y$12}{read $15}</read Component$0>
"]
bb0_instrs --> bb0_terminal(["Return read $16"])
end
%% Jumps
%% empty
@@ -36,11 +36,10 @@ flowchart TB
[1] Const mutate a$4 = Array []
[2] Call read useFreeze$2(freeze a$4)
[3] Call read useFreeze$2(read a$4)
[4] Call mutate call$3(read a$4)
"]
bb0_instrs --> bb0_terminal(["Return read a$4"])
[4] Call mutate call$3(read a$4)
"]
bb0_instrs --> bb0_terminal(["Return read a$4"])
end
%% Jumps
%% empty
@@ -71,9 +70,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -100,9 +98,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -55,44 +55,38 @@ flowchart TB
bb0_instrs["
[1] Const mutate cond$8 = read props$7.cond
[2] Const mutate x$9 = read props$7.x
[3] Let mutate a$10 = undefined
"]
bb0_instrs --> bb0_terminal(["If (read cond$8)"])
[3] Let mutate a$10 = undefined
"]
bb0_instrs --> bb0_terminal(["If (read cond$8)"])
end
subgraph bb2
bb2_instrs["
[4] Reassign mutate a$4 = read x$9
"]
bb2_instrs --> bb2_terminal(["Goto"])
[4] Reassign mutate a$4 = read x$9
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[5] Reassign mutate a$4 = Array []
"]
bb3_instrs --> bb3_terminal(["Goto"])
[5] Reassign mutate a$4 = Array []
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[6] Call read useFreeze$5(freeze a$4)
[7] Call read useFreeze$5(read a$4)
[8] Call mutate call$6(read a$4)
"]
bb1_instrs --> bb1_terminal(["Return read a$4"])
[8] Call mutate call$6(read a$4)
"]
bb1_instrs --> bb1_terminal(["Return read a$4"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb3
bb0_terminal -- fallthrough --> bb1
bb2_terminal --> bb1
bb3_terminal --> bb1
```
## Code
@@ -128,9 +122,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -157,9 +150,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -46,9 +46,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -75,9 +74,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -104,9 +102,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -133,9 +130,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -175,33 +171,29 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Const mutate a$9[1:3] = Call mutate compute$3(read props$8.a)
[2] Const mutate b$10[2:4] = Call mutate compute$3(read props$8.b)
"]
bb0_instrs --> bb0_terminal(["If (read props$8.c)"])
[2] Const mutate b$10[2:4] = Call mutate compute$3(read props$8.b)
"]
bb0_instrs --> bb0_terminal(["If (read props$8.c)"])
end
subgraph bb2
bb2_instrs["
[3] Call mutate mutate$5(mutate a$9)
[4] Call mutate mutate$5(mutate b$10)
"]
bb2_instrs --> bb2_terminal(["Goto"])
[4] Call mutate mutate$5(mutate b$10)
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[5] Const mutate $14 = JSX <read Foo$6 a={freeze a$9} b={freeze b$10} ></read Foo$6>
"]
bb1_instrs --> bb1_terminal(["Return read $14"])
[5] Const mutate $14 = JSX <read Foo$6 a={freeze a$9} b={freeze b$10} ></read Foo$6>
"]
bb1_instrs --> bb1_terminal(["Return read $14"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
```
## Code
@@ -43,11 +43,10 @@ flowchart TB
bb0_instrs["
[1] Const mutate a$8 = Call mutate compute$3(read props$7.a)
[2] Const mutate b$9 = Call mutate compute$3(read props$7.b)
[3] Const mutate $10 = JSX <read Foo$5 a={freeze a$8} b={freeze b$9} ></read Foo$5>
"]
bb0_instrs --> bb0_terminal(["Return read $10"])
[3] Const mutate $10 = JSX <read Foo$5 a={freeze a$8} b={freeze b$9} ></read Foo$5>
"]
bb0_instrs --> bb0_terminal(["Return read $10"])
end
%% Jumps
%% empty
@@ -76,9 +75,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -105,9 +103,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -134,9 +131,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -40,9 +40,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -69,9 +68,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -98,9 +96,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -139,32 +136,28 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Const mutate a$9[1:3] = Call mutate compute$3(read props$8.a)
[2] Const mutate b$10[2:3] = Call mutate compute$3(read props$8.b)
"]
bb0_instrs --> bb0_terminal(["If (read props$8.c)"])
[2] Const mutate b$10[2:3] = Call mutate compute$3(read props$8.b)
"]
bb0_instrs --> bb0_terminal(["If (read props$8.c)"])
end
subgraph bb2
bb2_instrs["
[3] Call mutate foo$5(mutate a$9, mutate b$10)
"]
bb2_instrs --> bb2_terminal(["Goto"])
[3] Call mutate foo$5(mutate a$9, mutate b$10)
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[4] Const mutate $14 = JSX <read Foo$6 a={freeze a$9} b={freeze b$10} ></read Foo$6>
"]
bb1_instrs --> bb1_terminal(["Return read $14"])
[4] Const mutate $14 = JSX <read Foo$6 a={freeze a$9} b={freeze b$10} ></read Foo$6>
"]
bb1_instrs --> bb1_terminal(["Return read $14"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
```
## Code
@@ -45,11 +45,10 @@ flowchart TB
[1] Const mutate a$9[1:3] = Call mutate compute$3(read props$8.a)
[2] Const mutate b$10[2:3] = Call mutate compute$3(read props$8.b)
[3] Call mutate foo$5(mutate a$9, mutate b$10)
[4] Const mutate $11 = JSX <read Foo$6 a={freeze a$9} b={freeze b$10} ></read Foo$6>
"]
bb0_instrs --> bb0_terminal(["Return read $11"])
[4] Const mutate $11 = JSX <read Foo$6 a={freeze a$9} b={freeze b$10} ></read Foo$6>
"]
bb0_instrs --> bb0_terminal(["Return read $11"])
end
%% Jumps
%% empty
@@ -79,9 +78,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -108,9 +106,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -137,9 +134,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -50,11 +50,10 @@ flowchart TB
[8] Const mutate $21 = '\n '
[9] Const mutate $22 = JSX <read $17>{read $18}{read $20}{read $21}</read $17>
[10] Const mutate $23 = '\n '
[11] Const mutate $24 = JsxFragment [read $14, read props$13.greeting, read $15, read $16, read $22, read $23]
"]
bb0_instrs --> bb0_terminal(["Return read $24"])
[11] Const mutate $24 = JsxFragment [read $14, read props$13.greeting, read $15, read $16, read $22, read $23]
"]
bb0_instrs --> bb0_terminal(["Return read $24"])
end
%% Jumps
%% empty
@@ -45,39 +45,33 @@ flowchart TB
%% Basic Blocks
subgraph bb0
bb0_instrs["
[1] Const mutate $5 = Call mutate f$1()
"]
bb0_instrs --> bb0_terminal(["If (read $5)"])
[1] Const mutate $5 = Call mutate f$1()
"]
bb0_instrs --> bb0_terminal(["If (read $5)"])
end
subgraph bb2
bb2_instrs["
[2] Const mutate $3 = Call mutate g$4()
"]
bb2_instrs --> bb2_terminal(["Goto"])
[2] Const mutate $3 = Call mutate g$4()
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[3] Const mutate $3 = read $5
"]
bb3_instrs --> bb3_terminal(["Goto"])
[3] Const mutate $3 = read $5
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["Return freeze $3"])
bb1_terminal(["Return freeze $3"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb3
bb0_terminal -- fallthrough --> bb1
bb2_terminal --> bb1
bb3_terminal --> bb1
```
## Code
@@ -117,39 +111,33 @@ flowchart TB
%% Basic Blocks
subgraph bb0
bb0_instrs["
[1] Const mutate $5 = Call mutate f$1()
"]
bb0_instrs --> bb0_terminal(["If (read $5)"])
[1] Const mutate $5 = Call mutate f$1()
"]
bb0_instrs --> bb0_terminal(["If (read $5)"])
end
subgraph bb2
bb2_instrs["
[2] Const mutate $3 = read $5
"]
bb2_instrs --> bb2_terminal(["Goto"])
[2] Const mutate $3 = read $5
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[3] Const mutate $3 = Call mutate g$4()
"]
bb3_instrs --> bb3_terminal(["Goto"])
[3] Const mutate $3 = Call mutate g$4()
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["Return freeze $3"])
bb1_terminal(["Return freeze $3"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb3
bb0_terminal -- fallthrough --> bb1
bb2_terminal --> bb1
bb3_terminal --> bb1
```
## Code
@@ -193,39 +181,33 @@ flowchart TB
bb0_instrs["
[1] Const mutate $9 = Call mutate f$2()
[2] Const mutate $10 = null
[3] Const mutate $11 = Binary read $9 != read $10
"]
bb0_instrs --> bb0_terminal(["If (read $11)"])
[3] Const mutate $11 = Binary read $9 != read $10
"]
bb0_instrs --> bb0_terminal(["If (read $11)"])
end
subgraph bb2
bb2_instrs["
[4] Const mutate $6 = read $9
"]
bb2_instrs --> bb2_terminal(["Goto"])
[4] Const mutate $6 = read $9
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[5] Const mutate $6 = Call mutate g$7()
"]
bb3_instrs --> bb3_terminal(["Goto"])
[5] Const mutate $6 = Call mutate g$7()
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["Return freeze $6"])
bb1_terminal(["Return freeze $6"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb3
bb0_terminal -- fallthrough --> bb1
bb2_terminal --> bb1
bb3_terminal --> bb1
```
## Code
@@ -252,9 +234,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -281,9 +262,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -52,9 +52,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -81,9 +80,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -152,18 +150,16 @@ flowchart TB
[1] Let mutate a$2 = Object { }
[2] Let mutate b$3 = Object { }
[3] Let mutate c$4 = Object { }
[4] Let mutate d$5 = Object { }
"]
bb0_instrs --> bb0_terminal(["While"])
[4] Let mutate d$5 = Object { }
"]
bb0_instrs --> bb0_terminal(["While"])
end
subgraph bb1
bb1_instrs["
[5] Const mutate $17 = true
"]
bb1_instrs --> bb1_terminal(["If (read $17)"])
[5] Const mutate $17 = true
"]
bb1_instrs --> bb1_terminal(["If (read $17)"])
end
subgraph bb3
bb3_instrs["
[6] Let mutate z$19 = read a$2
@@ -172,65 +168,51 @@ flowchart TB
[9] Reassign mutate c$4 = read d$5
[10] Reassign mutate d$5 = read z$19
[11] Call mutate mutate$7(mutate a$2, mutate b$3)
[12] Const mutate $29 = Call mutate cond$8(mutate a$2)
"]
bb3_instrs --> bb3_terminal(["If (read $29)"])
[12] Const mutate $29 = Call mutate cond$8(mutate a$2)
"]
bb3_instrs --> bb3_terminal(["If (read $29)"])
end
subgraph bb4
bb4_terminal(["Goto"])
bb4_terminal(["Goto"])
end
subgraph bb2
bb2_terminal(["If (read a$2)"])
bb2_terminal(["If (read a$2)"])
end
subgraph bb7
bb7_terminal(["If (read b$3)"])
bb7_terminal(["If (read b$3)"])
end
subgraph bb9
bb9_terminal(["If (read c$4)"])
bb9_terminal(["If (read c$4)"])
end
subgraph bb11
bb11_terminal(["If (read d$5)"])
bb11_terminal(["If (read d$5)"])
end
subgraph bb13
bb13_instrs["
[13] Const mutate $34 = null
[14] Call mutate mutate$7(mutate d$5, read $34)
"]
bb13_instrs --> bb13_terminal(["Return"])
[14] Call mutate mutate$7(mutate d$5, read $34)
"]
bb13_instrs --> bb13_terminal(["Return"])
end
%% Jumps
bb0_terminal -- test --> bb1
bb0_terminal -- loop --> bb3
bb0_terminal -- fallthrough --> bb2
bb1_terminal -- then --> bb3
bb1_terminal -- else --> bb2
bb3_terminal -- then --> bb2
bb3_terminal -- else --> bb4
bb4_terminal --> bb1
bb2_terminal -- then --> bb7
bb2_terminal -- else --> bb7
bb7_terminal -- then --> bb9
bb7_terminal -- else --> bb9
bb9_terminal -- then --> bb11
bb9_terminal -- else --> bb11
bb11_terminal -- then --> bb13
bb11_terminal -- else --> bb13
```
## Code
@@ -48,9 +48,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -108,52 +107,42 @@ flowchart TB
[4] Const mutate d$14[4:7] = Object { c: read c$13 }
[5] Const mutate x$15[5:9] = Object { }
[6] Reassign mutate x$15.b[5:9] = read b$12
[7] Const mutate y$16 = Call mutate mutate$8(mutate x$15, mutate d$14)
"]
bb0_instrs --> bb0_terminal(["If (read a$11)"])
[7] Const mutate y$16 = Call mutate mutate$8(mutate x$15, mutate d$14)
"]
bb0_instrs --> bb0_terminal(["If (read a$11)"])
end
subgraph bb1
bb1_terminal(["If (read b$12)"])
bb1_terminal(["If (read b$12)"])
end
subgraph bb3
bb3_terminal(["If (read c$13)"])
bb3_terminal(["If (read c$13)"])
end
subgraph bb5
bb5_terminal(["If (read d$14)"])
bb5_terminal(["If (read d$14)"])
end
subgraph bb7
bb7_terminal(["If (read y$16)"])
bb7_terminal(["If (read y$16)"])
end
subgraph bb9
bb9_instrs["
[8] Const mutate $17 = null
[9] Call mutate mutate$8(mutate x$15, read $17)
"]
bb9_instrs --> bb9_terminal(["Return"])
[9] Call mutate mutate$8(mutate x$15, read $17)
"]
bb9_instrs --> bb9_terminal(["Return"])
end
%% Jumps
bb0_terminal -- then --> bb1
bb0_terminal -- else --> bb1
bb1_terminal -- then --> bb3
bb1_terminal -- else --> bb3
bb3_terminal -- then --> bb5
bb3_terminal -- else --> bb5
bb5_terminal -- then --> bb7
bb5_terminal -- else --> bb7
bb7_terminal -- then --> bb9
bb7_terminal -- else --> bb9
```
## Code
@@ -47,9 +47,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -76,9 +75,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -142,80 +140,64 @@ flowchart TB
[1] Let mutate a$12[1:7] = Object { }
[2] Let mutate b$13[2:6] = Object { }
[3] Let mutate c$14 = Object { }
[4] Let mutate d$15[4:9] = Object { }
"]
bb0_instrs --> bb0_terminal(["While"])
[4] Let mutate d$15[4:9] = Object { }
"]
bb0_instrs --> bb0_terminal(["While"])
end
subgraph bb1
bb1_instrs["
[5] Const mutate $16 = true
"]
bb1_instrs --> bb1_terminal(["If (read $16)"])
[5] Const mutate $16 = true
"]
bb1_instrs --> bb1_terminal(["If (read $16)"])
end
subgraph bb3
bb3_instrs["
[6] Call mutate mutate$6(mutate a$12, mutate b$13)
[7] Const mutate $21 = Call mutate cond$7(mutate a$12)
"]
bb3_instrs --> bb3_terminal(["If (read $21)"])
[7] Const mutate $21 = Call mutate cond$7(mutate a$12)
"]
bb3_instrs --> bb3_terminal(["If (read $21)"])
end
subgraph bb4
bb4_terminal(["Goto"])
bb4_terminal(["Goto"])
end
subgraph bb2
bb2_terminal(["If (read a$12)"])
bb2_terminal(["If (read a$12)"])
end
subgraph bb7
bb7_terminal(["If (read b$13)"])
bb7_terminal(["If (read b$13)"])
end
subgraph bb9
bb9_terminal(["If (read c$14)"])
bb9_terminal(["If (read c$14)"])
end
subgraph bb11
bb11_terminal(["If (read d$15)"])
bb11_terminal(["If (read d$15)"])
end
subgraph bb13
bb13_instrs["
[8] Const mutate $28 = null
[9] Call mutate mutate$6(mutate d$15, read $28)
"]
bb13_instrs --> bb13_terminal(["Return"])
[9] Call mutate mutate$6(mutate d$15, read $28)
"]
bb13_instrs --> bb13_terminal(["Return"])
end
%% Jumps
bb0_terminal -- test --> bb1
bb0_terminal -- loop --> bb3
bb0_terminal -- fallthrough --> bb2
bb1_terminal -- then --> bb3
bb1_terminal -- else --> bb2
bb3_terminal -- then --> bb2
bb3_terminal -- else --> bb4
bb4_terminal --> bb1
bb2_terminal -- then --> bb7
bb2_terminal -- else --> bb7
bb7_terminal -- then --> bb9
bb7_terminal -- else --> bb9
bb9_terminal -- then --> bb11
bb9_terminal -- else --> bb11
bb11_terminal -- then --> bb13
bb11_terminal -- else --> bb13
```
## Code
@@ -38,11 +38,10 @@ flowchart TB
[3] Reassign mutate x$7.y[1:5] = read y$8
[4] Const mutate child$9 = JSX <read Component$0 data={freeze y$8} ></read Component$0>
[5] Call mutate x$7.y.push(read props$6.p0)
[6] Const mutate $10 = JSX <read Component$0 data={freeze x$7} >{read child$9}</read Component$0>
"]
bb0_instrs --> bb0_terminal(["Return read $10"])
[6] Const mutate $10 = JSX <read Component$0 data={freeze x$7} >{read child$9}</read Component$0>
"]
bb0_instrs --> bb0_terminal(["Return read $10"])
end
%% Jumps
%% empty
@@ -48,34 +48,30 @@ flowchart TB
bb0_instrs["
[1] Let mutate x$2 = Array []
[2] Call mutate x$2.push(read props$6.p0)
[3] Let mutate y$8 = read x$2
"]
bb0_instrs --> bb0_terminal(["If (read props$6.p1)"])
[3] Let mutate y$8 = read x$2
"]
bb0_instrs --> bb0_terminal(["If (read props$6.p1)"])
end
subgraph bb2
bb2_instrs["
[4] Reassign mutate x$2 = Array []
"]
bb2_instrs --> bb2_terminal(["Goto"])
[4] Reassign mutate x$2 = Array []
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[5] Let mutate _$12 = JSX <read Component$0 x={freeze x$2} ></read Component$0>
[6] Call read y$8.push(read props$6.p2)
[7] Const mutate $15 = JSX <read Component$0 x={read x$2} y={read y$8} ></read Component$0>
"]
bb1_instrs --> bb1_terminal(["Return read $15"])
[7] Const mutate $15 = JSX <read Component$0 x={read x$2} y={read y$8} ></read Component$0>
"]
bb1_instrs --> bb1_terminal(["Return read $15"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
```
## Code
@@ -44,11 +44,10 @@ flowchart TB
[4] Reassign mutate x$9 = Array []
[5] Let mutate _$10 = JSX <read Component$0 x={freeze x$9} ></read Component$0>
[6] Call mutate y$8.push(read props$6.p1)
[7] Const mutate $11 = JSX <read Component$0 x={read x$9} y={freeze y$8} ></read Component$0>
"]
bb0_instrs --> bb0_terminal(["Return read $11"])
[7] Const mutate $11 = JSX <read Component$0 x={read x$9} y={freeze y$8} ></read Component$0>
"]
bb0_instrs --> bb0_terminal(["Return read $11"])
end
%% Jumps
%% empty
@@ -84,92 +84,76 @@ flowchart TB
%% Basic Blocks
subgraph bb0
bb0_instrs["
[1] Let mutate x$7 = undefined
"]
bb0_instrs --> bb0_terminal(["If (read props$6.cond)"])
[1] Let mutate x$7 = undefined
"]
bb0_instrs --> bb0_terminal(["If (read props$6.cond)"])
end
subgraph bb2
bb2_instrs["
[2] Const mutate $8 = 2
[3] Const mutate $9 = 1
[4] Const mutate $10 = 0
"]
bb2_instrs --> bb2_terminal(["Switch (read props$6.test)"])
[4] Const mutate $10 = 0
"]
bb2_instrs --> bb2_terminal(["Switch (read props$6.test)"])
end
subgraph bb8
bb8_instrs["
[5] Reassign mutate x$2 = read props$6.v0
"]
bb8_instrs --> bb8_terminal(["Goto"])
[5] Reassign mutate x$2 = read props$6.v0
"]
bb8_instrs --> bb8_terminal(["Goto"])
end
subgraph bb6
bb6_instrs["
[6] Reassign mutate x$2 = read props$6.v1
"]
bb6_instrs --> bb6_terminal(["Goto"])
[6] Reassign mutate x$2 = read props$6.v1
"]
bb6_instrs --> bb6_terminal(["Goto"])
end
subgraph bb4
bb4_instrs["
[7] Reassign mutate x$2 = read props$6.v2
"]
bb4_instrs --> bb4_terminal(["Goto"])
[7] Reassign mutate x$2 = read props$6.v2
"]
bb4_instrs --> bb4_terminal(["Goto"])
end
subgraph bb10
bb10_terminal(["If (read props$6.cond2)"])
bb10_terminal(["If (read props$6.cond2)"])
end
subgraph bb12
bb12_instrs["
[8] Reassign mutate x$2 = read props$6.b
"]
bb12_instrs --> bb12_terminal(["Goto"])
[8] Reassign mutate x$2 = read props$6.b
"]
bb12_instrs --> bb12_terminal(["Goto"])
end
subgraph bb13
bb13_instrs["
[9] Reassign mutate x$2 = read props$6.c
"]
bb13_instrs --> bb13_terminal(["Goto"])
[9] Reassign mutate x$2 = read props$6.c
"]
bb13_instrs --> bb13_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[10] read x$2
"]
bb1_instrs --> bb1_terminal(["Return"])
[10] read x$2
"]
bb1_instrs --> bb1_terminal(["Return"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb10
bb0_terminal -- fallthrough --> bb1
bb2_terminal -- read $10 --> bb8
bb2_terminal -- read $9 --> bb6
bb2_terminal -- read $8 --> bb4
bb2_terminal -- default --> bb4
bb2_terminal -- fallthrough --> bb1
bb8_terminal --> bb1
bb6_terminal --> bb1
bb4_terminal --> bb1
bb10_terminal -- then --> bb12
bb10_terminal -- else --> bb13
bb10_terminal -- fallthrough --> bb1
bb12_terminal --> bb1
bb13_terminal --> bb1
```
## Code
@@ -35,31 +35,28 @@ bb1:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["If (read x$8)"])
bb0_terminal(["If (read x$8)"])
end
subgraph bb2
bb2_instrs["
[1] Const mutate $10 = false
[2] Const mutate $11 = Call read foo$0(read $10, read y$9)
"]
bb2_instrs --> bb2_terminal(["Return freeze $11"])
[2] Const mutate $11 = Call read foo$0(read $10, read y$9)
"]
bb2_instrs --> bb2_terminal(["Return freeze $11"])
end
subgraph bb1
bb1_instrs["
[3] Const mutate $12 = 10
[4] Const mutate $13 = Binary read y$9 * read $12
[5] Const mutate $14 = Array [read $13]
"]
bb1_instrs --> bb1_terminal(["Return freeze $14"])
[5] Const mutate $14 = Array [read $13]
"]
bb1_instrs --> bb1_terminal(["Return freeze $14"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
```
## Code
@@ -30,11 +30,10 @@ flowchart TB
bb0_instrs["
[1] Const mutate a$6 = 1
[2] Const mutate b$7 = 2
[3] Const mutate x$8 = Array [read a$6, read b$7]
"]
bb0_instrs --> bb0_terminal(["Return freeze x$8"])
[3] Const mutate x$8 = Array [read a$6, read b$7]
"]
bb0_instrs --> bb0_terminal(["Return freeze x$8"])
end
%% Jumps
%% empty
@@ -31,9 +31,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -79,35 +78,31 @@ flowchart TB
[1] Const mutate a$11[1:3] = Array []
[2] Const mutate b$12[2:7] = Object { }
[3] Call mutate foo$4(mutate a$11, mutate b$12)
[4] Const mutate $13 = Call mutate foo$4()
"]
bb0_instrs --> bb0_terminal(["If (read $13)"])
[4] Const mutate $13 = Call mutate foo$4()
"]
bb0_instrs --> bb0_terminal(["If (read $13)"])
end
subgraph bb2
bb2_instrs["
[5] Const mutate $14 = 'div'
[6] Let mutate _$15 = JSX <read $14 a={freeze a$11} ></read $14>
"]
bb2_instrs --> bb2_terminal(["Goto"])
[6] Let mutate _$15 = JSX <read $14 a={freeze a$11} ></read $14>
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[7] Call mutate foo$4(read a$11, mutate b$12)
[8] Const mutate $19 = 'div'
[9] Const mutate $20 = JSX <read $19 a={freeze a$11} b={freeze b$12} ></read $19>
"]
bb1_instrs --> bb1_terminal(["Return read $20"])
[9] Const mutate $20 = JSX <read $19 a={freeze a$11} b={freeze b$12} ></read $19>
"]
bb1_instrs --> bb1_terminal(["Return read $20"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
```
## Code
@@ -28,9 +28,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -73,11 +72,10 @@ flowchart TB
[5] Let mutate _$13 = JSX <read $12 a={freeze a$10} ></read $12>
[6] Call mutate foo$4(read a$10, mutate b$11)
[7] Const mutate $14 = 'div'
[8] Const mutate $15 = JSX <read $14 a={read a$10} b={freeze b$11} ></read $14>
"]
bb0_instrs --> bb0_terminal(["Return read $15"])
[8] Const mutate $15 = JSX <read $14 a={read a$10} b={freeze b$11} ></read $14>
"]
bb0_instrs --> bb0_terminal(["Return read $15"])
end
%% Jumps
%% empty
@@ -55,52 +55,44 @@ flowchart TB
[1] Let mutate x$1 = 1
[2] Let mutate y$8 = 2
[3] Const mutate $9 = 2
[4] Const mutate $10 = Binary read y$8 === read $9
"]
bb0_instrs --> bb0_terminal(["If (read $10)"])
[4] Const mutate $10 = Binary read y$8 === read $9
"]
bb0_instrs --> bb0_terminal(["If (read $10)"])
end
subgraph bb2
bb2_instrs["
[5] Reassign mutate x$1 = 3
"]
bb2_instrs --> bb2_terminal(["Goto"])
[5] Reassign mutate x$1 = 3
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[6] Const mutate $12 = 3
[7] Const mutate $14 = Binary read y$8 === read $12
"]
bb1_instrs --> bb1_terminal(["If (read $14)"])
[7] Const mutate $14 = Binary read y$8 === read $12
"]
bb1_instrs --> bb1_terminal(["If (read $14)"])
end
subgraph bb4
bb4_instrs["
[8] Reassign mutate x$1 = 5
"]
bb4_instrs --> bb4_terminal(["Goto"])
[8] Reassign mutate x$1 = 5
"]
bb4_instrs --> bb4_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[9] Reassign mutate y$18 = read x$1
"]
bb3_instrs --> bb3_terminal(["Return"])
[9] Reassign mutate y$18 = read x$1
"]
bb3_instrs --> bb3_terminal(["Return"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
bb1_terminal -- then --> bb4
bb1_terminal -- else --> bb3
bb4_terminal --> bb3
```
## Code
@@ -43,32 +43,28 @@ flowchart TB
[1] Let mutate x$1 = 1
[2] Let mutate y$6 = 2
[3] Const mutate $7 = 2
[4] Const mutate $8 = Binary read y$6 === read $7
"]
bb0_instrs --> bb0_terminal(["If (read $8)"])
[4] Const mutate $8 = Binary read y$6 === read $7
"]
bb0_instrs --> bb0_terminal(["If (read $8)"])
end
subgraph bb2
bb2_instrs["
[5] Reassign mutate x$1 = 3
"]
bb2_instrs --> bb2_terminal(["Goto"])
[5] Reassign mutate x$1 = 3
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[6] Reassign mutate y$11 = read x$1
"]
bb1_instrs --> bb1_terminal(["Return"])
[6] Reassign mutate y$11 = read x$1
"]
bb1_instrs --> bb1_terminal(["Return"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
```
## Code
@@ -47,51 +47,41 @@ flowchart TB
%% Basic Blocks
subgraph bb0
bb0_instrs["
[1] Let mutate items$5 = Array []
"]
bb0_instrs --> bb0_terminal(["Goto"])
[1] Let mutate items$5 = Array []
"]
bb0_instrs --> bb0_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["If (read items$5)"])
bb1_terminal(["If (read items$5)"])
end
subgraph bb3
bb3_instrs["
[2] Let mutate y$7 = 0
"]
bb3_instrs --> bb3_terminal(["If (read cond$4)"])
[2] Let mutate y$7 = 0
"]
bb3_instrs --> bb3_terminal(["If (read cond$4)"])
end
subgraph bb5
bb5_instrs["
[3] Reassign mutate y$9 = 1
"]
bb5_instrs --> bb5_terminal(["Goto"])
[3] Reassign mutate y$9 = 1
"]
bb5_instrs --> bb5_terminal(["Goto"])
end
subgraph bb4
bb4_terminal(["Goto"])
bb4_terminal(["Goto"])
end
subgraph bb2
bb2_terminal(["Return freeze items$5"])
bb2_terminal(["Return freeze items$5"])
end
%% Jumps
bb0_terminal --> bb1
bb1_terminal -- then --> bb3
bb1_terminal -- else --> bb2
bb3_terminal -- then --> bb5
bb3_terminal -- else --> bb4
bb5_terminal --> bb4
bb4_terminal --> bb1
```
## Code
@@ -40,40 +40,34 @@ flowchart TB
%% Basic Blocks
subgraph bb0
bb0_instrs["
[1] Let mutate x$1 = 0
"]
bb0_instrs --> bb0_terminal(["Goto"])
[1] Let mutate x$1 = 0
"]
bb0_instrs --> bb0_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[2] Const mutate $6 = 10
[3] Const mutate $8 = Binary read x$1 < read $6
"]
bb1_instrs --> bb1_terminal(["If (read $8)"])
[3] Const mutate $8 = Binary read x$1 < read $6
"]
bb1_instrs --> bb1_terminal(["If (read $8)"])
end
subgraph bb4
bb4_instrs["
[4] Const mutate $9 = 1
[5] Reassign mutate x$1 = Binary read x$1 + read $9
"]
bb4_instrs --> bb4_terminal(["Goto"])
[5] Reassign mutate x$1 = Binary read x$1 + read $9
"]
bb4_instrs --> bb4_terminal(["Goto"])
end
subgraph bb2
bb2_terminal(["Return read x$1"])
bb2_terminal(["Return read x$1"])
end
%% Jumps
bb0_terminal --> bb1
bb1_terminal -- then --> bb4
bb1_terminal -- else --> bb2
bb4_terminal --> bb1
```
## Code
@@ -43,39 +43,33 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Let mutate x$5 = 1
[2] Let mutate y$6 = 2
"]
bb0_instrs --> bb0_terminal(["If (read y$6)"])
[2] Let mutate y$6 = 2
"]
bb0_instrs --> bb0_terminal(["If (read y$6)"])
end
subgraph bb2
bb2_instrs["
[3] Let mutate z$7 = Binary read x$5 + read y$6
"]
bb2_instrs --> bb2_terminal(["Goto"])
[3] Let mutate z$7 = Binary read x$5 + read y$6
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[4] Let mutate z$8 = read x$5
"]
bb3_instrs --> bb3_terminal(["Goto"])
[4] Let mutate z$8 = read x$5
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["Return"])
bb1_terminal(["Return"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb3
bb0_terminal -- fallthrough --> bb1
bb2_terminal --> bb1
bb3_terminal --> bb1
```
## Code
@@ -61,80 +61,62 @@ flowchart TB
%% Basic Blocks
subgraph bb0
bb0_instrs["
[1] Let mutate x$9 = 0
"]
bb0_instrs --> bb0_terminal(["While"])
[1] Let mutate x$9 = 0
"]
bb0_instrs --> bb0_terminal(["While"])
end
subgraph bb1
bb1_terminal(["If (read a$6)"])
bb1_terminal(["If (read a$6)"])
end
subgraph bb3
bb3_terminal(["While"])
bb3_terminal(["While"])
end
subgraph bb4
bb4_terminal(["If (read b$7)"])
bb4_terminal(["If (read b$7)"])
end
subgraph bb6
bb6_terminal(["While"])
bb6_terminal(["While"])
end
subgraph bb7
bb7_terminal(["If (read c$8)"])
bb7_terminal(["If (read c$8)"])
end
subgraph bb9
bb9_instrs["
[2] Const mutate $13 = 1
[3] Binary read x$9 + read $13
"]
bb9_instrs --> bb9_terminal(["Goto"])
[3] Binary read x$9 + read $13
"]
bb9_instrs --> bb9_terminal(["Goto"])
end
subgraph bb8
bb8_terminal(["Goto"])
bb8_terminal(["Goto"])
end
subgraph bb5
bb5_terminal(["Goto"])
bb5_terminal(["Goto"])
end
subgraph bb2
bb2_terminal(["Return read x$9"])
bb2_terminal(["Return read x$9"])
end
%% Jumps
bb0_terminal -- test --> bb1
bb0_terminal -- loop --> bb3
bb0_terminal -- fallthrough --> bb2
bb1_terminal -- then --> bb3
bb1_terminal -- else --> bb2
bb3_terminal -- test --> bb4
bb3_terminal -- loop --> bb6
bb3_terminal -- fallthrough --> bb5
bb4_terminal -- then --> bb6
bb4_terminal -- else --> bb5
bb6_terminal -- test --> bb7
bb6_terminal -- loop --> bb9
bb6_terminal -- fallthrough --> bb8
bb7_terminal -- then --> bb9
bb7_terminal -- else --> bb8
bb9_terminal --> bb7
bb8_terminal --> bb4
bb5_terminal --> bb1
```
## Code
@@ -26,9 +26,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -61,11 +60,10 @@ flowchart TB
bb0_instrs["
[1] Const mutate a$7[1:3] = Array []
[2] Const mutate b$8[2:3] = Object { }
[3] Let mutate c$9 = New mutate Foo$5(mutate a$7, mutate b$8)
"]
bb0_instrs --> bb0_terminal(["Return freeze c$9"])
[3] Let mutate c$9 = New mutate Foo$5(mutate a$7, mutate b$8)
"]
bb0_instrs --> bb0_terminal(["Return freeze c$9"])
end
%% Jumps
%% empty
@@ -51,42 +51,36 @@ flowchart TB
[1] Let mutate x$1 = 1
[2] Let mutate y$2 = 2
[3] Const mutate $8 = 1
[4] Const mutate $9 = Binary read x$1 > read $8
"]
bb0_instrs --> bb0_terminal(["If (read $9)"])
[4] Const mutate $9 = Binary read x$1 > read $8
"]
bb0_instrs --> bb0_terminal(["If (read $9)"])
end
subgraph bb2
bb2_instrs["
[5] Reassign mutate x$1 = 2
"]
bb2_instrs --> bb2_terminal(["Goto"])
[5] Reassign mutate x$1 = 2
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[6] Reassign mutate y$2 = 3
"]
bb3_instrs --> bb3_terminal(["Goto"])
[6] Reassign mutate y$2 = 3
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[7] Let mutate t$14 = Object { x: read x$1, y: read y$2 }
"]
bb1_instrs --> bb1_terminal(["Return freeze t$14"])
[7] Let mutate t$14 = Object { x: read x$1, y: read y$2 }
"]
bb1_instrs --> bb1_terminal(["Return freeze t$14"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb3
bb0_terminal -- fallthrough --> bb1
bb2_terminal --> bb1
bb3_terminal --> bb1
```
## Code
@@ -30,11 +30,10 @@ flowchart TB
bb0_instrs["
[1] Const mutate a$6 = 1
[2] Const mutate b$7 = 2
[3] Const mutate x$8 = Object { a: read a$6, b: read b$7 }
"]
bb0_instrs --> bb0_terminal(["Return freeze x$8"])
[3] Const mutate x$8 = Object { a: read a$6, b: read b$7 }
"]
bb0_instrs --> bb0_terminal(["Return freeze x$8"])
end
%% Jumps
%% empty
@@ -32,11 +32,10 @@ flowchart TB
[1] Const mutate x$4 = Array []
[2] Const mutate y$5[2:4] = Object { x: read x$4 }
[3] Const mutate $6[3:4] = Array []
[4] Call mutate y$5.x.push(mutate $6)
"]
bb0_instrs --> bb0_terminal(["Return freeze y$5"])
[4] Call mutate y$5.x.push(mutate $6)
"]
bb0_instrs --> bb0_terminal(["Return freeze y$5"])
end
%% Jumps
%% empty
@@ -30,11 +30,10 @@ flowchart TB
bb0_instrs["
[1] Const mutate x$3 = Array []
[2] Const mutate y$4[2:3] = Object { }
[3] Reassign mutate y$4.x[2:3] = read x$3
"]
bb0_instrs --> bb0_terminal(["Return freeze y$4"])
[3] Reassign mutate y$4.x[2:3] = read x$3
"]
bb0_instrs --> bb0_terminal(["Return freeze y$4"])
end
%% Jumps
%% empty
@@ -39,29 +39,25 @@ flowchart TB
bb0_instrs["
[1] Let mutate x$1 = 1
[2] Const mutate $5 = 1
[3] Const mutate $6 = Binary read x$1 === read $5
"]
bb0_instrs --> bb0_terminal(["If (read $6)"])
[3] Const mutate $6 = Binary read x$1 === read $5
"]
bb0_instrs --> bb0_terminal(["If (read $6)"])
end
subgraph bb2
bb2_instrs["
[4] Reassign mutate x$1 = 2
"]
bb2_instrs --> bb2_terminal(["Goto"])
[4] Reassign mutate x$1 = 2
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["Return read x$1"])
bb1_terminal(["Return read x$1"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
```
## Code
@@ -30,9 +30,8 @@ bb0:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["Return"])
bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -74,43 +73,37 @@ flowchart TB
%% Basic Blocks
subgraph bb0
bb0_instrs["
[1] Let mutate str$2 = ''
"]
bb0_instrs --> bb0_terminal(["If (read cond$5)"])
[1] Let mutate str$2 = ''
"]
bb0_instrs --> bb0_terminal(["If (read cond$5)"])
end
subgraph bb2
bb2_instrs["
[2] Let mutate str$7 = 'other test'
[3] Call mutate log$4(read str$7)
"]
bb2_instrs --> bb2_terminal(["Goto"])
[3] Call mutate log$4(read str$7)
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[4] Reassign mutate str$2 = 'fallthrough test'
"]
bb3_instrs --> bb3_terminal(["Goto"])
[4] Reassign mutate str$2 = 'fallthrough test'
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[5] Call mutate log$4(read str$2)
"]
bb1_instrs --> bb1_terminal(["Return"])
[5] Call mutate log$4(read str$2)
"]
bb1_instrs --> bb1_terminal(["Return"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb3
bb0_terminal -- fallthrough --> bb1
bb2_terminal --> bb1
bb3_terminal --> bb1
```
## Code
@@ -47,42 +47,36 @@ flowchart TB
bb0_instrs["
[1] Let mutate y$5 = 2
[2] Const mutate $6 = 1
[3] Const mutate $7 = Binary read y$5 > read $6
"]
bb0_instrs --> bb0_terminal(["If (read $7)"])
[3] Const mutate $7 = Binary read y$5 > read $6
"]
bb0_instrs --> bb0_terminal(["If (read $7)"])
end
subgraph bb2
bb2_instrs["
[4] Reassign mutate y$1 = 1
"]
bb2_instrs --> bb2_terminal(["Goto"])
[4] Reassign mutate y$1 = 1
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[5] Reassign mutate y$1 = 2
"]
bb3_instrs --> bb3_terminal(["Goto"])
[5] Reassign mutate y$1 = 2
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[6] Let mutate x$11 = read y$1
"]
bb1_instrs --> bb1_terminal(["Return"])
[6] Let mutate x$11 = read y$1
"]
bb1_instrs --> bb1_terminal(["Return"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb3
bb0_terminal -- fallthrough --> bb1
bb2_terminal --> bb1
bb3_terminal --> bb1
```
## Code
@@ -26,11 +26,10 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Let mutate x$3 = 1
[2] Let mutate y$4 = 2
"]
bb0_instrs --> bb0_terminal(["Return"])
[2] Let mutate y$4 = 2
"]
bb0_instrs --> bb0_terminal(["Return"])
end
%% Jumps
%% empty
@@ -37,29 +37,25 @@ flowchart TB
subgraph bb0
bb0_instrs["
[1] Let mutate x$4 = 1
[2] Let mutate y$5 = 2
"]
bb0_instrs --> bb0_terminal(["If (read y$5)"])
[2] Let mutate y$5 = 2
"]
bb0_instrs --> bb0_terminal(["If (read y$5)"])
end
subgraph bb2
bb2_instrs["
[3] Let mutate z$6 = Binary read x$4 + read y$5
"]
bb2_instrs --> bb2_terminal(["Goto"])
[3] Let mutate z$6 = Binary read x$4 + read y$5
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["Return"])
bb1_terminal(["Return"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
```
## Code
@@ -69,55 +69,47 @@ flowchart TB
[2] Const mutate $11 = 2
[3] Const mutate $12 = Binary read x$10 === read $11
[4] Const mutate $13 = 1
[5] Const mutate $14 = Binary read x$10 === read $13
"]
bb0_instrs --> bb0_terminal(["Switch (read x$10)"])
[5] Const mutate $14 = Binary read x$10 === read $13
"]
bb0_instrs --> bb0_terminal(["Switch (read x$10)"])
end
subgraph bb5
bb5_instrs["
[6] Const mutate $15 = 1
[7] Reassign mutate x$1 = Binary read x$10 + read $15
"]
bb5_instrs --> bb5_terminal(["Goto"])
[7] Reassign mutate x$1 = Binary read x$10 + read $15
"]
bb5_instrs --> bb5_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[8] Const mutate $17 = 2
[9] Reassign mutate x$1 = Binary read x$10 + read $17
"]
bb3_instrs --> bb3_terminal(["Goto"])
[9] Reassign mutate x$1 = Binary read x$10 + read $17
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb2
bb2_instrs["
[10] Const mutate $19 = 3
[11] Reassign mutate x$1 = Binary read x$10 + read $19
"]
bb2_instrs --> bb2_terminal(["Goto"])
[11] Reassign mutate x$1 = Binary read x$10 + read $19
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[12] Let mutate y$22 = read x$1
"]
bb1_instrs --> bb1_terminal(["Return"])
[12] Let mutate y$22 = read x$1
"]
bb1_instrs --> bb1_terminal(["Return"])
end
%% Jumps
bb0_terminal -- read $14 --> bb5
bb0_terminal -- read $12 --> bb3
bb0_terminal -- default --> bb2
bb0_terminal -- fallthrough --> bb1
bb5_terminal --> bb1
bb3_terminal --> bb1
bb2_terminal --> bb1
```
## Code
@@ -38,29 +38,25 @@ flowchart TB
bb0_instrs["
[1] Let mutate x$1 = 1
[2] Const mutate $5 = 1
[3] Const mutate $6 = Binary read x$1 === read $5
"]
bb0_instrs --> bb0_terminal(["If (read $6)"])
[3] Const mutate $6 = Binary read x$1 === read $5
"]
bb0_instrs --> bb0_terminal(["If (read $6)"])
end
subgraph bb2
bb2_instrs["
[4] Reassign mutate x$1 = 2
"]
bb2_instrs --> bb2_terminal(["Goto"])
[4] Reassign mutate x$1 = 2
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["Throw read x$1"])
bb1_terminal(["Throw read x$1"])
end
%% Jumps
bb0_terminal -- then --> bb2
bb0_terminal -- else --> bb1
bb2_terminal --> bb1
```
## Code
@@ -41,42 +41,36 @@ flowchart TB
%% Basic Blocks
subgraph bb0
bb0_instrs["
[1] Let mutate x$5 = 1
"]
bb0_instrs --> bb0_terminal(["While"])
[1] Let mutate x$5 = 1
"]
bb0_instrs --> bb0_terminal(["While"])
end
subgraph bb1
bb1_instrs["
[2] Const mutate $6 = 10
[3] Const mutate $8 = Binary read x$5 < read $6
"]
bb1_instrs --> bb1_terminal(["If (read $8)"])
[3] Const mutate $8 = Binary read x$5 < read $6
"]
bb1_instrs --> bb1_terminal(["If (read $8)"])
end
subgraph bb3
bb3_instrs["
[4] Const mutate $9 = 1
[5] Binary read x$5 + read $9
"]
bb3_instrs --> bb3_terminal(["Goto"])
[5] Binary read x$5 + read $9
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb2
bb2_terminal(["Return read x$5"])
bb2_terminal(["Return read x$5"])
end
%% Jumps
bb0_terminal -- test --> bb1
bb0_terminal -- loop --> bb3
bb0_terminal -- fallthrough --> bb2
bb1_terminal -- then --> bb3
bb1_terminal -- else --> bb2
bb3_terminal --> bb1
```
## Code
@@ -41,42 +41,36 @@ flowchart TB
%% Basic Blocks
subgraph bb0
bb0_instrs["
[1] Let mutate x$1 = 1
"]
bb0_instrs --> bb0_terminal(["While"])
[1] Let mutate x$1 = 1
"]
bb0_instrs --> bb0_terminal(["While"])
end
subgraph bb1
bb1_instrs["
[2] Const mutate $6 = 10
[3] Const mutate $8 = Binary read x$1 < read $6
"]
bb1_instrs --> bb1_terminal(["If (read $8)"])
[3] Const mutate $8 = Binary read x$1 < read $6
"]
bb1_instrs --> bb1_terminal(["If (read $8)"])
end
subgraph bb3
bb3_instrs["
[4] Const mutate $9 = 1
[5] Reassign mutate x$1 = Binary read x$1 + read $9
"]
bb3_instrs --> bb3_terminal(["Goto"])
[5] Reassign mutate x$1 = Binary read x$1 + read $9
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb2
bb2_terminal(["Return read x$1"])
bb2_terminal(["Return read x$1"])
end
%% Jumps
bb0_terminal -- test --> bb1
bb0_terminal -- loop --> bb3
bb0_terminal -- fallthrough --> bb2
bb1_terminal -- then --> bb3
bb1_terminal -- else --> bb2
bb3_terminal --> bb1
```
## Code
@@ -70,35 +70,31 @@ flowchart TB
[2] Let mutate y$3 = undefined
[3] Const mutate $12 = false
[4] Const mutate $13 = true
[5] Const mutate $14 = 1
"]
bb0_instrs --> bb0_terminal(["Switch (read props$9.p0)"])
[5] Const mutate $14 = 1
"]
bb0_instrs --> bb0_terminal(["Switch (read props$9.p0)"])
end
subgraph bb6
bb6_instrs["
[6] Call mutate x$10.push(read props$9.p2)
[7] Reassign mutate y$3 = Array []
"]
bb6_instrs --> bb6_terminal(["Goto"])
[7] Reassign mutate y$3 = Array []
"]
bb6_instrs --> bb6_terminal(["Goto"])
end
subgraph bb2
bb2_instrs["
[8] Reassign mutate y$3 = read x$10
"]
bb2_instrs --> bb2_terminal(["Goto"])
[8] Reassign mutate y$3 = read x$10
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[9] Const mutate child$19 = JSX <read Component$0 data={freeze x$10} ></read Component$0>
[10] Call read y$3.push(read props$9.p4)
[11] Const mutate $22 = JSX <read Component$0 data={freeze y$3} >{read child$19}</read Component$0>
"]
bb1_instrs --> bb1_terminal(["Return read $22"])
[11] Const mutate $22 = JSX <read Component$0 data={freeze y$3} >{read child$19}</read Component$0>
"]
bb1_instrs --> bb1_terminal(["Return read $22"])
end
%% Jumps
bb0_terminal -- read $14 --> bb1
@@ -106,11 +102,9 @@ flowchart TB
bb0_terminal -- default --> bb1
bb0_terminal -- read $12 --> bb2
bb0_terminal -- fallthrough --> bb1
bb6_terminal --> bb1
bb2_terminal --> bb1
```
## Code
@@ -93,57 +93,49 @@ flowchart TB
[4] Const mutate $13 = 3
[5] Const mutate $14 = 2
[6] Const mutate $15 = 1
[7] Const mutate $16 = 0
"]
bb0_instrs --> bb0_terminal(["Switch (read x$9)"])
[7] Const mutate $16 = 0
"]
bb0_instrs --> bb0_terminal(["Switch (read x$9)"])
end
subgraph bb10
bb10_instrs["
[8] Reassign mutate y$17 = 0
"]
bb10_instrs --> bb10_terminal(["Goto"])
[8] Reassign mutate y$17 = 0
"]
bb10_instrs --> bb10_terminal(["Goto"])
end
subgraph bb9
bb9_instrs["
[9] Reassign mutate y$18 = 1
"]
bb9_instrs --> bb9_terminal(["Goto"])
[9] Reassign mutate y$18 = 1
"]
bb9_instrs --> bb9_terminal(["Goto"])
end
subgraph bb5
bb5_instrs["
[10] Reassign mutate y$19 = 3
"]
bb5_instrs --> bb5_terminal(["Goto"])
[10] Reassign mutate y$19 = 3
"]
bb5_instrs --> bb5_terminal(["Goto"])
end
subgraph bb4
bb4_instrs["
[11] Reassign mutate y$20 = 4
"]
bb4_instrs --> bb4_terminal(["Goto"])
[11] Reassign mutate y$20 = 4
"]
bb4_instrs --> bb4_terminal(["Goto"])
end
subgraph bb3
bb3_instrs["
[12] Reassign mutate y$21 = 5
"]
bb3_instrs --> bb3_terminal(["Goto"])
[12] Reassign mutate y$21 = 5
"]
bb3_instrs --> bb3_terminal(["Goto"])
end
subgraph bb2
bb2_instrs["
[13] Reassign mutate y$22 = 0
"]
bb2_instrs --> bb2_terminal(["Goto"])
[13] Reassign mutate y$22 = 0
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_terminal(["Return"])
bb1_terminal(["Return"])
end
%% Jumps
bb0_terminal -- read $16 --> bb10
@@ -154,19 +146,13 @@ flowchart TB
bb0_terminal -- read $11 --> bb3
bb0_terminal -- default --> bb2
bb0_terminal -- fallthrough --> bb1
bb10_terminal --> bb9
bb9_terminal --> bb1
bb5_terminal --> bb1
bb4_terminal --> bb3
bb3_terminal --> bb2
bb2_terminal --> bb1
```
## Code
@@ -64,47 +64,41 @@ flowchart TB
[1] Let mutate x$9[1:6] = Array []
[2] Let mutate y$3 = undefined
[3] Const mutate $11 = false
[4] Const mutate $12 = true
"]
bb0_instrs --> bb0_terminal(["Switch (read props$8.p0)"])
[4] Const mutate $12 = true
"]
bb0_instrs --> bb0_terminal(["Switch (read props$8.p0)"])
end
subgraph bb4
bb4_instrs["
[5] Call mutate x$9.push(read props$8.p2)
[6] Call mutate x$9.push(read props$8.p3)
[7] Reassign mutate y$13 = Array []
"]
bb4_instrs --> bb4_terminal(["Goto"])
[7] Reassign mutate y$13 = Array []
"]
bb4_instrs --> bb4_terminal(["Goto"])
end
subgraph bb2
bb2_instrs["
[8] Reassign mutate y$3 = read x$9
"]
bb2_instrs --> bb2_terminal(["Goto"])
[8] Reassign mutate y$3 = read x$9
"]
bb2_instrs --> bb2_terminal(["Goto"])
end
subgraph bb1
bb1_instrs["
[9] Const mutate child$19 = JSX <read Component$0 data={freeze x$9} ></read Component$0>
[10] Call read y$3.push(read props$8.p4)
[11] Const mutate $23 = JSX <read Component$0 data={read y$3} >{read child$19}</read Component$0>
"]
bb1_instrs --> bb1_terminal(["Return read $23"])
[11] Const mutate $23 = JSX <read Component$0 data={read y$3} >{read child$19}</read Component$0>
"]
bb1_instrs --> bb1_terminal(["Return read $23"])
end
%% Jumps
bb0_terminal -- read $12 --> bb4
bb0_terminal -- read $11 --> bb2
bb0_terminal -- default --> bb1
bb0_terminal -- fallthrough --> bb1
bb4_terminal --> bb2
bb2_terminal --> bb1
```
## Code
@@ -30,26 +30,22 @@ bb2:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["While"])
bb0_terminal(["While"])
end
subgraph bb1
bb1_terminal(["If (read a$3)"])
bb1_terminal(["If (read a$3)"])
end
subgraph bb2
bb2_terminal(["Return read b$4"])
bb2_terminal(["Return read b$4"])
end
%% Jumps
bb0_terminal -- test --> bb1
bb0_terminal -- loop --> bb2
bb0_terminal -- fallthrough --> bb2
bb1_terminal -- then --> bb2
bb1_terminal -- else --> bb2
```
## Code
@@ -45,51 +45,41 @@ bb2:
flowchart TB
%% Basic Blocks
subgraph bb0
bb0_terminal(["While"])
bb0_terminal(["While"])
end
subgraph bb1
bb1_terminal(["If (read a$5)"])
bb1_terminal(["If (read a$5)"])
end
subgraph bb3
bb3_terminal(["If (read b$6)"])
bb3_terminal(["If (read b$6)"])
end
subgraph bb5
bb5_terminal(["Goto"])
bb5_terminal(["Goto"])
end
subgraph bb4
bb4_instrs["
[1] Call read c$7()
"]
bb4_instrs --> bb4_terminal(["Goto"])
[1] Call read c$7()
"]
bb4_instrs --> bb4_terminal(["Goto"])
end
subgraph bb2
bb2_instrs["
[2] Call read d$8()
"]
bb2_instrs --> bb2_terminal(["Return"])
[2] Call read d$8()
"]
bb2_instrs --> bb2_terminal(["Return"])
end
%% Jumps
bb0_terminal -- test --> bb1
bb0_terminal -- loop --> bb3
bb0_terminal -- fallthrough --> bb2
bb1_terminal -- then --> bb3
bb1_terminal -- else --> bb2
bb3_terminal -- then --> bb5
bb3_terminal -- else --> bb4
bb5_terminal --> bb1
bb4_terminal --> bb1
```
## Code