Index: src/spaces.cc |
=================================================================== |
--- src/spaces.cc (revision 9014) |
+++ src/spaces.cc (working copy) |
@@ -2722,12 +2722,17 @@ |
LargeObjectChunk* chunk = reinterpret_cast<LargeObjectChunk*>(mem); |
chunk->size_ = size; |
- Page* page = Page::FromAddress(RoundUp(chunk->address(), Page::kPageSize)); |
- page->heap_ = isolate->heap(); |
+ chunk->GetPage()->heap_ = isolate->heap(); |
return chunk; |
} |
+void LargeObjectChunk::Free(Executability executable) { |
+ Isolate* isolate = GetPage()->heap_->isolate(); |
+ isolate->memory_allocator()->FreeRawMemory(address(), size(), executable); |
+} |
+ |
+ |
int LargeObjectChunk::ChunkSizeFor(int size_in_bytes) { |
int os_alignment = static_cast<int>(OS::AllocateAlignment()); |
if (os_alignment < Page::kPageSize) { |
@@ -2761,8 +2766,7 @@ |
LargeObjectChunk* chunk = first_chunk_; |
first_chunk_ = first_chunk_->next(); |
LOG(heap()->isolate(), DeleteEvent("LargeObjectChunk", chunk->address())); |
- Page* page = Page::FromAddress(RoundUp(chunk->address(), Page::kPageSize)); |
- Executability executable = page->PageExecutability(); |
+ Executability executable = chunk->GetPage()->PageExecutability(); |
ObjectSpace space = kObjectSpaceLoSpace; |
if (executable == EXECUTABLE) space = kObjectSpaceCodeSpace; |
size_t size = chunk->size(); |
@@ -2805,7 +2809,7 @@ |
first_chunk_ = chunk; |
// Initialize page header. |
- Page* page = Page::FromAddress(RoundUp(chunk->address(), Page::kPageSize)); |
+ Page* page = chunk->GetPage(); |
Address object_address = page->ObjectAreaStart(); |
// Clear the low order bit of the second word in the page to flag it as a |
@@ -2943,9 +2947,7 @@ |
previous = current; |
current = current->next(); |
} else { |
- Page* page = Page::FromAddress(RoundUp(current->address(), |
- Page::kPageSize)); |
- Executability executable = page->PageExecutability(); |
+ Executability executable = current->GetPage()->PageExecutability(); |
Address chunk_address = current->address(); |
size_t chunk_size = current->size(); |