Disable HomogeneousSpaceCompact for GSS collector

HomogeneousSpaceCompact is not suitable when GSS is forground collector.
This will fix issue that device can not boot with GSS collecor.

Change-Id: Iafdf431c207351571f41bbc9196dff02ba674ab4
Signed-off-by: Lin Zang <lin.zang@intel.com>
diff --git a/runtime/gc/space/malloc_space.cc b/runtime/gc/space/malloc_space.cc
index 43a2c59..7905bb4 100644
--- a/runtime/gc/space/malloc_space.cc
+++ b/runtime/gc/space/malloc_space.cc
@@ -173,7 +173,8 @@
   // stored in between objects.
   // Remaining size is for the new alloc space.
   const size_t growth_limit = growth_limit_ - size;
-  const size_t capacity = Capacity() - size;
+  // Use mem map limit in case error for clear growth limit.
+  const size_t capacity = NonGrowthLimitCapacity() - size;
   VLOG(heap) << "Begin " << reinterpret_cast<const void*>(begin_) << "\n"
              << "End " << reinterpret_cast<const void*>(End()) << "\n"
              << "Size " << size << "\n"
diff --git a/runtime/parsed_options.cc b/runtime/parsed_options.cc
index 3e6c86b..1b992d5 100644
--- a/runtime/parsed_options.cc
+++ b/runtime/parsed_options.cc
@@ -691,11 +691,16 @@
       return false;
     }
   }
-  // If not set, background collector type defaults to homogeneous compaction
-  // if not low memory mode, semispace otherwise.
+  // If not set, background collector type defaults to homogeneous compaction.
+  // If foreground is GSS, use GSS as background collector.
+  // If not low memory mode, semispace otherwise.
   if (background_collector_type_ == gc::kCollectorTypeNone) {
-    background_collector_type_ = low_memory_mode_ ?
-        gc::kCollectorTypeSS : gc::kCollectorTypeHomogeneousSpaceCompact;
+    if (collector_type_ != gc::kCollectorTypeGSS) {
+      background_collector_type_ = low_memory_mode_ ?
+          gc::kCollectorTypeSS : gc::kCollectorTypeHomogeneousSpaceCompact;
+    } else {
+      background_collector_type_ = collector_type_;
+    }
   }
 
   // If a reference to the dalvik core.jar snuck in, replace it with
@@ -722,9 +727,6 @@
   if (heap_growth_limit_ == 0) {
     heap_growth_limit_ = heap_maximum_size_;
   }
-  if (background_collector_type_ == gc::kCollectorTypeNone) {
-    background_collector_type_ = collector_type_;
-  }
   return true;
 }  // NOLINT(readability/fn_size)