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

Reply via email to