8248337: sparc related code clean up after solaris removal

David Holmes david.holmes at oracle.com
Wed Sep 2 04:07:17 UTC 2020


Hi Yumin,

Update looks good. Thanks for filing the other RFEs.

David

On 2/09/2020 8:40 am, Yumin Qi wrote:
> HI, Vladimir and David
> 
>     I have updated new webrev at: 
> http://cr.openjdk.java.net/~minqi/2020/8248337/webrev-02/
> 
>     Filed two issues to address your concern separately:
> 
>     1) 8252681: Retire flag UseRDPCForConstantTableBase after solaris 
> removal
> 
> https://bugs.openjdk.java.net/browse/JDK-8252681
> 
>    2) 8252682: investigate PhaseChaitin::post_allocate_copy_removal 
> after solaris removal
> 
> https://bugs.openjdk.java.net/browse/JDK-8252682
> 
> 
>    So following three files leave no change:
> 
> share/opto/c2_globals.hpp
> 
> share/opto/machnode.hpp
> 
> share/opto/postaloc.cpp
> 
>    Also update some copyright year for several files.
> 
> 
> Thanks
> 
> Yumin
> 
> 
> On 9/1/20 10:35 AM, Vladimir Kozlov wrote:
>> On 8/31/20 6:18 PM, David Holmes wrote:
>>> Hi Yumin,
>>>
>>> On 1/09/2020 7:32 am, Yumin Qi wrote:
>>>> HI,
>>>>
>>>>    Please review for
>>>>
>>>>    bug: https://bugs.openjdk.java.net/browse/JDK-8248337
>>>>
>>>> webrev:http://cr.openjdk.java.net/~minqi/2020/8248337/webrev-01/
>>>>
>>>>
>>>>    Summary: After Solaris supported files removed from repo, there 
>>>> are some remnants which needs cleaning up. Some comments are not 
>>>> correct, and some refer to wrong files.
>>>
>>> Those changes are mostly okay but I have a few minor 
>>> issues/suggestions below.
>>>
>>>> There is a flag seems only useful for Sparc: 
>>>> UseRDPCForConstantTableBase, which got removed in this patch . 
>>>
>>> Despite the description of the flag it is far from clear that the use 
>>> of the flag affects sparc only. It affects the pinned() function so 
>>> seems somewhat platform agnostic in that sense - which is why this 
>>> was not dealt with in the SPARC removal process. I think this needs 
>>> closer examination by the compiler folk, with a recommendation on 
>>> whether it can/should be changed or not. Regardless as this is a 
>>> product flag then I think this change should be factored out and we 
>>> go through the appropriate deprecate/obsolete/expire process.
>>
>> The flag was used to use special SPARC instruction for CPUs supporting 
>> it to load base of Constant table.
>> It is useless for other platforms. MachConstantBaseNode::pinned() 
>> method can be removed because it inherits the method from 
>> Node::pinned() which returns 'false' too.
>>
>> And I agree with David that it should be done separately because it is 
>> product flag.
>>
>>>
>>>> Also in postaloc.cpp, the delay slot seems is only for sparc too, 
>>>> but I am not sure about that. Most of the patch are in comment section.
>>>
>>> It refers to spill slot not delay slot. I don't see anything 
>>> obviously sparc specific about that block of code.
>>
>> Please, leave the code as it is. As David said it is about normal 
>> spill slots for all platforms.
>> I am not sure it is SPARC specific currently with all platforms 
>> OpenJDK supports.
>> If you want you can file RFE to replace code with assert and ask 
>> community to run a lot of testing to see if we hit the assert.
>>
>>>
>>> Specific comments:
>>>
>>> src/hotspot/cpu/aarch64/sharedRuntime_aarch64.cpp
>>>
>>> -// 64 bits items (sparc abi) even though java would only store
>>> +// 64 bits items even though java would only store
>>>
>>> Should "(sparc abi)" be replaced with "(Aarch64 abi)" as you did for 
>>> other platforms?
>>>
>>> ---
>>>
>>> src/hotspot/cpu/arm/frame_arm.hpp (and other files)
>>>
>>>     // The interpreter and adapters will extend the frame of the caller.
>>>     // Since oopMaps are based on the sp of the caller before extension
>>> -  // we need to know that value. However in order to compute the 
>>> address
>>> -  // of the return address we need the real "raw" sp. Since sparc 
>>> already
>>> -  // uses sp() to mean "raw" sp and unextended_sp() to mean the 
>>> caller's
>>> -  // original sp we use that convention.
>>> +  // we need to know that value. However in order to compute the return
>>> +  // address we need the real "raw" sp.
>>>
>>> I think this is losing too much information as it no longer describes 
>>> the convention. I would suggest:
>>>
>>>     // The interpreter and adapters will extend the frame of the caller.
>>>     // Since oopMaps are based on the sp of the caller before extension
>>>     // we need to know that value. However in order to compute the 
>>> address
>>> -  // of the return address we need the real "raw" sp. Since sparc 
>>> already
>>> -  // uses sp() to mean "raw" sp and unextended_sp() to mean the 
>>> caller's
>>> -  // original sp we use that convention.
>>> +  // of the return address we need the real "raw" sp. By convention we
>>> +  // use sp() to mean "raw" sp and unextended_sp() to mean the caller's
>>> +  // original sp.
>>>
>>> ---
>>>
>>> src/hotspot/cpu/ppc/jniTypes_ppc.hpp
>>>
>>> -  // stubGenerator_sparc.cpp) reverse the argument list constructed by
>>> +  // stubGenerator_${CPU}.cpp) reverse the argument list constructed by
>>>
>>> Just replace sparc with ppc as done for other platforms.
>>>
>>> ---
>>>
>>> src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp
>>>
>>> -  // This greatly simplifies the cases here compared to sparc.
>>> +  // This greatly simplifies the cases here.
>>>
>>> Just delete the comment as there is nothing to compare simplicity or 
>>> complexity against.
>>>
>>> ---
>>>
>>> src/hotspot/share/c1/c1_LIRGenerator.cpp
>>>
>>> -  // In 64bit the type can be long, sparc doesn't have this assert
>>> +  // In 64bit the type can be long
>>>     // assert(offset.type()->tag() == intTag, "invalid type");
>>>
>>> compiler folk should decide what to do here but I think the comment 
>>> and commented out assert can just be deleted.
>>
>> Yes, remove commented assert too. Originally it was platform specific 
>> code - the assert was there for 32-bit.
>>
>> Thanks,
>> Vladimir K
>>
>>>
>>> ---
>>>
>>> src/hotspot/share/c1/c1_Runtime1.cpp
>>>
>>> -  case handle_exception_nofpu_id:  // Unused on sparc
>>> +  case handle_exception_nofpu_id:  // unused.
>>>
>>> the new comment is incorrect as this case is not unused. I suggest 
>>> just deleting the comment.
>>>
>>> Thanks,
>>> David
>>> -----
>>>
>>>>
>>>>
>>>>    Tests passed tier1-4
>>>>
>>>>
>>>>    Thanks
>>>>
>>>>    Yumin
>>>>


More information about the hotspot-runtime-dev mailing list