<AWT Dev> [9] Review Request: 8138764 In some cases the usage of TreeLock can be replaced by other synchronization

Alexander Scherbatiy alexandr.scherbatiy at oracle.com
Wed Oct 21 14:13:49 UTC 2015


   The fix looks good to me.

   Thanks,
   Alexandr.

On 10/19/2015 12:37 AM, Sergey Bylokhov wrote:
> On 16.10.15 13:56, Alexander Scherbatiy wrote:
>> On 10/6/2015 5:09 PM, Sergey Bylokhov wrote:
>>> Hello.
>>> Please review the fix for jdk9, I plan to backport it to jdk8.
>>>
>>> In this fix some of synchronizations on TreeLock were removed.
>>>
>>> - Component.java(CachedPainter.java) : long time ago this
>>> synchronization was necessary, because the getGC method iterated over
>>> hierarchy of components[1], but now it simple getter.
>>> - Window.java : locationByPlatform and opacity are changed to volatile
>>> and an additional synchronization is removed.
>>
>>      CachedPainter.java:  Can the component hierarchy be changed from
>> another thread during the paint0(component, ...) call?
>
> Yes it can be changed in any moment, in this case it will work in the 
> same way as JComponent.paintComponent() or other places where we draw 
> something to the component or backbuffer.
>
> This synchronization was added as a part of JDK-6190373. It has a 
> deadlock description which was solved. In those moment it cannot be 
> solved in different way because TreeLock was needed in Component.getGC().
>
> I will provide the webrev and review of those bug in another email.
>
>
>>
>>    Thanks,
>>    Alexandr.
>>>
>>> These changes are subset of my fix for JDK-6765536, which is safe to
>>> backport to jdk8.
>>>
>>> [1]
>>> http://hg.openjdk.java.net/jdk6/jdk6/jdk/diff/e7ecde4010e9/src/share/classes/java/awt/Component.java 
>>>
>>>
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8138764
>>> Webrev can be found at:
>>> http://cr.openjdk.java.net/~serb/8138764/webrev.00
>>>
>>
>
>



More information about the awt-dev mailing list