> 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 
> using a directory class path)
> * 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 two additional 
commits since the last revision:

 - Remove @bug tag, no product bug discovered
 - Rename test and deemphasize DFS is comments

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

Changes:
  - all: https://git.openjdk.org/jdk/pull/29288/files
  - new: https://git.openjdk.org/jdk/pull/29288/files/36fca66c..835e0141

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=29288&range=03
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=29288&range=02-03

  Stats: 11 lines in 1 file changed: 0 ins; 1 del; 10 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

Reply via email to