On Wed, 31 Jan 2024 23:24:22 GMT, Chris Plummer <cjplum...@openjdk.org> wrote:
>> FilteredFieldStream used by heap walking functions to iterate through >> klass/superclasses/interfaces fields are known to have poor performance (see >> [JDK-8317692](https://bugs.openjdk.org/browse/JDK-8317692) for details). >> Heap walking API implementation is the last user of the klasses. >> The fix reworks iteration through klass/superclasses/interfaces fields and >> drops FilteredFieldStream-related code. >> Additionally removed/updated includes of reflectionUtils.hpp. >> >> Testing: >> - tier1..4; >> - test/hotspot/jtreg/vmTestbase/nsk/jvmti (contains tests for different >> heap walking functions); >> - new test from #17580 (now the test runs several times faster). > > src/hotspot/share/prims/jvmtiTagMap.cpp line 453: > >> 451: InstanceKlass* super_klass = ik->java_super(); >> 452: if (super_klass != nullptr) { >> 453: start_index += add_instance_fields(super_klass, start_index); > > Does hotspot have any rules against potentially very deep recursion that can > overflow the stack? I looked at hotspot code and don't see "implementation limits" for level of inheritance, so it looks like a valid concern. Need to reimplement this without recursion. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/17661#discussion_r1474976858