On Mon, 26 Jan 2026 14:04:28 GMT, Eirik Bjørsnøs <[email protected]> wrote:

>> 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

Marked as reviewed by jpai (Reviewer).

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

PR Review: https://git.openjdk.org/jdk/pull/29288#pullrequestreview-3710225717

Reply via email to