+ enum BasicType { + L_TYPE('L', Object.class, Wrapper.OBJECT), // all reference types + I_TYPE('I', int.class, Wrapper.INT), + J_TYPE('J', long.class, Wrapper.LONG), + F_TYPE('F', float.class, Wrapper.FLOAT), + D_TYPE('D', double.class, Wrapper.DOUBLE), // all primitive types + V_TYPE('V', void.class, Wrapper.VOID); // not valid in all contexts
I would suggest to not name them X_TYPE but give them meaningful names like Int, Float, Void. The enum BasicType already infers that it’s a type. If you think it’s not clear that it’s a type just use BasicType.Double in that places. On Mar 24, 2014, at 9:29 AM, Vladimir Ivanov <vladimir.x.iva...@oracle.com> wrote: > Updated version: > http://cr.openjdk.java.net/~vlivanov/8037210/webrev.03/ > > - changed the way how arrays of types are created: > static final BasicType[] ALL_TYPES = BasicType.values(); > static final BasicType[] ARG_TYPES = Arrays.copyOf(ALL_TYPES, > ALL_TYPES.length-1); > > - added a test for BasicType (LambdaFormTest.testBasicType). > > Best regards, > Vladimir Ivanov > > On 3/22/14 2:08 AM, Vladimir Ivanov wrote: >> John, thanks for the feedback. >> >> Updated webrev: >> http://cr.openjdk.java.net/~vlivanov/8037210/webrev.02 >> >> Also moved LambdaForm.testShortenSignature() into a stand-alone unit test. >> >> Best regards, >> Vladimir Ivanov >> >> On 3/21/14 10:54 PM, John Rose wrote: >>> On Mar 21, 2014, at 8:49 AM, Vladimir Ivanov >>> <vladimir.x.iva...@oracle.com <mailto:vladimir.x.iva...@oracle.com>> >>> wrote: >>> >>>> Thanks for the feedback. >>>> >>>> What do you think about the following: >>>> http://cr.openjdk.java.net/~vlivanov/8037210/webrev.01/ >>> >>> That looks nice. Strong typing; who woulda' thunk it. :-) >>> >>> The uses of ".ordinal()" are the extra cost relative to using just small >>> integers. They seem totally reasonable in the code. >>> >>> I suggest either wrapping "ordinal" as something like "id" or else >>> changing temp names like "id" to "ord", to reinforce the use of a common >>> name. >>> >>> Don't make the enum class public. And especially don't make the mutable >>> arrays public: >>> >>> + public static final BasicType[] ALL_TYPES = { L_TYPE, I_TYPE, >>> J_TYPE, F_TYPE, D_TYPE, V_TYPE }; >>> + public static final BasicType[] ARG_TYPES = { L_TYPE, I_TYPE, >>> J_TYPE, F_TYPE, D_TYPE }; >>> >>> — John >>> >>> P.S. That would only be safe if we had (what we don't yet) a notion of >>> frozen arrays like: >>> >>> + public static final BasicType final[] ALL_TYPES = { L_TYPE, >>> I_TYPE, J_TYPE, F_TYPE, D_TYPE, V_TYPE }; >>> + public static final BasicType final[] ARG_TYPES = { L_TYPE, >>> I_TYPE, J_TYPE, F_TYPE, D_TYPE }; >>> >>> >>> >>> _______________________________________________ >>> mlvm-dev mailing list >>> mlvm-dev@openjdk.java.net >>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev >>> > _______________________________________________ > mlvm-dev mailing list > mlvm-dev@openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev