OSDN Git Service

ART: Clean up arena allocation memory tracking.
authorVladimir Marko <vmarko@google.com>
Tue, 22 Mar 2016 16:26:33 +0000 (16:26 +0000)
committerVladimir Marko <vmarko@google.com>
Tue, 22 Mar 2016 16:26:33 +0000 (16:26 +0000)
Remove unused allocation types, mostly from removed Quick.
Move logging one level up to capture memory used by stack
maps during AOT compilation. Raise the reporting threshold
to 8MiB to limit the output to the worst offenders.

Change-Id: I8c7a01bfa90bc8ec5eab66187eb6850a022f3543

compiler/optimizing/optimizing_compiler.cc
runtime/base/arena_allocator.cc
runtime/base/arena_allocator.h

index 4d2469c..f1c5581 100644 (file)
@@ -84,6 +84,8 @@
 
 namespace art {
 
+static constexpr size_t kArenaAllocatorMemoryReportThreshold = 8 * MB;
+
 /**
  * Used by the code generator, to allocate the code in a vector.
  */
@@ -761,13 +763,6 @@ CodeGenerator* OptimizingCompiler::TryCompile(ArenaAllocator* arena,
     pass_observer.DumpDisassembly();
   }
 
-  if (kArenaAllocatorCountAllocations) {
-    if (arena->BytesAllocated() > 4 * MB) {
-      MemStats mem_stats(arena->GetMemStats());
-      LOG(INFO) << PrettyMethod(method_idx, dex_file) << " " << Dumpable<MemStats>(mem_stats);
-    }
-  }
-
   return codegen.release();
 }
 
@@ -812,6 +807,13 @@ CompiledMethod* OptimizingCompiler::Compile(const DexFile::CodeItem* code_item,
     if (codegen.get() != nullptr) {
       MaybeRecordStat(MethodCompilationStat::kCompiled);
       method = Emit(&arena, &code_allocator, codegen.get(), compiler_driver, code_item);
+
+      if (kArenaAllocatorCountAllocations) {
+        if (arena.BytesAllocated() > kArenaAllocatorMemoryReportThreshold) {
+          MemStats mem_stats(arena.GetMemStats());
+          LOG(INFO) << PrettyMethod(method_idx, dex_file) << " " << Dumpable<MemStats>(mem_stats);
+        }
+      }
     }
   } else {
     if (compiler_driver->GetCompilerOptions().VerifyAtRuntime()) {
@@ -890,6 +892,13 @@ bool OptimizingCompiler::JitCompile(Thread* self,
     if (codegen.get() == nullptr) {
       return false;
     }
+
+    if (kArenaAllocatorCountAllocations) {
+      if (arena.BytesAllocated() > kArenaAllocatorMemoryReportThreshold) {
+        MemStats mem_stats(arena.GetMemStats());
+        LOG(INFO) << PrettyMethod(method_idx, *dex_file) << " " << Dumpable<MemStats>(mem_stats);
+      }
+    }
   }
 
   size_t stack_map_size = codegen->ComputeStackMapsSize();
index 7539943..70ff60f 100644 (file)
@@ -33,27 +33,9 @@ constexpr size_t Arena::kDefaultSize;
 template <bool kCount>
 const char* const ArenaAllocatorStatsImpl<kCount>::kAllocNames[] = {
   "Misc         ",
-  "BBList       ",
-  "BBPreds      ",
-  "DfsPreOrd    ",
-  "DfsPostOrd   ",
-  "DomPostOrd   ",
-  "TopoOrd      ",
-  "Lowering     ",
-  "LIR          ",
-  "LIR masks    ",
   "SwitchTbl    ",
-  "FillArray    ",
   "SlowPaths    ",
-  "MIR          ",
-  "DataFlow     ",
-  "GrowList     ",
   "GrowBitMap   ",
-  "SSA2Dalvik   ",
-  "Dalvik2SSA   ",
-  "DebugInfo    ",
-  "RegAlloc     ",
-  "Data         ",
   "STL          ",
   "GraphBuilder ",
   "Graph        ",
@@ -80,7 +62,6 @@ const char* const ArenaAllocatorStatsImpl<kCount>::kAllocNames[] = {
   "MoveOperands ",
   "CodeBuffer   ",
   "StackMaps    ",
-  "BaselineMaps ",
   "Optimization ",
   "GVN          ",
   "InductionVar ",
@@ -91,7 +72,6 @@ const char* const ArenaAllocatorStatsImpl<kCount>::kAllocNames[] = {
   "SsaLiveness  ",
   "SsaPhiElim   ",
   "RefTypeProp  ",
-  "PrimTypeProp ",
   "SideEffects  ",
   "RegAllocator ",
   "RegAllocVldt ",
index f8f7396..697f7e0 100644 (file)
@@ -44,27 +44,9 @@ static constexpr bool kArenaAllocatorCountAllocations = false;
 // Type of allocation for memory tuning.
 enum ArenaAllocKind {
   kArenaAllocMisc,
-  kArenaAllocBBList,
-  kArenaAllocBBPredecessors,
-  kArenaAllocDfsPreOrder,
-  kArenaAllocDfsPostOrder,
-  kArenaAllocDomPostOrder,
-  kArenaAllocTopologicalSortOrder,
-  kArenaAllocLoweringInfo,
-  kArenaAllocLIR,
-  kArenaAllocLIRResourceMask,
   kArenaAllocSwitchTable,
-  kArenaAllocFillArrayData,
   kArenaAllocSlowPaths,
-  kArenaAllocMIR,
-  kArenaAllocDFInfo,
-  kArenaAllocGrowableArray,
   kArenaAllocGrowableBitMap,
-  kArenaAllocSSAToDalvikMap,
-  kArenaAllocDalvikToSSAMap,
-  kArenaAllocDebugInfo,
-  kArenaAllocRegAlloc,
-  kArenaAllocData,
   kArenaAllocSTL,
   kArenaAllocGraphBuilder,
   kArenaAllocGraph,
@@ -91,7 +73,6 @@ enum ArenaAllocKind {
   kArenaAllocMoveOperands,
   kArenaAllocCodeBuffer,
   kArenaAllocStackMaps,
-  kArenaAllocBaselineMaps,
   kArenaAllocOptimization,
   kArenaAllocGvn,
   kArenaAllocInductionVarAnalysis,
@@ -102,7 +83,6 @@ enum ArenaAllocKind {
   kArenaAllocSsaLiveness,
   kArenaAllocSsaPhiElimination,
   kArenaAllocReferenceTypePropagation,
-  kArenaAllocPrimitiveTypePropagation,
   kArenaAllocSideEffectsAnalysis,
   kArenaAllocRegisterAllocator,
   kArenaAllocRegisterAllocatorValidate,