On Mon, 14 Sep 2020 09:57:26 GMT, yosbits 
<github.com+7517141+yos...@openjdk.org> wrote:

> https://bugs.openjdk.java.net/browse/JDK-8253086
> 
> ObservableListWrapper.java
>  * public boolean removeAll(Collection<?> c)
> * public boolean retainAll(Collection<?> c)
> 
> These two methods use BitSet, but it doesn't make sense.
> By rewriting to the equivalent behavior that does not use BitSet, it is 
> possible to reduce the CPU load in a wide range
> of use cases.
> The test is done with the following command.
> 
> * gradle base: test
> * gradle controls: test

modules/javafx.base/src/main/java/com/sun/javafx/collections/ObservableListWrapper.java
 line 191:

> 189:         if (this.isEmpty() || c.isEmpty()) {
> 190:             return false;
> 191:         }

logic seems wrong: if c is empty this must be cleared

The error shows up in a failing test (but only when running all 
base.collections tests in Eclipse, not with gradle on
the commandline)

the test failure is in ObservableListWithExtractor.testUpdate_retainAll() which 
- besides exposing the error above -
tells us two issues with the tests

a) the normal (that is no extractor) test is incomplete (in not testing 
retainAll with empty array/collection)
b) the test is not run with gradle because it doesn't adhere to naming 
conventions ;)

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

PR: https://git.openjdk.java.net/jfx/pull/305

Reply via email to