[9] RFR (M): 8037209: Improvements and cleanups to bytecode assembly for lambda forms

Marcus Lagergren marcus.lagergren at oracle.com
Fri Mar 14 13:25:47 UTC 2014


To get into this faster it would be nice if the new private fields (or the existing ones for that matter) had a comment describing what they were for, e.g.

+     private final byte[] localTypes;
+     private final Class<?>[] localClasses;

I can figure it out from the code, but it would have been a better starting point.

If that there are new apparent performance regressions caused by, e.g. profile pollusion from reusing existing method handles, I am fine with this. +1

/M

On 14 Mar 2014, at 14:17, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:

> Paul,
> 
> You are looking at the other fix (8037210).
> The correct link is [1].
> 
> Best regards,
> Vladimir Ivanov
> 
> [1] http://cr.openjdk.java.net/~vlivanov/8037209/webrev.00/src/share/classes/java/lang/invoke/MethodHandleImpl.java.sdiff.html
> 
> On 3/14/14 4:38 PM, Paul Sandoz wrote:
>> 
>> On Mar 14, 2014, at 1:19 PM, Vladimir Ivanov
>> <vladimir.x.ivanov at oracle.com <mailto:vladimir.x.ivanov at oracle.com>> wrote:
>> 
>>> FYI, this change isn't limited to only bytecode assembly improvements,
>>> but also contains caching of lambda forms for setters/getter of typed
>>> arrays.
>>> 
>> 
>> Do you mean for MethodHandles.arrayElementGetter/Setter? If so i don't
>> see relevant changes in:
>> 
>> http://cr.openjdk.java.net/~vlivanov/8037210/webrev.00/src/share/classes/java/lang/invoke/MethodHandleImpl.java.sdiff.html
>> 
>> to say MethodHandleImpl.ArrayAccessor:
>> 
>>     static final class ArrayAccessor {
>>         /// Support for array element access
>>         static final HashMap<Class<?>, MethodHandle> GETTER_CACHE = new
>> HashMap<>();  // TODO use it
>>         static final HashMap<Class<?>, MethodHandle> SETTER_CACHE = new
>> HashMap<>();  // TODO use it
>> 
>> Paul.
>> 
>>> If there are any objections, I can back the caching logic out and
>>> include it into one of upcoming changes.
>>> 
>>> Best regards,
>>> Vladimir Ivanov
>>> 
>>> On 3/14/14 3:45 PM, Vladimir Ivanov wrote:
>>>> http://cr.openjdk.java.net/~vlivanov/8037209/webrev.00/
>>>> https://bugs.openjdk.java.net/browse/JDK-8037209
>>>> 440 lines changed: 313 ins; 67 del; 60 mod
>>>> 
>>>> This is a cleanup of JSR292 code to improve bytecode assembly code for
>>>> lambda forms.
>>>> 
>>>> Contributed-by: john.r.rose at oracle.com
>>>> 
>>>> Testing: jdk/java/{lang/invoke,util}, vm.mlvm.testlist, nashorn, jruby
>>>> 
>>>> Configs: -ea -esa -Xverify:all -D...COMPILE_THRESHOLD={0,30}
>>>> -D...PROFILE_LEVEL={0,1}
>>>> 
>>>> Best regards,
>>>> Vladimir Ivanov
>>>> _______________________________________________
>>>> mlvm-dev mailing list
>>>> mlvm-dev at openjdk.java.net
>>>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>> 
>> 
>> 
>> _______________________________________________
>> mlvm-dev mailing list
>> mlvm-dev at openjdk.java.net
>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
>> 




More information about the core-libs-dev mailing list