Skip to content
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

avoiding unnecessary second Cast in instanceof patterns #2992

Open
mpalat opened this issue Sep 20, 2024 · 3 comments
Open

avoiding unnecessary second Cast in instanceof patterns #2992

mpalat opened this issue Sep 20, 2024 · 3 comments
Assignees
Milestone

Comments

@mpalat
Copy link
Contributor

mpalat commented Sep 20, 2024

refer @stephan-herrmann 's comment at:
eclipse-platform/eclipse.platform.releng.aggregator#2358 (comment)
"
oking at AnnotationCodeMiningProvider we are talking about this code:

	if (getAdapter(IAnnotationAccess.class) instanceof IAnnotationAccessExtension annotationAccessExtension) {
		this.annotationAccess= annotationAccessExtension;
	} else {
		throw new IllegalStateException("annotationAccess must implement IAnnotationAccessExtension"); //$NON-NLS-1$
	}

Here getAdapter(Class) is declared to return . With T=IAnnotationAccess a checkcast to the statically known type is correct. I only wonder, if previously implementation of instanceof patterns took care to avoid unnecessary casts, when the only use of that value would undergo a second checkcast immediately after. -.. was any such optimization intended at some point?
"

Also
ref the comment below as well:
public T getAdapter(Class adapter) {
if (adapter == X509Certificate.class && !certificates.isEmpty()) {
if (certificates.get(0) instanceof X509Certificate certificate) {
return adapter.cast(certificate);
}
}
The result of certificates.get(0) gets casted twice.

To check if such an optimization can be implemented

@stephan-herrmann
Copy link
Contributor

To check if such an optimization can be implemented

My original question was: "was any such optimization intended at some point?" Meaning: did recent feature work break existing optimization?

@mpalat
Copy link
Contributor Author

mpalat commented Sep 20, 2024

To check if such an optimization can be implemented

My original question was: "was any such optimization intended at some point?" Meaning: did recent feature work break existing optimization?

There was no optimization intended earlier - the recent work did not break any existing optimization. This issue is to check whether such an optimization can be done without too much hassle. btw, I would rate this a lower prio issue for now

@srikanth-sankaran srikanth-sankaran self-assigned this Sep 21, 2024
@srikanth-sankaran
Copy link
Contributor

I can investigate this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants