RFR(M): 8206977: Minor improvements of runtime code.

coleen.phillimore at oracle.com coleen.phillimore at oracle.com
Tue Jul 10 13:03:18 UTC 2018


http://cr.openjdk.java.net/~goetz/wr18/8206977-covRuntime/01/src/hotspot/share/classfile/moduleEntry.cpp.udiff.html

+ name ? name->as_C_string() : "<unnamed>");


Can you change to:

+ name != NULL ? name->as_C_string() : "<unnamed>");


http://cr.openjdk.java.net/~goetz/wr18/8206977-covRuntime/01/src/hotspot/share/oops/klassVtable.cpp.udiff.html

This looks a lot nicer!   Similar code is in linkResolver.cpp, can you 
look at changing it too?

http://cr.openjdk.java.net/~goetz/wr18/8206977-covRuntime/01/src/hotspot/share/services/writeableFlags.cpp.udiff.html

If name is null here, what would this do?  Should there be an 'else' to 
print something?

I think this looks fine.  It doesn't look major to me.  The asserts 
turned to guarantees don't appear to be anywhere performance sensitive.

Thanks,
Coleen



On 7/10/18 6:53 AM, Lindenmaier, Goetz wrote:
> Hi,
>
> I ran coverity on the jdk11 hotspot sources and want to propose the
> following fixes to the runtime code. I scanned the linux x86_64 build.
> Some issues are similar to previous parfait fixes (check for NULL, add
> guarantees etc.) I also identified some issues I consider real problems.
> http://cr.openjdk.java.net/~goetz/wr18/8206977-covRuntime/01/
>
> In detail:
>
> Real issues:
> ------------
>
> jvmtiEnvBase.cpp
>    || should be &&.
>    Attention, this is the only change that really will change behaviour.
>    But if thr == NULL we will see a crash below.
>
> perfMemory_linux.cpp:
>    Wrong buffer length used.
>
> systemDictionary.cpp:
>    Move code dereferencing ik under if (ik != NULL).
>
> virtualspace.cpp
>    Initialization is missing. Moved constructor up to the other
>    constructors.
>
>
> Useful code improvements:
> -------------------------
>
> vm_version_ext_x86.cpp
>    Assure buffer is not accessed at offset -1.
>
> os_linux.cpp
>    Numa_max_node returns int, and a -1 in some cases.
>
> moduleEntry.cpp
>    name might be NULL. Just a fix for tracing.
>
> systemDictionaryShared.cpp
>    clearify code.
>    It would be wrong if only entry == NULL would hold, one
>    would hit the assertion below.
>
> verifier.cpp
>    Fix tracing.
>    Illegal opcode is -1 and should not be passed to name array.
>
> logOutput.cpp
>    If n_selections == 0, best_selection would be NULL.
>    Move up the assertion and turn into a guarantee.
>
> filemap.cpp
>    Either base can be NULL, or parts of the code before are dead.
>
> metaspace.cpp
>    We now an exception is pending.
>
> klassVtable.cpp
>    Coverity does not like the format in a variable.
>    Anyways this is quite rough coding, transformed to use stringStream
>    as with other similar exceptions.
>
> jvmFlag.cpp
>    match might be NULL.
>
> writableFlags.cpp
>    name might be NULL.
>
> ostream.cpp
>    If ftell returns error code -1, we need not continue.
>    Especially we should not fseek(-1).
>
> logTestUtils.inline.hpp
>    ftell returns -1.
>
> test_metachunk.cpp
>    wrong datatype.



More information about the hotspot-runtime-dev mailing list