On 20/06/2019 02:36, yumin qi wrote:
Hi, Please review:
bug: https://bugs.openjdk.java.net/browse/JDK-8222373
webrev: http://cr.openjdk.java.net/~minqi/8222373/01/

To load shared class from CDS, first class file stream is read from jar
file, then load the class with the stream. In vm, the stream is used to
calculate file size and crc32 which are used to compare with the counter
parts stored in CDS.

In fact, when CDS mapped, every SharedClassPathEntry is checked for
validation, if there is mismatch JVM will exit. That is, if user updated
jars and did not recreated CDS archive, it would fail. This can make us
load the class from CDS directly (if it is in CDS) without checking class
file length and crc32, so skip getting byte stream from source to save time.

cc'ing core-libs-dev as this proposal involves changes to the ClassLoader API that will require significant discussion. One initial concern is that it exposes the notion of "shared class" in the standard API. I'm also concerned about the reliance on the protection domain and changing existing defineClass methods to allow the class bytes be null. How does that work when CDS is disabled - are you expecting class loader implementation with go-faster stripes to retry a different defineClass with the class bytes? Ioi has had a number of proposals in this area (and I see he's added a comment to the bug) but we didn't converge on the right API so maybe it time to have another attempt at that issue first.

-Alan

Reply via email to