-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
8343829: Unify decimal and hexadecimal parsing in FloatingDecimal #22737
base: master
Are you sure you want to change the base?
Conversation
👋 Welcome back rgiulietti! A progress list of the required criteria for merging this PR into |
❗ This change is not yet ready to be integrated. |
@rgiulietti 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 /label pull request command. |
Webrevs
|
// private static final int BINARY_256_IX = 4; | ||
|
||
/* The precision of the format. */ | ||
private static final int[] P = { |
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.
What about organizing these constants as as a record - something like this:
record FloatFmt(int ix, int p, int epMin, int epMax, int w, int eMin, int eMax, int qMin, int hexCount) {
public static final FloatFmt BINARY_16 = build(0, 11, -8, 6);
public static final FloatFmt BINARY_32 = build(1, 24, -46, 40);
public static final FloatFmt BINARY_64 = build(2, 53, -324, 310);
public static final FloatFmt BINARY_128 = build(3, 113, -4_966, 4934);
public static final FloatFmt BINARY_256 = build(4, 237, -78_985, 78_915);
private static FloatFmt build(int ix, int p, int epMin, int epMax) {
int w = (1 << 4 + ix) - p;
int eMin = (-1 << w - 1) + 2;
int eMax = (1 << w - 1) - 1;
int qMin = eMin - p + 1;
int hexCount = p / 4 + 2;
return new FloatFmt(ix, p, epMin, epMax, w, eMin, eMax, qMin, hexCount);
}
}
Methods could then be parameterized with the static instances rather than integers. I believe these values would inline well as constants.
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.
Thanks for the suggestion @j3graham.
I'll consider it for the next commits.
See the JBS bug for some details.
Progress
Issue
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/22737/head:pull/22737
$ git checkout pull/22737
Update a local copy of the PR:
$ git checkout pull/22737
$ git pull https://git.openjdk.org/jdk.git pull/22737/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 22737
View PR using the GUI difftool:
$ git pr show -t 22737
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/22737.diff
Using Webrev
Link to Webrev Comment