On Tue, 16 Sep 2025 02:44:26 GMT, Ioi Lam <[email protected]> wrote:
> Simplify the boilerplate code in jvm.cpp that calls
> `JvmtiThreadState::class_to_verify_considering_redefinition()`, and reduce
> the number of `InstanceKlass::cast()` calls.
>
> I also changed a few fields/arguments from `Klass*` to `InstanceKlass*` as
> these are used exclusively with `InstanceKlass*`.
This looks good pending David's and my suggested changes (hope it works).
I sort of think there's no need for the Klass* version of
get_class_considering_redefinition since its callers seem to really want an
InstanceKlass. Since it's jvm.cpp, you can probably verify that it's never
Klass in these callers.
src/hotspot/share/prims/jvm.cpp line 2265:
> 2263: inline Klass* get_klass_considering_redefinition(jclass cls, JavaThread
> *thread) {
> 2264: Klass* k =
> java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
> 2265: k = JvmtiThreadState::class_to_verify_considering_redefinition(k,
> thread);
Suggestion:
return JvmtiThreadState::class_to_verify_considering_redefinition(k, thread);
src/hotspot/share/prims/jvm.cpp line 2266:
> 2264: Klass* k =
> java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
> 2265: k = JvmtiThreadState::class_to_verify_considering_redefinition(k,
> thread);
> 2266: return k;
Suggestion:
src/hotspot/share/prims/jvm.cpp line 2271:
> 2269: inline InstanceKlass*
> get_instance_klass_considering_redefinition(jclass cls, JavaThread *thread) {
> 2270: InstanceKlass* ik =
> java_lang_Class::as_InstanceKlass(JNIHandles::resolve_non_null(cls));
> 2271: ik = JvmtiThreadState::class_to_verify_considering_redefinition(ik,
> thread);
Suggestion:
return JvmtiThreadState::class_to_verify_considering_redefinition(ik, thread);
src/hotspot/share/prims/jvm.cpp line 2272:
> 2270: InstanceKlass* ik =
> java_lang_Class::as_InstanceKlass(JNIHandles::resolve_non_null(cls));
> 2271: ik = JvmtiThreadState::class_to_verify_considering_redefinition(ik,
> thread);
> 2272: return ik;
Suggestion:
src/hotspot/share/prims/jvm.cpp line 2291:
> 2289:
> 2290: JVM_ENTRY(const char*, JVM_GetClassNameUTF(JNIEnv *env, jclass cls))
> 2291: Klass* k = get_klass_considering_redefinition(cls, thread);
Even if it's a redefined class, it'll have the same name so this isn't
necessary.
-------------
PR Review: https://git.openjdk.org/jdk/pull/27303#pullrequestreview-3230659598
PR Review Comment: https://git.openjdk.org/jdk/pull/27303#discussion_r2352957988
PR Review Comment: https://git.openjdk.org/jdk/pull/27303#discussion_r2352958544
PR Review Comment: https://git.openjdk.org/jdk/pull/27303#discussion_r2352959692
PR Review Comment: https://git.openjdk.org/jdk/pull/27303#discussion_r2352960240
PR Review Comment: https://git.openjdk.org/jdk/pull/27303#discussion_r2352970204