[GR-52030] Implement stable name for Proxy type using the names of its interfaces, class loader and module #8413
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The name of
Proxy
classes in Native Image is currently not stable between different images as it is generated using a unique id that can change in each JVM instance.This PR implements a stable name for those types by using the
hashCode
of the interfaces that compose theProxy
class and theClassLoader
name. For aProxy
type of the form[proxy.module]./$Proxy[id]
, the new name would be[proxy.module]./$Proxy.s[hashCode]
, withhashCode
being the hash code of the string containing the concatenation of all the interface names (in the order provided byClass.getInterfaces
) and the name of the class loader or if it does not have one, the name of its class.