Revision: 9017
Author: [email protected]
Date: Thu Aug 25 06:35:15 2011
Log: Two tiny refactorings: Removed a bit of copy-n-paste. Moved
LargeObjectChunk::Free from header to implementation, it does a syscall,
anyway.
Review URL: http://codereview.chromium.org/7744023
http://code.google.com/p/v8/source/detail?r=9017
Modified:
/branches/bleeding_edge/src/spaces-inl.h
/branches/bleeding_edge/src/spaces.cc
/branches/bleeding_edge/src/spaces.h
=======================================
--- /branches/bleeding_edge/src/spaces-inl.h Thu Aug 25 03:55:44 2011
+++ /branches/bleeding_edge/src/spaces-inl.h Thu Aug 25 06:35:15 2011
@@ -432,23 +432,6 @@
return Failure::RetryAfterGC(identity());
}
-
-//
-----------------------------------------------------------------------------
-// LargeObjectChunk
-
-Address LargeObjectChunk::GetStartAddress() {
- // Round the chunk address up to the nearest page-aligned address
- // and return the heap object in that page.
- Page* page = Page::FromAddress(RoundUp(address(), Page::kPageSize));
- return page->ObjectAreaStart();
-}
-
-
-void LargeObjectChunk::Free(Executability executable) {
- Isolate* isolate =
- Page::FromAddress(RoundUp(address(),
Page::kPageSize))->heap_->isolate();
- isolate->memory_allocator()->FreeRawMemory(address(), size(),
executable);
-}
//
-----------------------------------------------------------------------------
// NewSpace
=======================================
--- /branches/bleeding_edge/src/spaces.cc Thu Aug 25 03:55:44 2011
+++ /branches/bleeding_edge/src/spaces.cc Thu Aug 25 06:35:15 2011
@@ -2722,10 +2722,15 @@
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) {
@@ -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();
=======================================
--- /branches/bleeding_edge/src/spaces.h Thu Aug 25 03:55:44 2011
+++ /branches/bleeding_edge/src/spaces.h Thu Aug 25 06:35:15 2011
@@ -2144,7 +2144,7 @@
static LargeObjectChunk* New(int size_in_bytes, Executability
executable);
// Free the memory associated with the chunk.
- inline void Free(Executability executable);
+ void Free(Executability executable);
// Interpret a raw address as a large object chunk.
static LargeObjectChunk* FromAddress(Address address) {
@@ -2153,6 +2153,10 @@
// Returns the address of this chunk.
Address address() { return reinterpret_cast<Address>(this); }
+
+ Page* GetPage() {
+ return Page::FromAddress(RoundUp(address(), Page::kPageSize));
+ }
// Accessors for the fields of the chunk.
LargeObjectChunk* next() { return next_; }
@@ -2160,7 +2164,7 @@
size_t size() { return size_ & ~Page::kPageFlagMask; }
// Compute the start address in the chunk.
- inline Address GetStartAddress();
+ Address GetStartAddress() { return GetPage()->ObjectAreaStart(); }
// Returns the object in this chunk.
HeapObject* GetObject() { return
HeapObject::FromAddress(GetStartAddress()); }
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev