-
Notifications
You must be signed in to change notification settings - Fork 198
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement support for collections of collections marshalling (#1226)
* Refactor indexer naming to be nested-collection safe. * Implement initial collections-of-collections/jagged array support. Use a topological sort of the parameter+return marshallers to unmarshal "CountElementName"-referenced parameters/return before unmarshalling the elements that have a dependency on them through "CountElementName". * Fixes for edge cases around HResult/Exception handling. * Flip the edgeMap indices so we can use Array.IndexOf (which is optimized) to search for edges. * Comments and optimizations. * Add citation for algorithm, * Hoist elementIndex out of the loop. * Encapsulate the edgeMap in a private struct type and add some simple abstractions to enable more perf optimizations. * Make Topological sort more flexible for element ids * Use native index if managed index is unset to allow handling multiple native-only parameters as distinct nodes in the graph model. * Fix using the return value for passing collection size. Validate the types of the CountElementName'd elements, even in nested scenarios. * Change how we initialize the numRows array. * Fix cycle breaking in count info. * Update nested indexer creation for num elements expressions to handle non-collection sub contexts. * Add stress test for collections of collections that uses 0-11 nested arrays. * PR feedback.
- Loading branch information
1 parent
4835f73
commit aa2c08c
Showing
14 changed files
with
528 additions
and
82 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.