[11u] Backport 8229352: Use of an unitialized register in 32-bit ARM template interpreter

christoph.goettschkes at microdoc.com christoph.goettschkes at microdoc.com
Mon Aug 19 16:12:06 UTC 2019


Hello,

I would like to backport the changset [1], which fixes the issue [2] in 
the jdk/jdk repository to the jdk11u. I originally found the issue while 
working with the OpenJDK 11 and the first provided fix has been develop 
using the jdk11u repository. The changeset [1] does not apply cleanly to 
jdk11u, since the jdk/jdk repository no longer contains the 64-bit arm 
code in the "hotspot/cpu/arm" source tree (only in hotspot/cpu/aarch64).

The backport fixes the use of an uninitialized register "Rtmep" in the 
template interpreter for the ldc2_w bytecode instruction on 32-bit ARM 
soft-fp platforms. The current implementation has the following two 
issues:
1. Loading a constant of type long most likely calls into the interpreter 
runtime and loads the constant using the slow path.
2. Loading a constant of type double could theoretically not call into the 
runtime, but load the value as if it would be of type long.
I did not experience the second issue, only the first one.

Could some please make the appropriate changes to the bug report? I can 
provide a patch and test the changes.

Thanks,
Christoph

[1]: http://hg.openjdk.java.net/jdk/jdk/rev/2e58f5d927a6
[2]: https://bugs.openjdk.java.net/browse/JDK-8229352



More information about the jdk-updates-dev mailing list