-
Notifications
You must be signed in to change notification settings - Fork 5.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
8253089: Windows (MSVC 2017) build fails after JDK-8243208 #150
Conversation
👋 Welcome back shade! A progress list of the required criteria for merging this PR into |
@shipilev The following label will be automatically applied to this pull request: When this pull request is ready to be reviewed, an RFR email will be sent to the corresponding mailing list. If you would like to change these labels, use the |
Hi, |
@shipilev This change now passes all automated pre-integration checks. In addition to the automated checks, the change must also fulfill all project specific requirements After integration, the commit message will be:
Since the source branch of this PR was last updated there have been 9 commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid automatic rebasing, please merge ➡️ To integrate this PR with the above commit message to the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, Goetz.
Mailing list message from Kim Barrett on hotspot-runtime-dev: I suspect the compiler warning is an example of This would explain why using u2 would dodge the warning. The currently I think changing to using u2 isn't the right solution though. This throws 61 h = 31*h + (unsigned int) *s; So I suggest wrapping that line with targeted warning suppression, i.e. Note that it might be that such a limited warning disable is insufficient in |
I agree with Kim that it's better to disable the warning. |
Mailing list message from Aleksey Shipilev on hotspot-runtime-dev: On 9/14/20 6:05 PM, Kim Barrett wrote:
I think this accuracy concern does not apply here, because it does not actually change the computation. This is because polynomial hash codes enjoy the modulo distributivity, computation uses unsigned A bit more rigorously: M = 2^(sizeof(u2)*8) = 16 L1: note M and K are power of two, and K=2*M, so (x % K) % M = (x % M) here new_hashcode = sum_i( (31^k * s[i]) % M) % M old_hashcode = sum_i( (31^k * s[i]) % K) % M Or try this ;)
I think math thankfully saves us from cluttering the code with compiler pragmas. -- |
Mailing list message from Aleksey Shipilev on hotspot-runtime-dev: On 9/14/20 7:27 PM, Aleksey Shipilev wrote:
Even more: jvmFlagLookup.o files before and after are bit-to-bit identical. (I objdumped to look at -- |
TL/DR; I think the proposed change is acceptable as it doesn't significantly change the bucket size distribution. ==== I then apply the proposed change on top. The contents of the hashtable is changed (I don't know why Aleksey sees no changes; I used output from
Anyway, the bucket size distribution is about the same as before. The max bucket size is about 12. http://cr.openjdk.java.net/~iklam/jdk16/8253089-jvmFlagLookup-u2-msvc/jvmFlagLookup.s.old.txt Scroll down to here: the first 277 entries are the bucket size.
|
/integrate |
@shipilev Since your change was applied there have been 9 commits pushed to the
Your commit was automatically rebased without conflicts. Pushed as commit 3f455f0. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Mailing list message from Kim Barrett on hotspot-runtime-dev:
Looks like I was right about that. I?ve privately received a report of a similar problem This will be a constant threat when adding uses of constexpr. I think the only plausible solution is to disable that warning for VS versions prior to the one that fixes I don?t know why I never encountered this in my experiments with C++14 over the past more than |
I don't mind reverting this change, but it would break MSVC 2017 again, until we push the pragmas. Unfortunately, I lost the capability to build with MSVC 2017, so maybe we should ask SAP folks (who IIRC still have their pipelines with MSVC 2017) to verify this still works. |
Mailing list message from Kim Barrett on hotspot-runtime-dev:
I?m guessing this was intended to be in response to my followup comment. I agree that we can?t revert that until we have something in place to deal with the VS2017 problem. It was the SAP |
Mailing list message from Aleksey Shipilev on hotspot-runtime-dev: On 9/16/20 1:42 PM, Kim Barrett wrote:
Right. ml-bot confusion here.
I submitted this one yesterday, btw: -- |
…to utilise a specific bundle version? openjdk#150
OSGi bundles and proxy identity - allow more than once service proxy to utilise a specific bundle version? openjdk#150
…to utilise a specific bundle version? openjdk#150
…to utilise a specific bundle version? openjdk#150
…to utilise a specific bundle version? openjdk#150
It seems that MSVC 2017 is getting confused about the differences in
unsigned int
andu2
. After a few attempts at fixing this, I think we need to useu2
consistently for hash code computations.u2
is the final storage type for the hash code inJVMFlagLookup::_hashes
.Progress
Issue
Reviewers
Download
$ git fetch https://git.openjdk.java.net/jdk pull/150/head:pull/150
$ git checkout pull/150