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
>>>>>
>>>>>
>>>>
>>>>
>>>

Reply via email to