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

Jiangli Zhou jiangli.zhou at oracle.com
Mon Jul 2 12:07:35 PDT 2012


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