Compilation warning after: 7172967: Eliminate the constMethod's _method backpointer to the methodOop

Jiangli Zhou jiangli.zhou at oracle.com
Mon Jul 2 13:43:42 PDT 2012


Thanks for the review, Coleen!

Jiangli

On 07/02/2012 01:01 PM, Coleen Phillimore wrote:
>
> This looks good.
> Thanks,
> Coleen
>
> On 7/2/2012 3:07 PM, Jiangli Zhou wrote:
>> Hi Vladimir,
>>
>> I filed bug 7180914 for this. Please review the following change that 
>> resolve the warning. To access from 'constMethod' base, it should use 
>> 'J' (jvm_agent*) with read_pointer(). The 'J-P' arguemnt is meant to 
>> use with ps_pread() with an extra argument for 'size'. Using 
>> read_pointer(J, ...) is more appropriate in this case since it 
>> handles 32bit vs. 64bit automatically.
>>
>>   http://cr.openjdk.java.net/~jiangli/7180914/webrev.00/
>>
>> I built for solaris_sparc, the warning is gone with the change.
>>
>> Thanks!
>>
>> Jiangli
>>
>> On 06/29/2012 04:04 PM, Jiangli Zhou wrote:
>>> Hi Vladimir,
>>>
>>> Will file a bug. Thanks for the info!
>>>
>>> Jiangli
>>>
>>> On 06/29/2012 03:50 PM, Vladimir Kozlov wrote:
>>>> Jiangli,
>>>>
>>>> Yes, please, file a bug and fix it. We should not have warnings 
>>>> during VM build.
>>>>
>>>> Build Solaris VM as you do on Linux, it is not my special case. All 
>>>> Solaris JPRT builds has this warning now:
>>>>
>>>> % grep "line 519: warning" 
>>>> /net/prt-archiver.us.oracle.com/data/jprt/archive/2012/06/2012-06-29-182010.jcoomes.gc-push/logs/*-debug.log
>>>>
>>>> Vladimir
>>>>
>>>> Jiangli Zhou wrote:
>>>>> Hi Vladimir,
>>>>>
>>>>> Thanks for letting me know. Could you please give me the build 
>>>>> command or script for the solaris build? Should I file a bug for 
>>>>> the build warning?
>>>>>
>>>>> Thanks!
>>>>>
>>>>> Jiangli
>>>>>
>>>>> On 06/29/2012 02:45 PM, Vladimir Kozlov wrote:
>>>>>> I got compilation warning compiling dtrace/libjvm_db.c. I think 
>>>>>> it is because wrong method is used to process J->P.
>>>>>>
>>>>>> Here are 717296 changes:
>>>>>> -  err = read_pointer(J, methodOopPtr + 
>>>>>> OFFSET_methodOopDesc_constMethod, &const
>>>>>> Method);
>>>>>> +  err = read_pointer(J->P, constMethod + 
>>>>>> OFFSET_constMethodOopDesc_constants, &
>>>>>> constantPool);
>>>>>>
>>>>>> Here are warning:
>>>>>>
>>>>>> "/net/irkutsk.us.oracle.com/export/home/kvn/work2/hg/7119644/src/os/solaris/dtrace/libjvm_db.c", 
>>>>>> line 519: warning: argument #1 is incompatible with prototype:
>>>>>>         prototype: pointer to struct jvm_agent {pointer to struct 
>>>>>> ps_prochandle {..} P, unsigned long nmethod_vtbl, unsigned long 
>>>>>> CodeBlob_vtbl, unsigned long BufferBlob_vtbl, unsigned long 
>>>>>> RuntimeStub_vtbl, unsigned long Use_Compressed_Oops_address, 
>>>>>> unsigned long Universe_methodKlassObj_address, unsigned long 
>>>>>> Universe_narrow_oop_base_address, unsigned long 
>>>>>> Universe_narrow_oop_shift_address, unsigned long 
>>>>>> CodeCache_heap_address, unsigned char Use_Compressed_Oops, 
>>>>>> unsigned long Universe_methodKlassObj, unsigned long 
>>>>>> Universe_narrow_oop_base, unsigned int Universe_narrow_oop_shift, 
>>>>>> unsigned long CodeCache_low, unsigned long CodeCache_high, 
>>>>>> unsigned long CodeCache_segmap_low, unsigned long 
>>>>>> CodeCache_segmap_high, int SIZE_CodeCache_log2_segment, unsigned 
>>>>>> long methodOopPtr, unsigned long bcx, pointer to struct Nmethod_t 
>>>>>> {..} N, struct frame {..} prev_fr, struct frame {..} curr_fr} : 
>>>>>> "/net/irkutsk.us.oracle.com/export/home/kvn/work2/hg/7119644/src/os/solaris/dtrace/libjvm_db.c", 
>>>>>> line 201
>>>>>>         argument : pointer to struct ps_prochandle {}
>>>>>>
>>>>>> Vladimir
>>>>>>
>>>>>> Jiangli Zhou wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> Please review the following webrev that eliminates the _method 
>>>>>>> backpointer from constMethod. The constantPoolOop pointer is 
>>>>>>> moved from methodOop to constMethod, so there is still enough 
>>>>>>> information to map from constMethod back to methodOop.
>>>>>>>
>>>>>>>   http://cr.openjdk.java.net/~jiangli/7172967/webrev.00/
>>>>>>>
>>>>>>> Tested with jprt, runtheses and vm.quick.testlist. No 
>>>>>>> performance degradation in specjbb2005 and specjvm98. Your 
>>>>>>> review and comments very appreciated.
>>>>>>>
>>>>>>> ============================================================================== 
>>>>>>>
>>>>>>> logs.method_baseline.1:
>>>>>>>   Benchmark           Samples        Mean     Stdev             
>>>>>>> Geomean Weight
>>>>>>>   specjbb2005               8    56127.57    488.69
>>>>>>>   specjvm98                 8      537.57     14.89
>>>>>>> ============================================================================== 
>>>>>>>
>>>>>>> logs.method.1:
>>>>>>>   Benchmark           Samples        Mean     Stdev   %Diff     
>>>>>>> P  Significant
>>>>>>>   specjbb2005               8    56733.04    549.11    1.08 
>>>>>>> 0.036            *
>>>>>>>   specjvm98                 8      538.45     19.90    0.16 
>>>>>>> 0.922            *
>>>>>>> ============================================================================== 
>>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Jiangli
>>>>>
>>>
>>



More information about the hotspot-runtime-dev mailing list