RFR: 8311085: Remove implementation detail writeTo from LocalVariable(Type) [v3]

Chen Liang liach at openjdk.org
Sun Jul 2 12:18:54 UTC 2023


On Fri, 30 Jun 2023 00:51:42 GMT, Chen Liang <liach at openjdk.org> wrote:

>> `LocalVariable` and `LocalVariableType` includes `writeTo(BufWriter)`, which should be implementation details.
>> 
>> See https://mail.openjdk.org/pipermail/classfile-api-dev/2023-June/000381.html for context.
>> 
>> This patch moves the implementation to `DirectCodeBuilder`'s original use sites; the old `b.canWriteDirect` branch   is redundant, as `writeIndex`'s implementation already performs such an optimization.
>
> Chen Liang has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix line ending, update corpus test

Please hold off on sponsoring this; after another look, I find that LocalVariable and LocalVariableType can probably implement `WritableElement`.

Per our previous discussion, `WritableElement` should probably not be exposed; it is currently only exposed as a type parameter upper bound in `<T extends WritableElement<?>> void writeList(List<T> list);`

I think we might convert the `WritableElement` to an internal interface: is it possible to declare the method as `void writeTo(BufWriterImpl)`, and the public method is yet hidden from the API because `BufWriterImpl` is not in an exported package? For the `writeList`, I would turn it into `<T> void writeList(List<T> list, BiConsumer<T, BufWriter> writer)` or simply remove it.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/14705#issuecomment-1616627718


More information about the core-libs-dev mailing list