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