Fixes [JDK-8311505](https://bugs.openjdk.org/browse/JDK-8311505)

This PR uses `set(int index, int end, boolean isSet)` in 
`javafx.scene.control.MultipleSelectionModelBase` to avoid excessive calls to 
`indexOf` when deselecting continuous ranges of rows. 

Benchmarks produced with the test application provided here: 
https://bugs.openjdk.org/browse/JDK-8311505

Before (mainline):


Select item count 500000 took 724
Deselect item count 500000 took 73103


After (this PR):


Select item count 500000 took 249
Deselect item count 500000 took 88


Passes all unit tests:

`.\gradlew.bat :controls:test`
`.\gradlew.bat :systemTests:test`

Thank you!

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

Commit messages:
 - Revert "iterate clear list in reverse order"
 - iterate clear list in reverse order
 - Revert "use clearSelection() instead of a loop of clearSelection(int)"
 - use clearSelection() instead of a loop of clearSelection(int)
 - reflect order of operations in clear(int) in clear path of 
set(int,int,boolean)
 - 8311505: simplify processContiguousRanges
 - 8311505: Deselection of TableView rows is slow; use set(int,int,boolean) to 
process ranges for removel and addition
 - Revert "8311505: Deselection of TableView rows is slow"
 - Revert "8311505: Deselection of TableView rows is slow; filter by bitset 
explicitly; add additional check to avoid out of bounds exception"
 - 8311505: Deselection of TableView rows is slow; filter by bitset explicitly; 
add additional check to avoid out of bounds exception
 - ... and 1 more: https://git.openjdk.org/jfx/compare/7b845519...a2f9230a

Changes: https://git.openjdk.org/jfx/pull/2100/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=2100&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8311505
  Stats: 34 lines in 2 files changed: 19 ins; 3 del; 12 mod
  Patch: https://git.openjdk.org/jfx/pull/2100.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/2100/head:pull/2100

PR: https://git.openjdk.org/jfx/pull/2100

Reply via email to