Looks good.
/Erik
On 2015-06-09 15:52, Magnus Ihse Bursie wrote:
Here's an updated webrev, which fixes the typos that were pointed out
by reviewers:
http://cr.openjdk.java.net/~ihse/JDK-8085822-JEP-223-initial-patch/webrev.02/
And here's a (much simpler) delta webrev which shows just these changes:
http://cr.openjdk.java.net/~ihse/JDK-8085822-JEP-223-initial-patch-delta-01/webrev.01/
/Magnus
On 2015-06-09 15:20, Daniel D. Daugherty wrote:
On 6/9/15 7:12 AM, Magnus Ihse Bursie wrote:
Hi Daniel,
Thank you for your thorough review!
This was my (failing) attempt at a "fast pass" review... :-)
On 2015-06-09 01:31, Daniel D. Daugherty wrote:
>
http://cr.openjdk.java.net/~ihse/JDK-8085822-JEP-223-initial-patch/webrev.01
General comment: Not all copyright years were updated.
General comment: It looks like support for the 'patch' value is not
completely
implemented through all the Makefiles. I didn't audit for this,
but it's
just my impression.
You are basically correct. The makefiles all propagate the patch
value where needed, but the actual source code changes in hotspot
and jdk ignores the patch field as of now. This will be corrected in
a later add-on patch, submitted by someone from the jdk and/or
hotspot team rather than the build team.
common/autoconf/generated-configure.sh
There are multiple Copyright notices in this file. Why?
Oh dear, you've reviewed the generated file. :-& I'm really
impressed by your effort!
Ahhh... now that you say it... it sounds familiar... I may have
made this same mistake before. I'll try to remember next time.
However, the generated-configure.sh file is automatically created by
the autoconf framework from the rest of the files in
common/autoconf/*, so we cannot direcly modify it's contents - only
indirectly. The reason it's checked in, is that otherwise every user
would need to generate it before being able to run configure. In
build reviews, we usually either revert changes to
generated-configure.sh before posting a review to hide it (and
re-generate it before pushing), or we just ignore it during reviews.
I should have done that, or pointed out that it was not needed nor
possible to review when I cross-posted. I'm sorry.
L4076: # Verify that a given string represent a valid version
number, and assing it to
L4077: # a variable.
Fixed two typos and reformat a bit:
# Verify that a given string represents a valid version
number, and
# assigning it to a variable.
I'll put that fix in the source .m4 file instead. Thanks.
L20262: as_fn_error $? "--with--version-string must have a
value" "$LINENO" 5
The '--with--version...' part doesn't match previous usages
where
'--with-version...' is used
Yes, you're right. Erik pointed it out as well. It's a typo in the
error message. It's all over the place due to copied code. I'll fix
it in the source .m4 file.
(As a side note, I have a half-finished follow-up patch that will
reduce the amount of code duplication, but it requires some
framework changes so it'll have to be a separate thing.)
L20275: # Unspecified numerical fields is interpreted as 0.
Grammar: 'is interpreted' -> 'are interpreted'
L20286: as_fn_error $? "Version string contains + but
both 'BUILD' and 'OPT' is missing" "$LINENO" 5
Grammar: 'is missing' -> 'are missing'
Those darn English plural forms! Why can't you all do as we sensible
Swedes and get rid of them? ;-)
(I'll fix)
L20388: username=`$ECHO "$USER" | $TR -d -c
'[a-z][A-Z][0-9]'`
This assumes that the "USER" variable is set. Should there
be a check for "" and perhaps use "no_user_specified" or
something like that? Perhaps the build setup always makes
sure that "USER" is set to something. Don't know.
Hm. I think the worst thing that'll happen is that the username part
of the opt string gets empty. This part is basically copied right
off the old build, where we have relied on the $USER variable being
present for all the time with no problems, so I think it's quite
safe to assume.
common/autoconf/jdk-options.m4
Don't know why the 'elliptic curve crypto implementation' support
is relocated as part of this changeset, but ...
It was incorrectly placed not at the top indentation level, but in
the middle of the function definition where the old versioning code
were handled. (Which, mostly by chance, happens to work in autoconf,
but is really bad style).
make/Javadoc.gmk
Did you mean to remove the 'clean' target?
Yep. Cleaning is done by the top-level Main.gmk makefile nowadays,
that's just some dead code.
hotspot/make/windows/makefiles/compile.make
No changes in the frames view.
Update: udiff view shows a blank line deleted at the end of the
file.
That's probably the result of some change going forth and then back
again during development. But then again, removing extra blank
linkes is not a bad thing. (jcheck unfortunately does not enforce
any style checks for make files :-( so they tend to detoriate over
time.)
hotspot/src/share/vm/runtime/java.cpp
L661: void JDK_Version::fully_initialize(
L662: uint8_t major, uint8_t minor, uint8_t security,
uint8_t update) {
L663: // This is only called when current is less than 1.6
and we've gotten
Since you're ripping out vestigial version support, I think
this
function can go away since this is version 9 and newer.
Don't really
know for sure, but based on that comment...
It probably can, yes. This and other core changes to the actual
.cpp/.java files will be addressed in a follow-up patch.
hotspot/src/share/vm/runtime/java.hpp
No comments.
hotspot/src/share/vm/runtime/vmStructs.cpp
L1240: please make the 'int' parameter align like the rest.
Are you okay with defering such a change to a follow-up patch?
Yes.
It's likely the entire struct will need changes to be able to handle
a theoretically arbitrarily long version number.
hotspot/src/share/vm/runtime/vm_version.cpp
L84: void Abstract_VM_Version::initialize() {
L85: // FIXME: Initialization can probably be removed now.
I agree, but that would entail also removing the
_initialized and the uses of it... Follow on bug fix?
Definitely follow on.
jdk/src/java.base/share/classes/sun/misc/Version.java.template
L149: * Returns the security version of the running JVM if
it's 1.6 or newer
This JavaDoc update is wrong, but it might not be important
if sun.misc.Version class is going away.
I'm not sure if it's going to be replaced by, or just complemented
by java.util.Version, but in any case it will need a follow-up patch
to clean up this and other issues.
langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java
old L171: case "1.9":
new L171: case "9":
Should this logic support both versions? Will dropping
"1.9" here prevent a pre-version changeset JVM from
being dropped into a JDK for triage purposes?
Granted we don't often triage 'javac' with different JVMs,
but...
I'll defer that question to Kumar, who wrote that piece of code. My
guess is that when Hotspot express was dropped, the ability to use a
JVM from another JDK release bit rotteded away.
/Magnus
Dan