RFR: 8271911: replay compilations of methods which use JSR292 (easy cases) [v2]

Vladimir Ivanov vlivanov at openjdk.java.net
Thu Sep 2 12:42:28 UTC 2021


On Wed, 1 Sep 2021 21:45:26 GMT, Dean Long <dlong at openjdk.org> wrote:

>> src/hotspot/share/ci/ciEnv.cpp line 1537:
>> 
>>> 1535: 
>>> 1536:   // Iterate over the class hierarchy
>>> 1537:   for (ClassHierarchyIterator iter(vmClasses::Object_klass()); !iter.done(); iter.next()) {
>> 
>> Why do you iterate over the whole class hierarchy instead of inspecting only those classes which are present in CI?
>
> Good question.  It is because of the section in ciInstanceKlass::dump_replay_data that dumps subclasses.  If one of the CI classes is java.lang.Object, we can get a lot of hidden classes dumped there from startup that are unrelated to the current compile.  I wanted to see how many I could find as a proof of concept / stress test.  My plan is to see if we can completely do without subclass dumping there by dumping better CHA information (JDK-8261192).

I still miss the connection between `ciInstanceKlass::dump_replay_data()` and `ciEnv::find_dynamic_call_sites()` cases. 

`ciEnv::find_dynamic_call_sites()` dumps all invokedynamic and invokehandle (MH.invoke*()) call sites and MethodHandle CP Constants across the class hierarchy. Any particular benefit compared to just dumping that info on per ciInstanceKlass granularity?

-------------

PR: https://git.openjdk.java.net/jdk/pull/5270


More information about the hotspot-compiler-dev mailing list