Separate oat from image
Change-Id: If2abdb99826ead14e3465d90ba2acffd89709389
diff --git a/src/heap.cc b/src/heap.cc
index 015f638..2051051 100644
--- a/src/heap.cc
+++ b/src/heap.cc
@@ -74,7 +74,9 @@
LOG(FATAL) << "Failed to create space from " << boot_image_file_name;
}
spaces_.push_back(boot_space);
- requested_base = boot_space->GetBase() + RoundUp(boot_space->Size(), kPageSize);
+ byte* oat_limit_addr = boot_space->GetImageHeader().GetOatLimitAddr();
+ requested_base = reinterpret_cast<byte*>(RoundUp(reinterpret_cast<uintptr_t>(oat_limit_addr),
+ kPageSize));
}
std::vector<Space*> image_spaces;
@@ -85,7 +87,9 @@
}
image_spaces.push_back(space);
spaces_.push_back(space);
- requested_base = space->GetBase() + RoundUp(space->Size(), kPageSize);
+ byte* oat_limit_addr = space->GetImageHeader().GetOatLimitAddr();
+ requested_base = reinterpret_cast<byte*>(RoundUp(reinterpret_cast<uintptr_t>(oat_limit_addr),
+ kPageSize));
}
Space* space = Space::Create(initial_size, maximum_size, requested_base);