On Tue, 18 Feb 2025 07:08:07 GMT, David Holmes <dhol...@openjdk.org> wrote:
>> Calvin Cheung has updated the pull request incrementally with one additional >> commit since the last revision: >> >> @iklam and @ashu-mehra comment > > src/hotspot/share/cds/aotCodeSource.cpp line 2: > >> 1: /* >> 2: * Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved. > > If the code has been moved from other files, the current opinion/consensus is > that the first copyright year should be the oldest first year from all the > files from which the code was obtained. Since most of the code and logic are from filemap.[c|h]pp, I've updated the copyright year to 2003, 2025. > src/hotspot/share/cds/aotCodeSource.cpp line 106: > >> 104: for (const char* bootcp = Arguments::get_boot_class_path(); *bootcp >> != '\0'; ++bootcp) { >> 105: if (*bootcp == *os::path_separator()) { >> 106: ++ bootcp; > > Nit (possibly pre-existing) - no space before/after unary operators Fixed. > src/hotspot/share/cds/aotCodeSource.hpp line 125: > >> 123: // during AOTCache creation are the same as when the AOTCache is used >> during runtime. >> 124: // Non-existent entries are recorded during AOTCache creation. Those >> non-existent entries >> 125: // must not exist during runtime. > > Does this mean that if Foo.jar is on the classpath but does not in fact > exist, then we record it was on the classpath and require it to be on the > classpath at runtime, but also to still not exist? Actually, we don't require the non-existent entries to be on the classpath at runtime. The appcds/NonExistClasspath.java test has cases to cover that. So I've updated the comment as follows: // Non-existent entries are recorded during AOTCache creation. Those non-existent entries, // if they are specified at runtime, must not exist. Also fixed a bug so that the behavior is the same as before this refactoring. > src/hotspot/share/cds/aotCodeSource.hpp line 128: > >> 126: // >> 127: // Some details on validation: >> 128: // - the boot classpath could be appended during runtime if there's no >> app classpath and > > Suggestion: > > // - the boot classpath can be appended to at runtime if there's no app > classpath and no Fixed. > src/hotspot/share/cds/aotCodeSource.hpp line 130: > >> 128: // - the boot classpath could be appended during runtime if there's no >> app classpath and >> 129: // module path specified when an AOTCache is created; >> 130: // - the app classpath could be appended during runtime; > > Suggestion: > > // - the app classpath can be appended to at runtime; Fixed. > src/hotspot/share/cds/aotCodeSource.hpp line 131: > >> 129: // module path specified when an AOTCache is created; >> 130: // - the app classpath could be appended during runtime; >> 131: // - the module path during runtime could be a superset of the one >> specified during AOTCache creation. > > Suggestion: > > // - the module path at runtime can be a superset of the one specified during > AOTCache creation. Fixed. > test/hotspot/jtreg/runtime/cds/appcds/BootClassPathMismatch.java line 243: > >> 241: * No error - bootclasspath can be appended during runtime if no >> -cp is specified. >> 242: */ >> 243: public void testBootClassPathAppend() throws Exception { > > A refactoring should not be introducing new test cases. Did you refactor and > enhance? This is a missing testcase and works the same before and after refactoring. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/23476#discussion_r1962467161 PR Review Comment: https://git.openjdk.org/jdk/pull/23476#discussion_r1962466958 PR Review Comment: https://git.openjdk.org/jdk/pull/23476#discussion_r1962467710 PR Review Comment: https://git.openjdk.org/jdk/pull/23476#discussion_r1962467840 PR Review Comment: https://git.openjdk.org/jdk/pull/23476#discussion_r1962467951 PR Review Comment: https://git.openjdk.org/jdk/pull/23476#discussion_r1962468046 PR Review Comment: https://git.openjdk.org/jdk/pull/23476#discussion_r1962468281