tame/tamer/benches
Mike Gerwitz 3e277270a7 tamer: asg: Track roots on graph
Previously, since the graph contained only identifiers, discovered roots
were stored in a separate vector and exposed to the caller.  This not only
leaked details, but added complexity; this was left over from the
refactoring of the proof-of-concept linker some time ago.

This moves the root management into the ASG itself, mostly, with one item
being left over for now in the asg_builder (eligibility classifications).

There are two roots that were added automatically:

  - __yield
  - __worksheet

The former has been removed and is now expected to be explicitly mapped in
the return map, which is now enforced with an extern in `core/base`.  This
is still special, in the sense that it is explicitly referenced by the
generated code, but there's nothing inherently special about it and I'll
continue to generalize it into oblivion in the future, such that the final
yield is just a convention.

`__worksheet` is the only symbol of type `IdentKind::Worksheet`, and so that
was generalized just as the meta and map entries were.

The goal in the future will be to have this more under the control of the
source language, and to consolodate individual roots under packages, so that
the _actual_ roots are few.

As far as the actual ASG goes: this introduces a single root node that is
used as the sole reference for reachability analysis and topological
sorting.  The edges of that root node replace the vector that was removed.

DEV-11864
2022-05-17 10:42:05 -04:00
..
asg.rs tamer: asg::Asg::set_fragment: {ObjectRef=>SymbolId} 2022-05-16 13:14:27 -04:00
asg_lower_xmle.rs tamer: asg: Track roots on graph 2022-05-17 10:42:05 -04:00
iter.rs Copyright year update 2022 2022-05-03 14:14:29 -04:00
memchr.rs Copyright year update 2022 2022-05-03 14:14:29 -04:00
sym.rs Copyright year update 2022 2022-05-03 14:14:29 -04:00
xir.rs Copyright year update 2022 2022-05-03 14:14:29 -04:00