< prev index next >

src/hotspot/share/runtime/arguments.cpp

Print this page
@@ -3439,14 +3439,27 @@
  }
  
  void Arguments::set_compact_headers_flags() {
  #ifdef _LP64
    if (UseCompactObjectHeaders && !UseObjectMonitorTable) {
-     if (FLAG_IS_CMDLINE(UseObjectMonitorTable)) {
-       warning("-UseObjectMonitorTable is incompatible with +UseCompactObjectHeaders; ignoring -UseObjectMonitorTable");
+     // If UseCompactObjectHeaders is on the command line, turn on UseObjectMonitorTable.
+     if (FLAG_IS_CMDLINE(UseCompactObjectHeaders)) {
+       FLAG_SET_DEFAULT(UseObjectMonitorTable, true);
+ 
+       // If UseObjectMonitorTable is on the command line, turn off UseCompactObjectHeaders.
+     } else if (FLAG_IS_CMDLINE(UseObjectMonitorTable)) {
+       FLAG_SET_DEFAULT(UseCompactObjectHeaders, false);
+       // If neither on the command line, the defaults are incompatible, but turn on UseObjectMonitorTable.
+     } else {
+       FLAG_SET_DEFAULT(UseObjectMonitorTable, true);
      }
-     FLAG_SET_DEFAULT(UseObjectMonitorTable, true);
+   }
+   if (UseCompactObjectHeaders && FLAG_IS_DEFAULT(hashCode)) {
+     hashCode = 6;
+   }
+   if (UseCompactObjectHeaders && FLAG_IS_DEFAULT(CompressedClassSpaceSize)) {
+     FLAG_SET_DEFAULT(CompressedClassSpaceSize, CompressedKlassPointers::max_klass_range_size_coh);
    }
  #endif
  }
  
  jint Arguments::apply_ergo() {
< prev index next >