diff options
Diffstat (limited to 'runtime/gc/space/large_object_space.cc')
-rw-r--r-- | runtime/gc/space/large_object_space.cc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/runtime/gc/space/large_object_space.cc b/runtime/gc/space/large_object_space.cc index c6d028e..1321b19 100644 --- a/runtime/gc/space/large_object_space.cc +++ b/runtime/gc/space/large_object_space.cc @@ -56,10 +56,13 @@ LargeObjectMapSpace* LargeObjectMapSpace::Create(const std::string& name) { return new LargeObjectMapSpace(name); } -mirror::Object* LargeObjectMapSpace::Alloc(Thread* self, size_t num_bytes, size_t* bytes_allocated) { +mirror::Object* LargeObjectMapSpace::Alloc(Thread* self, size_t num_bytes, + size_t* bytes_allocated) { + std::string error_msg; MemMap* mem_map = MemMap::MapAnonymous("large object space allocation", NULL, num_bytes, - PROT_READ | PROT_WRITE); - if (mem_map == NULL) { + PROT_READ | PROT_WRITE, &error_msg); + if (UNLIKELY(mem_map == NULL)) { + LOG(WARNING) << "Large object allocation failed: " << error_msg; return NULL; } MutexLock mu(self, lock_); @@ -129,9 +132,10 @@ bool LargeObjectMapSpace::Contains(const mirror::Object* obj) const { FreeListSpace* FreeListSpace::Create(const std::string& name, byte* requested_begin, size_t size) { CHECK_EQ(size % kAlignment, 0U); + std::string error_msg; MemMap* mem_map = MemMap::MapAnonymous(name.c_str(), requested_begin, size, - PROT_READ | PROT_WRITE); - CHECK(mem_map != NULL) << "Failed to allocate large object space mem map"; + PROT_READ | PROT_WRITE, &error_msg); + CHECK(mem_map != NULL) << "Failed to allocate large object space mem map: " << error_msg; return new FreeListSpace(name, mem_map, mem_map->Begin(), mem_map->End()); } |