<Swing Dev> [10][JDK-8190281] Code cleanup in src\java.desktop\share\classes\javax\swing\tree\VariableHeightLayoutCache.java
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Tue Dec 12 13:36:43 UTC 2017
On 12/12/2017 7:04 PM, Prasanta Sadhukhan wrote:
>
> You missed using the variable at l933
>
and l955,956
>
> Regards
> Prasanta
> On 12/12/2017 5:21 PM, Krishna Addepalli wrote:
>>
>> Hi Prasanta,
>>
>> �
>>
>> Did the change for caching the result of calling �getRowCount()� into
>> a variable, as pointed out by you, and here is the new webrev:
>> http://cr.openjdk.java.net/~kaddepalli/8190281/webrev03/
>> <http://cr.openjdk.java.net/%7Ekaddepalli/8190281/webrev03/>
>>
>> �
>>
>> Thanks,
>>
>> Krishna
>>
>> �
>>
>> *From:*Prasanta Sadhukhan
>> *Sent:* Monday, December 11, 2017 7:24 PM
>> *To:* Krishna Addepalli <krishna.addepalli at oracle.com>;
>> swing-dev at openjdk.java.net
>> *Subject:* Re: <Swing Dev> [10][JDK-8190281] Code cleanup in
>> src\java.desktop\share\classes\javax\swing\tree\VariableHeightLayoutCache.java
>>
>> �
>>
>> �
>>
>> �
>>
>> On 12/11/2017 4:16 PM, Krishna Addepalli wrote:
>>
>> Hi Prasanta,
>>
>> �
>>
>> Yes, you are right, but as I mentioned earlier, that would need
>> to make one variable declaration for caching before trivial
>> reject case, which I wanted to avoid.
>>
>> As for the body of getRowCount() it is just returning
>> �visibleNodes.size()�, which shouldn�t be a (performance)problem
>> if called 2 times as I understand.
>>
>> But, the whole premise of changing getRowCount() <=0� was that it can
>> be overridden and return -ve. Left to present implementation, we
>> would not have needed "less than" check.
>> So, if we are changing one case because of the above reason, then we
>> cannot forego the 2nd case's problem, as it can have any implementation.
>>
>> Regards
>> Prasanta
>>
>> �
>>
>> Thanks,
>>
>> Krishna
>>
>> �
>>
>> *From:*Prasanta Sadhukhan
>> *Sent:* Monday, December 11, 2017 4:02 PM
>> *To:* Krishna Addepalli <krishna.addepalli at oracle.com>
>> <mailto:krishna.addepalli at oracle.com>; swing-dev at openjdk.java.net
>> <mailto:swing-dev at openjdk.java.net>
>> *Subject:* Re: <Swing Dev> [10][JDK-8190281] Code cleanup in
>> src\java.desktop\share\classes\javax\swing\tree\VariableHeightLayoutCache.java
>>
>> �
>>
>> Hi Krishna,
>>
>> My point was we can call getRowCount() once at first and store
>> the result and use it subsequently. There was no need to call it
>> 2-3 times.
>>
>> Regards
>> Prasanta
>>
>> On 12/11/2017 3:01 PM, Krishna Addepalli wrote:
>>
>> Hi Prasanta,
>>
>> �
>>
>> Thanks for pointing out the �getRowCount()==0� check.
>> Modified it to �getRowCount() <= 0� in the new webrev:
>> http://cr.openjdk.java.net/~kaddepalli/8190281/webrev02/
>> <http://cr.openjdk.java.net/%7Ekaddepalli/8190281/webrev02/>
>>
>> �
>>
>> As for calling the method twice, you are right that we don�t
>> need to call it twice, but in the interest of having trivial
>> reject case first, and then start the variable declarations,
>> had to let be there to be called twice. Precisely for the
>> reason you stated, it shouldn�t matter if we called it twice.
>>
>> �
>>
>> Thanks,
>>
>> Krishna
>>
>> �
>>
>> *From:*Prasanta Sadhukhan
>> *Sent:* Saturday, December 9, 2017 7:54 PM
>> *To:* Krishna Addepalli <krishna.addepalli at oracle.com>
>> <mailto:krishna.addepalli at oracle.com>;
>> swing-dev at openjdk.java.net <mailto:swing-dev at openjdk.java.net>
>> *Subject:* Re: <Swing Dev> [10][JDK-8190281] Code cleanup in
>> src\java.desktop\share\classes\javax\swing\tree\VariableHeightLayoutCache.java
>>
>> �
>>
>> Hi Krishna,
>>
>> This seems good to me except one thing. You are checking
>> getRowCount() == 0 but there is a chance of test extending
>> VariableHeightLayoutCache and overriding getRowCount to
>> return -ve also as it is an int. In that case, I guess this
>> function will not return -1 which spec mandates [If there are
>> no rows, -1 is returned] so I guess we should check for <=0.
>> Also, there is no need of calling getRowCount() twice as it
>> will not change between 929, 936.
>>
>> Regards
>> Prasanta
>>
>> On 12/7/2017 4:41 PM, Krishna Addepalli wrote:
>>
>> Hi Sergey,
>>
>> �
>>
>> Per our conversation, I have done the following changes:
>>
>> 1.������ Found that the .class size increases by 1kb when
>> streams are used, so reverted the changes related to it.
>>
>> 2.������ Moved the �++nextIndex� into the conditional, so
>> that there is no logical change.
>>
>> Here is the updated webrev:
>> http://cr.openjdk.java.net/~kaddepalli/8190281/webrev01/
>> <http://cr.openjdk.java.net/%7Ekaddepalli/8190281/webrev01/>
>>
>> �
>>
>> Thanks,
>>
>> Krishna
>>
>> �
>>
>> *From:* Krishna Addepalli
>> *Sent:* Wednesday, December 6, 2017 2:43 PM
>> *To:* swing-dev at openjdk.java.net
>> <mailto:swing-dev at openjdk.java.net>
>> *Subject:* [10][JDK-8190281] Code cleanup in
>> src\java.desktop\share\classes\javax\swing\tree\VariableHeightLayoutCache.java
>>
>> �
>>
>> Hi All,
>>
>> �
>>
>> Please review the fix for bug:
>>
>> Bug: JDK-8190281
>> https://bugs.openjdk.java.net/browse/JDK-8190281
>>
>> JDK 10 Webrev:
>> http://cr.openjdk.java.net/~kaddepalli/8190281/webrev00/
>> <http://cr.openjdk.java.net/%7Ekaddepalli/8190281/webrev00/>
>>
>> �
>>
>> This bug was created while root causing JDK-8187936, and
>> the following refactoring points have been addressed:
>>
>> �
>>
>> 1. Line 927: Uninitialized variables, checking for
>> trivial reject case multiple times.�
>> 2. Line 999: Traditional code written to find maximum
>> size of components, which can be done without any local
>> variables and explicit looping by replacing with streams.�
>> 3. Line 1365: Code repetition for differenct conditions,
>> which can be ored together to reduce the repetition.�
>> 4. Line 1482: A large code block gets repeated only
>> because of different values need to be passed in one
>> line. This can be moved to a variable initialization, and
>> the repeating code blocks can be reduced to one.�
>> 5. Line 1505: Variable initialization can be simplified
>> by combining different conditions.�
>> 6. Line 1540: An explicit loop to apply a function over a
>> collection, can be achieved in one line by a forEach
>> construct.� � This is producing some visual artifacts, so
>> ignored.
>> 7. Line 1747: Combine all the trivial reject cases into
>> one condition, and also, a potential bug which increments
>> the "nextIndex" value beyond the length of the containing
>> elements. The increment should happen only if the trivial
>> reject case fails.
>>
>> �
>>
>> Thanks,
>>
>> Krishna
>>
>> �
>>
>> �
>>
>> �
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20171212/5f51a802/attachment.html>
More information about the swing-dev
mailing list