RFR 7041262: VM_Version should be called instead of Abstract_VM_Version so that overriding works
David Holmes
david.holmes at oracle.com
Tue Oct 16 05:14:02 UTC 2018
Hi Harold,
On 13/10/2018 1:31 AM, Harold David Seigel wrote:
> Hi,
>
> Please review this fix for JDK-7041262. The fix changes calls to
> Abstract_VM_Version functions to instead call VM_Version functions. See
> details in the bug.
There is an issue with the vm_info_string() changes.
On ARM32 we have an "overriding" version of VM_Version::VM_info_string()
which will now get called from vmError.cpp. I think the ARM version can
be deleted - it was only put in place to add "experimental" to features
used in the ARM build, but that has all been superseded now.
In thread.cpp you changed the comment:
! // is initially computed. See Abstract_VM_Version::vm_info_string().
! // is initially computed. See VM_Version::vm_info_string().
but the code you are being referred to actually is defined in
Abstract_VM_version::vm_info_string().
---
We now call VM_Version::foo() all the time instead of
Abstract_VM_Version::foo() even though foo() is only "overridden" in a
handful of cases, and sometimes there is no base version! I think in
places we only ever want to have one definition of foo() - e.g. the main
version functions:
static int vm_major_version() { return _vm_major_version; }
static int vm_minor_version() { return _vm_minor_version; }
static int vm_security_version() { return
_vm_security_version; }
static int vm_patch_version() { return _vm_patch_version; }
static int vm_build_number() { return _vm_build_number; }
should not, in all probability, ever be "overridden". In that case we
really should call them via Abstract_VM_Version::foo(). But there's no
way to express methods that should not be "overridden". :( I think the
real answer here (not for this change) is to handle VM_Version the way
we handle the os class, and to only generate a single class containing
both shared and platform-specific components. That might also allow us
to do away with the "parallel work threads" mess:
static unsigned int nof_parallel_worker_threads(...);
static unsigned int parallel_worker_threads();
static unsigned int calc_parallel_worker_threads();
Huh! ???
---
For this change if you address the vm_info_string issues I flagged that
suffices - thanks.
I think I may adapt the JBS issue for handling VM_Version_ext so that it
collapses all this into a single class.
Thanks,
David
-----
> Open Webrev:
> http://cr.openjdk.java.net/~hseigel/bug_7041262/webrev/index.html
>
> JBS Bug: https://bugs.openjdk.java.net/browse/JDK-7041262
>
> The fix was tested by running Mach5 tiers 1 and 2 tests and builds on
> Linux-x64, Windows, and Mac OS X, running tiers 3-5 tests on Linux-x64,
> and by running JCK-12 Lang and VM tests on Linux-x64. I also did test
> builds on zero, minimal, and aarch64.
>
> Thanks, Harold
>
More information about the hotspot-runtime-dev
mailing list