On Sun, 3 Oct 2021 13:08:58 GMT, Yasumasa Suenaga <ysuen...@openjdk.org> wrote:

> Use 
> [java.lang.Runtime.Version](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Runtime.Version.html)
>  to check the version of debugee.
> 
> Currently `checkVMVersion()` in `sun.jvm.hotspot.runtime.VM` has following 
> code to check the version of debugee.
> 
> 
>         if (saVersion.indexOf('-') == saVersion.lastIndexOf('-') &&
>             vmVersion.indexOf('-') == vmVersion.lastIndexOf('-')) {
>            // Throw exception if different release versions:
>            // <major>.<minor>-b<n>
>            throw new VMVersionMismatchException(saVersion, vmRelease);
>         } else {
>            // Otherwise print warning to allow mismatch not release versions
>            // during development.
>            System.err.println("WARNING: Hotspot VM version " + vmRelease +
>                               " does not match with SA version " + saVersion +
>                               "." + " You may see unexpected results. ");
>         }
> 
> 
> It seems to expect to allow the deference in option string only.
> For example, `saVersion` is "17+35", and `vmVersion` is "17+35-2724", then it 
> should be allowed because release version (17+35) is same. However current 
> code would not do so.
> 
> I guess this code is not based on [JEP 
> 223](https://openjdk.java.net/jeps/223) (New Version-String Scheme) because 
> the comment says "<major>.<minor>-b<n>". Fortunately we have 
> `Runtime.Version` to handle version strings. We should refactor with it.

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/VMVersionMismatchException.java
 line 37:

> 35: 
> 36:     public String getMessage() {
> 37:         return "Supported versions are " + supportedVersions.toString() +

Why do you call to `toString()` explicitly here? String concatenation will do 
it for you without it.

-------------

PR: https://git.openjdk.java.net/jdk/pull/5797

Reply via email to