Re: [8u40] RFR 6642881: Improve performance of Class.getClassLoader()

2016-07-29 Thread Leela Mohan
I think, change in the file unsafe.cpp is incorrect. (
http://cr.openjdk.java.net/~coleenp/6642881_8u40_hotspot/ )

Below function is accessing naked oops when thread has transitioned to
"native":

*+ static jobject get_class_loader(JNIEnv* env, jclass cls) {**+   if
(java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls)))
{**+ return NULL;**+   }**+   Klass* k =
java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));**+   oop
loader = k->class_loader();**+   return JNIHandles::make_local(env,
loader);**+ }*


- Leela

On Mon, Sep 8, 2014 at 7:05 PM, Coleen Phillimore <
coleen.phillim...@oracle.com> wrote:

>
> Thanks, Mandy!
>
> Coleen
>
>
> On 9/8/14, 6:59 PM, Mandy Chung wrote:
>
>> Thumbs up.
>>
>> Mandy
>>
>> On 9/5/2014 12:55 PM, Coleen Phillimore wrote:
>>
>>> Summary: Add classLoader to java/lang/Class instance for fast access
>>>
>>> This is a backport request for 8u40.   This change has been in the jdk9
>>> code for 3 months without any problems.
>>>
>>> The JDK changes hg imported cleanly.  The Hotspot change needed a hand
>>> merge for create_mirror call in klass.cpp.
>>>
>>> http://cr.openjdk.java.net/~coleenp/6642881_8u40_jdk/
>>> http://cr.openjdk.java.net/~coleenp/6642881_8u40_hotspot/
>>>
>>> bug link https://bugs.openjdk.java.net/browse/JDK-6642881
>>>
>>> Ran jdk_core jtreg tests in jdk with both jdk/hotspot changes. Also ran
>>> jck java_lang tests with only the hotspot change.  The hotspot change can
>>> be tested separately from the jdk change (but not the other way around).
>>>
>>> Thanks,
>>> Coleen
>>>
>>
>>
>


Re: [8u40] RFR 6642881: Improve performance of Class.getClassLoader()

2016-07-29 Thread Leela Mohan
Hi David,

I understand, Klass types are no longer oops  but
JNIHandles::resolve_non_null()
would expose naked oops. In other words, KlassOops are no longer oops but
java.lang.Class objects are.

Thanks,
Leela

On Thu, Jul 28, 2016 at 10:51 PM, David Holmes <david.hol...@oracle.com>
wrote:

> Hi Leela,
>
> On 29/07/2016 12:59 PM, Leela Mohan wrote:
>
>> I think, change in the file unsafe.cpp is incorrect. (
>> http://cr.openjdk.java.net/~coleenp/6642881_8u40_hotspot/ )
>>
>> Below function is accessing naked oops when thread has transitioned to
>> "native":
>>
>> *+ static jobject get_class_loader(JNIEnv* env, jclass cls) {**+   if
>> (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls)))
>> {**+ return NULL;**+   }**+   Klass* k =
>> java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));**+   oop
>> loader = k->class_loader();**+   return JNIHandles::make_local(env,
>> loader);**+ }*
>>
>
> klass types are no longer oops in the Java heap, but metaspace objects
> that reside in a per-classloader allocation region. They never get
> compacted or relocated so raw pointers to them are safe.
>
> Cheers,
> David
>
>
>
>> - Leela
>>
>> On Mon, Sep 8, 2014 at 7:05 PM, Coleen Phillimore <
>> coleen.phillim...@oracle.com> wrote:
>>
>>
>>> Thanks, Mandy!
>>>
>>> Coleen
>>>
>>>
>>> On 9/8/14, 6:59 PM, Mandy Chung wrote:
>>>
>>> Thumbs up.
>>>>
>>>> Mandy
>>>>
>>>> On 9/5/2014 12:55 PM, Coleen Phillimore wrote:
>>>>
>>>> Summary: Add classLoader to java/lang/Class instance for fast access
>>>>>
>>>>> This is a backport request for 8u40.   This change has been in the jdk9
>>>>> code for 3 months without any problems.
>>>>>
>>>>> The JDK changes hg imported cleanly.  The Hotspot change needed a hand
>>>>> merge for create_mirror call in klass.cpp.
>>>>>
>>>>> http://cr.openjdk.java.net/~coleenp/6642881_8u40_jdk/
>>>>> http://cr.openjdk.java.net/~coleenp/6642881_8u40_hotspot/
>>>>>
>>>>> bug link https://bugs.openjdk.java.net/browse/JDK-6642881
>>>>>
>>>>> Ran jdk_core jtreg tests in jdk with both jdk/hotspot changes. Also ran
>>>>> jck java_lang tests with only the hotspot change.  The hotspot change
>>>>> can
>>>>> be tested separately from the jdk change (but not the other way
>>>>> around).
>>>>>
>>>>> Thanks,
>>>>> Coleen
>>>>>
>>>>>
>>>>
>>>>
>>>