Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8367142

Avoid InstanceKlass::cast when converting java mirror to InstanceKlass

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Unresolved
    • Icon: P4 P4
    • 26
    • None
    • hotspot

      We have lots of duplicated boilerplate code when getting an InstanceKlass* or Klass* from JNI parameters.

      https://github.com/openjdk/jdk/blob/0aee7bf24d7f2578d3867bcfa25646cb0bd06d9a/src/hotspot/share/prims/jvm.cpp#L1621-L1625

      JVM_ENTRY(jobjectArray, JVM_GetRecordComponents(JNIEnv* env, jclass ofClass))
      {
        Klass* c = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass));
        assert(c->is_instance_klass(), "must be");
        InstanceKlass* ik = InstanceKlass::cast(c);

      The above three lines can be replaced with a single line:

        InstanceKlass* ik = java_lang_Class::as_InstanceKlass(JNIHandles::resolve_non_null(ofClass));


            iklam Ioi Lam
            iklam Ioi Lam
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: