Avoid register pool allocations on the heap.
Create a helper template class ArrayRef and use it instead
of std::vector<> for register pools in target_<arch>.cc to
avoid these heap allocations during program startup.
Change-Id: I4ab0205af9c1d28a239c0a105fcdc60ba800a70a
diff --git a/compiler/dex/quick/ralloc_util.cc b/compiler/dex/quick/ralloc_util.cc
index 2303c62..bbeef50 100644
--- a/compiler/dex/quick/ralloc_util.cc
+++ b/compiler/dex/quick/ralloc_util.cc
@@ -56,16 +56,16 @@
}
Mir2Lir::RegisterPool::RegisterPool(Mir2Lir* m2l, ArenaAllocator* arena,
- const std::vector<RegStorage>& core_regs,
- const std::vector<RegStorage>& core64_regs,
- const std::vector<RegStorage>& sp_regs,
- const std::vector<RegStorage>& dp_regs,
- const std::vector<RegStorage>& reserved_regs,
- const std::vector<RegStorage>& reserved64_regs,
- const std::vector<RegStorage>& core_temps,
- const std::vector<RegStorage>& core64_temps,
- const std::vector<RegStorage>& sp_temps,
- const std::vector<RegStorage>& dp_temps) :
+ const ArrayRef<const RegStorage>& core_regs,
+ const ArrayRef<const RegStorage>& core64_regs,
+ const ArrayRef<const RegStorage>& sp_regs,
+ const ArrayRef<const RegStorage>& dp_regs,
+ const ArrayRef<const RegStorage>& reserved_regs,
+ const ArrayRef<const RegStorage>& reserved64_regs,
+ const ArrayRef<const RegStorage>& core_temps,
+ const ArrayRef<const RegStorage>& core64_temps,
+ const ArrayRef<const RegStorage>& sp_temps,
+ const ArrayRef<const RegStorage>& dp_temps) :
core_regs_(arena, core_regs.size()), next_core_reg_(0),
core64_regs_(arena, core64_regs.size()), next_core64_reg_(0),
sp_regs_(arena, sp_regs.size()), next_sp_reg_(0),