diff options
author | Vladimir Marko <vmarko@google.com> | 2018-07-26 14:42:17 +0100 |
---|---|---|
committer | Vladimir Marko <vmarko@google.com> | 2018-08-02 15:47:02 +0100 |
commit | ced04835d8e3cd3f68576cfffc1d21283ca151b4 (patch) | |
tree | 125ddd1d222f4fb1710e17c76803ad3e92572a5c /compiler/driver/compiler_options.cc | |
parent | 350b6a312222b9b27bfee0e72ce261a45cb60e1c (diff) |
Reuse arena memory for each block in scheduler.
This reduces the peak memory used for large methods with
multiple blocks to schedule.
Compiling the aosp_taimen-userdebug boot image, the most
memory hungry method BatteryStats.dumpLocked has the
Scheduler memory allocations in ArenaStack hidden by the
register allocator:
- before:
MEM: used: 8300224, allocated: 9175040, lost: 197360
Scheduler 8300224
- after:
MEM: used: 5914296, allocated: 7864320, lost: 78200
SsaLiveness 5532840
RegAllocator 144968
RegAllocVldt 236488
The total arena memory used, including the ArenaAllocator
not listed above, goes from 44333648 to 41950324 (-5.4%).
(Measured with kArenaAllocatorCountAllocations=true,
kArenaAllocatorPreciseTracking=false.)
Also remove one unnecessary -Wframe-larger-than= workaround
and add one workaround for large frame with the above arena
alloc tracking flags.
Test: m test-art-host-gtest
Test: testrunner.py --host
Bug: 34053922
Change-Id: I7fd8d90dcc13b184b1e5bd0bcac072388710a129
Diffstat (limited to 'compiler/driver/compiler_options.cc')
-rw-r--r-- | compiler/driver/compiler_options.cc | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/compiler/driver/compiler_options.cc b/compiler/driver/compiler_options.cc index 62d547de44..8cc6cf10f0 100644 --- a/compiler/driver/compiler_options.cc +++ b/compiler/driver/compiler_options.cc @@ -116,9 +116,6 @@ bool CompilerOptions::ParseRegisterAllocationStrategy(const std::string& option, return true; } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wframe-larger-than=" - bool CompilerOptions::ParseCompilerOptions(const std::vector<std::string>& options, bool ignore_unrecognized, std::string* error_msg) { @@ -133,8 +130,6 @@ bool CompilerOptions::ParseCompilerOptions(const std::vector<std::string>& optio return ReadCompilerOptions(args, this, error_msg); } -#pragma GCC diagnostic pop - bool CompilerOptions::IsImageClass(const char* descriptor) const { // Historical note: We used to hold the set indirectly and there was a distinction between an // empty set and a null, null meaning to include all classes. However, the distiction has been |