diff options
author | Mathieu Chartier <mathieuc@google.com> | 2013-11-21 11:48:14 -0800 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2013-11-22 15:46:13 -0800 |
commit | 50482234bed852766498321f71d2ff5e46e4fec2 (patch) | |
tree | 50f7d54b3696e6d6c1fcafaa0235d64356a74436 /runtime/globals.h | |
parent | b6b4c459ef823ba62696796542519655c79423c2 (diff) | |
download | art-50482234bed852766498321f71d2ff5e46e4fec2.zip art-50482234bed852766498321f71d2ff5e46e4fec2.tar.gz art-50482234bed852766498321f71d2ff5e46e4fec2.tar.bz2 |
Compact zygote.
We now start out using the bump pointer allocator and switch to
the free list collector (ROSAlloc) after the zygote forks.
Before compaction:
Zygote size: 9060352
After compaction
Zygote size: 8425864
The main reason the size doesn't reduce more is that most of the
zygote space is non-movable objects allocated by
VMRuntime.newNonMovableObject. The objects which are non-movable
but could be movable include around 10000 classes and some number
of fields and methods.
Bug: 8981901
Change-Id: Iea21b70fb7af27cb7e92d72070d278a5cd4026ac
Diffstat (limited to 'runtime/globals.h')
-rw-r--r-- | runtime/globals.h | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/runtime/globals.h b/runtime/globals.h index 1a25dfa..c2fe67e 100644 --- a/runtime/globals.h +++ b/runtime/globals.h @@ -26,61 +26,61 @@ typedef uint8_t byte; typedef intptr_t word; typedef uintptr_t uword; -const size_t KB = 1024; -const size_t MB = KB * KB; -const size_t GB = KB * KB * KB; +static constexpr size_t KB = 1024; +static constexpr size_t MB = KB * KB; +static constexpr size_t GB = KB * KB * KB; -const size_t kWordSize = sizeof(word); -const size_t kPointerSize = sizeof(void*); +static constexpr size_t kWordSize = sizeof(word); +static constexpr size_t kPointerSize = sizeof(void*); -const size_t kBitsPerByte = 8; -const size_t kBitsPerByteLog2 = 3; -const int kBitsPerWord = kWordSize * kBitsPerByte; -const size_t kWordHighBitMask = 1 << (kBitsPerWord - 1); +static constexpr size_t kBitsPerByte = 8; +static constexpr size_t kBitsPerByteLog2 = 3; +static constexpr int kBitsPerWord = kWordSize * kBitsPerByte; +static constexpr size_t kWordHighBitMask = 1 << (kBitsPerWord - 1); // Required stack alignment -const size_t kStackAlignment = 16; +static constexpr size_t kStackAlignment = 16; // Required object alignment -const size_t kObjectAlignment = 8; +static constexpr size_t kObjectAlignment = 8; // ARM instruction alignment. ARM processors require code to be 4-byte aligned, // but ARM ELF requires 8.. -const size_t kArmAlignment = 8; +static constexpr size_t kArmAlignment = 8; // MIPS instruction alignment. MIPS processors require code to be 4-byte aligned. // TODO: Can this be 4? -const size_t kMipsAlignment = 8; +static constexpr size_t kMipsAlignment = 8; // X86 instruction alignment. This is the recommended alignment for maximum performance. -const size_t kX86Alignment = 16; +static constexpr size_t kX86Alignment = 16; // System page size. We check this against sysconf(_SC_PAGE_SIZE) at runtime, but use a simple // compile-time constant so the compiler can generate better code. -const int kPageSize = 4096; +static constexpr int kPageSize = 4096; // Whether or not this is a debug build. Useful in conditionals where NDEBUG isn't. #if defined(NDEBUG) -const bool kIsDebugBuild = false; +static constexpr bool kIsDebugBuild = false; #else -const bool kIsDebugBuild = true; +static constexpr bool kIsDebugBuild = true; #endif // Whether or not this is a target (vs host) build. Useful in conditionals where ART_TARGET isn't. #if defined(ART_TARGET) -const bool kIsTargetBuild = true; +static constexpr bool kIsTargetBuild = true; #else -const bool kIsTargetBuild = false; +static constexpr bool kIsTargetBuild = false; #endif #if defined(ART_USE_PORTABLE_COMPILER) -constexpr bool kUsePortableCompiler = true; +static constexpr bool kUsePortableCompiler = true; #else -constexpr bool kUsePortableCompiler = false; +static constexpr bool kUsePortableCompiler = false; #endif // Garbage collector constants. -static constexpr bool kMovingCollector = false && !kUsePortableCompiler; +static constexpr bool kMovingCollector = true && !kUsePortableCompiler; // True if we allow moving classes. static constexpr bool kMovingClasses = false; // True if we allow moving fields. |