481 lines
9.4 KiB
JSON
481 lines
9.4 KiB
JSON
|
|
{
|
||
|
|
"capabilities": [
|
||
|
|
"unified_call",
|
||
|
|
"phi",
|
||
|
|
"effects",
|
||
|
|
"callee_typing"
|
||
|
|
],
|
||
|
|
"cfg": {
|
||
|
|
"functions": [
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 10,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [
|
||
|
|
11
|
||
|
|
],
|
||
|
|
"terminator": "Jump"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 11,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [
|
||
|
|
12
|
||
|
|
],
|
||
|
|
"terminator": "Jump"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 12,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [
|
||
|
|
13,
|
||
|
|
15
|
||
|
|
],
|
||
|
|
"terminator": "Branch"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 13,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [
|
||
|
|
14
|
||
|
|
],
|
||
|
|
"terminator": "Jump"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 14,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [
|
||
|
|
12
|
||
|
|
],
|
||
|
|
"terminator": "Jump"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 15,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [],
|
||
|
|
"terminator": "Return"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 16,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [
|
||
|
|
12
|
||
|
|
],
|
||
|
|
"terminator": "Jump"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"entry_block": 10,
|
||
|
|
"name": "Main.main/0"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 17,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [],
|
||
|
|
"terminator": "Return"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"entry_block": 17,
|
||
|
|
"name": "Main.equals/1"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 18,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [],
|
||
|
|
"terminator": "Return"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"entry_block": 18,
|
||
|
|
"name": "Main.toString/0"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 0,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [],
|
||
|
|
"terminator": "Return"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"entry_block": 0,
|
||
|
|
"name": "condition_fn"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 0,
|
||
|
|
"reachable": false,
|
||
|
|
"successors": [],
|
||
|
|
"terminator": "Return"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"entry_block": 0,
|
||
|
|
"name": "main"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"functions": [
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 10,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"dst": 2,
|
||
|
|
"op": "const",
|
||
|
|
"value": {
|
||
|
|
"type": "i64",
|
||
|
|
"value": 0
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 3,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 2
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"op": "jump",
|
||
|
|
"target": 11
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 11,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"dst": 4,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 3
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 4,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 3
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"op": "jump",
|
||
|
|
"target": 12
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 12,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"dst": 5,
|
||
|
|
"incoming": [
|
||
|
|
[
|
||
|
|
4,
|
||
|
|
11
|
||
|
|
],
|
||
|
|
[
|
||
|
|
18,
|
||
|
|
14
|
||
|
|
]
|
||
|
|
],
|
||
|
|
"op": "phi"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 12,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 9
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 13,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 10
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 8,
|
||
|
|
"op": "const",
|
||
|
|
"value": {
|
||
|
|
"type": "i64",
|
||
|
|
"value": 10
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 12,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 9
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 13,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 10
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 11,
|
||
|
|
"lhs": 12,
|
||
|
|
"op": "compare",
|
||
|
|
"operation": "<",
|
||
|
|
"rhs": 13
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 9,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 5
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 10,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 8
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 14,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 11
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cond": 14,
|
||
|
|
"else": 15,
|
||
|
|
"op": "branch",
|
||
|
|
"then": 13
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 13,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"dst": 16,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 5
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": null,
|
||
|
|
"mir_call": {
|
||
|
|
"args": [
|
||
|
|
9
|
||
|
|
],
|
||
|
|
"callee": {
|
||
|
|
"name": "print",
|
||
|
|
"type": "Global"
|
||
|
|
},
|
||
|
|
"effects": [
|
||
|
|
"IO"
|
||
|
|
],
|
||
|
|
"flags": {}
|
||
|
|
},
|
||
|
|
"op": "mir_call"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 15,
|
||
|
|
"op": "const",
|
||
|
|
"value": {
|
||
|
|
"type": "i64",
|
||
|
|
"value": 1
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 16,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 5
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 18,
|
||
|
|
"lhs": 16,
|
||
|
|
"op": "binop",
|
||
|
|
"operation": "+",
|
||
|
|
"rhs": 17
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 17,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 15
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"op": "jump",
|
||
|
|
"target": 14
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 14,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"op": "jump",
|
||
|
|
"target": 12
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 15,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"dst": 20,
|
||
|
|
"op": "const",
|
||
|
|
"value": {
|
||
|
|
"type": "void",
|
||
|
|
"value": 0
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"op": "ret",
|
||
|
|
"value": 20
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"id": 16,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"op": "jump",
|
||
|
|
"target": 12
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"name": "Main.main/0",
|
||
|
|
"params": [
|
||
|
|
0,
|
||
|
|
1
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 17,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"dst": 3,
|
||
|
|
"op": "const",
|
||
|
|
"value": {
|
||
|
|
"type": "i64",
|
||
|
|
"value": 1
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"op": "ret",
|
||
|
|
"value": 3
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"name": "Main.equals/1",
|
||
|
|
"params": [
|
||
|
|
0,
|
||
|
|
1,
|
||
|
|
2
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 18,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"dst": 2,
|
||
|
|
"op": "const",
|
||
|
|
"value": {
|
||
|
|
"type": {
|
||
|
|
"box_type": "StringBox",
|
||
|
|
"kind": "handle"
|
||
|
|
},
|
||
|
|
"value": "Main("
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 3,
|
||
|
|
"op": "const",
|
||
|
|
"value": {
|
||
|
|
"type": {
|
||
|
|
"box_type": "StringBox",
|
||
|
|
"kind": "handle"
|
||
|
|
},
|
||
|
|
"value": ")"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 6,
|
||
|
|
"lhs": 4,
|
||
|
|
"op": "binop",
|
||
|
|
"operation": "+",
|
||
|
|
"rhs": 5
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 4,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 2
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"dst": 5,
|
||
|
|
"op": "copy",
|
||
|
|
"src": 3
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"op": "ret",
|
||
|
|
"value": 6
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"name": "Main.toString/0",
|
||
|
|
"params": [
|
||
|
|
0,
|
||
|
|
1
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 0,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"dst": 1,
|
||
|
|
"op": "const",
|
||
|
|
"value": {
|
||
|
|
"type": "i64",
|
||
|
|
"value": 1
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"op": "ret",
|
||
|
|
"value": 1
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"name": "condition_fn",
|
||
|
|
"params": [
|
||
|
|
0
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"blocks": [
|
||
|
|
{
|
||
|
|
"id": 0,
|
||
|
|
"instructions": [
|
||
|
|
{
|
||
|
|
"dst": 9,
|
||
|
|
"op": "const",
|
||
|
|
"value": {
|
||
|
|
"type": "void",
|
||
|
|
"value": 0
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"op": "ret",
|
||
|
|
"value": 9
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"name": "main",
|
||
|
|
"params": []
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"metadata": {
|
||
|
|
"build_time": "Phase 15.5 Development",
|
||
|
|
"features": [
|
||
|
|
"mir_call_unification",
|
||
|
|
"json_v1_schema"
|
||
|
|
],
|
||
|
|
"generator": "nyash-rust",
|
||
|
|
"phase": "15.5"
|
||
|
|
},
|
||
|
|
"schema_version": "1.0"
|
||
|
|
}
|