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
[ORC] Replace ORC's baked-in dependence tracking with WaitingOnGraph.
WaitingOnGraph tracks waiting-on relationships between nodes (intended to
represent symbols in an ORC program) in order to identify nodes that are
*Ready* (i.e. are not waiting on any other nodes) or have *Failed* (are
waiting on some node that cannot be produced).
WaitingOnGraph replaces ORC's baked-in data structures that were tracking the
same information (EmissionDepUnit, EmissionDepUnitInfo, ...). Isolating this
information in a separate data structure simplifies the code, allows us to
unit test it, and simplifies performance testing.
The WaitingOnGraph uses several techniques to improve performance relative to
the old data structures, including symbol coalescing ("SuperNodes") and symbol
keys that don't perform unnecessary reference counting
(NonOwningSymbolStringPtr).
This commit includes unit tests for common dependence-tracking issues that have
led to ORC bugs in the past.
0 commit comments