On Wed, 1 Sep 2021 13:28:34 GMT, Jovan Stevanovic <github.com+44313413+jovanstevano...@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. This pull request has now been integrated. Changeset: f690a01f Author: jovanstevanovic <jovan.stevanov...@outlook.com> Committer: Joe Wang <jo...@openjdk.org> URL: https://git.openjdk.java.net/jdk/commit/f690a01f1e5de4ace39aefad656cb7c99f9ec4e1 Stats: 23 lines in 4 files changed: 5 ins; 0 del; 18 mod 8273278: Support XSLT on GraalVM Native Image--deterministic bytecode generation in XSLT Reviewed-by: joehw ------------- PR: https://git.openjdk.java.net/jdk/pull/5331