RFR(XL): 8182299: Enable disabled clang warnings, build on OSX 10 + Xcode 8

jesper.wilhelmsson at oracle.com jesper.wilhelmsson at oracle.com
Wed Jun 28 17:36:11 UTC 2017


Hi Paul,

Thanks for doing this change! In general everything looks really good, there are a lot of really nice cleanups here. I just have two minor questions/nits:

* In hotspot/cpu/x86/vm/nativeInst_x86.hpp it seems the expression already have parenthesis around the & operations and the change here is "only" cleaning up the layout of the code which is not a bad thing in it self, but you move the logical operators to the beginning of each line which is a quite different style than the rest of the code in the same function where the operators are at the end of the line.

* In hotspot/share/vm/opto/graphKit.cpp you moved the #ifdef ASSERT so that Action_none and Action_make_not_compilable are available also when ASSERT is not defined. I don't see this mentioned in your description of the change. Was this change intentional?

Thanks,
/Jesper


> On 27 Jun 2017, at 21:34, Hohensee, Paul <hohensee at amazon.com> wrote:
> 
> An attempt at better formatting.
> 
> https://bugs.openjdk.java.net/browse/JDK-8182299
> http://cr.openjdk.java.net/~jwilhelm/8182299/webrev_jdk.00/
> http://cr.openjdk.java.net/~jwilhelm/8182299/webrev_hotspot.00/
> 
> Jesper has been kind enough to host the webrevs while I get my cr.openjdk.net account set up, and to be the sponsor.
> 
> This rfe a combination of enabling disabled clang warnings and getting jdk10 to build on OSX 10 and Xcode 8. At least one enabled warning (delete-non-virtual-dtor) detected what seems to me a real potential bug, with the rest enforcing good code hygiene.
> 
> These changes are only in OpenJDK, so I’m looking for a volunteer to make the closed changes.
> 
> Thanks,
> 
> Paul
> 
> 
> Here are the jdk file-specific details:
> 
> java_md_macosx.c splashscreen_sys.m
> 
>        Removed objc_registerThreadWithCollector() since it's obsolete and of questionable value in any case.
> 
> NSApplicationAWT.m
> 
>       Use the correct NSEventMask rather than NSUInteger.
> 
> jdhuff.c jdphuff.c
> 
>       Shifting a negative signed value is undefined.
> 
> Here are the hotspot notes:
> 
> Here are the lists of files affected by enabling a given warning:
> 
> switch: all of these are lack of a default clause
> 
>        c1_LIRAssembler_x86.cpp c1_LIRGenerator_x86.cpp c1_LinearScan_x86.hpp
>        jniFastGetField_x86_64.cpp assembler.cpp c1_Canonicalizer.cpp
>        c1_GraphBuilder.cpp c1_Instruction.cpp c1_LIR.cpp c1_LIRGenerator.cpp
>        c1_LinearScan.cpp c1_ValueStack.hpp c1_ValueType.cpp
>        bcEscapeAnalyzer.cpp ciArray.cpp ciEnv.cpp ciInstance.cpp ciMethod.cpp
>        ciMethodBlocks.cpp ciMethodData.cpp ciTypeFlow.cpp
>        compiledMethod.cpp dependencies.cpp nmethod.cpp compileTask.hpp
>        heapRegionType.cpp abstractInterpreter.cpp bytecodes.cpp
>        invocationCounter.cpp linkResolver.cpp rewriter.cpp jvmciCompilerToVM.cpp
>        jvmciEnv.cpp universe.cpp cpCache.cpp generateOopMap.cpp
>        method.cpp methodData.cpp compile.cpp connode.cpp gcm.cpp graphKit.cpp
>        ifnode.cpp library_call.cpp memnode.cpp parse1.cpp
>        parse2.cpp phaseX.cpp superword.cpp type.cpp vectornode.cpp
>        jvmtiClassFileReconstituter.cpp jvmtiEnter.xsl jvmtiEventController.cpp
>        jvmtiImpl.cpp jvmtiRedefineClasses.cpp methodComparator.cpp methodHandles.cpp
>        advancedThresholdPolicy.cpp reflection.cpp relocator.cpp sharedRuntime.cpp
>        simpleThresholdPolicy.cpp writeableFlags.cpp globalDefinitions.hpp
> 
> delete-non-virtual-dtor: these may be real latent bugs due to possible failure to execute destructor(s)
> 
>        decoder_aix.hpp decoder_machO.hpp classLoader.hpp g1RootClosures.hpp
>        jvmtiImpl.hpp perfData.hpp decoder.hpp decoder_elf.hpp
> 
> dynamic-class-memaccess: obscure use of memcpy
> 
>        method.cpp
> 
> empty-body: ‘;’ isn’t good enough for clang, it prefers {}
> 
>        objectMonitor.cpp mallocSiteTable.cpp
> 
> format: matches printf format strings against arguments. debug output will be affected by
>               incorrect code changes to these.
> 
>        macroAssembler_x86.cpp os_bsd.cpp os_bsd_x86.cpp ciMethodData.cpp javaClasses.cpp
>        debugInfo.cpp logFileOutput.cpp constantPool.cpp jvmtiEnter.xsl jvmtiRedefineClasses.cpp
>        safepoint.cpp thread.cpp
> 
> logical-op-parentheses: can be tricky to get correct. There are a few very long-winded predicates.
> 
>        nativeInst_x86.hpp archDesc.cpp output_c.cpp output_h.cpp c1_GraphBuilder.cpp
>        c1_LIRGenerator.cpp c1_LinearScan.cpp bcEscapeAnalyzer.cpp ciMethod.cpp
>        stackMapTableFormat.hpp compressedStream.cpp dependencies.cpp heapRegion.cpp
>        ptrQueue.cpp psPromotionManager.cpp jvmciCompilerToVM.cpp cfgnode.cpp
>        chaitin.cpp compile.cpp compile.hpp escape.cpp graphKit.cpp lcm.cpp
>        loopTransform.cpp loopnode.cpp loopopts.cpp macro.cpp memnode.cpp
>        output.cpp parse1.cpp parseHelper.cpp reg_split.cpp superword.cpp
>        superword.hpp jniCheck.cpp jvmtiEventController.cpp arguments.cpp
>        javaCalls.cpp sharedRuntime.cpp
> 
> parentheses
> 
>        adlparse.cpp
> 
> parentheses-equality
> 
>        output_c.cpp javaAssertions.cpp gcm.cpp
> 
> File-specific details:
> 
>        GensrcAdlc.gmk CompileJvm.gmk
>                Left tautological-compare in place to allow null 'this' pointer checks in methods
>                intended to be called from a debugger.
> 
>        CompileGTest.gmk
>                Just an enhanced comment.
> 
>        MacosxDebuggerLocal.m
>               PT_ATTACH has been replaced by PT_ATTACHEXC
> 
>        ciMethodData.cp
>               " 0x%" FORMAT64_MODIFIER "x"  reduces to  "0x%llx", whereas
>               " " INTPTRNZ_FORMAT  reduces to  "0x%lx", which latter is what clang want.
> 
>        generateOopMap.cpp
>               Refactored duplicate code in print_current_state().
> 
>        binaryTreeDictionary.cpp/hpp, hashtable.cpp/hpp
>                These provoked “instantiation of variable <static class variable> required here,
>                but no definition is available”.
> 
>        globalDefinitions_gcc.hpp
>                Define FORMAT64_MODIFIER properly for Apple, needed by os.cpp.
> 
>        globalDefinitions.hpp
>               Add INTPTRNZ_FORMAT, needed by ciMethodData.cpp.



More information about the hotspot-dev mailing list