> Please review this PR which proposes we replace `j.u.ArrayDeque` with > `j.u.ArrayList` in `jdk.internal.loader.URLClassPath`. > > The motivation for using a double-ended queue may have been that "original" > search path URLs are added to the tail of the queue while any URLs discovered > during JAR `Class-Path` expansion are inserted at the head such that they are > processed first. > > By splitting these two concerns and processing loader discovered class path > URLs separately from the original search path, we no longer need a > double-ended queue. We can replace `ArrayDeque` with `ArrayList`. > > Advantages: > > * A "hello world" Java program no longer loads `ArrayDeque`, `Deque` and > `Queue` (`URLClassPath` is the only consumer of these classes during startup) > * One data structure is simpler than two > * We no longer need to manage search path URLs across two different > collections > * Code and comments to dance around `ArrayDeque` calling into lambda too > early is no longer a concern and can be removed > * I think this PR leaves the code overall simpler and easier to follow. > > Testing: > > This PR introduces a new test to verify that URLs disovered via a multi-level > tree paths discovered via `Class-Path` JAR attributes are found in the > expected DFS order. The ordering aspect seems to lack existing coverage.
Eirik Bjørsnøs has updated the pull request incrementally with one additional commit since the last revision: Use "list" instead of "queue" when referring to expandedPath which is processed FIFO and as such is not a queue ------------- Changes: - all: https://git.openjdk.org/jdk/pull/29288/files - new: https://git.openjdk.org/jdk/pull/29288/files/6d21f049..d7962442 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=29288&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=29288&range=00-01 Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod Patch: https://git.openjdk.org/jdk/pull/29288.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/29288/head:pull/29288 PR: https://git.openjdk.org/jdk/pull/29288
