You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The symbols in the side of each call argument and SSA statements represents the following meaning:
104
-
- `◌`: this value is not analyzed because escape information of it won't be used anyway (when the object is `isbitstype` for example)
105
-
- `✓`: this value never escapes (`has_no_escape(result.state[x])` holds)
106
-
- `↑`: this value can escape to the caller via return (`has_return_escape(result.state[x])` holds)
107
-
- `X`: this value can escape to somewhere the escape analysis can't reason about like escapes to a global memory (`has_all_escape(result.state[x])` holds)
108
-
- `*`: this value's escape state is between the `ReturnEscape` and `AllEscape` in the lattice of [`EscapeInfo`](@ref), e.g. it has unhandled `ThrownEscape`
109
-
- `′`: this value has additional field/aliasing information in its `AliasInfo` property
110
+
- `◌` (plain): this value is not analyzed because escape information of it won't be used anyway (when the object is `isbitstype` for example)
111
+
- `✓` (green or cyan): this value never escapes (`has_no_escape(result.state[x])` holds), colored blue if it has arg escape also (`has_arg_escape(result.state[x])` holds)
112
+
- `↑` (blue or yellow): this value can escape to the caller via return (`has_return_escape(result.state[x])` holds), colored yellow if it has unhandled thrown escape also (`has_thrown_escape(result.state[x])` holds)
113
+
- `X` (red): this value can escape to somewhere the escape analysis can't reason about like escapes to a global memory (`has_all_escape(result.state[x])` holds)
114
+
- `*` (bold): this value's escape state is between the `ReturnEscape` and `AllEscape` in the partial order of [`EscapeInfo`](@ref), colored yellow if it has unhandled thrown escape also (`has_thrown_escape(result.state[x])` holds)
115
+
- `′`: this value has additional object field / array element information in its `AliasInfo` property
110
116
111
117
For testing, escape information of each call argument and SSA value can be inspected programmatically as like:
112
118
```julia
@@ -292,13 +298,17 @@ function get_name_color(x::EscapeInfo, symbol::Bool = false)
292
298
getname(x) =string(nameof(x))
293
299
if x === EA.⊥
294
300
name, color = (getname(EA.NotAnalyzed), "◌"), :plain
0 commit comments