RFR(M) : 7104565 : trim jprt build targets
David Chase
david.r.chase at oracle.com
Tue Apr 9 13:30:47 PDT 2013
http://cr.openjdk.java.net/~drchase/7104565/webrev.05/
All issues below addressed.
Diffs brought up-to-date with more recent version of hotspot.
(re-)tested on JPRT, manually verified that MacOS debug build was in fact debuggable and that effects of -D ASSERT were seen (set breakpoints in methods that would have been inlined otherwise).
On 2013-04-06, at 1:22 PM, Vladimir Kozlov <vladimir.kozlov at oracle.com> wrote:
> make/Makefile:
>
> Instead of VM_SUBDIR=debug use what in other targets: VM_SUBDIR=$(@:export_%=%) (and $(@:export_%_jdk=%)) since name now matches.
>
> make/bsd/makefiles/fastdebug.make: why did not changed?
>
> make/solaris/makefiles/fastdebug.make: why you did next change? We should not low optimization level:
>
> < OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS)
> ---
> > OPT_CFLAGS/DEFAULT= $(OPT_CFLAGS/SLOWER)
>
> All old debug.make should be removed and jvmg.make renamed to debug.make without changing its content. In other word, don't remove -D_NMT_NOINLINE_, it is needed.
>
> On related NMT note: in src/share/vm/memory/allocation.hpp replace _DEBUG_ with _NMT_NOINLINE_.
>
> In windows .dsp files remove /D "DEBUG"
>
> ./src/share/tools/hsdis/Makefile: remove that commented line.
>
> Thanks,
> Vladimir
>
> On 4/6/13 7:56 AM, David Chase wrote:
>> Wider list, more testing
>>
>> Recap (for hs-dev minus hs-compiler-dev):
>>
>>>> webrev: http://cr.openjdk.java.net/~drchase/7104565/webrev.02/
>>>>
>>>> Problem:
>>>> Debug builds are inconsistently named, and are not needed for usual JPRT testing, and consume lots of space and time.
>>>> #ifdef conventions are a little dubious (I'm just paraphrasing from the bug here).
>>>>
>>>> Fix:
>>>> Pick up Tom Rodriguez's work towards a fix (95+% complete),
>>>> translate forward in time to current build, check for omissions and changes.
>>>>
>>>> Fix includes:
>>>> replace #ifdef DEBUG and #ifdef FASTDEBUG with #ifdef ASSERT
>>>> consistently name the debug build "debug" instead of "jvmg"
>>>> remove "debug" targets from JPRT properties files.
>>>>
>>>> Testing:
>>>> Jtreg locally
>>>> JPRT of usual compiler tests
>>>> Cross-checked old diffs with new diffs
>>>> JPRT of compiler regression tests
>>>> Manually check that appropriate -DASSERT flag is passed to compilations.
>>>>
>>>> Noticeable changes:
>>>> "make debug", not "make jvmg"
>>>> JPRT of compiler regression tests is much faster and times out much less often.
>>
>>
>> New webrev:
>>
>> http://cr.openjdk.java.net/~drchase/7104565/webrev.04 (new style, corrected script)
>> http://cr.openjdk.java.net/~drchase/7104565/webrev.04.old (classic)
>>
>>
>> Additional testing:
>> open-closed new slowdebug build on Solaris10-Sparc, jtreg
>> open+closed new fastedbug and slowdebug build on MacOS-10.8, jtreg
>>
>> JPRT from open+closed+changes build is bug-for-bug compatible with JPRT from open+closed build.
>> (i.e., same 10 failures in DefaultMethodsTest.java, I assume this is a property of whatever version of jdk8tl and/or hotspot I grabbed)
>>
>> Scanned (find+grep) for occurrences of "^#.*DEBUG" in closed, found none.
>>
>> Additional changes:
>> Added rule-with-warning to hotspot/Makefile for jvmg (necessary for new build)
>> Removed overlooked redundant files.
>> Corrected copyrights in changed files.
>> Removed trailing spaces from changed files.
>>
>>
>> Results of other scans:
>> find . -name * -exec egrep ^#.*[^_A-Z]DEBUG([^_A-Z]|$) /dev/null {} ;
>> ---------
>> ./make/windows/projectfiles/compiler2/ADLCompiler.dsp:# ADD CPP /nologo /ML /W3 /WX /Gm /GX /Zi /Od /I "." /I "$(HotSpotWorkSpace)\src\share\vm\opto" /I "..." /D "WIN32" /D "DEBUG" /D "_WINDOWS" /D "ASSERT" /Fr /FD /c
>>
>> ./make/windows/projectfiles/tiered/ADLCompiler.dsp:# ADD CPP /nologo /ML /W3 /WX /Gm /GX /Zi /Od /I "." /I "$(HotSpotWorkSpace)\src\share\vm\opto" /I "..." /D "WIN32" /D "DEBUG" /D "_WINDOWS" /D "ASSERT" /Fr /FD /c
>>
>> ./src/os/bsd/dtrace/jhelper.d:#define DEBUG
>> ./src/os/bsd/dtrace/jhelper.d:#ifdef DEBUG
>> ./src/os/solaris/dtrace/jhelper.d:#define DEBUG
>> ./src/os/solaris/dtrace/jhelper.d:#ifdef DEBUG
>>
>> ./src/share/tools/hsdis/Makefile:#CPPFLAGS += /D"WIN32" /D"_WINDOWS" /D"DEBUG" /D"NDEBUG"
>> ---------
>> find . -name * -exec egrep "DEBUG" /dev/null {} ;
>> (that's a search for \"DEBUG\", results are a subset of above)
>>
>> The jhelper.d files seem to #define their own DEBUG; lacking other information, I'm leaving them alone.
>> I am not sure what to make of the windows.dsp files; I suspect those are not comments
>>
>> Motivated by above, search for /DEBUG
>> find . -name * -exec egrep /DEBUG([^_A-Z]|$) /dev/null {} ;
>> ---------
>> ./src/share/tools/ProjectCreator/WinGammaPlatformVC10.java: // We always want the /DEBUG option to get full symbol information in the pdb files
>> ./src/share/tools/ProjectCreator/WinGammaPlatformVC10.java: // Empty now that /DEBUG option is used by all configs
>> ./src/share/tools/ProjectCreator/WinGammaPlatformVC7.java: addAttr(rv, "GenerateDebugInformation", "TRUE"); // == /DEBUG option
>> ./src/share/vm/opto/ifnode.cpp: // bail (or bomb[ASSERT/DEBUG]) if NOT projection-->IfNode-->BoolNode
>> ---------
>>
>> find . -name * -exec egrep DEBUG( |$) /dev/null {} ;
>> (nothing significant beyond what is already seen above)
>>
>>
>> QUESTIONS:
>> 1) What about those Windows files?
>>
>> 2) I noticed that there were already both "debug.make" and "jvmg.make" with tiny differences.
>> The starting point for this work included changes to jvmg.make; it seems like those
>> should have been made to debug.make instead and jvmg.make deleted.
>> I experimentally removed all versions of jvmg.make and successfully configured
>> slow-debug and made images on MacOS.
>>
>> for i in {bsd,linux,solaris} ; do diff -U 1 make/$i/makefiles/{jvmg,debug}.make; done
>> --- make/bsd/makefiles/jvmg.make 2013-04-05 17:18:25.000000000 -0400
>> +++ make/bsd/makefiles/debug.make 2013-04-05 17:18:25.000000000 -0400
>> @@ -29,5 +29,3 @@
>> DEBUG_CFLAGS/BYFILE = $(DEBUG_CFLAGS/$@)$(DEBUG_CFLAGS/DEFAULT$(DEBUG_CFLAGS/$@))
>> -
>> -# _NMT_NOINLINE_ informs NMT that no inlining by Compiler
>> -CFLAGS += $(DEBUG_CFLAGS/BYFILE) -D_NMT_NOINLINE_
>> +CFLAGS += $(DEBUG_CFLAGS/BYFILE)
>>
>> --- make/linux/makefiles/jvmg.make 2013-04-05 17:18:25.000000000 -0400
>> +++ make/linux/makefiles/debug.make 2013-04-05 17:18:25.000000000 -0400
>> @@ -29,5 +29,3 @@
>> DEBUG_CFLAGS/BYFILE = $(DEBUG_CFLAGS/$@)$(DEBUG_CFLAGS/DEFAULT$(DEBUG_CFLAGS/$@))
>> -
>> -# _NMT_NOINLINE_ informs NMT that no inlining by Compiler
>> -CFLAGS += $(DEBUG_CFLAGS/BYFILE) -D_NMT_NOINLINE_
>> +CFLAGS += $(DEBUG_CFLAGS/BYFILE)
>>
>> --- make/solaris/makefiles/jvmg.make 2013-04-05 17:18:25.000000000 -0400
>> +++ make/solaris/makefiles/debug.make 2013-04-05 17:18:25.000000000 -0400
>> @@ -1,3 +1,3 @@
>> #
>> -# Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
>> +# Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
>> # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
>> @@ -39,4 +39,3 @@
>>
>> -# _NMT_NOINLINE_ informs NMT that no inlining by Compiler
>> -CFLAGS += $(DEBUG_CFLAGS/BYFILE) -D_NMT_NOINLINE_
>> +CFLAGS += $(DEBUG_CFLAGS/BYFILE)
>>
>>
>>
>>
More information about the hotspot-dev
mailing list