diff options
| -rw-r--r-- | runtime/gc/accounting/card_table.h | 2 | ||||
| -rw-r--r-- | runtime/gc/space/image_space.cc | 3 | ||||
| -rw-r--r-- | runtime/generated/asm_support_gen.h | 2 | ||||
| -rw-r--r-- | runtime/oat.h | 4 |
4 files changed, 6 insertions, 5 deletions
diff --git a/runtime/gc/accounting/card_table.h b/runtime/gc/accounting/card_table.h index 14aa730745..c3dd21f113 100644 --- a/runtime/gc/accounting/card_table.h +++ b/runtime/gc/accounting/card_table.h @@ -47,7 +47,7 @@ template<size_t kAlignment> class SpaceBitmap; // WriteBarrier, and from there to here. class CardTable { public: - static constexpr size_t kCardShift = 7; + static constexpr size_t kCardShift = 10; static constexpr size_t kCardSize = 1 << kCardShift; static constexpr uint8_t kCardClean = 0x0; static constexpr uint8_t kCardDirty = 0x70; diff --git a/runtime/gc/space/image_space.cc b/runtime/gc/space/image_space.cc index e9f0758b85..238e87e1cf 100644 --- a/runtime/gc/space/image_space.cc +++ b/runtime/gc/space/image_space.cc @@ -651,7 +651,8 @@ class ImageSpaceLoader { bitmap_name, image_bitmap_map.release(), reinterpret_cast<uint8_t*>(map->Begin()), - image_objects.End())); + // Make sure the bitmap is aligned to card size instead of just bitmap word size. + RoundUp(image_objects.End(), gc::accounting::CardTable::kCardSize))); if (bitmap == nullptr) { *error_msg = StringPrintf("Could not create bitmap '%s'", bitmap_name.c_str()); return nullptr; diff --git a/runtime/generated/asm_support_gen.h b/runtime/generated/asm_support_gen.h index 4af562560c..06638e712c 100644 --- a/runtime/generated/asm_support_gen.h +++ b/runtime/generated/asm_support_gen.h @@ -78,7 +78,7 @@ DEFINE_CHECK_EQ(static_cast<int32_t>(STRING_DEX_CACHE_SIZE_MINUS_ONE), (static_c DEFINE_CHECK_EQ(static_cast<int32_t>(STRING_DEX_CACHE_HASH_BITS), (static_cast<int32_t>(art::LeastSignificantBit(art::mirror::DexCache::kDexCacheStringCacheSize)))) #define STRING_DEX_CACHE_ELEMENT_SIZE 8 DEFINE_CHECK_EQ(static_cast<int32_t>(STRING_DEX_CACHE_ELEMENT_SIZE), (static_cast<int32_t>(sizeof(art::mirror::StringDexCachePair)))) -#define CARD_TABLE_CARD_SHIFT 0x7 +#define CARD_TABLE_CARD_SHIFT 0xa DEFINE_CHECK_EQ(static_cast<size_t>(CARD_TABLE_CARD_SHIFT), (static_cast<size_t>(art::gc::accounting::CardTable::kCardShift))) #define MIN_LARGE_OBJECT_THRESHOLD 0x3000 DEFINE_CHECK_EQ(static_cast<size_t>(MIN_LARGE_OBJECT_THRESHOLD), (static_cast<size_t>(art::gc::Heap::kMinLargeObjectThreshold))) diff --git a/runtime/oat.h b/runtime/oat.h index 84ca2a6f4e..e0fd1a2b2a 100644 --- a/runtime/oat.h +++ b/runtime/oat.h @@ -32,8 +32,8 @@ class InstructionSetFeatures; class PACKED(4) OatHeader { public: static constexpr uint8_t kOatMagic[] = { 'o', 'a', 't', '\n' }; - // Go back to checking is_marking for x86 and x86_64. - static constexpr uint8_t kOatVersion[] = { '1', '2', '0', '\0' }; + // Increase GC card size. + static constexpr uint8_t kOatVersion[] = { '1', '2', '1', '\0' }; static constexpr const char* kImageLocationKey = "image-location"; static constexpr const char* kDex2OatCmdLineKey = "dex2oat-cmdline"; |