Hi Matthias,
We don't use INCLUDE_CDS everywhere so we can avoid cluttering the code.
In many cases, functions called inside if (UseSharedSpaces) are declared
to have empty bodies. E.g.,
void VM_RedefineClasses::doit() {
Thread *thread = Thread::current();
if (UseSharedSpaces) {
// Sharing is enabled so we remap the shared readonly space to
// shared readwrite, private just in case we need to redefine
// a shared class. We do the remap during the doit() phase of
// the safepoint to be safer.
if (!MetaspaceShared::remap_shared_readonly_as_readwrite()) {
log_info(redefine, class, load)("failed to remap shared readonly
space to readwrite, private");
_res = JVMTI_ERROR_INTERNAL;
return;
}
}
class MetaspaceShared {
static bool remap_shared_readonly_as_readwrite() NOT_CDS_RETURN_(true);
So hopefully the C++ compile will just elide all the code inside the if
(!...) branch (also also the check for UseSharedSpaces). There may be a
few places where we should have added #if INCLUDE_CDS. For example,
InstanceKlass::restore_unshareable_info.
We are regularly building the minimal VM which doesn't have INCLUDE_CDS.
So it looks like the VM will be built correctly when INCLUDE_CDS is not
specified, but it probably has a bit of dead code.
Are you mainly trying to reduce the size of libjvm when CDS is not enabled?
Thanks
- Ioi
On 7/5/17 6:36 AM, Baesken, Matthias wrote:
Hello, when looking into CDS related build options, I noticed that most
code-parts that are executed only when UseSharedSpaces is set,
are guarded by the compile-time macro INCLUDE_CDS to support
switching off compilation of this coding
when CDS is disabled at compile time :
See hotspot/make/lib/JvmFeatures.gmk :
ifneq ($(call check-jvm-feature, cds), true)
JVM_CFLAGS_FEATURES += -DINCLUDE_CDS=0
However some places miss the compile-time guarding ( #if INCLUDE_CDS ....) for
example in
share/vm/prims/jvmtiRedefineClasses.cpp
share/vm/memory/universe.cpp
(also some other places)
Should I prepare a change and add the compile-time guard at the places where
missing as well ?
Best regards, Matthias