RFR: 8261954: Dependencies: Improve iteration over class hierarchy under context class
Vladimir Ivanov
vlivanov at openjdk.java.net
Thu Feb 18 17:25:53 UTC 2021
Simplify `ClassHierarchyWalker::find_witness_anywhere()` which iterates over class hierarchy under context class searching for witnesses.
Current implementation traverses the hierarchy in a breadth-first manner and keeps a stack-allocated array to keep a worklist.
But all the subclasses are already part of a singly linked list formed by `Klass::subklass()`/`next_sibling()`/`superklass()`.
Proposed refactoring gets rid of the explicit worklist and switches to the traversal over the linked list (encapsulated into `ClassHierarchyIterator`). It performs depth-first pre-order hierarchy traversal.
(There are some other minor refactorings applied in `ClassHierarchyWalker` along the way.)
Testing:
- [x] hs-tier1 - hs-tier8
- [x] additional verification that CHA decisions aren't affected
-------------
Commit messages:
- Refactor ClassHierarchyIterator
- Revert verification
- Verification
- Cleanups in ClassHierarchyWalker::is_witness()
- Migrate ClassHierarchyWalker::find_witness_in to ClassHierarchyIterator
- ClassHierarchyIterator
Changes: https://git.openjdk.java.net/jdk/pull/2630/files
Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2630&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8261954
Stats: 169 lines in 2 files changed: 64 ins; 69 del; 36 mod
Patch: https://git.openjdk.java.net/jdk/pull/2630.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/2630/head:pull/2630
PR: https://git.openjdk.java.net/jdk/pull/2630
More information about the hotspot-runtime-dev
mailing list