From 174b2e27ebf933b80f4e8b64b4b024ab4306aaac Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Thu, 12 Oct 2017 13:34:49 +0100 Subject: Use ScopedArenaAllocator for code generation. Reuse the memory previously allocated on the ArenaStack by optimization passes. This CL handles only the architecture-independent codegen and slow paths, architecture-dependent codegen allocations shall be moved to the ScopedArenaAllocator in a follow-up. Memory needed to compile the two most expensive methods for aosp_angler-userdebug boot image: BatteryStats.dumpCheckinLocked() : 19.6MiB -> 18.5MiB (-1189KiB) BatteryStats.dumpLocked(): 39.3MiB -> 37.0MiB (-2379KiB) Also move definitions of functions that use bit_vector-inl.h from bit_vector.h also to bit_vector-inl.h . Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 64312607 Change-Id: I84688c3a5a95bf90f56bd3a150bc31fedc95f29c --- compiler/optimizing/stack_map_test.cc | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'compiler/optimizing/stack_map_test.cc') diff --git a/compiler/optimizing/stack_map_test.cc b/compiler/optimizing/stack_map_test.cc index 96ac368ac3..91f86d5c50 100644 --- a/compiler/optimizing/stack_map_test.cc +++ b/compiler/optimizing/stack_map_test.cc @@ -47,7 +47,8 @@ using Kind = DexRegisterLocation::Kind; TEST(StackMapTest, Test1) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArenaBitVector sp_mask(&allocator, 0, false); @@ -128,7 +129,8 @@ TEST(StackMapTest, Test1) { TEST(StackMapTest, Test2) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArtMethod art_method; @@ -412,7 +414,8 @@ TEST(StackMapTest, Test2) { TEST(StackMapTest, TestDeduplicateInlineInfoDexRegisterMap) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArtMethod art_method; @@ -506,7 +509,8 @@ TEST(StackMapTest, TestDeduplicateInlineInfoDexRegisterMap) { TEST(StackMapTest, TestNonLiveDexRegisters) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArenaBitVector sp_mask(&allocator, 0, false); @@ -585,7 +589,8 @@ TEST(StackMapTest, TestNonLiveDexRegisters) { // not treat it as kNoDexRegisterMap. TEST(StackMapTest, DexRegisterMapOffsetOverflow) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArenaBitVector sp_mask(&allocator, 0, false); @@ -648,7 +653,8 @@ TEST(StackMapTest, DexRegisterMapOffsetOverflow) { TEST(StackMapTest, TestShareDexRegisterMap) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArenaBitVector sp_mask(&allocator, 0, false); @@ -706,7 +712,8 @@ TEST(StackMapTest, TestShareDexRegisterMap) { TEST(StackMapTest, TestNoDexRegisterMap) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArenaBitVector sp_mask(&allocator, 0, false); @@ -755,7 +762,8 @@ TEST(StackMapTest, TestNoDexRegisterMap) { TEST(StackMapTest, InlineTest) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArtMethod art_method; @@ -936,7 +944,8 @@ TEST(StackMapTest, CodeOffsetTest) { TEST(StackMapTest, TestDeduplicateStackMask) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArenaBitVector sp_mask(&allocator, 0, true); @@ -964,7 +973,8 @@ TEST(StackMapTest, TestDeduplicateStackMask) { TEST(StackMapTest, TestInvokeInfo) { ArenaPool pool; - ArenaAllocator allocator(&pool); + ArenaStack arena_stack(&pool); + ScopedArenaAllocator allocator(&arena_stack); StackMapStream stream(&allocator, kRuntimeISA); ArenaBitVector sp_mask(&allocator, 0, true); -- cgit v1.2.3-59-g8ed1b