[code-reflection] RFR: Implement bitwise/shift assignment operations [v2]

Hannes Greule hgreule at openjdk.org
Thu May 16 07:34:36 UTC 2024


On Wed, 15 May 2024 16:15:28 GMT, Paul Sandoz <psandoz at openjdk.org> wrote:

>> Hannes Greule has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Fix missed change from rebase
>
> test/jdk/java/lang/reflect/code/CoreBinaryOpsTest.java line 66:
> 
>> 64: 
>> 65:     @CodeReflection
>> 66:     @SupportedTypes(types = {int.class, long.class, byte.class, short.class, char.class, boolean.class})
> 
> Alas we cannot have constant array values, hence the duplication. But, we can use enums:
> 
>     enum Types {
>         INTEGRAL_BOOLEAN(
>                 new Class<?>[]{int.class, long.class, byte.class, short.class, char.class, boolean.class}),
>         INTEGRAL_FLOATING_POINT(
>                 new Class<?>[]{int.class, long.class, byte.class, short.class, char.class, float.class, double.class}
>         );
> 
>         final Class<?>[] types;
> 
>         PrimitiveTypeList(Class<?>[] types) {
>             this.types = types;
>         }
>     }
> 
>     @Retention(RetentionPolicy.RUNTIME)
>     @Target(ElementType.METHOD)
>     @interface SupportedTypes {
>         PrimitiveTypeList[] value();
>     }
> 
> ...
> 
>     @CodeReflection
>     @SupportedTypes(Types.INTEGRAL_BOOLEAN)
>     static int add(int left, int right) {
>         return left + right;
>     }
> 
> Up to you.

Good idea, done!

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

PR Review Comment: https://git.openjdk.org/babylon/pull/77#discussion_r1602769035


More information about the babylon-dev mailing list