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

Reply via email to