-
Notifications
You must be signed in to change notification settings - Fork 5.8k
8357178: Simplify Class::componentType #25280
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
base: master
Are you sure you want to change the base?
Conversation
👋 Welcome back liach! A progress list of the required criteria for merging this PR into |
❗ This change is not yet ready to be integrated. |
Webrevs
|
@@ -3982,7 +3982,7 @@ public String descriptorString() { | |||
*/ | |||
@Override | |||
public Class<?> componentType() { | |||
return isArray() ? componentType : null; | |||
return componentType; |
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.
Did you consider calling getComponentType(), which already returns the field?
Are there regression tests for Class::componentType()/Class::getComponentType() somewhere? I didn't see them in the obvious test/jdk/java/lang/Class directory.
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.
Did you consider calling getComponentType(), which already returns the field?
I don't think we want an extra indirection here - The logic here is quite simple. Counterargument could be that MethodType::descriptorString
calls toMethodDescriptorString
, except these methods involve more complex caching and is not simple like this field access.
Are there regression tests for Class::componentType()/Class::getComponentType() somewhere? I didn't see them in the obvious test/jdk/java/lang/Class directory.
They are located in test/jdk/java/lang/constant/TypeDescriptorTest.java
.
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.
Did you consider calling getComponentType(), which already returns the field?
I don't think we want an extra indirection here - The logic here is quite simple. Counterargument could be that
MethodType::descriptorString
callstoMethodDescriptorString
, except these methods involve more complex caching and is not simple like this field access.
My mental model anyway is that this trivial inline would be something the VM would do readily.
Question: Why was this overload added in the first place, as it seems equivalent to |
@minborg It implements a method in TypeDescriptor.OfField. |
isArray
and null return is now redundant whencomponentType
is changed to an explicit field.Progress
Issue
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/25280/head:pull/25280
$ git checkout pull/25280
Update a local copy of the PR:
$ git checkout pull/25280
$ git pull https://git.openjdk.org/jdk.git pull/25280/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 25280
View PR using the GUI difftool:
$ git pr show -t 25280
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/25280.diff
Using Webrev
Link to Webrev Comment