RFR: JEP 359-Records: reflection code
Chris Hegarty
chris.hegarty at oracle.com
Tue Oct 22 09:41:28 UTC 2019
> On 22 Oct 2019, at 09:51, Maurizio Cimadamore <maurizio.cimadamore at oracle.com> wrote:
>
> ..
>
> Let me rephrase. We have Class::getRecordComponents; and we have RecordComponent::accessor.
>
> What is the need to pass _anything_ to the BSM, other than the record class (e.g. Point.class) AND the method name (e.g. toString) ?
>
> The BSM can take the .class, and get the components; from there:
>
> - you can easily derive names
> - you can also easily derive accessor MHs (just a lookup away)
>
> I was _not_ advocating for extracting a name from a direct method handle - that seems brittle, given that the compiler implementation might change, eventually. But doubling down on the reflection API seems the right thing to do?
A quick change shows that this simplifies the code a lot ( since there is less arg checking )
http://cr.openjdk.java.net/~chegar/records/ObjectMethods.00/ <http://cr.openjdk.java.net/~chegar/records/ObjectMethods.00/>
Q: the TypeDescriptor arg can be used for linking a dynamic constant. Is this still needed?
-Chris.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20191022/69da3040/attachment-0001.html>
More information about the compiler-dev
mailing list