RFR (S): 8011425: NPE in TestObjectCountAfterGCEvent.java on Linux32

Stefan Karlsson stefan.karlsson at oracle.com
Tue May 7 12:53:31 UTC 2013


On 05/07/2013 02:12 PM, Coleen Phillimore wrote:
> On 5/7/2013 6:03 AM, Erik Helin wrote:
>> All,
>>
>> based on feedback from Bengt, the boolean condition for a class being 
>> externally visible have been slightly reordered.
>>
>> The logical operators in webrev.01 reads more naturally:
>>
>>   k->klass_part()->oop_is_instance() ||
>>   (k->klass_part()->oop_is_array() && k != systemObjArrayKlassObj())
>
> I believe classes either instances or arrays.   What else do you 
> find?   Klass is just a base class for these two.

No, in JDK7, where we still have the PermGen, k can also describe 
klassOops. E.g. instanceKlassKlass responds to oop_is_instanceKlass().

>   Both of these oop_is_blah() make virtual calls so you want to avoid 
> them.

This is just two virtual calls per Klass, while both the marking code 
and the heap inspection code uses virtual calls on every single object 
in the heap.

StefanK

>
> Coleen
>
>>
>> compared to webrev.00:
>>
>> (k->klass_part()->oop_is_instance() || 
>> k->klass_part()->oop_is_array()) &&
>> k != Universe::systemObjArrayKlassObj()
>>
>> since the condition k != Universe::systemObjArrayKlassObj() only 
>> needs to be checked if k->klass_part()->oop_is_array() is true.
>>
>> New webrev:
>> http://cr.openjdk.java.net/~ehelin/8011425/webrev.01/
>>
>> Thanks,
>> Erik
>>
>> On 05/03/2013 03:51 PM, Erik Helin wrote:
>>> Hi all,
>>>
>>> this change makes sure that the vm/gc/detailed/object_after_gc_event
>>> only is sent for classes that should be visible externally.
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~ehelin/8011425/webrev.00/
>>>
>>> Thanks,
>>> Erik
>>
>




More information about the hotspot-gc-dev mailing list