Review request (S) 8003553: NPG: metaspace objects should be zeroed in constructors

Coleen Phillimore coleen.phillimore at oracle.com
Thu Mar 7 11:34:57 PST 2013


Thank you for reviewing the code, Serguei.

On 3/7/2013 2:18 PM, serguei.spitsyn at oracle.com wrote:
> Coleen,
>
> It is good, but a couple of questions below.
>
> Q1: The field " _verify_count" is moved from the Klass to the 
> InstanceKlass.
>        But it is removed from the vmStructs.cpp.
>        Is it because the field is NOT_PRODUCT or it is just useless 
> for the SA?

It was never used by the SA and doesn't really have a use in an error 
condition.  It's used to control redundant verifies.
>
> Q2: The following initializations are removed from the 
> method.cpp:Method::Method() :
>    86   set_name_index(0);
>    87   set_signature_index(0);
>    . . .
>    91   set_constants(NULL);
>    92   set_max_stack(0);
>    93   set_max_locals(0);
>
>     It looks like a move in reverse direction.
>     Are those dups?

These fields were moved to ConstMethod so are initialized in it's 
constructor.

Thanks!
Coleen
>
> Thanks,
> Serguei
>
>
> On 3/7/13 4:59 AM, Coleen Phillimore wrote:
>>
>> I need another reviewer for this (and two for the other change). This 
>> one is really easy.   You don't need to be a Reviewer.
>> Coleen
>>
>> On 3/6/2013 4:25 PM, Coleen Phillimore wrote:
>>>
>>> Jon,
>>> Thank you for reviewing this change.
>>>
>>> On 03/06/2013 12:26 AM, Jon Masamitsu wrote:
>>>> http://cr.openjdk.java.net/~coleenp/8003553/src/share/vm/oops/cpCache.cpp.udiff.html 
>>>>
>>>>
>>>> *-  ConstantPoolCache* ConstantPoolCache::allocate(ClassLoaderData* 
>>>> loader_data, int length, TRAPS) {*
>>>> *+                                      int length,*
>>>> *+                                      const intStack& index_map,*
>>>> *+                                      const intStack& 
>>>> invokedynamic_map, TRAPS) {
>>>> *
>>>>
>>>> Why did you not move the TRAP  parameter to a new line?
>>>>
>>>
>>> I think TRAPS aren't interesting enough and short enough not to 
>>> merit their own line.
>>>
>>>> http://cr.openjdk.java.net/~coleenp/8003553/src/share/vm/oops/methodData.cpp.udiff.html 
>>>>
>>>>
>>>> Did you remove the TieredCompilation test
>>>>
>>>> *if (TieredCompilation) {
>>>> *
>>>>
>>>> for consistency of initialization?
>>>
>>> Yes, I did.  I don't know if people will object but I think it's 
>>> more sanitary to have these zero initialized even if they are not 
>>> used in !TieredCompilation.   And I had a consistency check that I 
>>> took out that flagged these.
>>>
>>>>
>>>>
>>>> http://cr.openjdk.java.net/~coleenp/8003553/src/share/vm/oops/klass.hpp.udiff.html 
>>>>
>>>>
>>>> *   #ifndef PRODUCT*
>>>> *     int           _verify_count;  // to avoid redundant verifies*
>>>> *   #endif*
>>>>
>>>> Not concerned about redundant verifies anymore?
>>>>
>>>
>>> I moved it from Klass* to InstanceKlass* where it's used.   It still 
>>> protects us from redundant verifies.
>>>
>>>> Rest looks good.
>>>>
>>>
>>> Thanks!
>>> Coleen
>>>
>>>> Jon
>>>>
>>>>
>>>> On 3/5/2013 11:30 AM, Coleen Phillimore wrote:
>>>>>
>>>>> Adding hotspot-dev to get some more potential reviewers from maybe 
>>>>> the GC team, hint...
>>>>>
>>>>> Coleen
>>>>>
>>>>> On 03/04/2013 03:02 PM, Coleen Phillimore wrote:
>>>>>> Summary: Zero metadata in constructors, not in allocation (and 
>>>>>> some in constructors)
>>>>>>
>>>>>> This seems like a good first step in passing initial values into 
>>>>>> constructors and no initializing metadata types by the callers 
>>>>>> (although a lot more parameters will have to be passed for some).
>>>>>>
>>>>>> Tested with runThese jck, NSK vm.quick.testlist, lang and vm 
>>>>>> jck8, java/lang/annotation jtreg tests and java/lang/invoke jtreg 
>>>>>> tests.
>>>>>>
>>>>>> open webrev at http://cr.openjdk.java.net/~coleenp/8003553/
>>>>>> bug link at http://bugs.sun.com/view_bug.do?bug_id=8003553
>>>>>>
>>>>>> Thanks,
>>>>>> Coleen
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>



More information about the hotspot-dev mailing list