[11] RFR (XXS): 8206476: Wrong assert in phase_enum_2_phase_string() in referenceProcessorPhaseTimes.cpp

Erik Helin erik.helin at oracle.com
Mon Jul 9 12:05:19 UTC 2018


On 07/09/2018 12:13 PM, Thomas Schatzl wrote:
> Hi all,
> 
>    can I have reviews to this issue found with our C++ source code
> analysis tool that complains about one assert not being strict enough.
> 
> In particular:
> 
> static const char*
> phase_enum_2_phase_string(ReferenceProcessor::RefProcPhases phase) {
>    assert(phase >= ReferenceProcessor::RefPhase1 && phase <=
> ReferenceProcessor::RefPhaseMax,
>           "Invalid reference processing phase (%d)", phase);
>    return PhaseNames[phase];
> }
> 
> The second "<=" should be a "<".
> 
> Actually there is an existing (correct) macro for the whole assert.
> Replaced that line with the macro as follows:
> 
> @@ -80,8 +80,7 @@
>   STATIC_ASSERT((REF_PHANTOM + 1) == ARRAY_SIZE(ReferenceTypeNames));
>   
>   static const char*
> phase_enum_2_phase_string(ReferenceProcessor::RefProcPhases phase) {
> -  assert(phase >= ReferenceProcessor::RefPhase1 && phase <=
> ReferenceProcessor::RefPhaseMax,
> -         "Invalid reference processing phase (%d)", phase);
> +  ASSERT_PHASE(phase);
>     return PhaseNames[phase];
>   }
> 
> There is no actual failure, and there are no known failures with the
> change either; the reason for putting this into 11 is to get rid of
> unnecessary noise in source code analysis tool results.
> 
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8206476
> Webrev:
> http://cr.openjdk.java.net/~tschatzl/8206476/webrev/index.html

Looks good, Reviewed.

Thanks,
Erik

> Testing:
> hs-tier1-3,jdk-tier1
> 
> Thanks,
>    Thomas
> 



More information about the hotspot-gc-dev mailing list