summaryrefslogtreecommitdiffstats
path: root/runtime/runtime.h
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2015-03-27 14:35:38 -0700
committerMathieu Chartier <mathieuc@google.com>2015-04-10 12:57:27 -0700
commitc785344b87221f5e4e6473e5b762e4e61fe65dcf (patch)
treecd32ad2c2604596a18926f04d4c313dab255ecfd /runtime/runtime.h
parenta29d93b380c9aeb8270e281aefbdd0c77a430d43 (diff)
downloadandroid_art-c785344b87221f5e4e6473e5b762e4e61fe65dcf.tar.gz
android_art-c785344b87221f5e4e6473e5b762e4e61fe65dcf.tar.bz2
android_art-c785344b87221f5e4e6473e5b762e4e61fe65dcf.zip
Move ArtField to native
Add linear alloc. Moved ArtField to be native object. Changed image writer to put ArtFields after the mirror section. Savings: 2MB on low ram devices 4MB on normal devices Total PSS measurements before (normal N5, 95s after shell start): Image size: 7729152 bytes 23112 kB: .NonMoving 23212 kB: .NonMoving 22868 kB: .NonMoving 23072 kB: .NonMoving 22836 kB: .NonMoving 19618 kB: .Zygote 19850 kB: .Zygote 19623 kB: .Zygote 19924 kB: .Zygote 19612 kB: .Zygote Avg: 42745.4 kB After: Image size: 7462912 bytes 17440 kB: .NonMoving 16776 kB: .NonMoving 16804 kB: .NonMoving 17812 kB: .NonMoving 16820 kB: .NonMoving 18788 kB: .Zygote 18856 kB: .Zygote 19064 kB: .Zygote 18841 kB: .Zygote 18629 kB: .Zygote 3499 kB: .LinearAlloc 3408 kB: .LinearAlloc 3424 kB: .LinearAlloc 3600 kB: .LinearAlloc 3436 kB: .LinearAlloc Avg: 39439.4 kB No reflection performance changes. Bug: 19264997 Bug: 17643507 Change-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c
Diffstat (limited to 'runtime/runtime.h')
-rw-r--r--runtime/runtime.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/runtime/runtime.h b/runtime/runtime.h
index baa4d18da8..d95640dea6 100644
--- a/runtime/runtime.h
+++ b/runtime/runtime.h
@@ -42,6 +42,7 @@ namespace art {
class ArenaPool;
class CompilerCallbacks;
+class LinearAlloc;
namespace gc {
class Heap;
@@ -549,6 +550,9 @@ class Runtime {
const ArenaPool* GetArenaPool() const {
return arena_pool_.get();
}
+ LinearAlloc* GetLinearAlloc() {
+ return linear_alloc_.get();
+ }
jit::JitOptions* GetJITOptions() {
return jit_options_.get();
@@ -618,6 +622,13 @@ class Runtime {
gc::Heap* heap_;
std::unique_ptr<ArenaPool> arena_pool_;
+ // Special low 4gb pool for compiler linear alloc. We need ArtFields to be in low 4gb if we are
+ // compiling using a 32 bit image on a 64 bit compiler in case we resolve things in the image
+ // since the field arrays are int arrays in this case.
+ std::unique_ptr<ArenaPool> low_4gb_arena_pool_;
+
+ // Shared linear alloc for now.
+ std::unique_ptr<LinearAlloc> linear_alloc_;
// The number of spins that are done before thread suspension is used to forcibly inflate.
size_t max_spins_before_thin_lock_inflation_;