<div dir="ltr"><div>Thank you for trying out the changes.</div><div>I missed out running the tests with fastdebug. Thanks for pointing out that bug.<br></div><div>I pushed the suggested change with some comments to explain the reasoning.</div><div><br></div><div>Thanks,</div><div>Ashutosh Mehra<br><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 16, 2024 at 6:41 PM Vladimir Ivanov <<a href="mailto:vladimir.x.ivanov@oracle.com">vladimir.x.ivanov@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Nice work, Ashutosh!<br>
<br>
I gave it a try. It works fine in product build (<1k downcalls into <br>
JVM_FindClass* on PetClinic), but with fastdebug build it hits an assert <br>
during SystemDictionaryShared::create_loader_positive_lookup_cache() [1].<br>
<br>
Best regards,<br>
Vladimir Ivanov<br>
<br>
[1]<br>
diff --git a/src/hotspot/share/cds/dumpTimeClassInfo.inline.hpp <br>
b/src/hotspot/share/cds/dumpTimeClassInfo.inline.hpp<br>
index 6b46fe58916..d118400b25f 100644<br>
--- a/src/hotspot/share/cds/dumpTimeClassInfo.inline.hpp<br>
+++ b/src/hotspot/share/cds/dumpTimeClassInfo.inline.hpp<br>
@@ -43,7 +43,7 @@<br>
template<typename Function><br>
void DumpTimeSharedClassTable::iterate_all_live_classes(Function <br>
function) const {<br>
auto wrapper = [&] (InstanceKlass* k, DumpTimeClassInfo& info) {<br>
- assert(SafepointSynchronize::is_at_safepoint(), "invariant");<br>
+// assert(SafepointSynchronize::is_at_safepoint(), "invariant");<br>
assert_lock_strong(DumpTimeTable_lock);<br>
if (CDSConfig::is_dumping_final_static_archive() && !k->is_loaded()) {<br>
assert(k->is_shared_unregistered_class(), "must be");<br>
<br>
<br>
On 2/14/24 13:19, duke wrote:<br>
> Changeset: b58e0e37<br>
> Author: Ashutosh Mehra <<a href="mailto:asmehra@redhat.com" target="_blank">asmehra@redhat.com</a>><br>
> Date: 2024-01-24 14:09:45 +0000<br>
> URL: <a href="https://git.openjdk.org/leyden/commit/b58e0e3738d803b51bd4ef25b30746048adcab40" rel="noreferrer" target="_blank">https://git.openjdk.org/leyden/commit/b58e0e3738d803b51bd4ef25b30746048adcab40</a><br>
> <br>
> Add negative cache for built-in loaders<br>
> <br>
> Signed-off-by: Ashutosh Mehra <<a href="mailto:asmehra@redhat.com" target="_blank">asmehra@redhat.com</a>><br>
> <br>
> ! src/java.base/share/classes/java/lang/Class.java<br>
> ! src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java<br>
> <br>
> Changeset: 393f79de<br>
> Author: Ashutosh Mehra <<a href="mailto:asmehra@redhat.com" target="_blank">asmehra@redhat.com</a>><br>
> Date: 2024-01-31 13:48:14 +0000<br>
> URL: <a href="https://git.openjdk.org/leyden/commit/393f79de5204a103bd60334e2910b9857639ad26" rel="noreferrer" target="_blank">https://git.openjdk.org/leyden/commit/393f79de5204a103bd60334e2910b9857639ad26</a><br>
> <br>
> Persist loader negative cache in CDS archive<br>
> <br>
> Signed-off-by: Ashutosh Mehra <<a href="mailto:asmehra@redhat.com" target="_blank">asmehra@redhat.com</a>><br>
> <br>
> ! src/hotspot/share/cds/classListParser.cpp<br>
> ! src/hotspot/share/cds/classListParser.hpp<br>
> ! src/hotspot/share/cds/classListWriter.cpp<br>
> ! src/hotspot/share/cds/classListWriter.hpp<br>
> ! src/hotspot/share/runtime/java.cpp<br>
> ! src/java.base/share/classes/java/lang/Class.java<br>
> ! src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java<br>
> <br>
> Changeset: 361fc8b0<br>
> Author: Ashutosh Mehra <<a href="mailto:asmehra@redhat.com" target="_blank">asmehra@redhat.com</a>><br>
> Date: 2024-02-09 12:35:14 +0000<br>
> URL: <a href="https://git.openjdk.org/leyden/commit/361fc8b0af9512ced9dfee6b348de01191b0a7fa" rel="noreferrer" target="_blank">https://git.openjdk.org/leyden/commit/361fc8b0af9512ced9dfee6b348de01191b0a7fa</a><br>
> <br>
> Positive lookup cache for built-in loaders and some cleanup<br>
> <br>
> Signed-off-by: Ashutosh Mehra <<a href="mailto:asmehra@redhat.com" target="_blank">asmehra@redhat.com</a>><br>
> <br>
> ! src/hotspot/share/cds/cds_globals.hpp<br>
> ! src/hotspot/share/cds/classListParser.cpp<br>
> ! src/hotspot/share/cds/classListWriter.cpp<br>
> ! src/hotspot/share/cds/metaspaceShared.cpp<br>
> ! src/hotspot/share/classfile/systemDictionaryShared.cpp<br>
> ! src/hotspot/share/classfile/systemDictionaryShared.hpp<br>
> ! src/java.base/share/classes/java/lang/Class.java<br>
> ! src/java.base/share/classes/jdk/internal/loader/BuiltinClassLoader.java<br>
> <br>
<br>
</blockquote></div>