tqchen commented on PR #20327: URL: https://github.com/apache/tvm/pull/20327#issuecomment-5649261687
Validation for `45897c33f407e689effe7c172b26916a9a7dc9ce`: The generic `ExprFunctor` hooks are now `Dispatch_` and `DispatchDefault_`; public `VisitExpr` is unchanged. The existing three generic-functor cases were freshly compiled and run in normal and no-devirtualization modes against the updated header, including an added derived `DispatchDefault_` assertion. They cover ancestor and independent-extension dispatch, the public entry override, missing/default errors, null input, move-only and reference arguments, and void/reference returns. Changed-file lint passes. Before this generic naming correction, coherent builds passed 50 tests per mode across the existing focused, mutation-contract, Visitor and generic suites, plus the reference comparison, fixture checks and live dispatch-table binding checks. All 35 Visitor and 35 Mutator callbacks bind to their corresponding compiler library; extension registration also passes. The final correction changes only generic hook identifiers and one formatting adjustment. Native Visitor/Mutator source and the public FFI dependency remain unchanged. No broad rebuild or performance rerun was needed for that correction; the full upstream CI suite remains separate from these local checks. The fresh post-publication correctness audit checked native hook fields and ordering against registered defaults, copy-on-write permission propagation, Let definition-region restoration, dispatch/fallback boundaries, owning error/interrupt results and exactly-once context attachment. Its final generic-naming supplement checks both hook names, default customization and argument/result forwarding. No actionable correctness issue was found in these paths. Primitive-typed Vars retain the documented native early-return behavior. The direct Visitor/StructuralWalk comparison below was measured before the generic-only naming correction, with the same native traversal implementation. Values are medians of ten process medians in ns/node; lower is faster. | Mode | Fixture | Visitor | StructuralWalk | |---|---|---:|---:| | Normal | Split | 4.9359 | 6.4724 | | Normal | Seq64 | 5.8704 | 6.3732 | | No devirtualization | Split | 5.3384 | 6.1623 | | No devirtualization | Seq64 | 6.2853 | 5.5837 | All 80 processes and 720 raw samples are retained. Visitor wins 10/10, 10/10, 8/10 and 0/10 paired comparisons respectively; the no-devirtualization Split result has visible variation. Both arms use the original fixtures and borrowed roots, with construction and checks outside timing. Walk uses postorder traversal with a typed Var callback, so its callback surface differs from the native Visitor. This is a bounded comparison, not a universal performance claim. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
