On Tue, 7 Sep 2021 23:48:08 GMT, Joe Wang <jo...@openjdk.org> wrote: >> GraalVM Native Image supports loading classes at runtime if they are known >> during image build (class predefinition). This is achieved by the JVMTI >> agent that registers dynamically generated classes in a regular HotSpot run. >> The Native Image build uses these registered classes to embed them into the >> produced binary so they can be loaded at runtime. Loading at runtime is >> achieved by matching the unique hash of generated classes. >> >> If the generated bytecode is unstable across runs, the generated native >> image can not match the hash of the runtime-generated bytecode to the >> pre-defined classes. The execution failure happens here: >> >> https://github.com/oracle/graal/blob/master/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/hub/PredefinedClassesSupport.java#L127-L131. >> >> In XSLT the produced bytecode is unstable for the following reasons: >> >> - Methods like ` HashMap#values` and `HashMap#keySet` result in different >> traversal orders of its elements yielding a different order of methods and >> fields. >> >> - The default `Object#toString` includes the current memory reference of >> `com.sun.org.apache.xalan.internal.xsltc.compiler.Number` in the generated >> class. > > Yeah, there hasn't been any major activities (i.e. a minor release) for 7 > years. It's also true that the JDK has diverged.
@JoeWang-Java We need to backport this to JDK 11 as well. How can we do that? Also, is there anything else I should do to merge these changes after approval? ------------- PR: https://git.openjdk.java.net/jdk/pull/5331